Thread: [IRC-Dev CVS] [CVS] Module ircd-ircdev: Change committed (Page 4)
Brought to you by:
zolty
From: Toni G. <zo...@us...> - 2005-04-11 08:45:37
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-11 08:45:11 UTC Modified files: ChangeLog ChangeLog.es acinclude.m4 aclocal.m4 config.h.in configure configure.in doc/ircd.sample-en.conf doc/ircd.sample-es.conf include/capab.h include/client.h include/numeric.h include/s_conf.h ircd/Makefile.in ircd/channel.c ircd/ircd.c ircd/ircd_parser.y ircd/ircd_string.c ircd/m_burst.c ircd/m_cap.c ircd/m_whowas.c ircd/s_conf.c ircd/s_err.c ircd/s_user.c tools/convert-conf.py Log message: Author: zoltan <zo...@ir...> Log message: 2005-04-11 Toni García <zo...@ir...> 1.0.alpha25 * Comando CAPAB totalmente funcional * Sincronización Undernet ---------------------- diff included ---------------------- Index: ircd-ircdev/ChangeLog diff -u ircd-ircdev/ChangeLog:1.26 ircd-ircdev/ChangeLog:1.27 --- ircd-ircdev/ChangeLog:1.26 Sat Apr 2 11:47:33 2005 +++ ircd-ircdev/ChangeLog Mon Apr 11 01:44:55 2005 @@ -1,10 +1,14 @@ # # ChangeLog for ircd-ircdev # -# $Id: ChangeLog,v 1.26 2005/04/02 19:47:33 zolty Exp $ +# $Id: ChangeLog,v 1.27 2005/04/11 08:44:55 zolty Exp $ # # Insert new changes at beginning of the change list. # +2005-04-11 Toni García <zo...@ir...> 1.0.alpha25 + * CAPAB command + * Undernet synchronization + 2005-04-02 Toni García <zo...@ir...> 1.0.alpha24 * STATS J for jupe nicks * PRIVS remote Index: ircd-ircdev/ChangeLog.es diff -u ircd-ircdev/ChangeLog.es:1.26 ircd-ircdev/ChangeLog.es:1.27 --- ircd-ircdev/ChangeLog.es:1.26 Sat Apr 2 11:47:33 2005 +++ ircd-ircdev/ChangeLog.es Mon Apr 11 01:44:55 2005 @@ -1,10 +1,14 @@ # # Log de Cambios para ircd-ircdev # -# $Id: ChangeLog.es,v 1.26 2005/04/02 19:47:33 zolty Exp $ +# $Id: ChangeLog.es,v 1.27 2005/04/11 08:44:55 zolty Exp $ # # Insertar los nuevos cambios al principio de esta lista de cambios. # +2005-04-11 Toni García <zo...@ir...> 1.0.alpha25 + * Comando CAPAB totalmente funcional + * Sincronización Undernet + 2005-04-02 Toni García <zo...@ir...> 1.0.alpha24 * STATS J para jupe de nicks * PRIVS remoto Index: ircd-ircdev/acinclude.m4 diff -u ircd-ircdev/acinclude.m4:1.2 ircd-ircdev/acinclude.m4:1.3 --- ircd-ircdev/acinclude.m4:1.2 Wed Nov 24 08:11:30 2004 +++ ircd-ircdev/acinclude.m4 Mon Apr 11 01:44:56 2005 @@ -1,28 +1,4 @@ dnl -dnl Macro: unet_PIPE_CFLAGS -dnl -dnl If the compiler understands -pipe, add it to CFLAGS if not already -dnl there. -dnl -AC_DEFUN(unet_PIPE_CFLAGS, -[AC_MSG_CHECKING([if the compiler understands -pipe]) -unet_cv_pipe_flags="$ac_cv_prog_gcc" -if test "$ac_cv_prog_gcc" = no; then - OLDCFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -pipe" - AC_TRY_COMPILE(,,unet_cv_pipe_flags=yes,) - CFLAGS="$OLDCFLAGS" -fi -AC_MSG_RESULT($unet_cv_pipe_flags) -if test "$unet_cv_pipe_flags" = yes ; then - x=`echo $CFLAGS | grep 'pipe' 2>/dev/null` - if test "$x" = "" ; then - CFLAGS="$CFLAGS -pipe" - fi -fi -]) - -dnl dnl Macro: unet_NONBLOCKING dnl dnl Check whether we have posix, bsd or sysv non-blocking sockets and Index: ircd-ircdev/aclocal.m4 diff -u ircd-ircdev/aclocal.m4:1.3 ircd-ircdev/aclocal.m4:1.4 --- ircd-ircdev/aclocal.m4:1.3 Wed Nov 24 08:11:30 2004 +++ ircd-ircdev/aclocal.m4 Mon Apr 11 01:44:56 2005 @@ -11,30 +11,6 @@ dnl PARTICULAR PURPOSE. dnl -dnl Macro: unet_PIPE_CFLAGS -dnl -dnl If the compiler understands -pipe, add it to CFLAGS if not already -dnl there. -dnl -AC_DEFUN(unet_PIPE_CFLAGS, -[AC_MSG_CHECKING([if the compiler understands -pipe]) -unet_cv_pipe_flags="$ac_cv_prog_gcc" -if test "$ac_cv_prog_gcc" = no; then - OLDCFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -pipe" - AC_TRY_COMPILE(,,unet_cv_pipe_flags=yes,) - CFLAGS="$OLDCFLAGS" -fi -AC_MSG_RESULT($unet_cv_pipe_flags) -if test "$unet_cv_pipe_flags" = yes ; then - x=`echo $CFLAGS | grep 'pipe' 2>/dev/null` - if test "$x" = "" ; then - CFLAGS="$CFLAGS -pipe" - fi -fi -]) - -dnl dnl Macro: unet_NONBLOCKING dnl dnl Check whether we have posix, bsd or sysv non-blocking sockets and Index: ircd-ircdev/config.h.in diff -u ircd-ircdev/config.h.in:1.7 ircd-ircdev/config.h.in:1.8 --- ircd-ircdev/config.h.in:1.7 Wed Mar 23 10:34:16 2005 +++ ircd-ircdev/config.h.in Mon Apr 11 01:44:56 2005 @@ -19,7 +19,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: config.h.in,v 1.7 2005/03/23 18:34:16 zolty Exp $ + * $Id: config.h.in,v 1.8 2005/04/11 08:44:56 zolty Exp $ * */ #ifndef INCLUDED_config_h @@ -169,6 +169,9 @@ /* Define to 1 if you have the <sys/param.h> header file. */ #undef HAVE_SYS_PARAM_H +/* Define to 1 if you have the <sys/resource.h> header file. */ +#undef HAVE_SYS_RESOURCE_H + /* Define to 1 if you have the <sys/socket.h> header file. */ #undef HAVE_SYS_SOCKET_H @@ -232,9 +235,6 @@ /* Define if you have POSIX signals. */ #undef POSIX_SIGNALS -/* Services Environment (Ex-TerraIRCU) */ -#undef SERVICES - /* The size of a `int', as computed by sizeof. */ #undef SIZEOF_INT @@ -268,9 +268,6 @@ /* Define to 1 if your <sys/time.h> declares `struct tm'. */ #undef TM_IN_SYS_TIME -/* UnderNet Environment */ -#undef UNDERNET - /* Define to enable the /dev/poll engine */ #undef USE_DEVPOLL Index: ircd-ircdev/configure diff -u ircd-ircdev/configure:1.14 ircd-ircdev/configure:1.15 --- ircd-ircdev/configure:1.14 Wed Mar 23 10:34:18 2005 +++ ircd-ircdev/configure Mon Apr 11 01:44:56 2005 @@ -310,7 +310,7 @@ # include <unistd.h> #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP AWK SET_MAKE INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S RMPROG SHPROG LEX LEXLIB LEX_OUTPUT_ROOT YACC ENGINE_C INSTALL_RULE SYMLINK IRCDMODE IRCDOWN IRCDGRP DPATH LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP AWK SET_MAKE INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S RMPROG SHPROG LEX LEXLIB LEX_OUTPUT_ROOT YACC ENGINE_C INSTALL_RULE SYMLINK IRCDMODE IRCDOWN IRCDGRP DPATH ENVIRONMENT LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. @@ -861,6 +861,8 @@ Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-optimization=-O2 Explicitly set the compiler optimization flags + (default: -O3) --with-leak-detect Turn on the leak detector(requires patched boehm) --without-ipv6 disable IPv6 support (default is autodetect) --with-symlink=name Name to give the symlink; if name is "no," no @@ -876,6 +878,9 @@ --with-cpath=file Set server configuration file --with-lpath=file Set the debugging log file --with-maxcon=maxcon Maximum number of connections server will accept + --with-ddb-environment Use the DDB Environment (Distributed DataBase) + --with-services-environment Use the Services Environment (Ex TerraIRCU) + --with-undernet-environment Use the Undernet Environment Some influential environment variables: CC C compiler command @@ -2462,11 +2467,28 @@ *) CC="$CC $am_cv_prog_cc_stdc" ;; esac -if test x"$CFLAGS" != x; then - CFLAGS=`echo "$CFLAGS" | sed -e 's/-O2/-O3/'` + +# Check whether --with-optimization or --without-optimization was given. +if test "${with_optimization+set}" = set; then + withval="$with_optimization" + unet_cv_optimization=$withval +else + unet_cv_optimization='-O3' +fi; +echo "$as_me:$LINENO: checking optimization level" >&5 +echo $ECHO_N "checking optimization level... $ECHO_C" >&6 +if test "${unet_cv_optimization+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + unet_cv_optimization='-O3' +fi +echo "$as_me:$LINENO: result: $unet_cv_optimization" >&5 +echo "${ECHO_T}$unet_cv_optimization" >&6 +if test "x$unet_cv_optimization" = "xno" ; then + unet_cv_optimization="" fi if test x"$CFLAGS" != x; then - CFLAGS=`echo "$CFLAGS" | sed -e 's/-pipe//g'` + CFLAGS=`echo "$CFLAGS" | sed -e s/-O2/$unet_cv_optimization/` fi if test x"$CFLAGS" != x; then unet_old_cflags=$CFLAGS @@ -3757,7 +3779,8 @@ -for ac_header in crypt.h poll.h inttypes.h stdint.h sys/devpoll.h sys/epoll.h sys/event.h sys/param.h sys/socket.h + +for ac_header in crypt.h poll.h inttypes.h stdint.h sys/devpoll.h sys/epoll.h sys/event.h sys/param.h sys/resource.h sys/socket.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then @@ -8864,7 +8887,6 @@ echo "$as_me: WARNING: $YACC may not work as yacc." >&2;} fi - echo "$as_me:$LINENO: checking for posix non-blocking" >&5 echo $ECHO_N "checking for posix non-blocking... $ECHO_C" >&6 if test "${unet_cv_sys_nonblocking_posix+set}" = set; then @@ -9153,67 +9175,6 @@ fi fi -echo "$as_me:$LINENO: checking if the compiler understands -pipe" >&5 -echo $ECHO_N "checking if the compiler understands -pipe... $ECHO_C" >&6 -unet_cv_pipe_flags="$ac_cv_c_compiler_gnu" -if test "$ac_cv_c_compiler_gnu" = no; then - OLDCFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -pipe" - 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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - unet_cv_pipe_flags=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - CFLAGS="$OLDCFLAGS" -fi -echo "$as_me:$LINENO: result: $unet_cv_pipe_flags" >&5 -echo "${ECHO_T}$unet_cv_pipe_flags" >&6 -if test "$unet_cv_pipe_flags" = yes ; then - x=`echo $CFLAGS | grep 'pipe' 2>/dev/null` - if test "$x" = "" ; then - CFLAGS="$CFLAGS -pipe" - fi -fi - - echo "$as_me:$LINENO: checking for OS-dependent information" >&5 echo $ECHO_N "checking for OS-dependent information... $ECHO_C" >&6 case "$host" in @@ -10195,15 +10156,85 @@ +ircdev_cv_environment_ddb=yes; + +echo "$as_me:$LINENO: checking whether to use DDB Environment (Distributed DataBase)" >&5 +echo $ECHO_N "checking whether to use DDB Environment (Distributed DataBase)... $ECHO_C" >&6 + +# Check whether --with-ddb-environment or --without-ddb-environment was given. +if test "${with_ddb_environment+set}" = set; then + withval="$with_ddb_environment" + ircdev_cv_environment_ddb=$with_ddb_environment +else + if test "${ircdev_cv_environment_ddb+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ircdev_cv_environment_ddb=no +fi + +fi; +echo "$as_me:$LINENO: result: $ircdev_cv_environment_ddb" >&5 +echo "${ECHO_T}$ircdev_cv_environment_ddb" >&6 + +echo "$as_me:$LINENO: checking whether to use Services Environment (Ex TerraIRCU)" >&5 +echo $ECHO_N "checking whether to use Services Environment (Ex TerraIRCU)... $ECHO_C" >&6 + +# Check whether --with-services-environment or --without-services-environment was given. +if test "${with_services_environment+set}" = set; then + withval="$with_services_environment" + ircdev_cv_environment_services=$with_services_environment +else + if test "${ircdev_cv_environment_services+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ircdev_cv_environment_services=no +fi + +fi; +echo "$as_me:$LINENO: result: $ircdev_cv_environment_services" >&5 +echo "${ECHO_T}$ircdev_cv_environment_services" >&6 +echo "$as_me:$LINENO: checking whether to use Undernet Environment" >&5 +echo $ECHO_N "checking whether to use Undernet Environment... $ECHO_C" >&6 +# Check whether --with-undernet-environment or --without-undernet-environment was given. +if test "${with_undernet_environment+set}" = set; then + withval="$with_undernet_environment" + ircdev_cv_environment_undernet=$with_undernet_environment +else + if test "${ircdev_cv_environment_undernet+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ircdev_cv_environment_undernet=no +fi +fi; +echo "$as_me:$LINENO: result: $ircdev_cv_environment_undernet" >&5 +echo "${ECHO_T}$ircdev_cv_environment_undernet" >&6 +if test x"$ircdev_cv_environment_ddb" != "xno" ; then cat >>confdefs.h <<\_ACEOF #define DDB _ACEOF + ENVIRONMENT=DDB +elif test x"$ircdev_cv_environment_services" != "xno" ; then + +cat >>confdefs.h <<\_ACEOF +#define SERVICES +_ACEOF + + ENVIRONMENT=SERVICES +elif test x"$ircdev_cv_environment_undernet" != "xno" ; then + +cat >>confdefs.h <<\_ACEOF +#define UNDERNET +_ACEOF + + ENVIRONMENT=UNDERNET +fi + ac_config_files="$ac_config_files Makefile ircd/Makefile ircd/test/Makefile doc/Makefile" @@ -10871,6 +10902,7 @@ s,@IRCDOWN@,$IRCDOWN,;t t s,@IRCDGRP@,$IRCDGRP,;t t s,@DPATH@,$DPATH,;t t +s,@ENVIRONMENT@,$ENVIRONMENT,;t t s,@LIBOBJS@,$LIBOBJS,;t t s,@LTLIBOBJS@,$LTLIBOBJS,;t t CEOF @@ -11535,5 +11567,3 @@ fi echo "" echo "Type \"make\" to compile IRC-Dev IRCD" - - Index: ircd-ircdev/configure.in diff -u ircd-ircdev/configure.in:1.14 ircd-ircdev/configure.in:1.15 --- ircd-ircdev/configure.in:1.14 Wed Mar 23 10:34:23 2005 +++ ircd-ircdev/configure.in Mon Apr 11 01:44:57 2005 @@ -22,7 +22,7 @@ dnl along with this program; if not, write to the Free Software dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA dnl -dnl $Id: configure.in,v 1.14 2005/03/23 18:34:23 zolty Exp $ +dnl $Id: configure.in,v 1.15 2005/04/11 08:44:57 zolty Exp $ dnl dnl Make sure we are in the correct directory (someone could have run @@ -46,7 +46,7 @@ dnl Define the input and output configuration header file. AC_CONFIG_HEADER([config.h]) -dnl Demand at least version 2.50 of autoconf +dnl Demand at least version 2.59 of autoconf (for AS_HELP_STRING) AC_PREREQ(2.59) dnl Find out what type of system we are @@ -57,13 +57,17 @@ dnl ANSIfy the C compiler whenever possible. AM_PROG_CC_STDC -dnl Use -O3 instead of -O2. -if test x"$CFLAGS" != x; then - CFLAGS=`echo "$CFLAGS" | sed -e 's/-O2/-O3/'` +dnl Allow specification of optimization level. +AC_ARG_WITH([optimization], + AS_HELP_STRING([--with-optimization=[-O2]], [Explicitly set the compiler optimization flags (default: -O3)]), + [unet_cv_optimization=$withval], + [unet_cv_optimization='-O3']) +AC_CACHE_CHECK([optimization level], [unet_cv_optimization], [unet_cv_optimization='-O3']) +if test "x$unet_cv_optimization" = "xno" ; then + unet_cv_optimization="" fi -dnl Remove -pipe during configure if test x"$CFLAGS" != x; then - CFLAGS=`echo "$CFLAGS" | sed -e 's/-pipe//g'` + CFLAGS=`echo "$CFLAGS" | sed -e s/-O2/$unet_cv_optimization/` fi dnl Notice the -g flag and deal accordingly if test x"$CFLAGS" != x; then @@ -113,7 +117,7 @@ dnl Checks for header files. AC_HEADER_STDC -AC_CHECK_HEADERS(crypt.h poll.h inttypes.h stdint.h sys/devpoll.h sys/epoll.h sys/event.h sys/param.h sys/socket.h) +AC_CHECK_HEADERS(crypt.h poll.h inttypes.h stdint.h sys/devpoll.h sys/epoll.h sys/event.h sys/param.h sys/resource.h sys/socket.h) dnl Checks for typedefs, structures, and compiler characteristics dnl AC_C_CONST @@ -177,13 +181,9 @@ AC_MSG_WARN([$YACC may not work as yacc.]) fi - unet_NONBLOCKING unet_SIGNALS -dnl Add -pipe when possible -unet_PIPE_CFLAGS - dnl Check OS for os_dep files. AC_MSG_CHECKING(for OS-dependent information) case "$host" in @@ -760,43 +760,46 @@ dnl IRC Network environment dnl Default DDB -dnl ircdev_cv_environment_ddb=yes; +ircdev_cv_environment_ddb=yes; dnl --with-ddb-environment allows us to use DDB Environment -dnl AC_MSG_CHECKING([whether to use DDB Environment (Distributed DataBase)]) -dnl AC_ARG_WITH([ddb-environment], -dnl [ --with-ddb-environment Use the DDB Environment (Distributed DataBase)], -dnl [ircdev_cv_environment_ddb=$with_ddb_environment], -dnl [AC_CACHE_VAL(ircdev_cv_environment_ddb, -dnl [ircdev_cv_environment_ddb=no])]) -dnl AC_MSG_RESULT([$ircdev_cv_environment_ddb]) +AC_MSG_CHECKING([whether to use DDB Environment (Distributed DataBase)]) +AC_ARG_WITH([ddb-environment], +[ --with-ddb-environment Use the DDB Environment (Distributed DataBase)], +[ircdev_cv_environment_ddb=$with_ddb_environment], +[AC_CACHE_VAL(ircdev_cv_environment_ddb, +[ircdev_cv_environment_ddb=no])]) +AC_MSG_RESULT([$ircdev_cv_environment_ddb]) -dnl LO COMENTO PORQUE NO EXISTE AUN! dnl --with-services-environment allows us to use Services Environment -dnl AC_MSG_CHECKING([whether to use Services Environment (Ex TerraIRCU)]) -dnl AC_ARG_WITH([services-environment], -dnl [ --with-services-environment Use the Services Environment (Ex TerraIRCU)], -dnl [ircdev_cv_environment_services=$with_services_environment], -dnl [AC_CACHE_VAL(ircdev_cv_environment_services, -dnl [ircdev_cv_environment_services=no])]) -dnl AC_MSG_RESULT([$ircdev_cv_environment_services]) +AC_MSG_CHECKING([whether to use Services Environment (Ex TerraIRCU)]) +AC_ARG_WITH([services-environment], +[ --with-services-environment Use the Services Environment (Ex TerraIRCU)], +[ircdev_cv_environment_services=$with_services_environment], +[AC_CACHE_VAL(ircdev_cv_environment_services, +[ircdev_cv_environment_services=no])]) +AC_MSG_RESULT([$ircdev_cv_environment_services]) dnl --with-undernet-environment allows us to use Undernet Environment -dnl AC_MSG_CHECKING([whether to use Undernet Environment]) -dnl AC_ARG_WITH([undernet-environment], -dnl [ --with-undernet-environment Use the Undernet Environment], -dnl [ircdev_cv_environment_undernet=$with_undernet_environment], -dnl [AC_CACHE_VAL(ircdev_cv_environment_undernet, -dnl [ircdev_cv_environment_undernet=no])]) -dnl AC_MSG_RESULT([$ircdev_cv_environment_undernet]) +AC_MSG_CHECKING([whether to use Undernet Environment]) +AC_ARG_WITH([undernet-environment], +[ --with-undernet-environment Use the Undernet Environment], +[ircdev_cv_environment_undernet=$with_undernet_environment], +[AC_CACHE_VAL(ircdev_cv_environment_undernet, +[ircdev_cv_environment_undernet=no])]) +AC_MSG_RESULT([$ircdev_cv_environment_undernet]) -dnl if test x"$ircdev_cv_environment_ddb" != "xno" ; then +if test x"$ircdev_cv_environment_ddb" != "xno" ; then AC_DEFINE([DDB], , [DDB Environment (Distributed DataBase)]) -dnl else if x"$ircdev_cv_environment_services" != "xno" ; then -dnl AC_DEFINE([SERVICES], , [Services Environment (Ex-TerraIRCU)]) -dnl else if if x"$ircdev_cv_environment_undernet" != "xno" ; then -dnl AC_DEFINE([UNDERNET], , [UnderNet Environment]) -dnl fi + ENVIRONMENT=DDB +elif test x"$ircdev_cv_environment_services" != "xno" ; then + AC_DEFINE([SERVICES], , [Services Environment (Ex-TerraIRCU)]) + ENVIRONMENT=SERVICES +elif test x"$ircdev_cv_environment_undernet" != "xno" ; then + AC_DEFINE([UNDERNET], , [UnderNet Environment]) + ENVIRONMENT=UNDERNET +fi +AC_SUBST(ENVIRONMENT) dnl Finally really generate all output files: AC_CONFIG_FILES([Makefile ircd/Makefile ircd/test/Makefile doc/Makefile]) @@ -855,5 +858,3 @@ fi echo "" echo "Type \"make\" to compile IRC-Dev IRCD" - - Index: ircd-ircdev/doc/ircd.sample-en.conf diff -u ircd-ircdev/doc/ircd.sample-en.conf:1.16 ircd-ircdev/doc/ircd.sample-en.conf:1.17 --- ircd-ircdev/doc/ircd.sample-en.conf:1.16 Sat Apr 2 11:47:33 2005 +++ ircd-ircdev/doc/ircd.sample-en.conf Mon Apr 11 01:44:58 2005 @@ -428,11 +428,13 @@ # It is possible to Jupe nicks. Jupe { - nick = "EuWorld,E,StatServ,NoteServ"; - nick = "UWorld2,ChanSvr,ChanSaver,ChanServ"; - nick = "Uworld,NickSvr,NickSaver,NickServ"; - nick = "LPT1,X,login,LPT2,W,Undernet,COM1,V,protocol,COM2"; - nick = "U,pass,COM3,Y,AUX,COM4,Z,newpass"; + nick = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,{,|,},~,-,_,`"; + nick = "EuWorld,UWorld,UWorld2"; + nick = "login,undernet,protocol,pass,newpass,org"; + nick = "StatServ,NoteServ"; + nick = "ChanSvr,ChanSaver,ChanServ"; + nick = "NickSvr,NickSaver,NickServ"; + nick = "LPT1,LPT2,COM1,COM2,COM3,COM4,AUX"; }; # [Kill] Index: ircd-ircdev/doc/ircd.sample-es.conf diff -u ircd-ircdev/doc/ircd.sample-es.conf:1.12 ircd-ircdev/doc/ircd.sample-es.conf:1.13 --- ircd-ircdev/doc/ircd.sample-es.conf:1.12 Sat Apr 2 11:47:33 2005 +++ ircd-ircdev/doc/ircd.sample-es.conf Mon Apr 11 01:44:58 2005 @@ -447,11 +447,13 @@ # Esto es posible para prohibir (Jupe) nicks. Jupe { - nick = "EuWorld,E,StatServ,NoteServ"; - nick = "UWorld2,ChanSvr,ChanSaver,ChanServ"; - nick = "Uworld,NickSvr,NickSaver,NickServ"; - nick = "LPT1,X,login,LPT2,W,Undernet,COM1,V,protocol,COM2"; - nick = "U,pass,COM3,Y,AUX,COM4,Z,newpass"; + nick = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,{,|,},~,-,_,`"; + nick = "EuWorld,UWorld,UWorld2"; + nick = "login,undernet,protocol,pass,newpass,org"; + nick = "StatServ,NoteServ"; + nick = "ChanSvr,ChanSaver,ChanServ"; + nick = "NickSvr,NickSaver,NickServ"; + nick = "LPT1,LPT2,COM1,COM2,COM3,COM4,AUX"; }; # [Kill] Index: ircd-ircdev/include/capab.h diff -u ircd-ircdev/include/capab.h:1.2 ircd-ircdev/include/capab.h:1.3 --- ircd-ircdev/include/capab.h:1.2 Mon Jan 10 04:21:59 2005 +++ ircd-ircdev/include/capab.h Mon Apr 11 01:44:59 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Interface and public definitions for capabilities extension - * @version $Id: capab.h,v 1.2 2005/01/10 12:21:59 zolty Exp $ + * @version $Id: capab.h,v 1.3 2005/04/11 08:44:59 zolty Exp $ */ #ifndef INCLUDED_capab_h #define INCLUDED_capab_h @@ -33,615 +33,14 @@ #define CAPFL_HIDDEN 0x0001 /**< Do not advertize this capability */ #define CAPFL_PROHIBIT 0x0002 /**< Client may not set this capability */ #define CAPFL_PROTO 0x0004 /**< Cap must be acknowledged by client */ +#define CAPFL_STICKY 0x0008 /**< Cap may not be cleared once set */ + /* XXX You can safely ignore all of these; they're only for testing purposes, * XXX and don't result in any behavioral change. */ -#define CAPLIST \ - _CAP(USERPFX, 0, "undernet.org/userpfx"), \ - _CAP(FOO, CAPFL_HIDDEN, "x-foo"), \ - _CAP(BAR, CAPFL_PROHIBIT, "x-bar"), \ - _CAP(BINK, CAPFL_PROTO, "x-bink"), \ - _CAP(CAP000, 0, "x-cap000"), \ - _CAP(CAP001, 0, "x-cap001"), \ - _CAP(CAP002, 0, "x-cap002"), \ - _CAP(CAP003, 0, "x-cap003"), \ - _CAP(CAP004, 0, "x-cap004"), \ - _CAP(CAP005, 0, "x-cap005"), \ - _CAP(CAP006, 0, "x-cap006"), \ - _CAP(CAP007, 0, "x-cap007"), \ - _CAP(CAP008, 0, "x-cap008"), \ - _CAP(CAP009, 0, "x-cap009"), \ - _CAP(CAP010, 0, "x-cap010"), \ - _CAP(CAP011, 0, "x-cap011"), \ - _CAP(CAP012, 0, "x-cap012"), \ - _CAP(CAP013, 0, "x-cap013"), \ - _CAP(CAP014, 0, "x-cap014"), \ - _CAP(CAP015, 0, "x-cap015"), \ - _CAP(CAP016, 0, "x-cap016"), \ - _CAP(CAP017, 0, "x-cap017"), \ - _CAP(CAP018, 0, "x-cap018"), \ - _CAP(CAP019, 0, "x-cap019"), \ - _CAP(CAP020, 0, "x-cap020"), \ - _CAP(CAP021, 0, "x-cap021"), \ - _CAP(CAP022, 0, "x-cap022"), \ - _CAP(CAP023, 0, "x-cap023"), \ - _CAP(CAP024, 0, "x-cap024"), \ - _CAP(CAP025, 0, "x-cap025"), \ - _CAP(CAP026, 0, "x-cap026"), \ - _CAP(CAP027, 0, "x-cap027"), \ - _CAP(CAP028, 0, "x-cap028"), \ - _CAP(CAP029, 0, "x-cap029"), \ - _CAP(CAP030, 0, "x-cap030"), \ - _CAP(CAP031, 0, "x-cap031"), \ - _CAP(CAP032, 0, "x-cap032"), \ - _CAP(CAP033, 0, "x-cap033"), \ - _CAP(CAP034, 0, "x-cap034"), \ - _CAP(CAP035, 0, "x-cap035"), \ - _CAP(CAP036, 0, "x-cap036"), \ - _CAP(CAP037, 0, "x-cap037"), \ - _CAP(CAP038, 0, "x-cap038"), \ - _CAP(CAP039, 0, "x-cap039"), \ - _CAP(CAP040, 0, "x-cap040"), \ - _CAP(CAP041, 0, "x-cap041"), \ - _CAP(CAP042, 0, "x-cap042"), \ - _CAP(CAP043, 0, "x-cap043"), \ - _CAP(CAP044, 0, "x-cap044"), \ - _CAP(CAP045, 0, "x-cap045"), \ - _CAP(CAP046, 0, "x-cap046"), \ - _CAP(CAP047, 0, "x-cap047"), \ - _CAP(CAP048, 0, "x-cap048"), \ - _CAP(CAP049, 0, "x-cap049"), \ - _CAP(CAP050, 0, "x-cap050"), \ - _CAP(CAP051, 0, "x-cap051"), \ - _CAP(CAP052, 0, "x-cap052"), \ - _CAP(CAP053, 0, "x-cap053"), \ - _CAP(CAP054, 0, "x-cap054"), \ - _CAP(CAP055, 0, "x-cap055"), \ - _CAP(CAP056, 0, "x-cap056"), \ - _CAP(CAP057, 0, "x-cap057"), \ - _CAP(CAP058, 0, "x-cap058"), \ - _CAP(CAP059, 0, "x-cap059"), \ - _CAP(CAP060, 0, "x-cap060"), \ - _CAP(CAP061, 0, "x-cap061"), \ - _CAP(CAP062, 0, "x-cap062"), \ - _CAP(CAP063, 0, "x-cap063"), \ - _CAP(CAP064, 0, "x-cap064"), \ - _CAP(CAP065, 0, "x-cap065"), \ - _CAP(CAP066, 0, "x-cap066"), \ - _CAP(CAP067, 0, "x-cap067"), \ - _CAP(CAP068, 0, "x-cap068"), \ - _CAP(CAP069, 0, "x-cap069"), \ - _CAP(CAP070, 0, "x-cap070"), \ - _CAP(CAP071, 0, "x-cap071"), \ - _CAP(CAP072, 0, "x-cap072"), \ - _CAP(CAP073, 0, "x-cap073"), \ - _CAP(CAP074, 0, "x-cap074"), \ - _CAP(CAP075, 0, "x-cap075"), \ - _CAP(CAP076, 0, "x-cap076"), \ - _CAP(CAP077, 0, "x-cap077"), \ - _CAP(CAP078, 0, "x-cap078"), \ - _CAP(CAP079, 0, "x-cap079"), \ - _CAP(CAP080, 0, "x-cap080"), \ - _CAP(CAP081, 0, "x-cap081"), \ - _CAP(CAP082, 0, "x-cap082"), \ - _CAP(CAP083, 0, "x-cap083"), \ - _CAP(CAP084, 0, "x-cap084"), \ - _CAP(CAP085, 0, "x-cap085"), \ - _CAP(CAP086, 0, "x-cap086"), \ - _CAP(CAP087, 0, "x-cap087"), \ - _CAP(CAP088, 0, "x-cap088"), \ - _CAP(CAP089, 0, "x-cap089"), \ - _CAP(CAP090, 0, "x-cap090"), \ - _CAP(CAP091, 0, "x-cap091"), \ - _CAP(CAP092, 0, "x-cap092"), \ - _CAP(CAP093, 0, "x-cap093"), \ - _CAP(CAP094, 0, "x-cap094"), \ - _CAP(CAP095, 0, "x-cap095"), \ - _CAP(CAP096, 0, "x-cap096"), \ - _CAP(CAP097, 0, "x-cap097"), \ - _CAP(CAP098, 0, "x-cap098"), \ - _CAP(CAP099, 0, "x-cap099"), \ - _CAP(CAP100, 0, "x-cap100"), \ - _CAP(CAP101, 0, "x-cap101"), \ - _CAP(CAP102, 0, "x-cap102"), \ - _CAP(CAP103, 0, "x-cap103"), \ - _CAP(CAP104, 0, "x-cap104"), \ - _CAP(CAP105, 0, "x-cap105"), \ - _CAP(CAP106, 0, "x-cap106"), \ - _CAP(CAP107, 0, "x-cap107"), \ - _CAP(CAP108, 0, "x-cap108"), \ - _CAP(CAP109, 0, "x-cap109"), \ - _CAP(CAP110, 0, "x-cap110"), \ - _CAP(CAP111, 0, "x-cap111"), \ - _CAP(CAP112, 0, "x-cap112"), \ - _CAP(CAP113, 0, "x-cap113"), \ - _CAP(CAP114, 0, "x-cap114"), \ - _CAP(CAP115, 0, "x-cap115"), \ - _CAP(CAP116, 0, "x-cap116"), \ - _CAP(CAP117, 0, "x-cap117"), \ - _CAP(CAP118, 0, "x-cap118"), \ - _CAP(CAP119, 0, "x-cap119"), \ - _CAP(CAP120, 0, "x-cap120"), \ - _CAP(CAP121, 0, "x-cap121"), \ - _CAP(CAP122, 0, "x-cap122"), \ - _CAP(CAP123, 0, "x-cap123"), \ - _CAP(CAP124, 0, "x-cap124"), \ - _CAP(CAP125, 0, "x-cap125"), \ - _CAP(CAP126, 0, "x-cap126"), \ - _CAP(CAP127, 0, "x-cap127"), \ - _CAP(CAP128, 0, "x-cap128"), \ - _CAP(CAP129, 0, "x-cap129"), \ - _CAP(CAP130, 0, "x-cap130"), \ - _CAP(CAP131, 0, "x-cap131"), \ - _CAP(CAP132, 0, "x-cap132"), \ - _CAP(CAP133, 0, "x-cap133"), \ - _CAP(CAP134, 0, "x-cap134"), \ - _CAP(CAP135, 0, "x-cap135"), \ - _CAP(CAP136, 0, "x-cap136"), \ - _CAP(CAP137, 0, "x-cap137"), \ - _CAP(CAP138, 0, "x-cap138"), \ - _CAP(CAP139, 0, "x-cap139"), \ - _CAP(CAP140, 0, "x-cap140"), \ - _CAP(CAP141, 0, "x-cap141"), \ - _CAP(CAP142, 0, "x-cap142"), \ - _CAP(CAP143, 0, "x-cap143"), \ - _CAP(CAP144, 0, "x-cap144"), \ - _CAP(CAP145, 0, "x-cap145"), \ - _CAP(CAP146, 0, "x-cap146"), \ - _CAP(CAP147, 0, "x-cap147"), \ - _CAP(CAP148, 0, "x-cap148"), \ - _CAP(CAP149, 0, "x-cap149"), \ - _CAP(CAP150, 0, "x-cap150"), \ - _CAP(CAP151, 0, "x-cap151"), \ - _CAP(CAP152, 0, "x-cap152"), \ - _CAP(CAP153, 0, "x-cap153"), \ - _CAP(CAP154, 0, "x-cap154"), \ - _CAP(CAP155, 0, "x-cap155"), \ - _CAP(CAP156, 0, "x-cap156"), \ - _CAP(CAP157, 0, "x-cap157"), \ - _CAP(CAP158, 0, "x-cap158"), \ - _CAP(CAP159, 0, "x-cap159"), \ - _CAP(CAP160, 0, "x-cap160"), \ - _CAP(CAP161, 0, "x-cap161"), \ - _CAP(CAP162, 0, "x-cap162"), \ - _CAP(CAP163, 0, "x-cap163"), \ - _CAP(CAP164, 0, "x-cap164"), \ - _CAP(CAP165, 0, "x-cap165"), \ - _CAP(CAP166, 0, "x-cap166"), \ - _CAP(CAP167, 0, "x-cap167"), \ - _CAP(CAP168, 0, "x-cap168"), \ - _CAP(CAP169, 0, "x-cap169"), \ - _CAP(CAP170, 0, "x-cap170"), \ - _CAP(CAP171, 0, "x-cap171"), \ - _CAP(CAP172, 0, "x-cap172"), \ - _CAP(CAP173, 0, "x-cap173"), \ - _CAP(CAP174, 0, "x-cap174"), \ - _CAP(CAP175, 0, "x-cap175"), \ - _CAP(CAP176, 0, "x-cap176"), \ - _CAP(CAP177, 0, "x-cap177"), \ - _CAP(CAP178, 0, "x-cap178"), \ - _CAP(CAP179, 0, "x-cap179"), \ - _CAP(CAP180, 0, "x-cap180"), \ - _CAP(CAP181, 0, "x-cap181"), \ - _CAP(CAP182, 0, "x-cap182"), \ - _CAP(CAP183, 0, "x-cap183"), \ - _CAP(CAP184, 0, "x-cap184"), \ - _CAP(CAP185, 0, "x-cap185"), \ - _CAP(CAP186, 0, "x-cap186"), \ - _CAP(CAP187, 0, "x-cap187"), \ - _CAP(CAP188, 0, "x-cap188"), \ - _CAP(CAP189, 0, "x-cap189"), \ - _CAP(CAP190, 0, "x-cap190"), \ - _CAP(CAP191, 0, "x-cap191"), \ - _CAP(CAP192, 0, "x-cap192"), \ - _CAP(CAP193, 0, "x-cap193"), \ - _CAP(CAP194, 0, "x-cap194"), \ - _CAP(CAP195, 0, "x-cap195"), \ - _CAP(CAP196, 0, "x-cap196"), \ - _CAP(CAP197, 0, "x-cap197"), \ - _CAP(CAP198, 0, "x-cap198"), \ - _CAP(CAP199, 0, "x-cap199"), \ - _CAP(CAP200, 0, "x-cap200"), \ - _CAP(CAP201, 0, "x-cap201"), \ - _CAP(CAP202, 0, "x-cap202"), \ - _CAP(CAP203, 0, "x-cap203"), \ - _CAP(CAP204, 0, "x-cap204"), \ - _CAP(CAP205, 0, "x-cap205"), \ - _CAP(CAP206, 0, "x-cap206"), \ - _CAP(CAP207, 0, "x-cap207"), \ - _CAP(CAP208, 0, "x-cap208"), \ - _CAP(CAP209, 0, "x-cap209"), \ - _CAP(CAP210, 0, "x-cap210"), \ - _CAP(CAP211, 0, "x-cap211"), \ - _CAP(CAP212, 0, "x-cap212"), \ - _CAP(CAP213, 0, "x-cap213"), \ - _CAP(CAP214, 0, "x-cap214"), \ - _CAP(CAP215, 0, "x-cap215"), \ - _CAP(CAP216, 0, "x-cap216"), \ - _CAP(CAP217, 0, "x-cap217"), \ - _CAP(CAP218, 0, "x-cap218"), \ - _CAP(CAP219, 0, "x-cap219"), \ - _CAP(CAP220, 0, "x-cap220"), \ - _CAP(CAP221, 0, "x-cap221"), \ - _CAP(CAP222, 0, "x-cap222"), \ - _CAP(CAP223, 0, "x-cap223"), \ - _CAP(CAP224, 0, "x-cap224"), \ - _CAP(CAP225, 0, "x-cap225"), \ - _CAP(CAP226, 0, "x-cap226"), \ - _CAP(CAP227, 0, "x-cap227"), \ - _CAP(CAP228, 0, "x-cap228"), \ - _CAP(CAP229, 0, "x-cap229"), \ - _CAP(CAP230, 0, "x-cap230"), \ - _CAP(CAP231, 0, "x-cap231"), \ - _CAP(CAP232, 0, "x-cap232"), \ - _CAP(CAP233, 0, "x-cap233"), \ - _CAP(CAP234, 0, "x-cap234"), \ - _CAP(CAP235, 0, "x-cap235"), \ - _CAP(CAP236, 0, "x-cap236"), \ - _CAP(CAP237, 0, "x-cap237"), \ - _CAP(CAP238, 0, "x-cap238"), \ - _CAP(CAP239, 0, "x-cap239"), \ - _CAP(CAP240, 0, "x-cap240"), \ - _CAP(CAP241, 0, "x-cap241"), \ - _CAP(CAP242, 0, "x-cap242"), \ - _CAP(CAP243, 0, "x-cap243"), \ - _CAP(CAP244, 0, "x-cap244"), \ - _CAP(CAP245, 0, "x-cap245"), \ - _CAP(CAP246, 0, "x-cap246"), \ - _CAP(CAP247, 0, "x-cap247"), \ - _CAP(CAP248, 0, "x-cap248"), \ - _CAP(CAP249, 0, "x-cap249"), \ - _CAP(CAP250, 0, "x-cap250"), \ - _CAP(CAP251, 0, "x-cap251"), \ - _CAP(CAP252, 0, "x-cap252"), \ - _CAP(CAP253, 0, "x-cap253"), \ - _CAP(CAP254, 0, "x-cap254"), \ - _CAP(CAP255, 0, "x-cap255"), \ - _CAP(CAP256, 0, "x-cap256"), \ - _CAP(CAP257, 0, "x-cap257"), \ - _CAP(CAP258, 0, "x-cap258"), \ - _CAP(CAP259, 0, "x-cap259"), \ - _CAP(CAP260, 0, "x-cap260"), \ - _CAP(CAP261, 0, "x-cap261"), \ - _CAP(CAP262, 0, "x-cap262"), \ - _CAP(CAP263, 0, "x-cap263"), \ - _CAP(CAP264, 0, "x-cap264"), \ - _CAP(CAP265, 0, "x-cap265"), \ - _CAP(CAP266, 0, "x-cap266"), \ - _CAP(CAP267, 0, "x-cap267"), \ - _CAP(CAP268, 0, "x-cap268"), \ - _CAP(CAP269, 0, "x-cap269"), \ - _CAP(CAP270, 0, "x-cap270"), \ - _CAP(CAP271, 0, "x-cap271"), \ - _CAP(CAP272, 0, "x-cap272"), \ - _CAP(CAP273, 0, "x-cap273"), \ - _CAP(CAP274, 0, "x-cap274"), \ - _CAP(CAP275, 0, "x-cap275"), \ - _CAP(CAP276, 0, "x-cap276"), \ - _CAP(CAP277, 0, "x-cap277"), \ - _CAP(CAP278, 0, "x-cap278"), \ - _CAP(CAP279, 0, "x-cap279"), \ - _CAP(CAP280, 0, "x-cap280"), \ - _CAP(CAP281, 0, "x-cap281"), \ - _CAP(CAP282, 0, "x-cap282"), \ - _CAP(CAP283, 0, "x-cap283"), \ - _CAP(CAP284, 0, "x-cap284"), \ - _CAP(CAP285, 0, "x-cap285"), \ - _CAP(CAP286, 0, "x-cap286"), \ - _CAP(CAP287, 0, "x-cap287"), \ - _CAP(CAP288, 0, "x-cap288"), \ - _CAP(CAP289, 0, "x-cap289"), \ - _CAP(CAP290, 0, "x-cap290"), \ - _CAP(CAP291, 0, "x-cap291"), \ - _CAP(CAP292, 0, "x-cap292"), \ - _CAP(CAP293, 0, "x-cap293"), \ - _CAP(CAP294, 0, "x-cap294"), \ - _CAP(CAP295, 0, "x-cap295"), \ - _CAP(CAP296, 0, "x-cap296"), \ - _CAP(CAP297, 0, "x-cap297"), \ - _CAP(CAP298, 0, "x-cap298"), \ - _CAP(CAP299, 0, "x-cap299"), \ - _CAP(CAP300, 0, "x-cap300"), \ - _CAP(CAP301, 0, "x-cap301"), \ - _CAP(CAP302, 0, "x-cap302"), \ - _CAP(CAP303, 0, "x-cap303"), \ - _CAP(CAP304, 0, "x-cap304"), \ - _CAP(CAP305, 0, "x-cap305"), \ - _CAP(CAP306, 0, "x-cap306"), \ - _CAP(CAP307, 0, "x-cap307"), \ - _CAP(CAP308, 0, "x-cap308"), \ - _CAP(CAP309, 0, "x-cap309"), \ - _CAP(CAP310, 0, "x-cap310"), \ - _CAP(CAP311, 0, "x-cap311"), \ - _CAP(CAP312, 0, "x-cap312"), \ - _CAP(CAP313, 0, "x-cap313"), \ - _CAP(CAP314, 0, "x-cap314"), \ - _CAP(CAP315, 0, "x-cap315"), \ - _CAP(CAP316, 0, "x-cap316"), \ - _CAP(CAP317, 0, "x-cap317"), \ - _CAP(CAP318, 0, "x-cap318"), \ - _CAP(CAP319, 0, "x-cap319"), \ - _CAP(CAP320, 0, "x-cap320"), \ - _CAP(CAP321, 0, "x-cap321"), \ - _CAP(CAP322, 0, "x-cap322"), \ - _CAP(CAP323, 0, "x-cap323"), \ - _CAP(CAP324, 0, "x-cap324"), \ - _CAP(CAP325, 0, "x-cap325"), \ - _CAP(CAP326, 0, "x-cap326"), \ - _CAP(CAP327, 0, "x-cap327"), \ - _CAP(CAP328, 0, "x-cap328"), \ - _CAP(CAP329, 0, "x-cap329"), \ - _CAP(CAP330, 0, "x-cap330"), \ - _CAP(CAP331, 0, "x-cap331"), \ - _CAP(CAP332, 0, "x-cap332"), \ - _CAP(CAP333, 0, "x-cap333"), \ - _CAP(CAP334, 0, "x-cap334"), \ - _CAP(CAP335, 0, "x-cap335"), \ - _CAP(CAP336, 0, "x-cap336"), \ - _CAP(CAP337, 0, "x-cap337"), \ - _CAP(CAP338, 0, "x-cap338"), \ - _CAP(CAP339, 0, "x-cap339"), \ - _CAP(CAP340, 0, "x-cap340"), \ - _CAP(CAP341, 0, "x-cap341"), \ - _CAP(CAP342, 0, "x-cap342"), \ - _CAP(CAP343, 0, "x-cap343"), \ - _CAP(CAP344, 0, "x-cap344"), \ - _CAP(CAP345, 0, "x-cap345"), \ - _CAP(CAP346, 0, "x-cap346"), \ - _CAP(CAP347, 0, "x-cap347"), \ - _CAP(CAP348, 0, "x-cap348"), \ - _CAP(CAP349, 0, "x-cap349"), \ - _CAP(CAP350, 0, "x-cap350"), \ - _CAP(CAP351, 0, "x-cap351"), \ - _CAP(CAP352, 0, "x-cap352"), \ - _CAP(CAP353, 0, "x-cap353"), \ - _CAP(CAP354, 0, "x-cap354"), \ - _CAP(CAP355, 0, "x-cap355"), \ - _CAP(CAP356, 0, "x-cap356"), \ - _CAP(CAP357, 0, "x-cap357"), \ - _CAP(CAP358, 0, "x-cap358"), \ - _CAP(CAP359, 0, "x-cap359"), \ - _CAP(CAP360, 0, "x-cap360"), \ - _CAP(CAP361, 0, "x-cap361"), \ - _CAP(CAP362, 0, "x-cap362"), \ - _CAP(CAP363, 0, "x-cap363"), \ - _CAP(CAP364, 0, "x-cap364"), \ - _CAP(CAP365, 0, "x-cap365"), \ - _CAP(CAP366, 0, "x-cap366"), \ - _CAP(CAP367, 0, "x-cap367"), \ - _CAP(CAP368, 0, "x-cap368"), \ - _CAP(CAP369, 0, "x-cap369"), \ - _CAP(CAP370, 0, "x-cap370"), \ - _CAP(CAP371, 0, "x-cap371"), \ - _CAP(CAP372, 0, "x-cap372"), \ - _CAP(CAP373, 0, "x-cap373"), \ - _CAP(CAP374, 0, "x-cap374"), \ - _CAP(CAP375, 0, "x-cap375"), \ - _CAP(CAP376, 0, "x-cap376"), \ - _CAP(CAP377, 0, "x-cap377"), \ - _CAP(CAP378, 0, "x-cap378"), \ - _CAP(CAP379, 0, "x-cap379"), \ - _CAP(CAP380, 0, "x-cap380"), \ - _CAP(CAP381, 0, "x-cap381"), \ - _CAP(CAP382, 0, "x-cap382"), \ - _CAP(CAP383, 0, "x-cap383"), \ - _CAP(CAP384, 0, "x-cap384"), \ - _CAP(CAP385, 0, "x-cap385"), \ - _CAP(CAP386, 0, "x-cap386"), \ - _CAP(CAP387, 0, "x-cap387"), \ - _CAP(CAP388, 0, "x-cap388"), \ - _CAP(CAP389, 0, "x-cap389"), \ - _CAP(CAP390, 0, "x-cap390"), \ - _CAP(CAP391, 0, "x-cap391"), \ - _CAP(CAP392, 0, "x-cap392"), \ - _CAP(CAP393, 0, "x-cap393"), \ - _CAP(CAP394, 0, "x-cap394"), \ - _CAP(CAP395, 0, "x-cap395"), \ - _CAP(CAP396, 0, "x-cap396"), \ - _CAP(CAP397, 0, "x-cap397"), \ - _CAP(CAP398, 0, "x-cap398"), \ - _CAP(CAP399, 0, "x-cap399"), \ - _CAP(CAP400, 0, "x-cap400"), \ - _CAP(CAP401, 0, "x-cap401"), \ - _CAP(CAP402, 0, "x-cap402"), \ - _CAP(CAP403, 0, "x-cap403"), \ - _CAP(CAP404, 0, "x-cap404"), \ - _CAP(CAP405, 0, "x-cap405"), \ - _CAP(CAP406, 0, "x-cap406"), \ - _CAP(CAP407, 0, "x-cap407"), \ - _CAP(CAP408, 0, "x-cap408"), \ - _CAP(CAP409, 0, "x-cap409"), \ - _CAP(CAP410, 0, "x-cap410"), \ - _CAP(CAP411, 0, "x-cap411"), \ - _CAP(CAP412, 0, "x-cap412"), \ - _CAP(CAP413, 0, "x-cap413"), \ - _CAP(CAP414, 0, "x-cap414"), \ - _CAP(CAP415, 0, "x-cap415"), \ - _CAP(CAP416, 0, "x-cap416"), \ - _CAP(CAP417, 0, "x-cap417"), \ - _CAP(CAP418, 0, "x-cap418"), \ - _CAP(CAP419, 0, "x-cap419"), \ - _CAP(CAP420, 0, "x-cap420"), \ - _CAP(CAP421, 0, "x-cap421"), \ - _CAP(CAP422, 0, "x-cap422"), \ - _CAP(CAP423, 0, "x-cap423"), \ - _CAP(CAP424, 0, "x-cap424"), \ - _CAP(CAP425, 0, "x-cap425"), \ - _CAP(CAP426, 0, "x-cap426"), \ - _CAP(CAP427, 0, "x-cap427"), \ - _CAP(CAP428, 0, "x-cap428"), \ - _CAP(CAP429, 0, "x-cap429"), \ - _CAP(CAP430, 0, "x-cap430"), \ - _CAP(CAP431, 0, "x-cap431"), \ - _CAP(CAP432, 0, "x-cap432"), \ - _CAP(CAP433, 0, "x-cap433"), \ - _CAP(CAP434, 0, "x-cap434"), \ - _CAP(CAP435, 0, "x-cap435"), \ - _CAP(CAP436, 0, "x-cap436"), \ - _CAP(CAP437, 0, "x-cap437"), \ - _CAP(CAP438, 0, "x-cap438"), \ - _CAP(CAP439, 0, "x-cap439"), \ - _CAP(CAP440, 0, "x-cap440"), \ - _CAP(CAP441, 0, "x-cap441"), \ - _CAP(CAP442, 0, "x-cap442"), \ - _CAP(CAP443, 0, "x-cap443"), \ - _CAP(CAP444, 0, "x-cap444"), \ - _CAP(CAP445, 0, "x-cap445"), \ - _CAP(CAP446, 0, "x-cap446"), \ - _CAP(CAP447, 0, "x-cap447"), \ - _CAP(CAP448, 0, "x-cap448"), \ - _CAP(CAP449, 0, "x-cap449"), \ - _CAP(CAP450, 0, "x-cap450"), \ - _CAP(CAP451, 0, "x-cap451"), \ - _CAP(CAP452, 0, "x-cap452"), \ - _CAP(CAP453, 0, "x-cap453"), \ - _CAP(CAP454, 0, "x-cap454"), \ - _CAP(CAP455, 0, "x-cap455"), \ - _CAP(CAP456, 0, "x-cap456"), \ - _CAP(CAP457, 0, "x-cap457"), \ - _CAP(CAP458, 0, "x-cap458"), \ - _CAP(CAP459, 0, "x-cap459"), \ - _CAP(CAP460, 0, "x-cap460"), \ - _CAP(CAP461, 0, "x-cap461"), \ - _CAP(CAP462, 0, "x-cap462"), \ - _CAP(CAP463, 0, "x-cap463"), \ - _CAP(CAP464, 0, "x-cap464"), \ - _CAP(CAP465, 0, "x-cap465"), \ - _CAP(CAP466, 0, "x-cap466"), \ - _CAP(CAP467, 0, "x-cap467"), \ - _CAP(CAP468, 0, "x-cap468"), \ - _CAP(CAP469, 0, "x-cap469"), \ - _CAP(CAP470, 0, "x-cap470"), \ - _CAP(CAP471, 0, "x-cap471"), \ - _CAP(CAP472, 0, "x-cap472"), \ - _CAP(CAP473, 0, "x-cap473"), \ - _CAP(CAP474, 0, "x-cap474"), \ - _CAP(CAP475, 0, "x-cap475"), \ - _CAP(CAP476, 0, "x-cap476"), \ - _CAP(CAP477, 0, "x-cap477"), \ - _CAP(CAP478, 0, "x-cap478"), \ - _CAP(CAP479, 0, "x-cap479"), \ - _CAP(CAP480, 0, "x-cap480"), \ - _CAP(CAP481, 0, "x-cap481"), \ - _CAP(CAP482, 0, "x-cap482"), \ - _CAP(CAP483, 0, "x-cap483"), \ - _CAP(CAP484, 0, "x-cap484"), \ - _CAP(CAP485, 0, "x-cap485"), \ - _CAP(CAP486, 0, "x-cap486"), \ - _CAP(CAP487, 0, "x-cap487"), \ - _CAP(CAP488, 0, "x-cap488"), \ - _CAP(CAP489, 0, "x-cap489"), \ - _CAP(CAP490, 0, "x-cap490"), \ - _CAP(CAP491, 0, "x-cap491"), \ - _CAP(CAP492, 0, "x-cap492"), \ - _CAP(CAP493, 0, "x-cap493"), \ - _CAP(CAP494, 0, "x-cap494"), \ - _CAP(CAP495, 0, "x-cap495"), \ - _CAP(CAP496, 0, "x-cap496"), \ - _CAP(CAP497, 0, "x-cap497"), \ - _CAP(CAP498, 0, "x-cap498"), \ - _CAP(CAP499, 0, "x-cap499"), \ - _CAP(CAP500, 0, "x-cap500"), \ - _CAP(CAP501, 0, "x-cap501"), \ - _CAP(CAP502, 0, "x-cap502"), \ - _CAP(CAP503, 0, "x-cap503"), \ - _CAP(CAP504, 0, "x-cap504"), \ - _CAP(CAP505, 0, "x-cap505"), \ - _CAP(CAP506, 0, "x-cap506"), \ - _CAP(CAP507, 0, "x-cap507"), \ - _CAP(CAP508, 0, "x-cap508"), \ - _CAP(CAP509, 0, "x-cap509"), \ - _CAP(CAP510, 0, "x-cap510"), \ - _CAP(CAP511, 0, "x-cap511"), \ - _CAP(CAP512, 0, "x-cap512"), \ - _CAP(CAP513, 0, "x-cap513"), \ - _CAP(CAP514, 0, "x-cap514"), \ - _CAP(CAP515, 0, "x-cap515"), \ - _CAP(CAP516, 0, "x-cap516"), \ - _CAP(CAP517, 0, "x-cap517"), \ - _CAP(CAP518, 0, "x-cap518"), \ - _CAP(CAP519, 0, "x-cap519"), \ - _CAP(CAP520, 0, "x-cap520"), \ - _CAP(CAP521, 0, "x-cap521"), \ - _CAP(CAP522, 0, "x-cap522"), \ - _CAP(CAP523, 0, "x-cap523"), \ - _CAP(CAP524, 0, "x-cap524"), \ - _CAP(CAP525, 0, "x-cap525"), \ - _CAP(CAP526, 0, "x-cap526"), \ - _CAP(CAP527, 0, "x-cap527"), \ - _CAP(CAP528, 0, "x-cap528"), \ - _CAP(CAP529, 0, "x-cap529"), \ - _CAP(CAP530, 0, "x-cap530"), \ - _CAP(CAP531, 0, "x-cap531"), \ - _CAP(CAP532, 0, "x-cap532"), \ - _CAP(CAP533, 0, "x-cap533"), \ - _CAP(CAP534, 0, "x-cap534"), \ - _CAP(CAP535, 0, "x-cap535"), \ - _CAP(CAP536, 0, "x-cap536"), \ - _CAP(CAP537, 0, "x-cap537"), \ - _CAP(CAP538, 0, "x-cap538"), \ - _CAP(CAP539, 0, "x-cap539"), \ - _CAP(CAP540, 0, "x-cap540"), \ - _CAP(CAP541, 0, "x-cap541"), \ - _CAP(CAP542, 0, "x-cap542"), \ - _CAP(CAP543, 0, "x-cap543"), \ - _CAP(CAP544, 0, "x-cap544"), \ - _CAP(CAP545, 0, "x-cap545"), \ - _CAP(CAP546, 0, "x-cap546"), \ - _CAP(CAP547, 0, "x-cap547"), \ - _CAP(CAP548, 0, "x-cap548"), \ - _CAP(CAP549, 0, "x-cap549"), \ - _CAP(CAP550, 0, "x-cap550"), \ - _CAP(CAP551, 0, "x-cap551"), \ - _CAP(CAP552, 0, "x-cap552"), \ - _CAP(CAP553, 0, "x-cap553"), \ - _CAP(CAP554, 0, "x-cap554"), \ - _CAP(CAP555, 0, "x-cap555"), \ - _CAP(CAP556, 0, "x-cap556"), \ - _CAP(CAP557, 0, "x-cap557"), \ - _CAP(CAP558, 0, "x-cap558"), \ - _CAP(CAP559, 0, "x-cap559"), \ - _CAP(CAP560, 0, "x-cap560"), \ - _CAP(CAP561, 0, "x-cap561"), \ - _CAP(CAP562, 0, "x-cap562"), \ - _CAP(CAP563, 0, "x-cap563"), \ - _CAP(CAP564, 0, "x-cap564"), \ - _CAP(CAP565, 0, "x-cap565"), \ - _CAP(CAP566, 0, "x-cap566"), \ - _CAP(CAP567, 0, "x-cap567"), \ - _CAP(CAP568, 0, "x-cap568"), \ - _CAP(CAP569, 0, "x-cap569"), \ - _CAP(CAP570, 0, "x-cap570"), \ - _CAP(CAP571, 0, "x-cap571"), \ - _CAP(CAP572, 0, "x-cap572"), \ - _CAP(CAP573, 0, "x-cap573"), \ - _CAP(CAP574, 0, "x-cap574"), \ - _CAP(CAP575, 0, "x-cap575"), \ - _CAP(CAP576, 0, "x-cap576"), \ - _CAP(CAP577, 0, "x-cap577"), \ - _CAP(CAP578, 0, "x-cap578"), \ - _CAP(CAP579, 0, "x-cap579"), \ - _CAP(CAP580, 0, "x-cap580"), \ - _CAP(CAP581, 0, "x-cap581"), \ - _CAP(CAP582, 0, "x-cap582"), \ - _CAP(CAP583, 0, "x-cap583"), \ - _CAP(CAP584, 0, "x-cap584"), \ - _CAP(CAP585, 0, "x-cap585"), \ - _CAP(CAP586, 0, "x-cap586"), \ - _CAP(CAP587, 0, "x-cap587"), \ - _CAP(CAP588, 0, "x-cap588"), \ - _CAP(CAP589, 0, "x-cap589"), \ - _CAP(CAP590, 0, "x-cap590"), \ - _CAP(CAP591, 0, "x-cap591"), \ - _CAP(CAP592, 0, "x-cap592"), \ - _CAP(CAP593, 0, "x-cap593"), \ - _CAP(CAP594, 0, "x-cap594"), \ - _CAP(CAP595, 0, "x-cap595"), \ - _CAP(CAP596, 0, "x-cap596"), \ - _CAP(CAP597, 0, "x-cap597"), \ - _CAP(CAP598, 0, "x-cap598"), \ - _CAP(CAP599, 0, "x-cap599") +#define CAPLIST \ + _CAP(USERPFX, 0, "undernet.org/userpfx") /** Client capabilities */ enum Capab { Index: ircd-ircdev/include/client.h diff -u ircd-ircdev/include/client.h:1.14 ircd-ircdev/include/client.h:1.15 --- ircd-ircdev/include/client.h:1.14 Sat Apr 2 11:47:34 2005 +++ ircd-ircdev/include/client.h Mon Apr 11 01:44:59 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Structures and functions for handling local clients. - * @version $Id: client.h,v 1.14 2005/04/02 19:47:34 zolty Exp $ + * @version $Id: client.h,v 1.15 2005/04/11 08:44:59 zolty Exp $ */ #ifndef INCLUDED_client_h #define INCLUDED_client_h @@ -248,8 +248,8 @@ struct Timer con_proc; /**< process latent messages from client */ struct Privs con_privs; /**< Oper privileges */ - struct CapSet con_capab; /**< Client capabilities */ - struct CapSet con_active; /**< Active client capabilities */ + struct CapSet con_capab; /**< Client capabilities (from us) */ + struct CapSet con_active; /**< Active capabilities (to us) */ struct AuthRequest* con_auth; /**< auth request for client */ struct IAuthRequest* con_iauth; /**< iauth request for client */ }; Index: ircd-ircdev/include/numeric.h diff -u ircd-ircdev/include/numeric.h:1.11 ircd-ircdev/include/numeric.h:1.12 --- ircd-ircdev/include/numeric.h:1.11 Sat Apr 2 11:47:34 2005 +++ ircd-ircdev/include/numeric.h Mon Apr 11 01:44:59 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Declarations of numeric replies and supporting functions. - * @version $Id: numeric.h,v 1.11 2005/04/02 19:47:34 zolty Exp $ + * @version $Id: numeric.h,v 1.12 2005/04/11 08:44:59 zolty Exp $ */ #ifndef INCLUDED_numeric_h #define INCLUDED_numeric_h @@ -66,9 +66,9 @@ #define RPL_MAP 15 /* Undernet extension */ #define RPL_MAPMORE 16 /* Undernet extension */ #define RPL_MAPEND 17 /* Undernet extension */ -#if defined(UNDERNET) -#define RPL_APASSWARN 30 /* Undernet extension */ -#endif +#define RPL_APASSWARN_SET 30 /* Undernet extension */ +#define RPL_APASSWARN_SECRET 31 /* Undernet extension */ +#define RPL_APASSWARN_CLEAR 32 /* Undernet extension */ /* RPL_YOURID 42 IRCnet extension */ /* RPL_ATTEMPTINGJUNC 50 aircd extension */ /* RPL_ATTEMPTINGREROUTE 51 aircd extension */ @@ -462,13 +462,13 @@ ERR_WHOLIMEXCEED 523 dalnet */ #define ERR_QUARANTINED 524 /* Undernet extension -Vampire */ -#if defined(UNDERNET) #define ERR_NOTLOWEROPLEVEL 550 /* Undernet extension */ #define ERR_NOTMANAGER 551 /* Undernet extension */ #define ERR_CHANSECURED 552 /* Undernet extension */ #define ERR_UPASSSET 553 /* Undernet extension */ #define ERR_UPASSNOTSET 554 /* Undernet extension */ -#endif +#define ERR_NOMANAGER_LONG 555 /* Undernet extension */ +#define ERR_NOMANAGER_SHORT 556 /* Undernet extension */ #define RPL_LOGON 600 /* Dalnet extension */ #define RPL_LOGOFF 601 /* Dalnet extension */ Index: ircd-ircdev/include/s_conf.h diff -u ircd-ircdev/include/s_conf.h:1.9 ircd-ircdev/include/s_conf.h:1.10 --- ircd-ircdev/include/s_conf.h:1.9 Sat Apr 2 11:47:34 2005 +++ ircd-ircdev/include/s_conf.h Mon Apr 11 01:44:59 2005 @@ -21,7 +21,7 @@ */ /** @file s_conf.h * @brief ircd configuration file API. - * @version $Id: s_conf.h,v 1.9 2005/04/02 19:47:34 zolty Exp $ + * @version $Id: s_conf.h,v 1.10 2005/04/11 08:44:59 zolty Exp $ */ #ifndef INCLUDED_s_conf_h #define INCLUDED_s_conf_h @@ -205,6 +205,7 @@ extern const char *find_quarantine(const char* chname); extern void lookup_confhost(struct ConfItem *aconf); extern void conf_parse_userhost(struct ConfItem *aconf, char *host); +extern struct ConfItem *conf_debug_iline(const char *client); extern void yyerror(const char *msg); Index: ircd-ircdev/ircd/Makefile.in diff -u ircd-ircdev/ircd/Makefile.in:1.21 ircd-ircdev/ircd/Makefile.in:1.22 --- ircd-ircdev/ircd/Makefile.in:1.21 Thu Mar 31 04:58:03 2005 +++ ircd-ircdev/ircd/Makefile.in Mon Apr 11 01:44:59 2005 @@ -18,7 +18,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA -# $Id: Makefile.in,v 1.21 2005/03/31 12:58:03 zolty Exp $ +# $Id: Makefile.in,v 1.22 2005/04/11 08:44:59 zolty Exp $ #### Start of system configuration section. #### @@ -45,6 +45,7 @@ LEX = @LEX@ YACC = @YACC@ ENGINE_C = @ENGINE_C@ +ENVIRONMENT = @ENVIRONMENT@ @SET_MAKE@ BINDIR = @bindir@ @@ -234,6 +235,18 @@ whowas.c \ y.tab.c + +#@if [ENVIRONMENT = "DDB"]; then \ +# SRC = ${IRCD_SRC} ${DDB_SRC} ${ENGINE_C} ${CRYPTO_SRC} \ +#else \ +# if [ENVIRONMENT = "SERVICES"]; then \ +# SRC = ${IRCD_SRC} ${SERVICES_SRC} ${ENGINE_C} ${CRYPTO_SRC} \ +# else \ +# if [ENVIRONMENT = "UNDERNET"]; then \ +# SRC = ${IRCD_SRC} ${UNDERNET_SRC} ${ENGINE_C} ${CRYPTO_SRC} \ +# fi \ +# fi \ +#fi #TODO Arreglar esto #Para undernet #SRC = ${IRCD_SRC} ${UNDERNET_SRC} ${ENGINE_C} ${CRYPTO_SRC} Index: ircd-ircdev/ircd/channel.c diff -u ircd-ircdev/ircd/channel.c:1.16 ircd-ircdev/ircd/channel.c:1.17 --- ircd-ircdev/ircd/channel.c:1.16 Sat Apr 2 11:47:34 2005 +++ ircd-ircdev/ircd/channel.c Mon Apr 11 01:45:00 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Channel management and maintanance - * @version $Id: channel.c,v 1.16 2005/04/02 19:47:34 zolty Exp $ + * @version $Id: channel.c,v 1.17 2005/04/11 08:45:00 zolty Exp $ */ #include "config.h" @@ -2579,7 +2579,7 @@ if (state->flags & MODE_PARSE_FORCE && MyUser(state->sptr) && !HasPriv(state->sptr, PRIV_APASS_OPMODE)) { send_reply(state->sptr, ERR_NOTMANAGER, state->chptr->chname, - "Use /JOIN", state->chptr->chname, " <AdminPass>."); + state->chptr->chname); return; } @@ -2587,16 +2587,15 @@ if (MyUser(state->sptr) && !(state->flags & MODE_PARSE_FORCE || IsChannelManager(state->member))) { if (*state->chptr->mode.apass) { send_reply(state->sptr, ERR_NOTMANAGER, state->chptr->chname, - "Use /JOIN", state->chptr->chname, "<AdminPass>."); + state->chptr->chname); + } else if (TStime() - state->chptr->creationtime >= 171000) { + send_reply(state->sptr, ERR_NOMANAGER_LONG, state->chptr->chname); } else { - send_reply(state->sptr, ERR_NOTMANAGER, state->chptr->chname, - "Re-create the channel. The channel must be *empty* for", - TStime() - state->chptr->creationtime >= 171000 ? "48 contiguous hours" : "a minute or two", - "before it can be recreated."); + send_reply(state->sptr, ERR_NOMANAGER_SHORT, state->chptr->chname); } return; } - + if (state->done & DONE_UPASS) /* allow upass to be set only once */ return; state->done |= DONE_UPASS; @@ -2619,7 +2618,7 @@ if (!state->mbuf) return; - if (!(state->flags & MODE_PARSE_FORCE)) + if (!(state->flags & MODE_PARSE_FORCE)) { /* can't add the upass while apass is not set */ if (state->dir == MODE_ADD && !*state->chptr->mode.apass) { send_reply(state->sptr, ERR_UPASSNOTSET, state->chptr->chname, state->chptr->chname); @@ -2632,6 +2631,7 @@ send_reply(state->sptr, ERR_KEYSET, state->chptr->chname); return; } + } if (!(state->flags & MODE_PARSE_WIPEOUT) && state->dir == MODE_ADD && !ircd_strcmp(state->chptr->mode.upass, t_str)) @@ -2687,7 +2687,7 @@ if (state->flags & MODE_PARSE_FORCE && MyUser(state->sptr) && !HasPriv(state->sptr, PRIV_APASS_OPMODE)) { send_reply(state->sptr, ERR_NOTMANAGER, state->chptr->chname, - "Use /JOIN", state->chptr->chname, " <AdminPass>."); + state->chptr->chname); return; } @@ -2701,15 +2701,15 @@ if (MyUser(state->sptr) && !(state->flags & MODE_PARSE_FORCE || IsChannelManager(state->member))) { if (*state->chptr->mode.apass) { send_reply(state->sptr, ERR_NOTMANAGER, state->chptr->chname, - "Use /JOIN", state->chptr->chname, "<AdminPass>."); + state->chptr->chname); + } else if (TStime() - state->chptr->creationtime >= 171000) { + send_reply(state->sptr, ERR_NOMANAGER_LONG, state->chptr->chname); } else { - send_reply(state->sptr, ERR_NOTMANAGER, state->chptr->chname, - "Re-create the channel. The channel must be *empty* for", - "at least a whole minute", "before it can be recreated."); + send_reply(state->sptr, ERR_NOMANAGER_SHORT, state->chptr->chname); } return; } - + if (state->done & DONE_APASS) /* allow apass to be set only once */ return; state->done |= DONE_APASS; @@ -2764,25 +2764,14 @@ /* Make it VERY clear to the user that this is a one-time password */ ircd_strncpy(state->chptr->mode.apass, t_str, PASSLEN); if (MyUser(state->sptr)) { - send_reply(state->sptr, RPL_APASSWARN, - "Channel Admin password (+A) set to '", state->chptr->mode.apass, "'. ", - "Are you SURE you want to use this as Admin password? ", - "You will NOT be able to change this password anymore once the channel is more than 48 hours old!"); - send_reply(state->sptr, RPL_APASSWARN, - "Use \"/MODE ", state->chptr->chname, " -A ", state->chptr->mode.apass, - "\" to remove the password and then immediately set a new one. " - "IMPORTANT: YOU CANNOT RECOVER THIS PASSWORD, EVER; " - "WRITE THE PASSWORD DOWN (don't store this rescue password on disk)! " - "Now set the channel user password (+U)."); + send_reply(state->sptr, RPL_APASSWARN_SET, state->chptr->mode.apass); + send_reply(state->sptr, RPL_APASSWARN_SECRET, state->chptr->chname, + state->chptr->mode.apass); } } else { /* remove the old apass */ *state->chptr->mode.apass = '\0'; if (MyUser(state->sptr)) - send_reply(state->sptr, RPL_APASSWARN, - "WARNING: You removed the channel Admin password MODE (+A). ", - "If you would disconnect or leave the channel without setting a new password then you will ", - "not be able to set it again and lose ownership of this channel! ", - "SET A NEW PASSWORD NOW!", ""); + send_reply(state->sptr, RPL_APASSWARN_CLEAR); } } } Index: ircd-ircdev/ircd/ircd.c diff -u ircd-ircdev/ircd/ircd.c:1.14 ircd-ircdev/ircd/ircd.c:1.15 --- ircd-ircdev/ircd/ircd.c:1.14 Wed Mar 23 10:34:47 2005 +++ ircd-ircdev/ircd/ircd.c Mon Apr 11 01:45:00 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Entry point and other initialization functions for the daemon. - * @version $Id: ircd.c,v 1.14 2005/03/23 18:34:47 zolty Exp $ + * @version $Id: ircd.c,v 1.15 2005/04/11 08:45:00 zolty Exp $ */ #include "config.h" @@ -72,6 +72,9 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> +#ifdef HAVE_SYS_RESOURCE_H +#include <sys/resource.h> +#endif #include <sys/socket.h> #include <sys/stat.h> #include <sys/types.h> @@ -111,6 +114,7 @@ int debuglevel = -1; /**< Server debug level */ char *debugmode = ""; /**< Server debug level */ static ... [truncated message content] |
From: Toni G. <zo...@us...> - 2005-04-13 14:37:48
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-13 14:37:42 UTC Modified files: TODO.es Log message: Actualizacion TODO ---------------------- diff included ---------------------- Index: ircd-ircdev/TODO.es diff -u ircd-ircdev/TODO.es:1.16 ircd-ircdev/TODO.es:1.17 --- ircd-ircdev/TODO.es:1.16 Sat Apr 2 11:49:09 2005 +++ ircd-ircdev/TODO.es Wed Apr 13 07:37:31 2005 @@ -1,14 +1,14 @@ # # TODO para ircd-ircdev # -# $Id: TODO.es,v 1.16 2005/04/02 19:49:09 zolty Exp $ +# $Id: TODO.es,v 1.17 2005/04/13 14:37:31 zolty Exp $ # # Insertar las nuevas entradas al principio de la lista TODO. # URGENTE -------------------------------------------------------------------------------------- - - [D] Implementar el protocolo DDB. + - [D] Implementar el protocolo DDB (ddb_events y ddb_db). - [D] Implementar tabla i de Ilines - [D] Implementar tabla o de Operadores - [D] Implementar tabla p de Privilegios @@ -62,6 +62,9 @@ publicidad) - [G] Sistema de modulos dinámicos - [G] Bloque Logging en el .conf + - [G] Estudiar la remodelación del esquema de "hubs" y "leafs" a un + basandonos en el calculo de topologia que realiza OSPF solo que + en cuanto a coste, ancho de banda y retardo. BUGS CONOCIDOS -------------------------------------------------------------------------------------- ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-04-14 10:28:38
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-14 10:28:17 UTC Modified files: ChangeLog ChangeLog.es include/ddb.h include/patchlevel.h ircd/Makefile.in ircd/ddb.c Added files: ircd/ddb_events.c Log message: Author: zoltan <zo...@ir...> Log message: 2005-04-14 Toni García <zo...@ir...> 1.0.alpha26 * Eventos de DDB ---------------------- diff included ---------------------- Index: ircd-ircdev/ChangeLog diff -u ircd-ircdev/ChangeLog:1.27 ircd-ircdev/ChangeLog:1.28 --- ircd-ircdev/ChangeLog:1.27 Mon Apr 11 01:44:55 2005 +++ ircd-ircdev/ChangeLog Thu Apr 14 03:28:05 2005 @@ -1,10 +1,13 @@ # # ChangeLog for ircd-ircdev # -# $Id: ChangeLog,v 1.27 2005/04/11 08:44:55 zolty Exp $ +# $Id: ChangeLog,v 1.28 2005/04/14 10:28:05 zolty Exp $ # # Insert new changes at beginning of the change list. # +2005-04-14 Toni García <zo...@ir...> 1.0.alpha26 + * DDB Events + 2005-04-11 Toni García <zo...@ir...> 1.0.alpha25 * CAPAB command * Undernet synchronization Index: ircd-ircdev/ChangeLog.es diff -u ircd-ircdev/ChangeLog.es:1.27 ircd-ircdev/ChangeLog.es:1.28 --- ircd-ircdev/ChangeLog.es:1.27 Mon Apr 11 01:44:55 2005 +++ ircd-ircdev/ChangeLog.es Thu Apr 14 03:28:05 2005 @@ -1,10 +1,13 @@ # # Log de Cambios para ircd-ircdev # -# $Id: ChangeLog.es,v 1.27 2005/04/11 08:44:55 zolty Exp $ +# $Id: ChangeLog.es,v 1.28 2005/04/14 10:28:05 zolty Exp $ # # Insertar los nuevos cambios al principio de esta lista de cambios. # +2005-04-14 Toni García <zo...@ir...> 1.0.alpha26 + * Eventos de DDB + 2005-04-11 Toni García <zo...@ir...> 1.0.alpha25 * Comando CAPAB totalmente funcional * Sincronización Undernet Index: ircd-ircdev/include/ddb.h diff -u ircd-ircdev/include/ddb.h:1.4 ircd-ircdev/include/ddb.h:1.5 --- ircd-ircdev/include/ddb.h:1.4 Thu Mar 31 04:58:02 2005 +++ ircd-ircdev/include/ddb.h Thu Apr 14 03:28:06 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: ddb.h,v 1.4 2005/03/31 12:58:02 zolty Exp $ + * $Id: ddb.h,v 1.5 2005/04/14 10:28:06 zolty Exp $ * */ #ifndef INCLUDED_ddb_h @@ -109,6 +109,7 @@ } #endif + #define DdbMalloc(x) MyMalloc(x) #define DdbFree(x) MyFree(x) @@ -119,6 +120,8 @@ extern unsigned int ddb_resident_table[DDB_TABLE_MAX]; extern unsigned int ddb_count_table[DDB_TABLE_MAX]; extern unsigned int ddb_id_table[DDB_TABLE_MAX]; +typedef void (*ddb_events_table_t)(char *, char *, int); +extern ddb_events_table_t ddb_events_table[DDB_TABLE_MAX]; extern unsigned int ddb_hashtable_hi[DDB_TABLE_MAX]; extern unsigned int ddb_hashtable_lo[DDB_TABLE_MAX]; extern int ddb_hash_register(char *key, int hash_size); @@ -128,7 +131,7 @@ extern unsigned int ddb_count_in_table(unsigned char table); extern void ddb_init(void); - +extern void ddb_events_init(void); /* extern int ddb_read(struct ddb_memory_table *dump, char *buf); Index: ircd-ircdev/include/patchlevel.h diff -u ircd-ircdev/include/patchlevel.h:1.26 ircd-ircdev/include/patchlevel.h:1.27 --- ircd-ircdev/include/patchlevel.h:1.26 Sat Apr 2 11:47:34 2005 +++ ircd-ircdev/include/patchlevel.h Thu Apr 14 03:28:06 2005 @@ -17,10 +17,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: patchlevel.h,v 1.26 2005/04/02 19:47:34 zolty Exp $ + * $Id: patchlevel.h,v 1.27 2005/04/14 10:28:06 zolty Exp $ * */ -#define PATCHLEVEL ".alpha24" +#define PATCHLEVEL ".alpha26" #define RELEASE "1.0" Index: ircd-ircdev/ircd/Makefile.in diff -u ircd-ircdev/ircd/Makefile.in:1.22 ircd-ircdev/ircd/Makefile.in:1.23 --- ircd-ircdev/ircd/Makefile.in:1.22 Mon Apr 11 01:44:59 2005 +++ ircd-ircdev/ircd/Makefile.in Thu Apr 14 03:28:06 2005 @@ -18,7 +18,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA -# $Id: Makefile.in,v 1.22 2005/04/11 08:44:59 zolty Exp $ +# $Id: Makefile.in,v 1.23 2005/04/14 10:28:06 zolty Exp $ #### Start of system configuration section. #### @@ -94,6 +94,7 @@ DDB_SRC = \ ddb.c \ ddb_db_template.c \ + ddb_events.c\ m_db.c \ m_dbq.c \ m_ghost.c \ Index: ircd-ircdev/ircd/ddb.c diff -u ircd-ircdev/ircd/ddb.c:1.4 ircd-ircdev/ircd/ddb.c:1.5 --- ircd-ircdev/ircd/ddb.c:1.4 Wed Mar 23 10:34:46 2005 +++ ircd-ircdev/ircd/ddb.c Thu Apr 14 03:28:06 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Implementation of Distributed DataBase. - * @version $Id: ddb.c,v 1.4 2005/03/23 18:34:46 zolty Exp $ + * @version $Id: ddb.c,v 1.5 2005/04/14 10:28:06 zolty Exp $ */ #include "config.h" @@ -67,8 +67,8 @@ static int ddb_iterator_hash_len = 0; static void ddb_table_init(unsigned char table); -static void ddb_add_key(unsigned char table, char *key, char *content); -static void ddb_del_key(unsigned char table, char *key); +static int ddb_add_key(unsigned char table, char *key, char *content); +static int ddb_del_key(unsigned char table, char *key); int ddb_table_is_resident(unsigned char table) @@ -152,7 +152,7 @@ { unsigned char table; - /* ddb_events_init(); */ + ddb_events_init(); memset(ddb_resident_table, 0, sizeof(ddb_resident_table)); @@ -215,6 +215,7 @@ if (!match(mask, cli_name(&me))) { int i = 0; + int update = 0; /* pasamos el key en minusculas */ if ((strlen(key) + 1 > key_len) || (!keytemp)) @@ -234,29 +235,29 @@ } if (content) - ddb_add_key(table, keytemp, content); + update = ddb_add_key(table, keytemp, content); else ddb_del_key(table, keytemp); -#if 0 /* Ejecutamos los eventos */ - if (!cptr && ddb_event_tables[table]) - ddb_event_parse[table](key, content); -#endif + /* if (!cptr && ddb_events_table[table]) */ + if (ddb_events_table[table]) + ddb_events_table[table](key, content, update); } } -static void +static int ddb_add_key(unsigned char table, char *key, char *content) { struct Ddb *ddb; char *k, *c; int hashi; + int delete = 0; ddb_iterator_key = NULL; - ddb_del_key(table, key); + delete = ddb_del_key(table, key); ddb = DdbMalloc(sizeof(struct Ddb) + strlen(key) + strlen(content) + 2); assert(0 != ddb); @@ -278,8 +279,6 @@ ddb->key = k; ddb->content = c; -// strcpy(ddb->key, key); -// strcpy(ddb->content, content); ddb->next = NULL; hashi = ddb_hash_register(ddb->key, ddb_resident_table[table]); @@ -290,14 +289,15 @@ ddb_data_table[table][hashi] = ddb; ddb_count_table[table]++; - /* EVENTOS DE ALTA */ + return delete; } -static void +static int ddb_del_key(unsigned char table, char *key) { struct Ddb *ddb, *ddb2, **ddb3; int hashi; + int delete = 0; ddb_iterator_key = NULL; @@ -310,13 +310,14 @@ if (!strcmp(ddb->key, key)) { *ddb3 = ddb2; - /* EVENTOS de BAJA */ + delete = 1; DdbFree(ddb); ddb_count_table[table]--; break; } ddb3 = &(ddb->next); } + return delete; } @@ -354,10 +355,10 @@ for (ddb = ddb_data_table[table][i]; ddb; ddb = ddb2) { ddb2 = ddb->next; -#if 0 - if (events && ddb_event_tables[table]) - ddb_event_parse[table](ddb->key, NULL); -#endif + + if (events && ddb_events_table[table]) + ddb_events_table[table](ddb->key, NULL, 0); + DdbFree(ddb); } } Index: ircd-ircdev/ircd/ddb_events.c diff -u /dev/null ircd-ircdev/ircd/ddb_events.c:1.1 --- /dev/null Thu Apr 14 03:28:26 2005 +++ ircd-ircdev/ircd/ddb_events.c Thu Apr 14 03:28:07 2005 @@ -0,0 +1,176 @@ +/* + * IRC-Dev IRCD - An advanced and innovative IRC Daemon, ircd/ddb_events.c + * + * Copyright (C) 2002-2005 IRC-Dev Development Team <de...@ir...> + * Copyright (C) 2004-2005 Toni Garcia (zoltan) <zo...@ir...> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +/** @file + * @brief Events of Distributed DataBase. + * @version $Id: ddb_events.c,v 1.1 2005/04/14 10:28:07 zolty Exp $ + */ +#include "config.h" + +#include "ddb.h" +#include "client.h" +#include "hash.h" +#include "ircd.h" +#include "ircd_tea.h" +#include "msg.h" +#include "numnicks.h" +#include "s_user.h" +#include "send.h" + +#include <stdio.h> +#include <string.h> + + +static int events_init = 0; +static void ddb_events_table_n(char *key, char *content, int update); + +ddb_events_table_t ddb_events_table[DDB_TABLE_MAX]; + + +void +ddb_events_init(void) +{ + if (events_init) + return; + + ddb_events_table[DDB_NICKDB] = ddb_events_table_n; + + events_init = 1; +} + + +static void +ddb_events_table_n(char *key, char *content, int update) +{ + struct Client *cptr; + char *botname; + int nick_renames = 0; + + /* Only my clients */ + if ((cptr = FindUser(key)) && MyConnect(cptr)) + { + botname = ddb_get_botname(DDB_NICKSERV); + /* Droping Key */ + if (!content && (IsNickRegistered(cptr) || IsNickSuspended(cptr))) + { + struct Flags oldflags; + + oldflags = cli_flags(cptr); + ClearNickRegistered(cptr); + ClearNickSuspended(cptr); + + sendcmdbotto_one(botname, CMD_NOTICE, cptr, + "%C :*** Your nick %C is droping", cptr, cptr); + + send_umode_out(cptr, cptr, &oldflags, IsRegistered(cptr)); + } + else + { + /* New Key or Update Key */ + char c = content[strlen(content) - 1]; + int nick_suspend = 0; + int nick_forbid = 0; + + if (c == '+') + nick_suspend = 1; + else if (c == '*') + nick_forbid = 1; + + if (nick_forbid) + { + sendcmdbotto_one(botname, CMD_NOTICE, cptr, + "%C :*** Your nick %C has been forbided, cannot be used", cptr, cptr); + nick_renames = 1; + } + else if (nick_suspend && update && IsNickRegistered(cptr)) + { + struct Flags oldflags; + + oldflags = cli_flags(cptr); + ClearNickRegistered(cptr); + SetNickSuspended(cptr); + + sendcmdbotto_one(botname, CMD_NOTICE, cptr, + "%C :*** Your nick %C has been suspended", cptr, cptr); + + send_umode_out(cptr, cptr, &oldflags, IsRegistered(cptr)); + } + else if (!nick_suspend && update && IsNickSuspended(cptr)) + { + struct Flags oldflags; + + oldflags = cli_flags(cptr); + ClearNickSuspended(cptr); + SetNickRegistered(cptr); + + sendcmdbotto_one(botname, CMD_NOTICE, cptr, + "%C :*** Your nick %C has been unsuspended", cptr, cptr); + + send_umode_out(cptr, cptr, &oldflags, IsRegistered(cptr)); + } + else if (!update) + { + sendcmdbotto_one(botname, CMD_NOTICE, cptr, + "%C :*** Your nick %C has been registered", cptr, cptr); + nick_renames = 1; + } + } + + if (nick_renames) + { + struct Client *acptr; + unsigned int v[2], k[2], x[2]; + char newnick[NICKLEN + 2]; + char tmp[100]; + char *parv[3]; + int flags = 0; + + k[0] = k[1] = x[0] = x[1] = 0; + + v[0] = base64toint(cli_yxx(cptr)); + v[1] = base64toint(cli_yxx(&me)); + + acptr = cptr; + + do + { + ircd_tea(v, k, x); + v[1] += 4096; + + if (x[0] >= 4294000000ul) + continue; + + sprintf(newnick, "Guest%.6d", (int)(x[0] % 1000000)); + acptr = FindUser(newnick); + } + while (acptr); + + SetRenamed(flags); + + parv[0] = cli_name(cptr); + parv[1] = newnick; + sprintf(tmp, "%lu", TStime()); + parv[2] = tmp; + + set_nick_name(cptr, cptr, newnick, 3, parv, flags); + } + } +} ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-04-14 10:48:24
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-14 10:48:16 UTC Modified files: TODO.es Log message: Actualizacion TODO ---------------------- diff included ---------------------- Index: ircd-ircdev/TODO.es diff -u ircd-ircdev/TODO.es:1.17 ircd-ircdev/TODO.es:1.18 --- ircd-ircdev/TODO.es:1.17 Wed Apr 13 07:37:31 2005 +++ ircd-ircdev/TODO.es Thu Apr 14 03:48:05 2005 @@ -1,14 +1,14 @@ # # TODO para ircd-ircdev # -# $Id: TODO.es,v 1.17 2005/04/13 14:37:31 zolty Exp $ +# $Id: TODO.es,v 1.18 2005/04/14 10:48:05 zolty Exp $ # # Insertar las nuevas entradas al principio de la lista TODO. # URGENTE -------------------------------------------------------------------------------------- - - [D] Implementar el protocolo DDB (ddb_events y ddb_db). + - [D] Implementar el protocolo DDB (ddb_db). - [D] Implementar tabla i de Ilines - [D] Implementar tabla o de Operadores - [D] Implementar tabla p de Privilegios @@ -73,7 +73,6 @@ entrar clientes al IRCD. Investigar eso. 31/Mar/2005 - [D] No se propaga el modo cuando estamos autentificando al conectar. - - [D] Dejan quitar modos -R y -S cuando los tienes. Leyenda: [G] General ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-04-17 18:35:27
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-17 18:35:17 UTC Added files: RELEASE.NOTES RELEASE.NOTES.es Log message: Agregado mas documentacion ---------------------- diff included ---------------------- Index: ircd-ircdev/RELEASE.NOTES diff -u /dev/null ircd-ircdev/RELEASE.NOTES:1.1 --- /dev/null Sun Apr 17 11:35:17 2005 +++ ircd-ircdev/RELEASE.NOTES Sun Apr 17 11:35:07 2005 @@ -0,0 +1,421 @@ +Release notes for IRC-Dev IRCD version 1.0 +Last updated: 17 Apr 2005 +Written by Toni Garcia <zo...@ir...> +Based on earlier documents by Kev <kl...@mi...>, +Braden <db...@ya...> and Michael Poole <md...@tr...> + +This document briefly describes changes in IRC-Dev ircd relative to +ircu2.10.07 (based on IRC-Hispano ircdh and Terraircu). IRC-Dev ircd +is only compatible with servers that implement the P10 protocol. It +has been tested to link against old ircds, but some features (notably +IPv6 support) are not supported by old ircds. + + +Enhancements: + +The configuration file format has changed to one that is easier to +read. It is based on the configuration parser found in ircd-hybrid. +As usual, an example configuration file can be found in the doc +subdirectory. + +IRC-Dev ircd now supports IPv6 clients. If your operating system +provides IPv6 socket support, IRC-Dev ircd can accept connections +on IPv6 addresses. Even if your operating system does not support IPv6 +sockets, you can link (using IPv4) to a server that has IPv6 clients, +and IRC-Dev ircd will treat the IPv6 clients correctly. + +The DNS resolver has been replaced with a streamlined version (also +from ircd-hybrid) that avoids some of the complications from using +the full libresolv or adns libraries. + +The server can query an IAUTH external authorization server. The +protocol is described in doc/en/iauth.txt. This allows an external +program to accept or reject any client that connects to the server +and allows that external program to assign an account stamp to the +incoming user. + +More than one hashing mechanism is now supported for oper passwords, +and a new tool (ircd/umkpasswd) is provided to generate them. + +Commands that send messages to specified services may be defined in +the configuration file by using Pseudo blocks. This lets users use +commands like /X or /CHANSERV from their client, without tying the +admin to a particular arrangement or naming of services. + +Clients may negotiate extensions and changes to the standard IRC +client protocol by using the CAP command during registration. There +does not appear to be any documentation for the protocol, which should +not matter since IRC-Dev ircd does not currently implement capabilities +that affect the protocol. + +The /stats command accepts string identifiers in addition to +single-character identifiers. For example, "/stats access" shows the +same data as "/stats i". Supported names are shown by /stats. New +/stats options are: /stats a (nameservers), to list DNS nameservers in +use; /stats L (modules), to list loaded modules; and /stats R +(mappings), to list privmsg helper commands defined by Pseudo blocks. +By default, all of these are hidden from normal users. + +Client blocks (previously I: lines), Operator blocks (previously O: +and o: lines), channel bans and silences may use CIDR notation instead +of simple wildcards. You may also have silence exceptions by putting +'-' before the mask; for example, if you wish to silence everyone +except X, you could use SILENCE *!*@*,-X!cse...@ir.... + +The server will no longer kick "net riders" in keyed (+k) channels if +both sides of the net join have the same key. + +GLINE has been extended to allow IRC operators to issue global +G-lines; see doc/en/gline.txt for more information about how to use +this feature. + +A new JUPE command has been added to permit servers to be juped in a +more reliable fashion. + +Two new channel mode manipulation commands, OPMODE and CLEARMODE, have +been added. OPMODE works exactly like MODE, except that 1) only IRC +operators can use it; 2) it ignores whether or not the operator is a +channel operator. CLEARMODE is a reliable means of eradicating +certain channel modes; it is given an argument string consisting of +the modes to clear. If that argument string is not given, it defaults +to "ovpsmikbl." + +When a channel MODE command from a remote user must be bounced, a +"MODE -o" for the user will also be sent, in order to attempt to +"heal" the desync. Also, the old anti-hack code has been removed, +since servers never send MODEs except for bounces. + +Most compile-time options have been converted to run-time options +which may be set through the configuration file or through the use of +the new commands SET, RESET, and GET; for more information about +these, please refer to doc/ircd.sample-en.conf (for configuration file +information), doc/en/features.txt (for a list and description of the +options), and doc/en/log.txt (for a description of the logging +subsystem configuration). + +A new logging subsystem has been written, making it much easier to get +ircd to write out log files, or to use syslog if that's desired. + +The old chroot() code has been removed; that should now be handled via +an external wrapper. Such a wrapper has been included in the tools +subdirectory. PLEASE READ doc/en/chroot.txt IF YOU WISH TO USE +CHROOT-STYLE JAILS WITH IRCD. + +The build system has been completely revamped; since most compile-time +options are now run-time, the few remaining ones can be placed in +./configure and set with --with-* and --enable-*. Please read INSTALL +for more information on how to compile and install the daemon. + +All of the old select()- and poll()-based event loop has been +completely ripped out and replaced, enabling ircd to use kqueue(), +epoll() and /dev/poll, on systems that support those interfaces. + +The server now uses extended numerics exclusively. + +A large number of code clean-ups, changes, and fixes have been made. +Some of these should hopefully increase performance; others will make +it easier to maintain the code. + +All server to server communications use tokenization and numeric id's, +this reduces the bandwidth requirements approximately 10-20%. + +Much of the network code has been rewritten and many old bugs relating +to the networking core of the server have been fixed. + +The port handling code has been rewritten to allow much better control +over listeners. + +The server supports extended numerics which theoretically would allow +the entire population of the planet to participate on a network without +running out of unique values. + +Added ISUPPORT messages on client connects to allow client coders to +detect network specific enhancements to the client protocol. + +Server aliasing and virtual hosting (port forwarding) are available for +larger DoS attack prone networks. + +Status messages are sent to connecting clients so connections don't +seem to hang during client registration. + +The server now uses a bit less memory and cpu under full load, we +estimate around a 10% improvement in resource usage over the previous +version. + +IRC-Dev ircd now uses 3 environment to choose; DDB Environment of +Distributed DataBases based on ESNET ircd, Undernet Environment based +on Undernet and Services Environment based on Terraircu. + + +DDB Environment: +TODO. + + +Services Environment: +TODO. + + +Undernet Environment: + +A new feature called "oplevels" has been added. It uses new channel +keys (+A for the administrator, +U for users) to grant chanop status +when you join using those keys. Part of this channel protection is +that you cannot be deopped in channel by someone who you opped. + + +Configuration Changes: + +As mentioned above, the configuration file format has changed +radically. Please consult doc/ircd.sample-en.conf for details on the +new format. Some prominent changes follow. + +The old contents of H: lines have been merged into the Connect block +that describes the peer server(s) that should be allowed to hub. + +Two default virtual host addresses may be specified, one for IPv4 +sockets and one for IPv6 sockets. + +Nickname jupes have their own blocks, and do not share structure with +UWorld server declarations. + +Operator connection classes and individual operator blocks may be +assigned privileges, rather than having them controlled globally. +Because of this, the feature settings that controlled the privileges +globally have been removed. + +The maximum number of clients allowed per IP may be set in a Client +block (the equivalent of I: lines). + +Most compile-time options are now run-time configurable features, and +can be set through the daemon configuration file. Please see +doc/ircd.sample-en.conf for an illustration of the format (search for +Features block). Documentation for the logging subsystem is in +doc/en/log.txt, and the list and description of all the features is +located in doc/en/features.txt. + + +Compile Time Options: + +A listing of supported compile-time options may be seen by running +"./configure --help". The defaults should be sane. In particular, +you should NOT compile with --enable-debug or with --disable-symbols +on a production network. + +Again, most compile-time options are now set in the configuration +file. The remaining options are set through arguments to +./configure. A list of these options is available with ./configure +--help; a more detailed description follows: + +--enable-poll + The configure script attempts to only use poll on systems where that +is a direct system call. Sometimes, however, it will not properly +detect this. This option is meant to force ircd to use poll on +systems where ./configure does not detect that it is a system call. + +--enable-debug + This option turns on DEBUGMODE, which enables code useful for +debugging the server. THIS FEATURE SHOULD NOT BE USED ON A PRODUCTION +NETWORK; it represents a severe privacy risk. + +--disable-asserts + Assertions are a means of checking that certain underlying +assumptions are met. This option disables those assertions. + +--disable-symbols + By default, the -g compiler option is used to enable symbols on the +binary. These symbols are useful when attempting to track down the +cause of a crash. Please do not use this option. + +--enable-profile + This option simply adds the -pg compiler option to enable profiling +support. + +--enable-pedantic +--enable-warnings + The Coder Committee attempts to release code that generates no +compile-time warnings or errors. These two options add gcc-specific +warning flags to the compiler flags. These options should not be used +if your compiler is not gcc. + +--disable-inlines + Some critical functions are forcefully inlined. This flag disables +that behavior. It should not be used for performance reasons. + +--disable-devpoll + On systems that have /dev/poll, the /dev/poll-based engine is +automatically enabled. This option inhibits that behavior. + +--disable-kqueue + On systems that have kqueue(), the kqueue()-based engine is +automatically enabled. This option inhibits that behavior. + +--disable-epoll + On systems that have epoll(), the epoll()-based engine is +automatically enabled. This option inhibits that behavior. + +--with-symlink=name + When "make install" is executed, the daemon is installed in such a +way that old versions are kept, and a symlink is made to the latest +installed version. This option selects the name given to that +symlink. Specify a symlink name of "no" or use "--without-symlink" to +disable this behavior. + +--with-mode=mode + The daemon binary is installed with permissions 711 by default; this +option may be used to specify a different permission set for the +binary. + +--with-owner=owner + By default, the owner of the installed binary will be the same as +the person that compiled it; this option permits a different owner to +be specified. + +--with-group=group + By default, the group owner of the installed binary will be the same +as the primary group of the person that compiled it (at the time it +was compiled); this option permits a different group owner to be +specified. + +--with-domain=domain + The daemon attempts to keep some statistics on the server's user +load, including how many local users connect to the server. A local +user is determined by comparing the user's host name to a domain +name. The domain name can be set through the feature subsystem, as +documented in doc/es/features.txt; however, it will default either to +the domain specified with this flag, or to a name extracted from +/etc/resolv.conf, if it exists. + +--with-chroot=dir + Some admins may wish to run ircd within a chroot "jail," to enhance +the security of their systems. Although the chroot() code was removed +from ircd, the build system still supports operation of this form. If +you wish to use chroot-based jails, read doc/en/chroot.txt and give +this option to ./configure. + +--with-dpath=dir + This option simply specifies the path to the data directory for the +daemon. If --with-chroot has been given, this path must be compatible +with the chroot directory. See doc/en/chroot.txt for more information +about this restriction. + +--with-cpath=file + This option simply specifies the path to the configuration file for +the daemon, and may be either a relative or absolute path name. If it +is an absolute path, and if --with-chroot has been given, this path +must be compatible with the chroot directory. See doc/en/chroot.txt +for more information about this restriction. + +--with-lpath=file + When the server is compiled in DEBUGMODE (--enable-debug), the +debugging logs will be sent to the file specified here (defaulting to +"ircd.log" in the data directory). If this is an absolute path, +--with-chroot has been given, and if that path is not compatible with +the chroot directory, then a warning will be issued and the default +will be used. See doc/en/chroot.txt for more information about this +restriction. + +--with-maxcon=maxcon + The maximum number of sockets that the server may open is normally +derived from the hard limit on the number of file descriptors. If +desired, a higher value may be used by specifying this option to +./configure. + +--with-ddb-environment + This option allows to choose DDB environment for ircd. It is the +value by default. + +--with-services-environment + This option allows to choose Services environment for ircd. If not +it especifies, will be used DDB environment. + +--with-undernet-environment + This option allows to choose Undernet environment for ircd. If not +it especifies, will be used DDB environment. + +Otherwise Undocumented Features: + +Despite our preferences to keep these undocumented, they are +occasionally useful, and are described here for users who may +need them. + +To enable these, you need to add them to CFLAGS prior to running +./configure, usually as in: CFLAGS="-O2 -D<option>" ./configure + +-DNICKLEN=20 + This allows you change the maximum nick length from 15 to 20 (or +whatever number you use at the end). It MUST be the same on all +servers on your network, or bad things will happen. You should also +use the NICKLEN feature in ircd.conf. + +-DNOTHROTTLE + This disables the throttling code. This is used for debugging +*only*. It lets you connect up to 255 clients from one host with no +time considerations. If this is enabled on a production server Kev will +personally drive your server into the ground. You have been warned. + + +Operating System and Kernel Requirements: + +If you plan allowing more than 1000 clients on your server, you may +need to adjust your kernel resource limits for networking and +I/O. There are two things you will need to pay particular attention +to, the number of file descriptors available and the number of buffers +the kernel has available to read and write data to the file +descriptors. + +To calculate kernel buffer requirements a good place to start is to +multiply the expected number connections expected on the machine by +the amount of data we buffer for each connection. Doubling the result +of the above calculation and dividing it by the size of the buffers +the kernel uses for I/O should give you a starting place. + +The server uses 2K kernel buffers for clients, and 64K kernel buffers +for servers (actual use may be somewhat higher). + +c_count - number of clients expected +c_q - number of bytes buffered for each client +s_count - number of servers expected +s_q - number of bytes buffered for each server + +buffer count = (2 * (c_count * c_q + s_count * s_q)) / kernel buffer size + +If the client count is 2000 and the server count is 1 (normal leaf) +and your server uses 2K as an I/O buffer size: + +You need (2 * (2000 * 2048 + 1 * 65536)) / 2048 or a minimum of 4064 +buffers available, if the kernel uses 512 byte buffers you will need a +minimum of 16256 kernel buffers. + +These settings may be a bit light for net-breaks under full client +load you will need to experiment a bit to find the right settings for +your server. + +FreeBSD --WildThang + +You may want to increase your kernel resources if you want to put a +lot of clients on your machine here are a few values to start with: + +CHILD_MAX=4096 +OPEN_MAX=4096 +FD_SETSIZE=4096 +NMBCLUSTERS=8096 + +If you have trouble connecting *out* from your machine try: + sysctl -w net.inet.ip.portrange.last=10000 + +Solaris 2.6 --Tar + +Increase the default hard limit for file descriptors in /etc/system: + +set rlim_fd_max = 4096 + +The server will raise the soft limit to the hard limit. + +Linux 2.2 -- [Tri]/Isomer + +The kernel has a kernel destination cache size of 4096. If the kernel +sees more than 4096 IP's in 60s it warns 'dst cache overflow'. This +limit can be changed by modifying /proc/sys/net/ipv4/route/max_size. + +A patch to select is also recommended if you have regular poll/select +errors. Index: ircd-ircdev/RELEASE.NOTES.es diff -u /dev/null ircd-ircdev/RELEASE.NOTES.es:1.1 --- /dev/null Sun Apr 17 11:35:17 2005 +++ ircd-ircdev/RELEASE.NOTES.es Sun Apr 17 11:35:07 2005 @@ -0,0 +1,431 @@ +Notas de lanzamiento para IRCD de IRC-Dev version 1.0 +Ultima actualización: 17 Abril 2005 +Escrito y traducido por Toni Garcia <zo...@ir...> +Basado en anteriores documentos por Kev <kl...@mi...>, +Braden <db...@ya...> y Michael Poole <md...@tr...> + +Este documento describe brevemente los cambios del ircd de IRC-Dev en +relación con el ircu2.10.07 (basado en el ircdh de IRC-Hispano y en +Terraircu). El ircd de IRC-Dev es compatible solamente con servidores +que tengan implementado el protocolo P10. Ha sido probado el link con +ircds antiguos, pero muchas caracteristicas (notablemente el soporte +IPv6) no están soportadas por ircds viejos. + + +Implementaciones: + +El formato del archivo de la configuración ha cambiado a uno que es +más fácil de leer. Está basado en el programa de análisis de la +configuración de ircd-hybrid. Como de costumbre, un ejemplo del +archivo de la configuración se encuentra en el subdirectorio doc. + +El ircd de IRC-Dev soporta ahora los clientes IPv6. Si tu sistema +operativo proporciona el soporte de sockets IPv6, el ircd de IRC-DEV +puede aceptar conexiones con direcciones IPv6. Incluso si su sistema +operativo no soporta los sockets IPv6, usted puede linkar (con IPv4) +a un servidor que tenga clientes IPv6, y el ircd de IRC-Dev trata +correctamente a los clientes IPv6. + +El resolvedor DNS se ha substituido por una versión "streamlined" +(también del ircd-hybrid) que evita las complicaciones de usar las +bibliotecas completas del "libresolv" o de "adns". + +El servidor puede preguntar a un servidor externo de autorización IAUTH. +El protocolo se describe en doc/es/iauth.txt. Esto permite un programa +externo para aceptar o para rechazar a cualquier cliente eso conecta con +el servidor y permite que ese programa externo asigne una cuenta de +acceso al usuario entrante. + +Más de un mecanismo del hashing está soportado ahora para las +contraseñas de operador (IRCOP), y se proporciona una herramienta nueva +(ircd/umkpasswd) para generarlas. + +Comandos que envían mensajes a los servicios especificados se pueden +definir en el archivo de la configuración usando bloques "Pseudo" Esto +deja a los usuarios utilizar los comandos como /X o /CHANSERV de su +cliente, sin atar a los cambios de nick de los servicios. + +Los clientes pueden negociar extensiones y cambios al protocolo de clientes +del IRC estándar usando el comando CAP durante el registro. Allí no hay +ninguna documentación para el protocolo, puesto que el ircd actualmente +no implementa capacidades que afectan al protocolo. + +El comando /stats acepta identificadores de texto además de indentificadores +de un solo caracter. Por ejemplo, "/stats access" muestra los mismos +datos que "/stats i". Los nombres soportados son mostrados por "/stats". +Nuevas opciones de /stats son: /stats a (nameservers), para listar los +nameservers del DNS en uso; /stats L (modules), para listar de módulos +cargados; y /stats R (mappings), para listar los comandos definidos de +privmsg de ayuda por los bloques "Pseudo". +Por defecto, todos son ocultados para usuarios normales. + +Los bloques "Client" (previamente líneas I:), bloques "Operator" +(previamente líneas O: y o:), bans de canales y los sileces pueden +utilizar la notación de CIDR en lugar de comodines simples. Puedes +también tener excepciones de silencie poniendo '-' antes de la máscara; +por ejemplo, si deseas silenciar de todo el mundo excepto X, puedes +utilizar SILENCE *!*@*,-X!cse...@bo.... + +El servidor no puede kickear por "net riders" en los canales con llave +(+k) si ambos lados de la red al unirse tienen la misma llave. + +GLINE se ha ampliado para permitir a los Operadores de IRC (IRCops) +publicar G-lines globales; vea doc/es/gline.txt para más información sobre +cómo utilizar esta característica. + +Un nuevo comando JUPE se ha agregado para permitir los servidores a ser +jupeados en una manera más confiable. + +Dos nuevos comandos de gestión de canales, OPMODE y CLEARMODE han sido +agregados. OPMODE trabaja exactamente igual que MODE, excepto esto 1) +solamente IRCops pueden utilizarlo; 2) se ignora o no si el operador es +un operador del canal. CLEARMODE es un medio confiable para la supresión +de ciertos modos del canal; si se da un argumento, consiste en los modos +para borrar. Si no se da el argumento, por defecto usa "ovpsmikbl." + +Cuando un comando MODE de canal desde un usuario remoto debe ser devuelto, +un "MODE -o" para el usuario también se envía para procurar a "curar" la +desincronización (desync). También, el viejo código anti-hack se ha +eliminado, desde que los servidores nunca envían MODEs a excepción de las +devoluciones (bounces). + +La mayoría de las opciones de en tiempo de compilación han sido convertidas +a las opciones en tiempo de ejecución, de las cuales se pueden fijar con +el archivo de configuración o con el uso de los nuevos comandos SET, RESET y +GET; para más información sobre éstos, por favor lea doc/ircd.sample-es.conf +(para información del archivo de configuración), doc/es/features.txt (para +la lista y descripción de las opciones), y doc/es/log.txt (para la descripción +de la configuración del subsistema de registro (log)). + +Se ha escrito un nuevo subsistema de registración, haciéndolo mucho más fácil +para conseguir que el ircd escriba archivos de registro, o para usar syslog si +se desea. + +Se ha quitado el viejo código del chroot(); eso ahora se debe hacerlo con un +programa externo. Dicho programa está incluido en el directorio tools. +POR FAVOR LEER doc/es/chroot.txt SI DESEAS UTILIZAR JAULAS (JAIL) DE CHROOT-STYLE +con IRCD. + +El sistema de compilación ha sido completamente mejorado; desde que la +mayoría de las opciones de en tiempo de compilación son ahora de en tiempo de +ejecución, las pocas restantes se pueden colocar dentro del ./configure y +ajustar con --with-* y -enable-*. Por favor leer INSTALL.es para más información +sobre cómo compilar y instalar el demonio (daemon). + +Todo el sistema de gestión de eventos viejo select() - y poll() ha sido eliminado y +sustituido, permitiendo al ircd utilizar kqueue(), epoll() y /dev/poll, en los +sistemas que soportan esas interfaces. + +Se haa hecho una gran cantidad de limpieza, cambios y correcciones del códig. +Algunos de éstos deben aumentar el rendimiento; otros harán más facil el +mantenimiento del código. + +El servidor utiliza ahora exclusivamente numéricos extendidos. + +Toda la comunicación servidor a servidor utiliza numéricos y tokens, esto +reduce los requisitos de ancho de banda aproximadamente 10-20%. + +Mucho código de networking se ha reescrito y muchos de los viejos bugs +relacionados con la base del networking del servidor han sido arreglados. + +Se ha reescrito el código de escucha de los puertos para permitir un control +mucho mejor de los excesivos oyentes. + +El servidor soporta los numéricos extendidos que teóricamente permitiría toda +la población entera del planeta a participar en una red sin el funcionamiento +de valores únicos. + +Los mensajes de ISUPPORT agregados en la conexión del cliente, para permitir a +los programadores de los programas clientes detectar las características +específicasde la red al protocolo del cliente. + +El Aliasing y virtual hosting (redireccionado del puerto) del servidor está +disponible para redes propensas de ataques DoS grandes. + +Los mensajes del estado se envían al conectar los clientes así que no parezcan +que las conexiones cuelgan durante el registro del cliente. + +El servidor utiliza ahora menos memoria y CPU, nosotros estimamos alrededor +de una mejora del 10% de uso de recursos sobre la anterior versión. + +El ircd IRC-Dev, ahora usa 3 entornos a elegir; Entorno DDB de Bases de Datos +Distribuidas basado en el ircd de ESNET, Entorno Undernet basado en Undernet +y Entorno Services basado en Terraircu. + + +Entorno DDB: +TODO + + +Entorno Services: +TODO + + +Entorno Undernet: + +Se ha agregado una nueva característica llamada "oplevels". Utiliza el +nuevo canal llaves de acceso "key" (+A para el administrador, +U para +usuarios) para conceder estado del auto op cuando se entra utilizando +esas llaves. Parte de esta protección del canal es que no puedes ser +deopeado en el canal por alguien que le has opeado. + + +Cambios de configuración: + +Según lo mencionado arriba, el archivo de la configuración el formato +ha cambiado radicalmente. Consulte por favor doc/ircd.sample-es.conf +para los detalles en el nuevo formato. Algunos cambios prominentes siguen. + +El viejo contenido de las líneas H: han sido combinado en el bloque "Connect" +eso describe el servidor(s) que debe ser permitido a hub. + +Dos direcciones de host virtuales (vhost) por defecto pueden ser especificado, +uno para sockets IPv4 y uno para sockets IPv6. + +Los jupes de nicks tienen sus propios bloques, y no comparte la estructura con +declaraciones de servidores de UWorld. + +Las clases de conexion de Operador y bloques de "Operator" individuales pueden +ser privilegios asignados, más bien que el tener que controlar globalmente. +Debido a esto los ajustes que controlaba los privilegios globales se han quitado. + +El número máximo de los clientes permitidos por IP se puede fijar en un bloque +"Client" (el equivalente de líneas I:). + +La mayoría de las opciones de en tiempo de compilación ahora son características +configurables en tiempo de ejecución. Por favor vea doc/ircd.sample-es.conf +para una ilustración del formato (busca por bloque Features). La documentación +para el subsistema de registro está dentro de doc/es/log.txt, y la lista y la +descripción de todas las características se encuentra en doc/es/features.txt. + + +Opciones de en tiempo de compilación: + +Un listado de opciones de en tiempo de compilación soportadas puede ser +visto ejecutando "./configure -- help ". Los valores por defecto deben +ser sanos. En particular, no debes usar con --enable-debug o con +--disable-symbols en una red en producción. + +Una vez más, la mayoría de las opciones de en tiempo de compilación ahora se +ajustan en el archivo de configuración. Las opciones restantes se fijan con +argumentos en ./configure. Una lista de estas opciones está disponible con +./configure --help; una descripción más detallada sigue: + +--enable-poll + El script de configure procura utilizar solamente poll en sistemas donde ese +es una llamada directa del sistema. A veces, sin embargo, no se detecta +correctamente. Esta opción significa para forzar al ircd para utilizar poll +en los sistemas donde ./configure no detecta que es una llamada del sistema. + +--enable-debug + Esta opción gira en el DEBUGMODE, que permite el código útil para eliminar +errores (debugging) del servidor. ESTA CARACTERÍSTICA NO DEBE SER UTILIZADO +EN UNA RED EN PRODUCCIÓN; representa un riesgo severo de privacidad. + +--disable-asserts + Las aserciones es el medio de comprobar que se encuentran ciertas incumbencias +de código. Esta opción deshabilita esas aserciones. + +--disable-symbols + Por defecto, la opción -g del compilador es usar para habilitar símbolos en +el binario. Estos símbolos son útiles cuando se trata de seguir la causa de +un desplome (crash). No utilice por favor esta opción. + +--enable-profile + Esta opción simplemente agrega la opción -pg del compilador para permitir el +soporte de profiling. + +--enable-pedantic +--enable-warnings + El comité de programadores procura lanzar código que genere sin errores o +advertencias de en tiempo de compilación. Estas dos opciones agregan flags +específicos del gcc a los flags del compilador. Estas opciones no deben ser +utilizadas si tu compilador no es gcc. + +--disable-ilines + Algunas funciones críticas están "ilined" forzosamente. Este flag +deshabilita ese comportamiento. Esto no debe ser utilizado para razones +de rendimiento. + +--disable-devpoll + En los sistemas que tienen /dev/poll, el gestionador de eventos basado +en /dev/poll es permitido automáticamente. Esta opción inhibe ese +funcionamiento. + +--disable-kqueue + En los sistemas que tienen kqueue() el gestionador de eventos basado +en kqueue() es permitido automáticamente. Esta opción inhibe ese +funcionamiento. + +--disable-epoll + En los sistemas que tienen epoll(), el gestionador de eventos basado +en epoll() es permitido automáticamente. Esta opción inhibe ese +funcionamiento. + +--witch-symlink=nombre + Cuando se ejecuta "make install", el demonio está instalado de tal manera +que las versiones viejas están guardadas, y el acceso directo (symlink) se +hace a la última versión instalada. Esta opción selecciona el nombre para +el symlink. Especifique un nombre del symlink o utilice "--without-symlink" +para deshabilitar esto. + +--with-mode=permisos + El binario del demonio está instalado con permisos 711 por defecto; esta +opción se puede utilizar para especificar un permiso diferente para el binario. + +--with-owner=propietario + Por defecto, el propietario del binario instalado es el mismo que la +persona que lo compiló; esta opción permite especificar un propietario +diferente. + +--with-group=grupo + Por defecto, el grupo de propietarios del binario instalado será el mismo +que el grupo principal de la persona que lo compiló; esta opción permite +especificar un grupo de propietarios diferente. + +--with-domain=dominio + El dominio procura guardar estadísticas sobre la carga de usuarios del +servidor, incluyendo cuántos usuarios locales conecta con el servidor. Un +usuario local es determinando comparando el hostname del usuario con un +nombre de dominio. El nombre de dominio se puede fijar a través del +subsistema de "Features", documentado en doc/es/features.txt; sin embargo, +si no se especifica ningún dominio, el nombre será extraído de +/etc/resolv.conf, si existe. + +--with-chroot=directorio + Algunos admins pueden desear hacer funcionar el ircd dentro de una +jaula (jail) chroot, para aumentar la seguridad de sus sistemas. Aunque el +código del chroot() fue quitado del ircd, la función del sistema todavía +soporta la operación de esta forma. Si deseas utilizar jaulas basados en +chroot, lea doc/es/chroot.txt y usa esta opción en el ./configure. + +--with-dpath=directorio + Esta opción especifica simplemente la ruta del directorio de datos para +el demonio. Si se usa --with-chroot, esta ruta debe ser compatible +con el directorio del chroot. Vea doc/es/chroot.txt para más información +sobre esta restricción. + +--with-cpath=archivo + Esta opción especifica simplemente la ruta del archivo de configuración +para el demonio, y puede ser una ruta relativa o absoluta. Si es una ruta +absoluta, y si se usa --with-chroot, esta ruta debe ser compatible con el +directorio del chroot. Vea doc/es/chroot.txt para más información +sobre esta restricción. + +--with-lpath=archivo + Cuando el servidor se compila en DEBUGMODE (--enable-debug), los +archivos de debugging serán enviados al archivo especificado aquí (por +defecto "ircd.log" en el directorio de datos). Si es una ruta absoluta, +se usa --with-chroot, y si esa ruta no es compatible con el directorio +del chroot, entonces saldrá una advertencia y se utilizará el valor por +defecto. Vea doc/es/chroot.txt para más información +sobre esta restricción. + +--with-maxcon=maxconexiones + El número máximo de las conexiones que el servidor puede tener normalmente +está derivado del límite de hardware en el número de descriptores del +fichero. Si deseas, se puede utilizar un valor más alto para especificar +esta opción en el ./configure. + +--with-ddb-environment + Esta opción permite escoger el entorno DDB para el ircd. Es el valor por +defecto. + +--with-services-environment + Esta opción permite escoger el entorno Services para el ircd. Si no se +especifica, se usará el entorno DDB. + +--with-undernet-environment + Esta opción permite escoger el entorno Undernet para el ircd. Si no se +especifica, se usará el entorno DDB. + + +Características no documentadas: + +A pesar de nuestras preferencias para guardar estas indocumentadas, son +de vez en cuando útiles, y se describen aquí para los usuarios que puedan +necesitarlas. + +Para permitir esto, necesita agregarlos a los "CFLAGS" antes de ejecutar +./configure, generalmente como en: CFLAGS="-o2 - D<option>" ./configure + +-DNICKLEN=20 + Esto permite cambiar la longitud máxima del nick a partir del 15 a 20 +(o cualquier número que utilices en el extremo). Esto DEBE ser igual en +todos los servidores de tu red, o sucederán cosas malas. Debes también +utilizar la característica de NICKLEN en el ircd.conf. + +-DNOTHROTTLE + Esto inhabilita el código de "throttling". Esto se utiliza *solamente* +para debug. Le deja conectar hasta 255 clientes desde un host sin limites +de tiempo. Si esto se habilita en un servidor en producción, Kev puede +conducir personalmente tu servidor en tierra. Estás advertido. + + +Requisitos del sistema operativo: + +Si planeas permitir a más de 1000 clientes en tu servidor, puedes necesitar +ajustar sus límites de recursos del núcleo (kernel) para networking y I/O +(entradas/salidas de dispositivos). Hay dos cosas que necesitará tener que +poner atención particular, el número de los descriptores de ficheros +disponibles y el número de almacenadores (buffers) que el núcleo tiene +disponibles para leer y para escribir datos al fichero de descriptores. + +Para calcular los requisitos de los almacenadores del núcleo para empezar +está en multiplicar las conexiones previstas en la máquina con la cantidad de +datos que guardamos para cada conexión. Doblar el resultado del cálculo +anterior y divide por el tamaño de los almacenadores que el núcleo usa para +I/O deben dar para empezar. + +El servidor utiliza 2K para almacenadores del núcleo para clientes, y 64K +para almacenadores núcleo para los servidores (el uso real puede estar algo más). + +c_count - número de clientes esperados +c_q - número de bytes guardados para cada cliente +s_count - número de servidores esperados +s_q - número de bytes guardados para cada servidor + +Tamaño de buffer = (2 * (c_count * c_q + s_count * s_q)) / tamaño almacenador del núcleo + +Si la cuenta del cliente es 2000 y la cuenta del servidor es 1 (leaf normal) +y tu servidor usa 2K como almacenador de I/O: + +Necesitas (2 * (2000 * 2048 + 1 * 65536)) / 2048 o un mínimo de 4064 de +buffers disponibles, si el kernel utiliza 512 bytes para los almacenadores +necesitarás un mínimo de 16256 almacenadores del núcleo. + +Estos ajustes pueden ser una luz del pedacito para romper la red debajo +de una carga de un cliente que necesitarás experimentar un pedacito para +encontrar los ajustes perfectos para tu servidor. + +FreeBSD -- WildThang + +Puedes desear aumentar los recursos del núcleo si deseas poner muchos +clientes en tu máquina aqui tienes unos pocos valores para empezar con: + +CHILD_MAX=4096 +OPEN_MAX=4096 +FD_SETSIZE=4096 +NMBCLUSTERS=8096 + +Si tienes problemas para conectar *hacia fuera* de tu máquina, intenta: + sysctl -w net.inet.ip.portrange.last=10000 + +Solaris 2.6 -- Alquitrán + +Aumente el límite de hardware por defecto para el archivo de los descriptores +en /etc/system: + +set rlim_fd_max = 4096 + +El servidor subirá el límite por software al límite por hardware. + +Linux 2.2 -- [ Tri]/Isomer + +El núcleo tiene un tamaño del cache destino del núcleo de 4096. Si el +núcleo ve que más de 4096 IP en 60s él advierte 'dst cache overflow'. +Este límite puede ser cambiado modificándose /proc/sys/net/ipv4/route/max_size. + +Un parche para el select también se recomienda si usted tiene errores del +poll/select regularmente. + ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-04-17 18:38:20
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-17 18:38:14 UTC Modified files: TODO.es Log message: actualizacion TODO ---------------------- diff included ---------------------- Index: ircd-ircdev/TODO.es diff -u ircd-ircdev/TODO.es:1.18 ircd-ircdev/TODO.es:1.19 --- ircd-ircdev/TODO.es:1.18 Thu Apr 14 03:48:05 2005 +++ ircd-ircdev/TODO.es Sun Apr 17 11:38:04 2005 @@ -1,7 +1,7 @@ # # TODO para ircd-ircdev # -# $Id: TODO.es,v 1.18 2005/04/14 10:48:05 zolty Exp $ +# $Id: TODO.es,v 1.19 2005/04/17 18:38:04 zolty Exp $ # # Insertar las nuevas entradas al principio de la lista TODO. # @@ -65,6 +65,10 @@ - [G] Estudiar la remodelación del esquema de "hubs" y "leafs" a un basandonos en el calculo de topologia que realiza OSPF solo que en cuanto a coste, ancho de banda y retardo. + - [G] Documentar en el RELEASE.NOTES lo relacionado con DDB y Services. + - [G] Mirar el tema de control de Ilines por rangos, el tema es que con un /64 + actualmente deja X clones para cada IP de ese rango, deberia haber alguna + forma de que sea por rango. BUGS CONOCIDOS -------------------------------------------------------------------------------------- ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-04-17 22:30:55
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-17 22:30:49 UTC Added files: doc/es/asll.txt Log message: mas documentacion en espaol ---------------------- diff included ---------------------- Index: ircd-ircdev/doc/es/asll.txt diff -u /dev/null ircd-ircdev/doc/es/asll.txt:1.1 --- /dev/null Sun Apr 17 15:30:49 2005 +++ ircd-ircdev/doc/es/asll.txt Sun Apr 17 15:30:39 2005 @@ -0,0 +1,27 @@ +$Id: asll.txt,v 1.1 2005/04/17 22:30:39 zolty Exp $ + +Documentacion preliminar de AsLL, última actualización 13 Jun 2002 + +Formato del ping de servidor-a-servidor: + +<prefijo> G !<ts-local> <target> <ts-local> + +prefijo = numérico del servidor de origen +ts-local = timestamp local, como "segundos.milisegundos" +target = númerico del servidor de destino + +El timestamp local se envía también en vez del campo de origen, +la información RTT puede ser recogida desde servidores sin AsLL, +mientras se preserva compatibilidad hacia atrás. + + +Formato del pong de servidor-a-servidor + +<prefijo> Z <origen> <target> <ts-remoto> <diff> <ts-local> + +prefijo = numérico del servidor de origen +origen = numérico del servidor de origen +target = númerico del servidor de destino +ts-remoto = timestamp remoto recibido desde un PING AsLL +diff = diferencia entre ts-local y ts-remoto en milisegundos (número entero) +ts-local = timestamp local, como "segundos.milisegundos" ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-04-20 22:10:03
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-20 22:09:56 UTC Modified files: TODO.es Log message: actualizacion TODO ---------------------- diff included ---------------------- Index: ircd-ircdev/TODO.es diff -u ircd-ircdev/TODO.es:1.19 ircd-ircdev/TODO.es:1.20 --- ircd-ircdev/TODO.es:1.19 Sun Apr 17 11:38:04 2005 +++ ircd-ircdev/TODO.es Wed Apr 20 15:09:46 2005 @@ -1,7 +1,7 @@ # # TODO para ircd-ircdev # -# $Id: TODO.es,v 1.19 2005/04/17 18:38:04 zolty Exp $ +# $Id: TODO.es,v 1.20 2005/04/20 22:09:46 zolty Exp $ # # Insertar las nuevas entradas al principio de la lista TODO. # @@ -56,7 +56,6 @@ - [G] Soporte RC4 para server<->server. - [G] Soporte SSL para client<->server. - [G] Mirar si el aviso de invites lo haga con wallchops o con raw. - - [D] Documentar para Doxygen el Watch y el DDB - [G] Soporte de +e (exceptions) de canales - [G] Modo de canal +u de esconder mensajes de quit y part (evitar publicidad) @@ -65,11 +64,37 @@ - [G] Estudiar la remodelación del esquema de "hubs" y "leafs" a un basandonos en el calculo de topologia que realiza OSPF solo que en cuanto a coste, ancho de banda y retardo. - - [G] Documentar en el RELEASE.NOTES lo relacionado con DDB y Services. - [G] Mirar el tema de control de Ilines por rangos, el tema es que con un /64 actualmente deja X clones para cada IP de ese rango, deberia haber alguna forma de que sea por rango. + +DOCUMENTACION PENDIENTE +-------------------------------------------------------------------------------------- + - [G] Documentar para Doxygen el Watch y el DDB + - [G] Traducir comentarios DDB al ingles + - [G] Documentar en el RELEASE.NOTES lo relacionado con DDB y Services. + - [G] Traducir el archivo Authors. + - [G] Traducir el archivo chroot.txt + - [G] Traducir el archivo crules.txt + - [G] Traducir el archivo cvs.txt + - [G] Traducir el archivo features.txt + - [G] Traducir el archivo freebsd.txt + - [G] Traducir el archivo gline.txt + - [G] Traducir el archivo iauth.txt + - [G] Traducir el archivo indent.txt + - [G] Traducir el archivo irc.1 + - [G] Traducir el archivo ircd.8 + - [G] Traducir el archivo jupe.txt + - [G] Traducir el archivo log.txt + - [G] Traducir el archivo rfc1413.txt + - [G] Traducir el archivo snomask.txt + - [G] Traducir el archivo string.txt + - [G] Traducir el archivo who.txt + - [G] Traducir el archivo www.txt + - [G] Traducir el directorio api + + BUGS CONOCIDOS -------------------------------------------------------------------------------------- 15/Mar/2005 @@ -77,6 +102,8 @@ entrar clientes al IRCD. Investigar eso. 31/Mar/2005 - [D] No se propaga el modo cuando estamos autentificando al conectar. +20/Abr/2005 + - [D] A veces un nick forbid puede tener +r. Leyenda: [G] General @@ -84,6 +111,7 @@ [D] DDB [S] Services + RESERVA DE MODOS: Se muestran aqui modos para evitar incompatibilidades Canal: ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-04-22 16:22:34
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-22 16:22:24 UTC Modified files: ChangeLog ChangeLog.es configure configure.in doc/ircd.sample-en.conf doc/ircd.sample-es.conf include/patchlevel.h include/s_conf.h ircd/channel.c ircd/class.c ircd/gline.c ircd/ircd.c ircd/ircd_parser.y ircd/m_kick.c ircd/m_whowas.c ircd/match.c ircd/numnicks.c ircd/s_conf.c ircd/s_err.c ircd/s_stats.c ircd/s_user.c tools/convert-conf.py tools/linesync/linesync.conf tools/linesync/linesync.sh Log message: Author: zoltan <zo...@ir...> Log message: 2005-04-22 Toni García <zo...@ir...> 1.0.alpha27 * Sincronización Undernet ---------------------- diff included ---------------------- Index: ircd-ircdev/ChangeLog diff -u ircd-ircdev/ChangeLog:1.28 ircd-ircdev/ChangeLog:1.29 --- ircd-ircdev/ChangeLog:1.28 Thu Apr 14 03:28:05 2005 +++ ircd-ircdev/ChangeLog Fri Apr 22 09:22:11 2005 @@ -1,10 +1,13 @@ # # ChangeLog for ircd-ircdev # -# $Id: ChangeLog,v 1.28 2005/04/14 10:28:05 zolty Exp $ +# $Id: ChangeLog,v 1.29 2005/04/22 16:22:11 zolty Exp $ # # Insert new changes at beginning of the change list. # +2005-04-22 Toni García <zo...@ir...> 1.0.alpha27 + * Undernet synchronization + 2005-04-14 Toni García <zo...@ir...> 1.0.alpha26 * DDB Events Index: ircd-ircdev/ChangeLog.es diff -u ircd-ircdev/ChangeLog.es:1.28 ircd-ircdev/ChangeLog.es:1.29 --- ircd-ircdev/ChangeLog.es:1.28 Thu Apr 14 03:28:05 2005 +++ ircd-ircdev/ChangeLog.es Fri Apr 22 09:22:11 2005 @@ -1,10 +1,13 @@ # # Log de Cambios para ircd-ircdev # -# $Id: ChangeLog.es,v 1.28 2005/04/14 10:28:05 zolty Exp $ +# $Id: ChangeLog.es,v 1.29 2005/04/22 16:22:11 zolty Exp $ # # Insertar los nuevos cambios al principio de esta lista de cambios. # +2005-04-22 Toni García <zo...@ir...> 1.0.alpha27 + * Sincronización Undernet + 2005-04-14 Toni García <zo...@ir...> 1.0.alpha26 * Eventos de DDB Index: ircd-ircdev/configure diff -u ircd-ircdev/configure:1.15 ircd-ircdev/configure:1.16 --- ircd-ircdev/configure:1.15 Mon Apr 11 01:44:56 2005 +++ ircd-ircdev/configure Fri Apr 22 09:22:11 2005 @@ -1,11569 +1,11 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59. -# -# Copyright (C) 2003 Free Software Foundation, Inc. -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi -DUALCASE=1; export DUALCASE # for MKS sh - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - - -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | - sed ' - N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, - t loop - s,-$,, - s,^['$as_cr_digits']*\n,, - ' >$as_me.lineno && - chmod +x $as_me.lineno || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno - # Exit status is that of the last command. - exit -} - - -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_executable_p="test -f" - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH - - -# Name of the host. -# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -exec 6>&1 - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_config_libobj_dir=. -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} - -# Maximum number of lines to put in a shell here document. -# This variable seems obsolete. It should probably be removed, and -# only ac_max_sed_lines should be used. -: ${ac_max_here_lines=38} - -# Identity of this package. -PACKAGE_NAME= -PACKAGE_TARNAME= -PACKAGE_VERSION= -PACKAGE_STRING= -PACKAGE_BUGREPORT= - -ac_unique_file="ircd/ircd.c" -ac_default_prefix=$HOME -# Factoring default headers for most tests. -ac_includes_default="\ -#include <stdio.h> -#if HAVE_SYS_TYPES_H -# include <sys/types.h> -#endif -#if HAVE_SYS_STAT_H -# include <sys/stat.h> -#endif -#if STDC_HEADERS -# include <stdlib.h> -# include <stddef.h> -#else -# if HAVE_STDLIB_H -# include <stdlib.h> -# endif -#endif -#if HAVE_STRING_H -# if !STDC_HEADERS && HAVE_MEMORY_H -# include <memory.h> -# endif -# include <string.h> -#endif -#if HAVE_STRINGS_H -# include <strings.h> -#endif -#if HAVE_INTTYPES_H -# include <inttypes.h> -#else -# if HAVE_STDINT_H -# include <stdint.h> -# endif -#endif -#if HAVE_UNISTD_H -# include <unistd.h> -#endif" - -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP AWK SET_MAKE INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S RMPROG SHPROG LEX LEXLIB LEX_OUTPUT_ROOT YACC ENGINE_C INSTALL_RULE SYMLINK IRCDMODE IRCDOWN IRCDGRP DPATH ENVIRONMENT LIBOBJS LTLIBOBJS' -ac_subst_files='' - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' -includedir='${prefix}/include' -oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' - -ac_prev= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_option in - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - eval "enable_$ac_feature=no" ;; - - -enable-* | --enable-*) - ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "enable_$ac_feature='$ac_optarg'" ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package| sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "with_$ac_package='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/-/_/g'` - eval "with_$ac_package=no" ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) { echo "$as_me: error: unrecognized option: $ac_option -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 - { (exit 1); exit 1; }; } - ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` - eval "$ac_envvar='$ac_optarg'" - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - { echo "$as_me: error: missing argument to $ac_option" >&2 - { (exit 1); exit 1; }; } -fi - -# Be sure to have absolute paths. -for ac_var in exec_prefix prefix -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* | NONE | '' ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# Be sure to have absolute paths. -for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ - localstatedir libdir includedir oldincludedir infodir mandir -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used." >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_confdir=`(dirname "$0") 2>/dev/null || -$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$0" : 'X\(//\)[^/]' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 - { (exit 1); exit 1; }; } - else - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 - { (exit 1); exit 1; }; } - fi -fi -(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || - { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 - { (exit 1); exit 1; }; } -srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` -ac_env_build_alias_set=${build_alias+set} -ac_env_build_alias_value=$build_alias -ac_cv_env_build_alias_set=${build_alias+set} -ac_cv_env_build_alias_value=$build_alias -ac_env_host_alias_set=${host_alias+set} -ac_env_host_alias_value=$host_alias -ac_cv_env_host_alias_set=${host_alias+set} -ac_cv_env_host_alias_value=$host_alias -ac_env_target_alias_set=${target_alias+set} -ac_env_target_alias_value=$target_alias -ac_cv_env_target_alias_set=${target_alias+set} -ac_cv_env_target_alias_value=$target_alias -ac_env_CC_set=${CC+set} -ac_env_CC_value=$CC -ac_cv_env_CC_set=${CC+set} -ac_cv_env_CC_value=$CC -ac_env_CFLAGS_set=${CFLAGS+set} -ac_env_CFLAGS_value=$CFLAGS -ac_cv_env_CFLAGS_set=${CFLAGS+set} -ac_cv_env_CFLAGS_value=$CFLAGS -ac_env_LDFLAGS_set=${LDFLAGS+set} -ac_env_LDFLAGS_value=$LDFLAGS -ac_cv_env_LDFLAGS_set=${LDFLAGS+set} -ac_cv_env_LDFLAGS_value=$LDFLAGS -ac_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_env_CPPFLAGS_value=$CPPFLAGS -ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_cv_env_CPPFLAGS_value=$CPPFLAGS -ac_env_CPP_set=${CPP+set} -ac_env_CPP_value=$CPP -ac_cv_env_CPP_set=${CPP+set} -ac_cv_env_CPP_value=$CPP - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures this package to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -_ACEOF - - cat <<_ACEOF -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data [PREFIX/share] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --infodir=DIR info documentation [PREFIX/info] - --mandir=DIR man documentation [PREFIX/man] -_ACEOF - - cat <<\_ACEOF - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] -_ACEOF -fi - -if test -n "$ac_init_help"; then - - cat <<\_ACEOF - -Optional Features: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-poll Force poll to be used regardless of whether or not - it is a system call - --enable-debug Turn on debugging mode - --disable-asserts Disable assertion checking - --disable-symbols Disable debugging symbols (remove -g from CFLAGS) - --enable-profile Enable profiling support (add -pg to CFLAGS) - --enable-pedantic Enable pedantic warnings (add -pedantic to CFLAGS) - --enable-warnings Enable warnings (add -Wall to CFLAGS) - --disable-inlines Disable inlining for a few critical functions - --disable-devpoll Disable the /dev/poll-based engine - --disable-kqueue Disable the kqueue-based engine - --disable-epoll Disable the epoll-based engine - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-optimization=-O2 Explicitly set the compiler optimization flags - (default: -O3) - --with-leak-detect Turn on the leak detector(requires patched boehm) - --without-ipv6 disable IPv6 support (default is autodetect) - --with-symlink=name Name to give the symlink; if name is "no," no - symlink will be created. - --with-mode=mode Permissions (in octal) to give the binary - --with-owner=owner Specify owner of the installed binary - --with-group=group Specify group owner of the installed binary - --with-domain=domain Domain name to use in local statistics gathering - --with-chroot=dir Specify that the server will be operated under - a different root directory given by dir. See - doc/readme.chroot for more information. - --with-dpath=dir Directory for all server data files - --with-cpath=file Set server configuration file - --with-lpath=file Set the debugging log file - --with-maxcon=maxcon Maximum number of connections server will accept - --with-ddb-environment Use the DDB Environment (Distributed DataBase) - --with-services-environment Use the Services Environment (Ex TerraIRCU) - --with-undernet-environment Use the Undernet Environment - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a - nonstandard directory <lib dir> - CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have - headers in a nonstandard directory <include dir> - CPP C preprocessor - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -_ACEOF -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - ac_popdir=`pwd` - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d $ac_dir || continue - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - - cd $ac_dir - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_srcdir/configure.gnu; then - echo - $SHELL $ac_srcdir/configure.gnu --help=recursive - elif test -f $ac_srcdir/configure; then - echo - $SHELL $ac_srcdir/configure --help=recursive - elif test -f $ac_srcdir/configure.ac || - test -f $ac_srcdir/configure.in; then - echo - $ac_configure --help - else - echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi - cd "$ac_popdir" - done -fi - -test -n "$ac_init_help" && exit 0 -if $ac_init_version; then - cat <<\_ACEOF - -Copyright (C) 2003 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit 0 -fi -exec 5>config.log -cat >&5 <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by $as_me, which was -generated by GNU Autoconf 2.59. Invocation command line was - - $ $0 $@ - -_ACEOF -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -hostinfo = `(hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - echo "PATH: $as_dir" -done - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_sep= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; - 2) - ac_configure_args1="$ac_configure_args1 '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" - # Get rid of the leading space. - ac_sep=" " - ;; - esac - done -done -$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } -$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Be sure not to use single quotes in there, as some shells, -# such as our DU 5.0 friend, will then `close' the trap. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - cat <<\_ASBOX -## ---------------- ## -## Cache variables. ## -## ---------------- ## -_ASBOX - echo - # The following way of writing the cache mishandles newlines in values, -{ - (set) 2>&1 | - case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in - *ac_space=\ *) - sed -n \ - "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" - ;; - *) - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} - echo - - cat <<\_ASBOX -## ----------------- ## -## Output variables. ## -## ----------------- ## -_ASBOX - echo - for ac_var in $ac_subst_vars - do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" - done | sort - echo - - if test -n "$ac_subst_files"; then - cat <<\_ASBOX -## ------------- ## -## Output files. ## -## ------------- ## -_ASBOX - echo - for ac_var in $ac_subst_files - do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" - done | sort - echo - fi - - if test -s confdefs.h; then - cat <<\_ASBOX -## ----------- ## -## confdefs.h. ## -## ----------- ## -_ASBOX - echo - sed "/^$/d" confdefs.h | sort - echo - fi - test "$ac_signal" != 0 && - echo "$as_me: caught signal $ac_signal" - echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core && - rm -rf conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status - ' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo >confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then - { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 -echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special - # files actually), so we avoid doing that. - if test -f "$cache_file"; then - { echo "$as_me:$LINENO: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . $cache_file;; - *) . ./$cache_file;; - esac - fi -else - { echo "$as_me:$LINENO: creating cache $cache_file" >&5 -echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in `(set) 2>&1 | - sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val="\$ac_cv_env_${ac_var}_value" - eval ac_new_val="\$ac_env_${ac_var}_value" - case $ac_old_set,$ac_new_set in - set,) - { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 -echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 -echo "$as_me: current value: $ac_new_val" >&2;} - ac_cache_corrupted=: - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 -echo "$as_me: error: changes in the environment can compromise the build" >&2;} - { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} - { (exit 1); exit 1; }; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - - - - - - - - - - - - - - - - -echo "$as_me:$LINENO: checking for installation prefix" >&5 -echo $ECHO_N "checking for installation prefix... $ECHO_C" >&6 -if test "${unet_cv_prefix+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - unet_cv_prefix=$HOME -fi - -if test x"$prefix" != xNONE; then - unet_cv_prefix=$prefix -fi -echo "$as_me:$LINENO: result: $unet_cv_prefix" >&5 -echo "${ECHO_T}$unet_cv_prefix" >&6 -ac_default_prefix=$unet_cv_prefix - - ac_config_headers="$ac_config_headers config.h" - - - - -ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f $ac_dir/shtool; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 -echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} - { (exit 1); exit 1; }; } -fi -ac_config_guess="$SHELL $ac_aux_dir/config.guess" -ac_config_sub="$SHELL $ac_aux_dir/config.sub" -ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. - -# Make sure we can run config.sub. -$ac_config_sub sun4 >/dev/null 2>&1 || - { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 -echo "$as_me: error: cannot run $ac_config_sub" >&2;} - { (exit 1); exit 1; }; } - -echo "$as_me:$LINENO: checking build system type" >&5 -echo $ECHO_N "checking build system type... $ECHO_C" >&6 -if test "${ac_cv_build+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_build_alias=$build_alias -test -z "$ac_cv_build_alias" && - ac_cv_build_alias=`$ac_config_guess` -test -z "$ac_cv_build_alias" && - { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 -echo "$as_me: error: cannot guess build type; you must specify one" >&2;} - { (exit 1); exit 1; }; } -ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} - { (exit 1); exit 1; }; } - -fi -echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -echo "${ECHO_T}$ac_cv_build" >&6 -build=$ac_cv_build -build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - -echo "$as_me:$LINENO: checking host system type" >&5 -echo $ECHO_N "checking host system type... $ECHO_C" >&6 -if test "${ac_cv_host+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_host_alias=$host_alias -test -z "$ac_cv_host_alias" && - ac_cv_host_alias=$ac_cv_build_alias -ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} - { (exit 1); exit 1; }; } - -fi -echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -echo "${ECHO_T}$ac_cv_host" >&6 -host=$ac_cv_host -host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - - -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 $as_executable_p "$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 - -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 $as_executable_p "$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 - -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 - - CC=$ac_ct_CC -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 $as_executable_p "$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 - -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 "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_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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -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 - - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -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 $as_executable_p "$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 - -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 - 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 $as_executable_p "$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 - -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 -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 $as_executable_p "$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 - -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 - - CC=$ac_ct_CC -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` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 - (eval $ac_compiler --version </dev/null >&5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 - (eval $ac_compiler -v </dev/null >&5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 - (eval $ac_compiler -V </dev/null >&5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 -ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 - (eval $ac_link_default) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # Find the output, starting from the most likely. This scheme is -# not robust to junk in `.', hence go to wildcards (a.*) only as a last -# resort. - -# Be careful to initialize this variable, since it used to be cached. -# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. -ac_cv_exeext= -# b.out is created by i960 compilers. -for ac_file in a_out.exe a.exe conftest.... [truncated message content] |
From: Toni G. <zo...@us...> - 2005-04-22 16:51:36
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-22 16:51:26 UTC Modified files: configure Log message: ups, el configure ---------------------- diff included ---------------------- Index: ircd-ircdev/configure diff -u ircd-ircdev/configure:1.16 ircd-ircdev/configure:1.17 --- ircd-ircdev/configure:1.16 Fri Apr 22 09:22:11 2005 +++ ircd-ircdev/configure Fri Apr 22 09:51:16 2005 @@ -1,11 +1,11569 @@ -./configure --prefix=/home/zoltan/ircd \ - --bindir=/home/zoltan/ircd \ - --libdir=/home/zoltan/ircd/data \ - --enable-debug \ - --enable-profile \ - --enable-pedantic \ - --enable-warnings \ - --with-symlink=ircd.zoltan \ - --with-dpath=/home/zoltan/ircd/data \ - --with-maxxcon=100 \ - --with-ddb-environment +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.59. +# +# Copyright (C) 2003 Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_unique_file="ircd/ircd.c" +ac_default_prefix=$HOME +# Factoring default headers for most tests. +ac_includes_default="\ +#include <stdio.h> +#if HAVE_SYS_TYPES_H +# include <sys/types.h> +#endif +#if HAVE_SYS_STAT_H +# include <sys/stat.h> +#endif +#if STDC_HEADERS +# include <stdlib.h> +# include <stddef.h> +#else +# if HAVE_STDLIB_H +# include <stdlib.h> +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include <memory.h> +# endif +# include <string.h> +#endif +#if HAVE_STRINGS_H +# include <strings.h> +#endif +#if HAVE_INTTYPES_H +# include <inttypes.h> +#else +# if HAVE_STDINT_H +# include <stdint.h> +# endif +#endif +#if HAVE_UNISTD_H +# include <unistd.h> +#endif" + +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP AWK SET_MAKE INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S RMPROG SHPROG LEX LEXLIB LEX_OUTPUT_ROOT YACC ENGINE_C INSTALL_RULE SYMLINK IRCDMODE IRCDOWN IRCDGRP DPATH ENVIRONMENT LIBOBJS LTLIBOBJS' +ac_subst_files='' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures this package to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +_ACEOF + + cat <<_ACEOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-poll Force poll to be used regardless of whether or not + it is a system call + --enable-debug Turn on debugging mode + --disable-asserts Disable assertion checking + --disable-symbols Disable debugging symbols (remove -g from CFLAGS) + --enable-profile Enable profiling support (add -pg to CFLAGS) + --enable-pedantic Enable pedantic warnings (add -pedantic to CFLAGS) + --enable-warnings Enable warnings (add -Wall to CFLAGS) + --disable-inlines Disable inlining for a few critical functions + --disable-devpoll Disable the /dev/poll-based engine + --disable-kqueue Disable the kqueue-based engine + --disable-epoll Disable the epoll-based engine + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-optimization=-O2 Explicitly set the compiler optimization flags + (default: -O3) + --with-leak-detect Turn on the leak detector(requires patched boehm) + --without-ipv6 disable IPv6 support (default is autodetect) + --with-symlink=name Name to give the symlink; if name is "no," no + symlink will be created. + --with-mode=mode Permissions (in octal) to give the binary + --with-owner=owner Specify owner of the installed binary + --with-group=group Specify group owner of the installed binary + --with-domain=domain Domain name to use in local statistics gathering + --with-chroot=dir Specify that the server will be operated under + a different root directory given by dir. See + doc/readme.chroot for more information. + --with-dpath=dir Directory for all server data files + --with-cpath=file Set server configuration file + --with-lpath=file Set the debugging log file + --with-maxcon=maxcon Maximum number of connections server will accept + --with-ddb-environment Use the DDB Environment (Distributed DataBase) + --with-services-environment Use the Services Environment (Ex TerraIRCU) + --with-undernet-environment Use the Undernet Environment + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a + nonstandard directory <lib dir> + CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have + headers in a nonstandard directory <include dir> + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd "$ac_popdir" + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF + +Copyright (C) 2003 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit 0 +fi +exec 5>config.log +cat >&5 <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by $as_me, which was +generated by GNU Autoconf 2.59. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_sep= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------- ## +## Output files. ## +## ------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + + + + + + + + + + + + + +echo "$as_me:$LINENO: checking for installation prefix" >&5 +echo $ECHO_N "checking for installation prefix... $ECHO_C" >&6 +if test "${unet_cv_prefix+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + unet_cv_prefix=$HOME +fi + +if test x"$prefix" != xNONE; then + unet_cv_prefix=$prefix +fi +echo "$as_me:$LINENO: result: $unet_cv_prefix" >&5 +echo "${ECHO_T}$unet_cv_prefix" >&6 +ac_default_prefix=$unet_cv_prefix + + ac_config_headers="$ac_config_headers config.h" + + + + +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f $ac_dir/shtool; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# Make sure we can run config.sub. +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 +host=$ac_cv_host +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + + +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 $as_executable_p "$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 + +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 $as_executable_p "$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 + +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 + + CC=$ac_ct_CC +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 $as_executable_p "$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 + +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 "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_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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +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 + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +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 $as_executable_p "$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 + +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 + 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 $as_executable_p "$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 + +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 +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 $as_executable_p "$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 + +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 + + CC=$ac_ct_CC +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` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 + (eval $ac_compiler --version </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 + (eval $ac_compiler -v </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 + (eval $ac_compiler -V </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +# b.out is created by i960 compilers. +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) + ;; + conftest.$ac_ext ) + # This is the source file. + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool, + # but it would be cool to find out if it's true. Does anybody + # maintain Libtool? --akim. + export ac_cv_exeext + break;; + * ) + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; ... [truncated message content] |
From: Toni G. <zo...@us...> - 2005-04-22 16:53:33
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-22 16:53:23 UTC Removed files: doc/history/IRC-Hispano/CAMBIOS2_10_06 doc/history/IRC-Hispano/CAMBIOS2_10_07 doc/history/IRC-Hispano/CAMBIOS2_10_H_01 doc/history/IRC-Hispano/CAMBIOS2_10_H_02 doc/history/IRC-Hispano/CAMBIOS2_10_H_03 doc/history/IRC-Hispano/CAMBIOS2_10_H_04 doc/history/IRC-Hispano/CAMBIOS2_10_H_05 doc/history/IRC-Hispano/CAMBIOS2_10_H_06 Log message: Borrar lo que huele mal ;) ---------------------- diff included ---------------------- Index: ircd-ircdev/doc/history/IRC-Hispano/CAMBIOS2_10_06 diff -u ircd-ircdev/doc/history/IRC-Hispano/CAMBIOS2_10_06:1.1.1.1 ircd-ircdev/doc/history/IRC-Hispano/CAMBIOS2_10_06:removed --- ircd-ircdev/doc/history/IRC-Hispano/CAMBIOS2_10_06:1.1.1.1 Mon Sep 8 03:34:26 2003 +++ ircd-ircdev/doc/history/IRC-Hispano/CAMBIOS2_10_06 Fri Apr 22 09:53:25 2005 @@ -1,321 +0,0 @@ -$Id: CAMBIOS2_10_06,v 1.1.1.1 2003/09/08 10:34:26 zolty Exp $ - -* 1999/11/11 sa...@ap... (patch.db51) FIX - ----------------------------------------------------------------------- - Cambiados todos los 'unsigned long' de s_bdd.c a 'unsigned int', pues - en realidad solo necesitamos u_int32_t, y usando 'unsigned long' tenwmos - problemas en arquitecturas de 64 bits. Los mismos cambios en las - funciones que llamaban a tea() en s_user.c - -* 1999/11/11 sa...@ap... (patch.vip4) FIX - ----------------------------------------------------------------------- - Segun lo decidido, se cambia el algoritmo de criptación de direcciones - al siguiente modelo: - - VIRTUAL = TEA( clave, ip<<32 + (clave>>32)&0xffff0000 + n) - - Siendo 'clave' el valor que contiene el registro '.' de la tabla de - direcciones virtuales, que se irá cambiando periodicamente. - Este fix permite que los usuarios baneados por dirección virtual no - puedan abusar, conectando de nuevo o cambiando el nick, pues hay una - relación directa entre la dir virtual y la real. - -* 1999/10/26 sa...@ap... (patch.dbh15) FEATURE - ----------------------------------------------------------------------- - Para facilitar la migración a autentificación por server, creamos una - tabla 't' (residente), que PERMITE que los usuarios se autentifiquen - de la misma forma que los de la tabla 'n'. Si ponen clave, esta ha de - ser la correcta. Si no la ponen les molesta con un par de NOTICEs. - En VERSION del server aparece como DBH15 - -* 1999/10/15 sa...@ap... (patch.p9hispano) FIX - ----------------------------------------------------------------------- - He definido los numeros de nodo P9 para los services en numnicks.c, - dado que n2k ha destruido la "autoasignación" de numeros de nodo para - los P9. - -* 1999/10/14 sa...@ap... (patch.dbh14) FIX - ----------------------------------------------------------------------- - He modificado la respuesta al /STATS B, para hacerla mas corta y le he - añadido el soporte de las nuevas BDD. - -* 1999/10/13 sa...@ap... (patch.xmode2) FIX - ----------------------------------------------------------------------- - Arreglado un pekeño bug cosmetico, que ocurria cuando mediante XMODE - intentabamos por ejemplo dar +o a alguien que ya tiene +o, quedando - visible el intento como '+x' sin parametro alguno. - -* 1999/10/13 sa...@ap... (patch.dbh13) FEATURE - ----------------------------------------------------------------------- - Implemento comando DBQ sustituyendo el DBH de usuario, con el formato: - - [<:origen>] DBQ [<server>] <tabla> <clave> - - Si <server> existe pero no somos nostros, lo rutaremos al server en - cuestión para que sea él quien contesta. Se acepta server '*' para - broacast y los tipicos comodines 'jupiter.*' - -* 1999/10/10 sa...@ap... (patch.vip3) FIX - ----------------------------------------------------------------------- - Las desconexiones (QUIT) involuntarios (Ping timeout / Read error) ya - no muestran el hostname del usuario si este tiene el modo +x activo. - El /WHO busca sobre la direccion virtual en lugar de la real en los - usuarios +x excepto si quien mira es un +X, en cuyo caso mira en ambas. - -* 1999/10/05 sa...@ap... (patch.vip2) FEATURE - ----------------------------------------------------------------------- - Se cambia el modo de trabajo de /WHOIS y /WHO para que lo hagan segun - sugerencias de jcea. El propio usuario se ve a si mismo como lo haria - un +X. Y la primera linea (311) de WHOIS da el host real y en la linea - codigo 378 informamos de la dirección virtual. - -* 1999/10/05 sa...@ap... (patch.dbh12) FIX - ----------------------------------------------------------------------- - Las nuevas funciones base64toint() que han introducido en el parche de - undernet8 necesitan tener completamente rellenado el string, antes se - conformaban con tener \0's al final. Lo correcto es tal como lo han - dejado en esta versión, pero es incompatible con lo anterior. - Solución: a las claves cortas se les añaden tantas 'A' al final como - sea preciso. - -* 1999/10/05 sa...@ap... (patch.dbh11) FIX - ----------------------------------------------------------------------- - Al introducir el parche de undernet8 y posteriores, se nos pasó cambiar - el %c%c%c por %s%s para imprimir el nick numerico extendido en el - comando BMODE. Se ha optimizado el modo de delimitar el final de de - cadenas en las modificaciones introducidas en la autenticación usuario. - Se han cambiado los %c a %s en protocolos DB y DBH para uso correcto de - la macro NumServ(). Puestos a arreglar, el make install crea con los - permisos adecuados las tablas DBH. - -* 1999/09/14 sa...@ap... (patch.vip) FEATURE - ----------------------------------------------------------------------- - Se introducen dos nuevos flags de usuario: +x y +X, el primero oculta - la dirección ip(o hostname) del usuario y el segundo (+X) permite ver - las direcciónes reales al ejecutar /WHOIS /WHO /USERIP y /USERHOST - Solo los usuarios +r acceden, automaticamente, a +x, pudiendo cambiar - a -x y +x a voluntad mientras perdure el flag +r - Solo los usuarios +o (ircops) y +h (OPERS) pueden activar el flag +X - El formato de las direcciones es @GaRaBaTo12Ch.virtual, y este valor - se calcula en todos los servers cuando el usuario activa +x, - guardandose en un campo especifico: User->virtualhost - Si los servers encuentran en la nueva tabla V un registro para el nick - en cuestión, instalan el valor del registro en User->virtualhost, - permitiendo así definir ips virtuales fijas para ciertos usuarios. - El valor del GaRaBaTo12Ch se calcula en make_virtualhost() de s_user.c - y es basicamente: - - garabato = base64(tea(tea(nick,password),ip<<32+xyz<<8)); - - haciendose imposible crear una relación de ips virtuales a reales, asi - como su desencriptación por parte de los usuarios. La unica forma de - conseguir averiguar una ip a partir de una virtual sera analizando los - logs de los distintos servidores de servicios. - - he modificado además el codigo refernete a BAN para que acepte ban por - virtual, y el ban a real afecte tambien a los +x. - - he cambiado el antiguo codigo 378 (ke ya movimos en su dia) al 380 - he ocupado el codigo 378 para que nos indique la ip/host real del user - tal como lo hacen otros daemons de irc. El 379 lo he reservado para - que muestre los modos de usn usuario, como enotras redes, pero esto es - asunto de otro parche. - - El comando /TRACE solo será accesible a Opers +o y HelpOps +h, antes - era accesible a todos. Este comando no oculta IPs. - - No puedo considerar el codigo terminado, la version queda reflejada - como VIP+, activandose en el configurador dentro de la sección HISPANO, - siendo desactivable por si nos da problemas. - -* 1999/09/14 sa...@ap... (patch.no_whois_secret) UNFEATURE - ----------------------------------------------------------------------- - Elimina completamente el parche patch.whois_secret - -* 1999/07/31 sa...@ap... (patch.dbh10) FIX - ----------------------------------------------------------------------- - Corrección del BMODE, pues se producian algunos desynch. - Lo he simplificado, y para ello he tenido que meter un parametro - adicional a set_mode(), que se usa en m_botmode (1) y m_mode (0). - Si el parametro es 1 (BMODE), se hace badop=0, bounce=0, asi no se queja - nadie. Como el arreglo es en la recepción, sera necesario que este activo - en todos los servers antes de que sea operativo. - Por error, en DBH9 deje abierto a IRCops el comando BMODE, ahora es solo - server-server. - El BURST de p10 no parsea los modos +R+A+S de canal, tb lo he arreglado. - Queda reflejado como DBH10+ - -* 1999/07/30 sa...@ap... (patch.whois_secret) FEATURE - ----------------------------------------------------------------------- - Si asi lo pedimos en la configuración (make config), - OPERS_SEE_IN_SECRET_CHANNELS, el whois les muestra a los IrcOP o +k la - lista de canales secretos (+s) donde esta el usuario - Se documenta en /VERSION como W+/W- - -* 1999/07/29 sa...@ap... (patch.dbh9) FEATURE - ----------------------------------------------------------------------- - Incorpora el comando SERVER-SERVER BMODE, con formato: - - :origen BMODE ChanServ #canal +modos :parametros - - ChanServ se busca en la tabla B, y se nos traduce a 'CHaN!^@^', y es lo - que veran los usuarios en los cambios de modos del canal realizados por - los servers (autoops, etc). Para mas info ver codigo m_botmode() en - chammel.c - - Modos de usuario: - - B -> Modo Bot, permite TODO sobre canales, sin estar dentro, - limitado a los BOTS, no se puede colocar en modo usuario. - - Se ha usado un bit de nustro campo Client->hmodes - - Modos de Canal: - - r -> Canal Registrado (existe en tabla C, no se puede poner/quitar) - R -> Canal Restringido, solo acepta users Registrados - A -> Activacion de autoop para los ke salgan en tabla C - S -> Modo Secure OP (no implementado de momento) - - Se han usado 4 bits del campo chptr->modes.modes: - #define MODE_REGCHAN 0x020000 - #define MODE_REGNICKS 0x040000 - #define MODE_AUTOOP 0x080000 - #define MODE_SECUREOP 0x100000 - -* 1999/07/29 sa...@ap... (patch.noproxy4) FIX - ----------------------------------------------------------------------- - Se corrige el tema caida por timeout si tienes el 1080 cerrado sin aviso - mediante firewall. Ahora deja al usuario enganchado 90 segundos antes de - dejarle entrar. - Queda reflejado como PX4+ o PX4- en el /VERSION - -* 1999/07/29 sa...@ap... (patch.noproxy3) FIX - ----------------------------------------------------------------------- - Se elimina el chekeo de Socks y el de Ident sobre puerto de servers - Queda reflejado como PX3+ o PX3- en el /VERSION - -* 1999/07/29 sa...@ap... (patch.dbh8) FEATURE - ----------------------------------------------------------------------- - Implementa el nuevo modo de usuario -/+h, conocido en otras redes como - HelpOperator, que vendrian a ser los Oper del irc-hispano. - Este modo (+h) se activa automaticamente si el nick esta registrado y - ademas en la tabla O (de OPERS). Los oper se lo pueden quitar o poner a - su antojo. La unica finalidad del modo +h es aparecer en el /WHOIS - indicando que el usuario es un Operador de Servicios IRC (raw 310) - Ademas mejora la implementacion de los modos automaticos al cambiar - de nick. - -* 1999/07/28 sa...@ap... (patch.noproxy2) FIX - ----------------------------------------------------------------------- - Algunos cambios cosmeticos en los textos enviados al usuario. - El patch.noproxy no compila modo DEBUG, este lo arregla. - Queda reflejado como PX2+ o PX2- en el /VERSION - -* 1999/07/28 sa...@ap... (patch.noproxy) FEATURE - ----------------------------------------------------------------------- - Implemento un checker de Socks4-Proxies (wingates incluido). - La implementación esta en s_socks.c y s_socks.h, pero ha sido necesario - tocar ligeramente s_bsd.c, ircd.c y s_res.c. En la estructura Client de - struct.h he añadido el campo socksfd en la parte extendida de clientes - locales. En s_bsd.h he creado las macros y usado un par de bits del - campo client->hmodes. - - Implementacion: - - - Llega conexion nueva - - Se lanzan en paralelo los checkers de DNS, ident y proxy - - Se atiende al user cuando los tres han finalizado - - Cuando lanzamos el cheker de proxy, este se intenta conectar al puerto - de socks4 del usuario (1080), si lo consigue, mediante protocolo socks4 - le solicita al proxy que habra una conexion a la direccion/puerto del - ircd que el usuario ha conectado. Se analiza la respuesta de socks4 y - si nos confirma la conexión, es un proxy abiero y lo desconectamos del - irc informandole de la causa. - - Mientras se hace el proceso de checking de Proxy, el server envia unos - NOTICE al usuario para que vea lo que le está haciendo. He tenido que - usar writes directos al cptr->fd, pk al no estar registrado el usuario - en el momento del cheking, no podia usar las colas de salida. - - Esta opcion se puede activar/desactivar (PROXY_PROTECTION) en el make - config, siempre que hayamos seleccionado DB_HISPANO. Queda reflejado - en el /VERSION como PX+ o PX- - -* 1999/07/21 sa...@ap... (patch.DBH6) FIX - ----------------------------------------------------------------------- - Cambia la forma de trabajo del flag +r, impidiendo que el user - se lo quite, y (des)activandose solo ante autentificacion, y no ademas - por la llegada de un registro DBH, como hasta ahora. - - Introduce algunos cambios cosmeticos en la consulta de la BD - (comando DBH en modo user). - - Como estaba mirando la causa de que los DBH2 regalen modos +k a - los users, he cambiado a logica positiva la parte del condicional que - hace que NO sea aceptado el modo +k cuando: - - - no lo tenias y no eres server y no eres ircop - y no (estas registrado y estas en la DB de OPERS) - - en lugar de la equivalente pero menos inteligible: - - - no lo tenias y no eres server y no eres ircop - y (no estas registrado o no estas en la DB de OPERS) - - Aunque el bug quedo solucionado en DBH3. - - Puestos a arreglar, añado el DBPATH de la DB10 como prefijo a los - ficheros usados por la DBH. - -* 1999/07/06 sa...@ap... (patch.whois_renumber) FIX - ----------------------------------------------------------------------- - Este patch renumera algunos codigos de respuesta del WHOIS para hacerlos - mas universales. Se activa si usamos DB_HISPANO/DB_ESNET. Los codigos - renumerados son: - - 307 (undernet) IP del usuario -> 378 el usado en otras redes - 308 (hispano) Nick Registrado -> 307 el usado en otras redes - - Esto hace ke BitchX se sienta inmensamente feliz :) - -* 1999/07/06 sa...@ap... (patch.DBH3) FEATURE - ----------------------------------------------------------------------- - En el fichero struct.h he ampliado con un nuevo campo la estructura - Client, es un unsigned int llamado hmodes. Esto nos permitira dispo- - ner de 32bits adicionales como flags de usuario. Estos nuevos flags - son propagados si se definen en la tabla user_hmodes[] de s_user.c - - En este parche se hace uso del bit de menor peso de este nuevo campo, - en el fichero s_bsd.h: - #define HMODES_NICKREGISTERED 0x00000001 - Y las macros asocicadas: - IsNickRegistered(cptr); - SetNickRegistered(cptr); - ClearNickRegistered(cptr); - - Cuando alguien se pone un nick, se hace un Clear, y si acierta la clave - se hace un SetNickRegistered. - Este flag queda reflejado con la letra 'r' en los modos de usuario, y - solo es aceptada si la envia un server (o por la autentificacion). - Si un usuario esta conectado y registra su nick en los servicios, este - flag se activara cuando llegue su registro DBH/DB. Y le sera borrado - cuando se llegue un borrado de su registro. Los cambios son informados - al usuario y propagados a la red. - - El /WHOIS ha sido ampliado (whocmds.c) para mostrar este nuevo 'flag' - y he ocupado el ERROR 308 en los fichero s_err.c y numeric.h - - He cambiado los condicionales que comprueban en tablas si nick registrado - por la nueva macro IsNickRegistered() - - Queda reflejado en el /VERSION como DBH3.Nr+...., cambiando el anterior - texto (DBH2.N+....). He decidido cambiar a DBH3, pk las macros son y - seran ampliamente usadas en futuras DBH's, y hago desaparecer la opcion - de compilacion DBH_NICK_HACK quedando integrado todo su codigo en el - que es activado por el #define DB_HISPANO - - ----------------------------------------------------------------------- - -* FINAL o INICIO de CAMBIOS, segun se mire :) Index: ircd-ircdev/doc/history/IRC-Hispano/CAMBIOS2_10_07 diff -u ircd-ircdev/doc/history/IRC-Hispano/CAMBIOS2_10_07:1.1.1.1 ircd-ircdev/doc/history/IRC-Hispano/CAMBIOS2_10_07:removed --- ircd-ircdev/doc/history/IRC-Hispano/CAMBIOS2_10_07:1.1.1.1 Mon Sep 8 03:34:26 2003 +++ ircd-ircdev/doc/history/IRC-Hispano/CAMBIOS2_10_07 Fri Apr 22 09:53:25 2005 @@ -1,793 +0,0 @@ -$Id: CAMBIOS2_10_07,v 1.1.1.1 2003/09/08 10:34:26 zolty Exp $ - -* 2000/10/10 jc...@ar... (---) FIX - ----------------------------------------------------------------------- - Un "make distclean" tambien elimina los ficheros de la "zlib". Esto - es bastante importante si cambiamos de arquitectura. - - Tambien se eliminan los ficheros de cache del "configure", por la - misma razon. - -* 2000/10/05 jc...@ar... (---) FEATURE - ----------------------------------------------------------------------- - Un "/map" muestra, adicionalmente a lo normal: - - - El "numeric" del servidor - - El lag con ese servidor (medido a partir de los "create") - - El numero de usuario conectados a ese servidor - -* 2000/10/05 jc...@ar... (---) FEATURE - ----------------------------------------------------------------------- - Cuando se echa a un usuario con una nueva GLINE, se le informa a el - y a los que tengan activada la mascara "s" correspondiente, de - la razon del GLINE. - -* 2000/10/05 jc...@ar... (DB77) FEATURE - ----------------------------------------------------------------------- - Peticion de Sisco: - el mensaje de 'class full' de cuando la clase de usuario se llene, - que diga que su clase en este server esta llena, que pruebe - /server libres.irc-hispano.org , Es muy efectivo y ya fue probado - con exito en la transicion de pulsar a pulsar2.... - -* 2000/10/05 jc...@ar... (---) FEATURE - ----------------------------------------------------------------------- - Mostrar en "/stats Y" cuantos usuarios hay conectados - en cada clase. Sino la unica opcion es hacer un - "/trace", lo que ocasiona FLOOD. - -* 2000/08/16 jc...@ar... (clones7) FEATURE - ----------------------------------------------------------------------- - Las conexiones con clones no heredan "targets", para evitar que - las sesiones se quiten targets entre si. - - -* 2000/06/20 jc...@ar... (DB76) FEATURE - ----------------------------------------------------------------------- - Hago que los usuarios locales no puedan ACTIVAR los modos "SAR", aunque - el server los acepta si llegan de un usuario remoto. - - De esta forma los usuarios no juegan con modos que no estan - desplegados aun. - -* 2000/06/13 jc...@ar... (ZLIB10) FIX - ----------------------------------------------------------------------- - Tras horas de investigacion descubro un fallo en la implementacion - de las "microrafagas": cuando trabajamos con microrafagas es - perfectamente posible que tengamos que hacer FLUSH varias veces (no - solo una), ya que ZLIB puede ir almacenando compresion de forma - interna, y no soltarla hasta el final. - - Por tanto, hay que comprobar este caso especificamente, y no confiar - en que un buffer de salida lo bastante grande sea suficiente, ya que - antes se usaba ese buffer para un unico comando, y ahora lo usamos - para todas las microrafagas que, en el caso de un NETJOIN, pueden - ser varios megabytes. - - Cuando tengo que hacer varios FLUSH, aprovecho para usar "send_queued()". - -* 2000/06/13 jc...@ar... (Undernet20) SYNC - ----------------------------------------------------------------------- - Parches Undernet hasta version 12. - - Oculto la IP de los nodos tambien en el comando "uping". - -* 2000/06/12 jc...@ar... (ZLIB9) FEATURE - ----------------------------------------------------------------------- - Para evitar la posible carga de los malloc/free durante las microrafagas, - implemente un sistema de cache, de forma que no haga falta pedir/liberar - memoria constantemente. - - La cache se va purgando poco a poco, de forma que si en un momento - dado se pidieron muchos recursos, esto se van liberando poco a poco. - -* 2000/06/12 jc...@ar... (ZLIB8) FIX - ----------------------------------------------------------------------- - Toda "microrafaga" que se abra, debe ser cerrada. Hay que tener cuidado - con posibles "return" entre la apertura y cierre, ya que impiden el - correcto cierre de la "microrafaga" si no se programa adecuadamente. - - Para curarnos en salud, an~ado una rutina nueva que fuerza una - inicializacion del modulo de "microrafagas" entre lecturas de - las conexiones server<->server. De esta forma cualquier microrafaga - "huerfana" sera clausurada correctamente. - - An~ado tambien otro comando para eliminar "cptr" que se hayan cerrado, - del sistema de "microrafagas". De esta forma no nos preocupara que - una conexion se cierre mientras esta en una "microrafaga". - - -* 2000/06/12 jc...@ar... (ZLIB7) FEATURE - ----------------------------------------------------------------------- - Intento realizar el FLUSH de compresion por grupos, no por comandos - aislados. Ello supone la deteccion y aprovechamiento de las microrafagas, - que son cuando se van a generar varios comandos de salida por una - o mas conexiones. - - El caso mas obvio es un "netjoin", cuando el servidor transfiere al otro - extremo todo el BURST. - - Otro caso bastante evidente es cuando se lee un bloque de otro nodo; - cuando ese bloque tiene varios comandos, podemos considerar que hasta - su final estamos trabajando con una "microrafaga". - - Por ultimo, tenemos el caso de la BDD. - - Cuando se cierra una microrafaga, se hace FLUSH de lo que pudiese - haber quedado. - -* 2000/06/08 jc...@ar... (ZLIB6) CLEANUP - ----------------------------------------------------------------------- - Introduzco algunos "assert()" para casos que no deberian ocurrir nunca, - y verifico todas las llamadas a la libreria ZLIB y de gestion de - memoria asociadas, por si alguna falla (no deberia). - -* 2000/06/08 jc...@ar... (indent6) CLEANUP - ----------------------------------------------------------------------- - "make indent". - -* 2000/06/06 jc...@ar... (ZLIB5) FIX - ----------------------------------------------------------------------- - El servidor no compilaba correctamente si el sistema en el que se - va a instalar NO tenia instalado ya la ZLIB (aunque use la local al - servidor, no la instalada en el sistema). - -* 2000/05/23 jc...@ar... (CONFIG5) FEATURE/FIX - ----------------------------------------------------------------------- - Corregido un bucle infinito cuando se evalua la configuracion. - - "/stats f" muestra la configuracion de las lineas "F". - - La negociacion en los enlaces se activa en el "make config". - - Cambiados los textos de los "DEFINE". - -* 2000/05/23 jc...@ar... (CONFIG4) FEATURE - ----------------------------------------------------------------------- - Cambio "NACK" por "REQ", que es mas logico. - - Hago que las negociaciones entre nodos sean configurables mediante una - nueva "F"-line. - - El primer campo indica el sentido salida, y el segundo el sentido entrada. - - Las mayusculas indican SIEMPRE, y las minusculas NUNCA. - - De momento defino "z" como ZLIB. - -* 2000/05/18 jc...@ar... (ZLIB4) FEATURE/FIX - ----------------------------------------------------------------------- - Un "stats l" muestra el trafico transferido realmente, y su nivel - de compresion. - - Solo crea las estructuras de datos de compresion cuando se ha negociado - afirmativamente la compresion (de forma independiente en cada sentido). - - Este cambio corrige tambien un grave "memory leak", debido a que se - inicializaban unos 300Kbytes por conexion de usuario, para soportar - posible compresion, pero no se liberaba si no se habia negociado - compresion. - -* 2000/05/18 jc...@ar... (ZLIB3) FEATURE - ----------------------------------------------------------------------- - Primera version que se va a probar en la red en produccion. Se ha - modificado "stats l" para que indique el porcentaje de compresion en - recepcion y en transmision, por cada enlace. - -* 2000/05/18 jc...@ar... (CONFIG3) FEATURE - ----------------------------------------------------------------------- - Lo anterior no funciona todo lo bien que debiera, por multiples motivos - explicados en mi web. - - Ahora trabajo considerando que algunas peticiones son "especulativas", - y se accede a ellas o se ignoran tras resolverse el tipo de conexion. - -* 2000/05/18 jc...@ar... (CONFIG2) FEATURE - ----------------------------------------------------------------------- - Cuando se unen dos servers, se envia un "ping" y toda la negociacion, - y solo se manda el BURST cuando llega el "pong" de respuesta. - - Ello permite negociar ANTES de transmitir el burst. - -* 2000/05/17 jc...@ar... (CONFIG1) FEATURE - ----------------------------------------------------------------------- - Primera implementacion del protocolo de negociacion entre servidores. - - Se basa en el PPP. Un servidor solicita a otro una "feature" mediante - un NAK, y este la confirma activa con un ACK. Si no reconoce la - feature, devuelve un REJ. - -* 2000/05/17 jc...@ar... (ZLIB2) FEATURE - ---------------------------------------------------------------------- - An~ado los flags "ZLIB_ESNET_IN" y "ZLIB_ESNET_OUT" a la estructura - de servidor. Tambien an~ado dos estructuras "z_stream". - - Compilo la libreria ZLIB *ANTES* de compilar el servidor, para que - no se enlace con una version anticuada o preinstalada. - - Compresion de la salida a servidor activada "a pin~on fijo", para - verificar que funciona bien. - -* 2000/05/16 jc...@ar... (ZLIB1) FEATURE - ----------------------------------------------------------------------- - An~adida la libreria ZLIB de forma interna, para no depender de que - se tenga una version instalada y actualizada en el sistema. - - Se configura y se compila correctamente. Se an~ade una opcion de - configuracion para permitir activar o desactivar la "feature" en tiempo - de compilacion. - -* 2000/05/16 jc...@ar... (Undernet19) SYNC - ----------------------------------------------------------------------- - Parches Undernet hasta version 11. - -* 2000/04/04 jc...@ar... (DB75) FIX - ----------------------------------------------------------------------- - Correccion al parche DB71. Si el HUB manda una orden de borrado, no - hace falta mandarle nada mas, ni registros ni "B", ya que la orden de - borrado sera confirmada y se pedira la base de datos de nuevo. - -* 2000/04/04 jc...@ar... (DB74) FIX - ----------------------------------------------------------------------- - El parche db52 es erroneo, porque bajo ciertas condiciones se saltaba - "hubs", y es imperativo desconectar de todos ellos. - - El sintoma es que si una tabla es muy corta, si se corrompe se genera - un bucle entre el nodo y el hub. Ver parche DB71. - -* 2000/04/04 jc...@ar... (---) FIX - ----------------------------------------------------------------------- - Compila con la opcion de DEBUG activada. - -* 2000/04/03 jc...@ar... (DB73) FIX? - ----------------------------------------------------------------------- - En algunas maquinas parece que la compactacisn da problemas, por alguna - razon desconocida. En Solaris parece que todo funciona bien, y no he - logrado reproducir el problema en mis Linux. - - He modificado la forma de realizar las compactaciones para verificar - si se trata de un bug del Kernel Linux, bajo determinadas condiciones, - o no. - -* 2000/03/28 jc...@ar... (---) FEATURE - ----------------------------------------------------------------------- - Elimino la opcion "DBH_OPER_HACK_ONLYREG" en la configuracisn, ya que - ahora mismo no tiene sentido. No obstante dejo todo el codigo en el - servidor, para el futuro. - -* 2000/03/28 jc...@ar... (---) FEATURE - ----------------------------------------------------------------------- - Por defecto, los opers deberian poder entrar en cualquier canal usando - el comando "join # OPER". Ahora esta puesto que solo puedan entrar en - los canales registrados en la base de datos distribuida, lo que es un - problema porque no hay ninguno :-) - - En el futuro se devolvera a este flag a su valor normal. - - Por lo pronto, la compilacion de servidores nuevos debe realizarse - cambiando esta opcion en el "make config". Probablemente, lo mas - inteligente seria eliminar esta opcion. - -* 2000/03/09 jc...@ar... (VIP13) FIX - ----------------------------------------------------------------------- - Elimina las dependencias big endian/little endian a la hora de calcular - las IPs virtuales. - - Por otra parte, el codigo original de savage era defectuoso y no - permitia recuperar una IP cifrada. Cambio el sistema de cifrado. - -* 2000/03/09 jc...@ar... (VIP12) FIX - ----------------------------------------------------------------------- - Complemento al parche VIP11: aparte del kill, tampoco muestra en el - status de los usuarios conectados al servidor, cuando un IRCop ejecuta - el comando "/oper" con exito. - - Si "/oper" falla, solo se enteran los IRCops, no todos los usuarios. - Esto ya estaba de antes. - -* 2000/03/09 jc...@ar... (db71) FIX - ----------------------------------------------------------------------- - Cuando un nodo detecta que una de las bases de datos locales esta - corrupta, la borra y solicita actualizaciones a su HUB. Habia un - problema cuando la base de datos en si era lo bastante pequen~a como - para transferirla en una unica rafaga: - - - El nodo con la BDD corrupta borra la base de datos y emite un "J 0" - a su hub, indicandole que le reenvie de nuevo. - - - Si el HUB tenia ya el grifo abierto, envia una orden de borrado y - la base de datos. Si cabe entera en una rafaga, abre el grifo de nuevo. - - - El nodo original recibe la orden de borrado y la responde con - otro "J 0" - - - Dado que el HUB recibe otro "J 0" con grifo abierto, se vuelve - a repetir el proceso. - - La solucion a este problema es no enviar la base de datos, sino un - comando "B num_registro", para que el otro extremo nos la pida. Es - decir, no hacemos un "push", sino que tiene que ser el otro extremo - quien nos haga el "pull". - -* 2000/03/09 jc...@ar... (VIP11) FIX - ----------------------------------------------------------------------- - Cuando un IRCop hace un "kill", en el "path" aparece su IP virtual, - si tiene. - -* 2000/03/08 jc...@ar... (db70) FIX - ----------------------------------------------------------------------- - Cuando llegaba una orden de compactacion de la base de datos con - contenido (por ejemplo, una frase explicativa), se producia una - compactacion (correcto) y no se guarda dicho registro en memoria - aunque si en disco (correcto). - - El problema es que si se reinicia el servidor IRC, o se hace un - /rehash, se leen todos los registros de disco... incluyendo el - registro de compactado... y se almacena en memoria (mal). - - Lo que hago es leer todo el fichero, como siempre, y al final - borrar cualquier posible registro de compactado que hayamos - podido capturar en memoria. El problema solo se producia cuando - se releia la base de datos de disco (reinicio o rehash) *Y* - el registro de compactado tenia algun texto explicativo. - - -* 2000/03/08 jc...@ar... (db69) FEATURE - ----------------------------------------------------------------------- - En resumen, si un nick registrado cambia a otro nick (independientemente - de que este registrado), anula sus flags: - - r - Nick Registrado - h - Operador (helper) - x - Ocultacion de IP - - Adicionalmente, si no es IRCop, anula tambien el flag: - - X - Poder ver IPs ocultas. - - - - 02/Mar/00 - Complemento a la entrada siguiente. - - Cuando se pasa de un nick registrado a otro tambien - registrado, deberia haber un estado "intermedio" - sin registro, para que se detecte correctamente que - se trata de otro usuario tambien registrado. Ejemplo: - - :pepe mode :-rhx - :pepe nick :juan - :juan mode :+rhx - - O eso o, lo logico, ampliar el comando "nick" para que - envie tambien los modos. - - 02/Mar/00 - Cuando un usuario con nick registrado pasa a nick - sin registrar, el servidor deberia quitar los modos - ANTES de cambiar el nick. - - En realidad, lo bueno seria que justo antes del cambio - de nick se enviasen los modos que se PIERDEN y justo - despues los modos que se ganan. - -* 2000/02/15 jc...@ar... (db68) FIX - ----------------------------------------------------------------------- - Si un "helper" cambia de nick y se pone otro nick - registrado, el resto de la red no lo vera como - "helper", pero su nodo lo seguira considerando - "helper". Problema detectado por {^DaNi^}. - - Debe propagar modos al resto de la red y ajustar modos - en el nodo local. - -* 2000/01/24 jc...@ar... (NoProxy17) FEATURE - ----------------------------------------------------------------------- - Si la verificacion SOCKS no llega a conectar, porque por ejemplo la - maquina destino tiene un cortafuegos o lo tiene el propio servidor de - IRC (no deberia bloquear la salida), almacena en la cache SOCKS que - la verificacion tuvo exito. - -* 2000/01/24 jc...@ar... (undernet18) SYNC - ----------------------------------------------------------------------- - Parches Undernet. - - Glines a canales - Ocultacion de las IPs de los nodos/HUBs. - -* 2000/01/21 jc...@ar... (NoProxy16) FIX - ----------------------------------------------------------------------- - El parche original de SOCKS hace verificacion de SOCKS tambien cuando - un servidor se conecta a otro. Y encima el servidor que realiza la - verificacion en aquel que inicia la conexion... Lo cual es innecesario. - -* 2000/01/21 jc...@ar... (undernet17) SYNC - ----------------------------------------------------------------------- - Sincronizacion con parches Undernet. Un operador puede entrar en un - canal local si usa la clave "OVERRIDE". - -* 2000/01/20 jc...@ar... (NoProxy15) FIX - ----------------------------------------------------------------------- - En NoProxy14 se leia el canal, pero luego no se hacia nada con el - y se seguia enviando a #opers. - -* 2000/01/20 jc...@ar... (NoProxy14) FEATURE - ----------------------------------------------------------------------- - Las notificaciones de proxy abierto no se envian a #opers, sino al - canal que se indique en la BDD "b" bajo la clave "sockschannel". - -* 2000/01/20 jc...@ar... (VIP10) FIX - ----------------------------------------------------------------------- - Si un usuario cambia de nick, hay que regenerar su - IP virtual. Sino, nos sigue saliendo la antigua - cuando se vuelve a poner el nick. - - Se nota si la IP virtual del usuario cambia, por ejemplo - porque cambie la clave de cifrado o porque cambie - su entrada en la BDD "v". - - Lo sencillo es borrar la IP virtual cuando se cambia el nick. - -* 2000/01/18 jc...@ar... (NoProxy13) FIX - ----------------------------------------------------------------------- - A veces, cuando un proxy esta abierto, parece que informa de ello - dos veces. La casuistica es sencilla: si se inician dos conexiones - desde un proxy abierto, como cuando se inicia la verificacion - todavia no sabemos el resultado, haremos dos verificaciones y, por - tanto, dos informes. - - La solucion es sencilla: antes de imprimir el informe, hay que ver - si ya tenemos su valor en la cache. Si es asi, no informa en - absoluto, porque se acaba de hacer. - - Lo malo es que la segunda vez suele indicar la IP resuelta, y con - esto lo perdemos. - -* 2000/01/17 jc...@ar... (clones6) FEATURE - ----------------------------------------------------------------------- - Cuando se dice que el resultado de una verificacion - SOCKS esta "cached", debe indicarse tambien - cuanto tiempo de vida le queda. - -* 2000/01/17 jc...@ar... (clones5) FIX - ----------------------------------------------------------------------- - ?Corrige el problema de core dump?. - -* 2000/01/17 jc...@ar... (NoProxy12) FEATURE - ----------------------------------------------------------------------- - Dado que ahora se hace cache tanto del resultado positivo como negativo - de la verificacion de proxy, ya no tiene sentido tener una cache - separada para no hacer "flood" de mensajes de aviso (NoProxy10). - -* 2000/01/17 jc...@ar... (indent5) CLEANUP - ----------------------------------------------------------------------- - "make indent". - -* 2000/01/17 jc...@ar... (NoProxy11) FEATURE - ----------------------------------------------------------------------- - Despliego una cache negativa de proxies abiertos. Si un proxy esta - abierto, y tiene iline, le doy 30 minutos de cache. Si no tiene - iline, le pongo 4 horas. - - El efecto es comparable a tener una gline local. - -* 2000/01/17 jc...@ar... (NoProxy10) FEATURE - ----------------------------------------------------------------------- - No muestra mensajes repetidos de proxy inseguro (NoProxy9) si - las conexiones se producen en menos de 10 minutos. - -* 2000/01/17 jc...@ar... (clones4) FEATURE - ----------------------------------------------------------------------- - Si una conexion tiene clones reconocidos, no hereda "target". - -* 2000/01/14 jc...@ar... (NoProxy9) FEATURE - ----------------------------------------------------------------------- - Cuando se detecta la entrada desde un proxy inseguro, el servidor en - cuestion debe anunciarlo en el canal "#opers". - -* 2000/01/14 jc...@ar... (VIP9) FIX - ----------------------------------------------------------------------- - Completa VIP8. - -* 2000/01/14 jc...@ar... (VIP8) FEATURE - ----------------------------------------------------------------------- - "Lazy Virtual Host". - - Calcula el Virtual Host solo la primera vez que alguien solicita - informacion sobre ese usuario. De esta forma nos ahorramos calcular - host virtuales de forma innecesaria, ademas de repartir el cifrado - a lo largo del tiempo, en vez de concentrarlo en, por ejemplo, - el BURST. - - La casuistica es: - - + Activar +x - - Cuando se conecta un usuario con nick registrado - - Cuando un usuario se pone +x - - Cuando nos llega un usuario con +x remoto - - + Desactivar +x - - Cuando un usuario de pone -x - - Cuando el nick se desregistra desde la red - -* 2000/01/14 jc...@ar... (VIP7) FIX - ----------------------------------------------------------------------- - Si a un usuario se le va a cifrar su IP, pero la clave de cifrado no - esta en la base de datos, se pone el host ""no.hay.clave.de.cifrado". - - Incluyo algunos "Sanity Checks" en el trabajo con la base de datos - de IPs virtuales. - -* 2000/01/11 jc...@ar... (VIP6) FEATURE - ----------------------------------------------------------------------- - Un "UserIP" sobre un usuario con IP protegida debe mostar "0.0.0.0", no - "127.0.0.1". - -* 2000/01/11 jc...@ar... (VIP5) FEATURE - ----------------------------------------------------------------------- - No permite que un servidor remoto ponga en un usuario arbitrario los - modos +h, +x, o +X. - - Si un nick no esta registrado (o se desregistra), no tolera +h, +x, +X. - -* 2000/01/11 jc...@ar... (Undernet16) SYNC - ----------------------------------------------------------------------- - Sincronizacion con parches Undernet. - -* 2000/01/10 jc...@ar... (db67) FIX - ----------------------------------------------------------------------- - Los cambios efectuados no tenian en cuenta que pudiese llegar por - la red un registro no normalizado. - -* 2000/01/10 jc...@ar... (indent4) CLEANUP - ----------------------------------------------------------------------- - "make indent". - -* 2000/01/10 jc...@ar... (db66) FEATURE - ----------------------------------------------------------------------- - Sigo preparando la gestion directa de las BDD a partir de su MMAP. En - esta ocasion, paso la responsabilidad de la escritura en disco a - "db_alta()". - -* 2000/01/10 jc...@ar... (db65) FEATURE - ----------------------------------------------------------------------- - Cuando se busca un registro, devolvemos una copia, y no el registro - real. De esta forma vamos preparando el camino para eliminar los - registros de memoria y leerlos directamente de MMAP. - - Como el resto del programa no sabe esto, trabajamos con una pequen~a - cache de registros (32 valores), en la que se van copiando los - registros que se piden, sobreescribiendo los registros antiguos - en un anillo. - -* 2000/01/10 jc...@ar... (db64) FEATURE - ----------------------------------------------------------------------- - No almacenamos el destinatario en memoria. - -* 2000/01/10 jc...@ar... (db63) FEATURE - ----------------------------------------------------------------------- - Ya no se usan "malloc/free" para trabajar con la memoria temporal - necesaria para normalizar datos en la base de datos; cuando se va a - realizar una operacion, vemos si el bloque que tenemos es suficiente. - Si no lo es, lo libera y pide otro mas grande. - - De esta forma eliminamos muchas llamadas de gestion de memoria, y - reducimos la fragmentacion. - - Tambien se corrigen un par de BUGS en la gestion de memoria de las BDD. - -* 2000/01/10 jc...@ar... (clones3) FEATURE - ----------------------------------------------------------------------- - El mensaje cuando se supera el limite de clones - deberia publicitar la pagina web de compra. - - El mensaje a imprimir se referencia como el registro ".." en BDD - 'i'. - -* 2000/01/10 jc...@ar... (db62) FEATURE - ----------------------------------------------------------------------- - Cuando el servidor muere por culpa de la base de datos, se guarda en - el SYSLOG el PATH al directorio con la base de datos problematica. - -* 2000/01/10 jc...@ar... (db61) FIX - ----------------------------------------------------------------------- - En la instalacion "make install" se usaba IRCDOWN/IRCDGRP para fijar - los permisos de la base de datos, cuando deberia utilizarse - IRC_UID/IRC_GID. En todo caso, ambos valores deberian ser equivalentes, - salvo por el hecho de que uno es informacisn textual y el otro es - numerico. - -* 2000/01/05 jc...@ar... (undernet15) SYNC - ----------------------------------------------------------------------- - Sincronizacion con parches Undernet. - -* 2000/01/04 jc...@ar... (db60) CLEANUP - ----------------------------------------------------------------------- - Mas aislamiento de BDD y borrado de una rutina que ya no se utiliza. - -* 2000/01/03 jc...@ar... (db59) FIX - ----------------------------------------------------------------------- - Es importante recordar que cuando se an~ade la gestion de una nueva BDD - hay que modificar el "make install", para que no la borre cada vez - que se instala una nueva version del servidor. - - Eso era lo que pasaba con la base de datos "t". - -* 2000/01/03 jc...@ar... (db58) FIX - ----------------------------------------------------------------------- - [13:03] <YaW> Si un usuario tiene el nick registrado en la DB y al conectar se identifica (/server servidor - puerto nick pass). El servidor primero hace un MODE en P9 y posteriormente un NICK en P10. -[13:03] <YaW> solucion: pasarlo todo en la linea NICK - - JCEA: - Cuando se introduce la clave en el nick, se envia - inmediatamente el modo sin que se haya propagado - aun el nuevo usuario, ya que todavia no se ha - registrado contestando al PING - - Si la clave se introduce como "pass", pasa lo mismo. - - La solucion es sencilla: cuando se van a propagar los modos por la red, - solo lo hace si el USUARIO esta registrado. Es decir, si se ha conectado, - ha introducido sus datos y ha respondido al PING. - -* 2000/01/03 jc...@ar... (db57) FEATURE - ----------------------------------------------------------------------- - Parche complementario al anterior, verificando tambien las BDD leidas - desde disco. Este parche no deberia ser necesario si no fuera porque - ya se han propagado bases de datos corruptas, antes de desplegar DB56. - -* 2000/01/03 jc...@ar... (db56) FEATURE - ----------------------------------------------------------------------- - Solo acepta un registro nuevo cuando referencia una BDD correcta. Es - decir, cuando la BDD referenciada es 'a'-'z' o 'N'. - - En particular, no acepta registros cuyo campo de base de datos conste - de mas de un caracter. De esa forma se pretende limitar el peligro - de cometer un error si se utilizan comandos "RAW". - -* 2000/01/03 jc...@ar... (db55) FEATURE - ----------------------------------------------------------------------- - Aumenta la informacion que proporciona la respuesta al comando "Q" - de las bases de datos distribuidas. Ahora proporciona tambien el numero - de registros que contiene. - - Este cambio es compatible con el protocolo previo, a nivel de servidores. - No asi a nivel de SERVICES que implementen "Q". - -* 2000/01/03 jc...@ar... (db54) CLEANUP - ----------------------------------------------------------------------- - Concentra todas las operaciones "internas" (menos el hashing) de las - bases de datos en el modulo de bases de datos. Entre otras cosas, eso - supone exportar menos entorno en el *.h - -* 2000/01/03 jc...@ar... (undernet14) SYNC - ----------------------------------------------------------------------- - Fix Y2K proveniente de Undernet. En realidad el problema ocurre todos - los an~os, entre el periodo en que la zona local ha cambiado de an~o, - pero GMT todavia no lo ha hecho. - -* 1999/12/21 jc...@ar... (patch.global7) FIX - ----------------------------------------------------------------------- - Cuando un global se pasaba de nodo en nodo, se perdia el texto del mensaje. - -* 1999/12/20 jc...@ar... (patch.clones2) FIX - ----------------------------------------------------------------------- - Si tiene permiso de clones, nunca debe bloquear las conexiones con - "Throttled". - - En la version anterior, solo se eliminaba la posibilidad de throttle - cuando se superaba el numero maximo de conexiones, no cuando se - entraba y salia repetidamente. - -* 1999/12/16 jc...@ar... (patch.global6) FIX - ----------------------------------------------------------------------- - Por alguna extran~a razon, borre un parametro de una funcion con - parametros variables, provocando core dump. - -* 1999/12/16 jc...@ar... (patch.global5) FIX - ----------------------------------------------------------------------- - Se iban an~adiendo prefijos "Mensaje Global" en cada "hop". - -* 1999/12/16 jc...@ar... (patch.NoProxy8) FEATURE - ----------------------------------------------------------------------- - En la cache NoProxy, si la conexion proviene de una IP con clones, - se le dan cuatro horas de validez, en lugar de los 30 minutos. - -* 1999/12/13 jc...@ar... (undernet13.patch) SYNC - ----------------------------------------------------------------------- - Fix proveniente de Undernet. - -* 1999/12/13 jc...@ar... (patch.indent3) SYNC - ----------------------------------------------------------------------- - "make indent". - -* 1999/12/13 jc...@ar... (patch.global4) FIX - ----------------------------------------------------------------------- - Soluciona "Target Left IRC". - -* 1999/12/13 jc...@ar... (patch.global3) FIX - ----------------------------------------------------------------------- - Corregido Core Dump. - -* 1999/12/10 jc...@ar... (patch.global2) FEATURE - ----------------------------------------------------------------------- - Con el cambio anterior, ya no se reconocen los mensajes globales. - An~adimos el texto "MENSAJE GLOBAL", asi como el nick del remitente - y la mascara de destino. - -* 1999/12/10 jc...@ar... (patch.global1) FEATURE - ----------------------------------------------------------------------- - Para evitar que el mIRC meta los globales en la ventana de status, - hacemos que cada usuario vea el global como un mensaje privado - dirigido a el personalmente. - - Por cierto, un privado con destino "$..." se distribuye entre los usuarios - conectados a los servidores que cumplen la mascara. - - Si el destino es "#...", el global se distribuye entre los usuarios de - la red cuya IP/Hostname cumple la mascara. - - Si se requiere una personalizacion mayor, se puede recurrir al envio - de mensajes personales o, mejor, /privmsg n1,n2,n3,n4,n5... - -* 1999/12/10 jc...@ar... (patch.NoProxy7) FIX - ----------------------------------------------------------------------- - Los servidores no tienen entrada en IPcheck, asi que no debemos hacer - "SetIPChecked()" de forma indiscriminada en "IPcheck_proxy_cache_set()". - -* 1999/12/10 sa...@ap... (patch.dbh17) FIX - ----------------------------------------------------------------------- - El pseudoBot de nicks nos habla por NOTICE en lugar de PRIVMSG, lo hago - pensando en no liar mucho la migración de cara a los scripts. - -* 1999/12/09 jc...@ar... (patch.NoProxy6) FIX - ----------------------------------------------------------------------- - El parche "NoProxy5" no hacia cache dependiendo del tipo de error en el - intento de conexion para verificar. - -* 1999/12/09 jc...@ar... (patch.NoProxy5) FEATURE - ----------------------------------------------------------------------- - Mantiene una cache del resultado de las comprobaciones de PROXY abierto. - Si el proxy estaba cerrado, le da una validez de 30 minutos. Si el - PROXY estaba abierto, realiza la comprobacion de nuevo siempre. - -* 1999/12/09 jc...@ar... (undernet12.patch) SYNC - ----------------------------------------------------------------------- - Incluimos los tres primeros parches de Undernet para 2.10.07 - - Algunos detalles: - - - Uno de los parches permite que los IRCops no tengan limitado el - numero de canales en los que puede entrar simultaneamente. Eso ya - estaba implementado en nuestro codigo. - - - Otros parches conceden numerosos privilegios a los IRCops, dentro - de canales locales. Nosotros hacemos lo mismo, pero para todos - los canales, no solo los locales. - -* 1999/11/19 sa...@ap... (patch.db53) FIX - ----------------------------------------------------------------------- - Linux 2.0/libc5 no contiene algunas definiciones en mman.h, como són - MAP_NORESERVE y MAP_FAILED. Digital Unix no contiene MAP_NORESERVE, - los he incorporado en s_bdd.h, MAP_NORESERVE=0 y MAP_FAILED=((void*)-1) - -* 1999/11/18 sa...@ap... (patch.db52) FIX - ----------------------------------------------------------------------- - Si está corrupta una tabla, al hacer REHASH (o kill -1) muere el daemon - al desconectar de los hubs, pk un puntero keda invalidado. Se ha - corregido con este patch. - -* 1999/11/18 sa...@ap... (patch.dbh16) FEATURE - ----------------------------------------------------------------------- - Los textos referentes a autenticación de usuario se enviaran con origen - nombe.de.server y NOTICE , excepto si existe un registro 'nickserv' en - la tabla 'b', en cuyo caso se enviaran con origen el contenido de dicho - registro mediante PRIVMSG. Resumiendo: - - :jupiter.irc-hispano.org NOTICE usuario :*** Utiliza /NICK usuari... - - o bien: - - :NiCK PRIVMSG usuario :*** Utiliza /NICK usuario:clave para ident... - -* INICIO de CAMBIOS para "ircu2.10.07" Index: ircd-ircdev/doc/history/IRC-Hispano/CAMBIOS2_10_H_01 diff -u ircd-ircdev/doc/history/IRC-Hispano/CAMBIOS2_10_H_01:1.1.1.1 ircd-ircdev/doc/history/IRC-Hispano/CAMBIOS2_10_H_01:removed --- ircd-ircdev/doc/history/IRC-Hispano/CAMBIOS2_10_H_01:1.1.1.1 Mon Sep 8 03:34:26 2003 +++ ircd-ircdev/doc/history/IRC-Hispano/CAMBIOS2_10_H_01 Fri Apr 22 09:53:26 2005 @@ -1,147 +0,0 @@ -$Id: CAMBIOS2_10_H_01,v 1.1.1.1 2003/09/08 10:34:26 zolty Exp $ - - -* 2000/11/16 jc...@ar... (VIP18 - u2.10.H.01.28) FIX - ----------------------------------------------------------------------- - Cuando un usuario cambia de nick registrado a no registrado, y al - reves, y el nick registrado tiene IP virtual propia, la IP virtual del - usuario no cambia. - - Ahora se verifican posibles cambios en la IP virtual cuando el - usuario gana o pierde el flag "+r". - -* 2000/11/16 jc...@ar... (u2.10.H.01.27) CLEANUP - ----------------------------------------------------------------------- - "make indent" - -* 2000/11/16 jc...@ar... (VIP17 - u2.10.H.01.26) FIX - ----------------------------------------------------------------------- - Modificamos el servidor para que una red hibrida con nodos con IP - virtual para todo el mundo, y nodos con IP virtual solo para registrados - puedan convivir sin problemas. - - Los nodos mas restrictivos no pondran el +x a sus usuarios, pero deben - aceptar el +x que les llegue de otro nodo. - -* 2000/11/16 jc...@ar... (VIP16 - u2.10.H.01.24) FIX - ----------------------------------------------------------------------- - Aparecian algunos usuarios ajenos con modo "+x" de forma aleatoria. - El problema se producia cuando un usuario externo cambiaba de nick, - que siempre se le ponia el "+x", aunque el nodo original no enviase - dicho modo. - -* 2000/11/16 jc...@ar... (VIP15 - u2.10.H.01.23) FEATURE - ----------------------------------------------------------------------- - Solo debe verificar la clave de nick registrado cuando se trata de - conexiones locales. - - Solo acude a la base de datos para ver si un nick esta registrado - si se trata de una conexion local. - - Esto incrementa el rendimiento de forma notable, sobre todo en los - "net join". - -* 2000/11/15 jc...@ar... (u2.10.H.01.22) FEATURE - ----------------------------------------------------------------------- - Cuando se produce un "connect", solo se informa del mismo a los - IRCops y Helpers. - -* 2000/11/15 jc...@ar... (u2.10.H.01.21) FEATURE - ----------------------------------------------------------------------- - Cuando un usuario esta siendo bloqueado por "silence", - deberia salirle algo en pantalla. - - Esto afecta a "invite", "message" y "notice". - - Tambien afecta a "cnotice" y "cprivmsg". - - Los mensajes cuyo destinatario es un canal, no informan si hay - un silence en algunos usuarios de un canal. - -* 2000/11/15 jc...@ar... (u2.10.H.01.20) FEATURE - ----------------------------------------------------------------------- - Los Helpers pueden solicitar listados largos "who", y ven los modos - "i", "w" y "g" de los usuarios, como se fueran IRCops. - -* 2000/11/15 jc...@ar... (u2.10.H.01.19) FEATURE - ----------------------------------------------------------------------- - Los opers deberian tener acceso al flag "x" del - comando /who. - -* 2000/11/15 jc...@ar... (VIP14 - u2.19.H.01.18) FEATURE - ----------------------------------------------------------------------- - Todos los usuarios tienen IP virtual. - -* 2000/11/06 jc...@ar... (u2.10.H.01.16) FEATURE - ----------------------------------------------------------------------- - Define un par de flags nuevos para no mezclar demasiado el tema de - los informes de "rename". - - Documentado en http://www.argo.es/~jcea/irc/modos.htm - -* 2000/10/19 jc...@ar... (u2.10.H.01.15) FEATURE - ----------------------------------------------------------------------- - Un "/who" a un Oper (Helper) tambien devuelve el asterisco marcador - de IRCop, de forma que algunos scripts te sacan con colorines :-). - -* 2000/10/19 jc...@ar... (u2.10.H.01.14) FEATURE - ----------------------------------------------------------------------- - Cuando un usuario hace un "/who 0 o" tambien le salen los Opers, ya - que los IRCops son una especie en extenc... [truncated message content] |
From: Toni G. <zo...@us...> - 2005-04-22 16:55:53
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-22 16:55:46 UTC Modified files: doc/ircd.sample-en.conf Log message: Fallito ---------------------- diff included ---------------------- Index: ircd-ircdev/doc/ircd.sample-en.conf diff -u ircd-ircdev/doc/ircd.sample-en.conf:1.18 ircd-ircdev/doc/ircd.sample-en.conf:1.19 --- ircd-ircdev/doc/ircd.sample-en.conf:1.18 Fri Apr 22 09:22:12 2005 +++ ircd-ircdev/doc/ircd.sample-en.conf Fri Apr 22 09:55:35 2005 @@ -469,7 +469,7 @@ Kill { host = "*.edu"; reason = "Please use a nearer server"; }; # You can also kill based on username. -Kill { username = "sub7"; realname = "s*7*"; reason = "You are infected with a Trojan"; +Kill { username = "sub7"; realname = "s*7*"; reason = "You are infected with a Trojan"; }; # The file can contain for example, a reason, a link to the # server rules and a contact address. Note the combination ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-04-23 15:57:31
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-23 15:57:23 UTC Modified files: RELEASE.NOTES RELEASE.NOTES.es doc/ircd.sample-en.conf doc/ircd.sample-es.conf Log message: actualizacion docs ---------------------- diff included ---------------------- Index: ircd-ircdev/RELEASE.NOTES diff -u ircd-ircdev/RELEASE.NOTES:1.1 ircd-ircdev/RELEASE.NOTES:1.2 --- ircd-ircdev/RELEASE.NOTES:1.1 Sun Apr 17 11:35:07 2005 +++ ircd-ircdev/RELEASE.NOTES Sat Apr 23 08:57:00 2005 @@ -1,5 +1,5 @@ Release notes for IRC-Dev IRCD version 1.0 -Last updated: 17 Apr 2005 +Last updated: 23 Apr 2005 Written by Toni Garcia <zo...@ir...> Based on earlier documents by Kev <kl...@mi...>, Braden <db...@ya...> and Michael Poole <md...@tr...> @@ -59,8 +59,8 @@ Client blocks (previously I: lines), Operator blocks (previously O: and o: lines), channel bans and silences may use CIDR notation instead of simple wildcards. You may also have silence exceptions by putting -'-' before the mask; for example, if you wish to silence everyone -except X, you could use SILENCE *!*@*,-X!cse...@ir.... +'~' before the mask; for example, if you wish to silence everyone +except X, you could use SILENCE *!*@*,~X!cse...@ir.... The server will no longer kick "net riders" in keyed (+k) channels if both sides of the net join have the same key. Index: ircd-ircdev/RELEASE.NOTES.es diff -u ircd-ircdev/RELEASE.NOTES.es:1.1 ircd-ircdev/RELEASE.NOTES.es:1.2 --- ircd-ircdev/RELEASE.NOTES.es:1.1 Sun Apr 17 11:35:07 2005 +++ ircd-ircdev/RELEASE.NOTES.es Sat Apr 23 08:57:02 2005 @@ -1,5 +1,5 @@ Notas de lanzamiento para IRCD de IRC-Dev version 1.0 -Ultima actualización: 17 Abril 2005 +Ultima actualización: 23 Abril 2005 Escrito y traducido por Toni Garcia <zo...@ir...> Basado en anteriores documentos por Kev <kl...@mi...>, Braden <db...@ya...> y Michael Poole <md...@tr...> @@ -62,9 +62,9 @@ Los bloques "Client" (previamente líneas I:), bloques "Operator" (previamente líneas O: y o:), bans de canales y los sileces pueden utilizar la notación de CIDR en lugar de comodines simples. Puedes -también tener excepciones de silencie poniendo '-' antes de la máscara; +también tener excepciones de silencie poniendo '~' antes de la máscara; por ejemplo, si deseas silenciar de todo el mundo excepto X, puedes -utilizar SILENCE *!*@*,-X!cse...@bo.... +utilizar SILENCE *!*@*,~X!cse...@bo.... El servidor no puede kickear por "net riders" en los canales con llave (+k) si ambos lados de la red al unirse tienen la misma llave. Index: ircd-ircdev/doc/ircd.sample-en.conf diff -u ircd-ircdev/doc/ircd.sample-en.conf:1.19 ircd-ircdev/doc/ircd.sample-en.conf:1.20 --- ircd-ircdev/doc/ircd.sample-en.conf:1.19 Fri Apr 22 09:55:35 2005 +++ ircd-ircdev/doc/ircd.sample-en.conf Sat Apr 23 08:57:02 2005 @@ -1,6 +1,6 @@ # ircd.conf - configuration file for IRC-Dev's IRCD. # -# Last Updated: 22, Apr 2005. +# Last Updated: 23, Apr 2005. # # Written by Niels <ni...@un...>, based on the original example.conf, # server code and some real-life (ahem) experience. @@ -404,6 +404,8 @@ # name = "relservername"; # }; # +# You may have have more than one name listed in each block. +# # Note: (1) These lines are agreed on by every server admin on IRC-Dev; # (2) These lines must be the same on every single server, or results # will be disasterous; (3) This is a useful feature, not something that @@ -421,8 +423,6 @@ UWorld { name = "luz.irc-dev.net"; -}; -Uworld { name = "services.irc-dev.net"; }; Index: ircd-ircdev/doc/ircd.sample-es.conf diff -u ircd-ircdev/doc/ircd.sample-es.conf:1.14 ircd-ircdev/doc/ircd.sample-es.conf:1.15 --- ircd-ircdev/doc/ircd.sample-es.conf:1.14 Fri Apr 22 09:22:13 2005 +++ ircd-ircdev/doc/ircd.sample-es.conf Sat Apr 23 08:57:13 2005 @@ -1,6 +1,6 @@ # ircd.conf - archivo de configuración para el IRCD de IRC-Dev. # -# Ultima actualización: 27, Abr 2005. +# Ultima actualización: 23, Abr 2005. # # Escrito por Niels <ni...@un...>, basado en el archivo example.conf # original, en el código del servidor y la experiencia de la vida real. @@ -419,6 +419,8 @@ # name = "relnombreservidor"; # }; # +# Puedes tener más de un nombre listado en cada bloque. +# # Nota: (1) Estas líneas son puestas por cada administrador de un servidor # en IRC-Dev; (2) Estas líneas debe ser exactamente iguales en cada # servidor, o los resultados serán impredecibles; (3) Esta es una @@ -440,8 +442,6 @@ Uworld { name = "luz.irc-dev.net"; -}; -Uworld { name = "services.irc-dev.net"; }; ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-04-24 22:18:24
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-24 22:18:16 UTC Modified files: ChangeLog ChangeLog.es include/patchlevel.h ircd/channel.c ircd/ircd_lexer.l ircd/ircd_parser.y ircd/m_silence.c ircd/m_userhost.c ircd/m_userip.c Log message: Author: zoltan <zo...@ir...> Log message: 2005-04-25 Toni García <zo...@ir...> 1.0.alpha28 * Fix de bugs ---------------------- diff included ---------------------- Index: ircd-ircdev/ChangeLog diff -u ircd-ircdev/ChangeLog:1.29 ircd-ircdev/ChangeLog:1.30 --- ircd-ircdev/ChangeLog:1.29 Fri Apr 22 09:22:11 2005 +++ ircd-ircdev/ChangeLog Sun Apr 24 15:18:05 2005 @@ -1,10 +1,13 @@ # # ChangeLog for ircd-ircdev # -# $Id: ChangeLog,v 1.29 2005/04/22 16:22:11 zolty Exp $ +# $Id: ChangeLog,v 1.30 2005/04/24 22:18:05 zolty Exp $ # # Insert new changes at beginning of the change list. # +2005-04-25 Toni García <zo...@ir...> 1.0.alpha28 + * Fix bugs + 2005-04-22 Toni García <zo...@ir...> 1.0.alpha27 * Undernet synchronization Index: ircd-ircdev/ChangeLog.es diff -u ircd-ircdev/ChangeLog.es:1.29 ircd-ircdev/ChangeLog.es:1.30 --- ircd-ircdev/ChangeLog.es:1.29 Fri Apr 22 09:22:11 2005 +++ ircd-ircdev/ChangeLog.es Sun Apr 24 15:18:05 2005 @@ -1,10 +1,13 @@ # # Log de Cambios para ircd-ircdev # -# $Id: ChangeLog.es,v 1.29 2005/04/22 16:22:11 zolty Exp $ +# $Id: ChangeLog.es,v 1.30 2005/04/24 22:18:05 zolty Exp $ # # Insertar los nuevos cambios al principio de esta lista de cambios. # +2005-04-25 Toni García <zo...@ir...> 1.0.alpha28 + * Fix de bugs + 2005-04-22 Toni García <zo...@ir...> 1.0.alpha27 * Sincronización Undernet Index: ircd-ircdev/include/patchlevel.h diff -u ircd-ircdev/include/patchlevel.h:1.28 ircd-ircdev/include/patchlevel.h:1.29 --- ircd-ircdev/include/patchlevel.h:1.28 Fri Apr 22 09:22:13 2005 +++ ircd-ircdev/include/patchlevel.h Sun Apr 24 15:18:05 2005 @@ -17,10 +17,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: patchlevel.h,v 1.28 2005/04/22 16:22:13 zolty Exp $ + * $Id: patchlevel.h,v 1.29 2005/04/24 22:18:05 zolty Exp $ * */ -#define PATCHLEVEL ".alpha27" +#define PATCHLEVEL ".alpha28" #define RELEASE "1.0" Index: ircd-ircdev/ircd/channel.c diff -u ircd-ircdev/ircd/channel.c:1.18 ircd-ircdev/ircd/channel.c:1.19 --- ircd-ircdev/ircd/channel.c:1.18 Fri Apr 22 09:22:13 2005 +++ ircd-ircdev/ircd/channel.c Sun Apr 24 15:18:05 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Channel management and maintanance - * @version $Id: channel.c,v 1.18 2005/04/22 16:22:13 zolty Exp $ + * @version $Id: channel.c,v 1.19 2005/04/24 22:18:05 zolty Exp $ */ #include "config.h" @@ -2837,6 +2837,8 @@ if (!bmatch(ban, newban)) { if (do_free) free_ban(newban); + else + MyFree(newban); return 1; } if (!(ban->flags & (BAN_OVERLAPPED|BAN_DEL))) { @@ -2873,6 +2875,8 @@ } if (do_free) free_ban(newban); + else + MyFree(newban->banstr); return 4; } @@ -2928,7 +2932,7 @@ newban = state->banlist + (state->numbans++); newban->next = 0; newban->flags = ((state->dir == MODE_ADD) ? BAN_ADD : BAN_DEL) - | (*flag_p == 'b' ? 0 : BAN_EXCEPTION); + | (*flag_p == MODE_BAN ? 0 : BAN_EXCEPTION); newban->banstr = NULL; set_ban_mask(newban, collapse(pretty_mask(t_str))); newban->who = cli_name(state->sptr); @@ -3031,6 +3035,13 @@ prevban = ban; } /* for (prevban = 0, ban = state->chptr->banlist; ban; ban = nextban) { */ + /* Release all masks of removed bans */ + for (count = 0; count < state->numbans; ++count) { + ban = state->banlist + count; + if (ban->flags & BAN_DEL) + MyFree(ban->banstr); + } + if (changed) /* if we changed the ban list, we must invalidate the bans */ mode_ban_invalidate(state->chptr); } Index: ircd-ircdev/ircd/ircd_lexer.l diff -u ircd-ircdev/ircd/ircd_lexer.l:1.11 ircd-ircdev/ircd/ircd_lexer.l:1.12 --- ircd-ircdev/ircd/ircd_lexer.l:1.11 Sat Apr 2 11:47:35 2005 +++ ircd-ircdev/ircd/ircd_lexer.l Sun Apr 24 15:18:05 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: ircd_lexer.l,v 1.11 2005/04/02 19:47:35 zolty Exp $ + * $Id: ircd_lexer.l,v 1.12 2005/04/24 22:18:05 zolty Exp $ * */ @@ -28,6 +28,7 @@ #include <stdlib.h> #include "config.h" #include "ircd.h" +#include "ircd_alloc.h" #include "ircd_string.h" #include "s_debug.h" #include "y.tab.h" @@ -204,7 +205,7 @@ QSTRING \"[^"\n]+[\"\n] %% -{QSTRING} {yytext[yyleng-1] = 0; yylval.text = yytext+1; return QSTRING;} +{QSTRING} {yytext[yyleng-1] = 0; DupString(yylval.text, yytext+1); return QSTRING;} {NUMBER} {yylval.num = strtoul(yytext, NULL, 10); return NUMBER;} {WHITE} ; {SHCOMMENT} ; Index: ircd-ircdev/ircd/ircd_parser.y diff -u ircd-ircdev/ircd/ircd_parser.y:1.18 ircd-ircdev/ircd/ircd_parser.y:1.19 --- ircd-ircdev/ircd/ircd_parser.y:1.18 Fri Apr 22 09:22:13 2005 +++ ircd-ircdev/ircd/ircd_parser.y Sun Apr 24 15:18:05 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: ircd_parser.y,v 1.18 2005/04/22 16:22:13 zolty Exp $ + * $Id: ircd_parser.y,v 1.19 2005/04/24 22:18:05 zolty Exp $ * */ %{ @@ -93,7 +93,6 @@ %token <text> QSTRING %token <num> NUMBER -%token <text> FNAME %token GENERAL %token ADMIN @@ -262,6 +261,7 @@ jupenick: NICK '=' QSTRING { addNickJupes($3); + MyFree($3); } ';'; generalblock: GENERAL '{' generalitems '}' @@ -285,16 +285,19 @@ generalname: NAME '=' QSTRING ';' { if (localConf.name == NULL) - DupString(localConf.name, $3); - else if (strcmp(localConf.name, $3)) - parse_error("Redefinition of server name %s (%s)", $3, - localConf.name); + localConf.name = $3; + else { + if (strcmp(localConf.name, $3)) + parse_error("Redefinition of server name %s (%s)", $3, + localConf.name); + MyFree($3); + } }; generaldesc: DESCRIPTION '=' QSTRING ';' { MyFree(localConf.description); - DupString(localConf.description, $3); + localConf.description = $3; ircd_strncpy(cli_info(&me), $3, REALLEN); }; @@ -307,6 +310,7 @@ memcpy(&VirtualHost_v4.addr, &addr, sizeof(addr)); else memcpy(&VirtualHost_v6.addr, &addr, sizeof(addr)); + MyFree($3); }; adminblock: ADMIN '{' adminitems '}' @@ -322,17 +326,17 @@ adminitem: adminlocation | admincontact | error; adminlocation: LOCATION '=' QSTRING ';' { - if (localConf.location1 == NULL) - DupString(localConf.location1, $3); - else if (localConf.location2 == NULL) - DupString(localConf.location2, $3); - /* Otherwise just drop it. -A1kmm */ + if (localConf.location1 == NULL) + localConf.location1 = $3; + else if (localConf.location2 == NULL) + localConf.location2 = $3; + else /* Otherwise just drop it. -A1kmm */ + MyFree($3); }; admincontact: CONTACT '=' QSTRING ';' { - if (localConf.contact != NULL) - MyFree(localConf.contact); - DupString(localConf.contact, $3); + MyFree(localConf.contact); + localConf.contact = $3; }; classblock: CLASS { @@ -366,7 +370,7 @@ classname: NAME '=' QSTRING ';' { MyFree(name); - DupString(name, $3); + name = $3; }; classpingfreq: PINGFREQ '=' timespec ';' { @@ -387,7 +391,7 @@ classusermode: USERMODE '=' QSTRING ';' { MyFree(pass); - DupString(pass, $3); + pass = $3; }; connectblock: CONNECT @@ -395,32 +399,39 @@ maxlinks = 65535; } '{' connectitems '}' { - if (name != NULL && pass != NULL && host != NULL && c_class != NULL - && !strchr(host, '*') && !strchr(host, '?')) - { - struct ConfItem *aconf = make_conf(CONF_SERVER); - aconf->name = name; - aconf->origin_name = origin; - aconf->passwd = pass; - aconf->conn_class = c_class; - aconf->address.port = port; - aconf->host = host; - aconf->maximum = maxlinks; - aconf->hub_limit = hub_limit; - lookup_confhost(aconf); - } - else - { - MyFree(name); - MyFree(pass); - MyFree(host); - MyFree(origin); - MyFree(hub_limit); - parse_error("Bad connect block"); - } - name = pass = host = origin = hub_limit = NULL; - c_class = NULL; - port = 0; + struct ConfItem *aconf = NULL; + if (name == NULL) + parse_error("Missing name in connect block"); + else if (pass == NULL) + parse_error("Missing password in connect block"); + else if (host == NULL) + parse_error("Missing host in connect block"); + else if (strchr(host, '*') || strchr(host, '?')) + parse_error("Invalid host '%s' in connect block", host); + else if (c_class == NULL) + parse_error("Missing class in connect block"); + else { + aconf = make_conf(CONF_SERVER); + aconf->name = name; + aconf->origin_name = origin; + aconf->passwd = pass; + aconf->conn_class = c_class; + aconf->address.port = port; + aconf->host = host; + aconf->maximum = maxlinks; + aconf->hub_limit = hub_limit; + lookup_confhost(aconf); + } + if (!aconf) { + MyFree(name); + MyFree(pass); + MyFree(host); + MyFree(origin); + MyFree(hub_limit); + } + name = pass = host = origin = hub_limit = NULL; + c_class = NULL; + port = 0; }';'; connectitems: connectitem connectitems | connectitem; connectitem: connectname | connectpass | connectclass | connecthost @@ -428,78 +439,73 @@ | connecthublimit | connectmaxhops | error; connectname: NAME '=' QSTRING ';' { - MyFree(name); - DupString(name, $3); + MyFree(name); + name = $3; }; connectpass: PASS '=' QSTRING ';' { - MyFree(pass); - DupString(pass, $3); + MyFree(pass); + pass = $3; }; connectclass: CLASS '=' QSTRING ';' { - c_class = find_class($3); + c_class = find_class($3); + MyFree($3); }; connecthost: HOST '=' QSTRING ';' { - MyFree(host); - DupString(host, $3); + MyFree(host); + host = $3; }; connectport: PORT '=' NUMBER ';' { - port = $3; + port = $3; }; connectvhost: VHOST '=' QSTRING ';' { - MyFree(origin); - DupString(origin, $3); + MyFree(origin); + origin = $3; }; connectleaf: LEAF ';' { - maxlinks = 0; + maxlinks = 0; }; connecthub: HUB ';' { - MyFree(hub_limit); - DupString(hub_limit, "*"); + MyFree(hub_limit); + DupString(hub_limit, "*"); }; connecthublimit: HUB '=' QSTRING ';' { - MyFree(hub_limit); - DupString(hub_limit, $3); + MyFree(hub_limit); + hub_limit = $3; }; connectmaxhops: MAXHOPS '=' expr ';' { - maxlinks = $3; + maxlinks = $3; }; -uworldblock: UWORLD '{' uworlditems '}' ';' -{ - if (name) - { - struct ConfItem *aconf = make_conf(CONF_UWORLD); - aconf->host = name; - } - else - { - MyFree(name); - parse_error("Bad UWorld block"); - } - name = NULL; -}; +uworldblock: UWORLD '{' uworlditems '}' ';'; uworlditems: uworlditem uworlditems | uworlditem; uworlditem: uworldname | error; uworldname: NAME '=' QSTRING ';' { - MyFree(name); - DupString(name, $3); + make_conf(CONF_UWORLD)->host = $3; }; operblock: OPER '{' operitems '}' ';' { - if (name && pass && host && c_class) - { - struct ConfItem *aconf = make_conf(CONF_OPERATOR); + struct ConfItem *aconf = NULL; + if (name == NULL) + parse_error("Missing name in operator block"); + else if (pass == NULL) + parse_error("Missing password in operator block"); + else if (host == NULL) + parse_error("Missing host in operator block"); + else if (c_class == NULL) + parse_error("Missing class in operator block"); + else { + aconf = make_conf(CONF_OPERATOR); aconf->name = name; aconf->passwd = pass; conf_parse_userhost(aconf, host); @@ -510,9 +516,7 @@ && !FlagHas(&c_class->privs_dirty, PRIV_PROPAGATE)) parse_error("Operator block for %s and class %s have no LOCAL setting", name, c_class->cc_name); } - else - { - parse_error("operator blocks need a name, password, class and host."); + if (!aconf) { MyFree(name); MyFree(pass); MyFree(host); @@ -527,29 +531,30 @@ opername: NAME '=' QSTRING ';' { MyFree(name); - DupString(name, $3); + name = $3; }; operpass: PASS '=' QSTRING ';' { MyFree(pass); - DupString(pass, $3); + pass = $3; }; operhost: HOST '=' QSTRING ';' { - MyFree(host); - if (!strchr($3, '@')) - { - int uh_len; - char *b = (char*) MyMalloc((uh_len = strlen($3)+3)); - ircd_snprintf(0, b, uh_len, "*@%s", $3); - host = b; - } - else - DupString(host, $3); + MyFree(host); + if (!strchr($3, '@')) + { + int uh_len; + host = (char*) MyMalloc((uh_len = strlen($3)+3)); + ircd_snprintf(0, host, uh_len, "*@%s", $3); + MyFree($3); + } + else + host = $3; }; operclass: CLASS '=' QSTRING ';' { - c_class = find_class($3); + c_class = find_class($3); + MyFree($3); }; priv: privtype '=' yesorno ';' @@ -600,13 +605,9 @@ portblock: PORT '{' portitems '}' ';' { if (port > 0 && port <= 0xFFFF) - { add_listener(port, host, pass, tconn, tping); - } else - { - parse_error("Bad port block"); - } + parse_error("Port %d is out of range", port); MyFree(host); MyFree(pass); host = pass = NULL; @@ -622,7 +623,7 @@ portvhost: VHOST '=' QSTRING ';' { MyFree(host); - DupString(host, $3); + host = $3; }; portmask: MASK '=' QSTRING ';' @@ -657,7 +658,7 @@ unsigned char addrbits = 0; if (ip && !ipmask_parse(ip, &addr, &addrbits)) { - parse_error("Invalid IP address in block"); + parse_error("Invalid IP address %s in block", ip); MyFree(username); MyFree(host); MyFree(ip); @@ -691,38 +692,40 @@ if (sep) { *sep++ = '\0'; MyFree(username); - DupString(username, $3); DupString(host, sep); + username = $3; } else { - DupString(host, $3); + host = $3; } }; clientip: IP '=' QSTRING ';' { - char *sep = strchr($3, '@'); + char *sep; + sep = strchr($3, '@'); MyFree(ip); if (sep) { *sep++ = '\0'; MyFree(username); - DupString(username, $3); DupString(ip, sep); + username = $3; } else { - DupString(ip, $3); + ip = $3; } }; clientusername: USERNAME '=' QSTRING ';' { MyFree(username); - DupString(username, $3); + username = $3; }; clientclass: CLASS '=' QSTRING ';' { c_class = find_class($3); + MyFree($3); }; clientpass: PASS '=' QSTRING ';' { MyFree(pass); - DupString(pass, $3); + pass = $3; }; clientmaxlinks: MAXLINKS '=' expr ';' { @@ -746,7 +749,7 @@ MyFree(dconf->realmask); MyFree(dconf->message); MyFree(dconf); - parse_error("Bad kill block"); + parse_error("Kill block must match on at least one of username, host or realname"); } dconf = NULL; } ';'; @@ -754,48 +757,47 @@ killitem: killuhost | killreal | killusername | killreasonfile | killreason | error; killuhost: HOST '=' QSTRING ';' { - char *u, *h; + char *h; MyFree(dconf->hostmask); MyFree(dconf->usermask); if ((h = strchr($3, '@')) == NULL) { - u = "*"; - h = $3; + DupString(dconf->usermask, "*"); + dconf->hostmask = $3; } else { - u = $3; *h++ = '\0'; + DupString(dconf->hostmask, h); + dconf->usermask = $3; } - DupString(dconf->hostmask, h); - DupString(dconf->usermask, u); ipmask_parse(dconf->hostmask, &dconf->address, &dconf->bits); }; killusername: USERNAME '=' QSTRING ';' { MyFree(dconf->usermask); - DupString(dconf->usermask, $3); + dconf->usermask = $3; }; killreal: REAL '=' QSTRING ';' { - MyFree(dconf->realmask); - DupString(dconf->realmask, $3); + MyFree(dconf->realmask); + dconf->realmask = $3; }; killreason: REASON '=' QSTRING ';' { - dconf->flags &= ~DENY_FLAGS_FILE; - MyFree(dconf->message); - DupString(dconf->message, $3); + dconf->flags &= ~DENY_FLAGS_FILE; + MyFree(dconf->message); + dconf->message = $3; }; killreasonfile: TFILE '=' QSTRING ';' { - dconf->flags |= DENY_FLAGS_FILE; - MyFree(dconf->message); - DupString(dconf->message, $3); + dconf->flags |= DENY_FLAGS_FILE; + MyFree(dconf->message); + dconf->message = $3; }; cruleblock: CRULE @@ -803,8 +805,14 @@ tconn = CRULE_AUTO; } '{' cruleitems '}' ';' { - struct CRuleNode *node; - if (host != NULL && pass != NULL && (node=crule_parse(pass)) != NULL) + struct CRuleNode *node = NULL; + if (host == NULL) + parse_error("Missing host in crule block"); + else if (pass == NULL) + parse_error("Missing rule in crule block"); + else if ((node = crule_parse(pass)) == NULL) + parse_error("Invalid rule '%s' in crule block", pass); + else { struct CRuleConf *p = (struct CRuleConf*) MyMalloc(sizeof(*p)); p->hostmask = host; @@ -814,11 +822,10 @@ p->next = cruleConfList; cruleConfList = p; } - else + if (!node) { MyFree(host); MyFree(pass); - parse_error("Bad CRule block"); } host = pass = NULL; tconn = 0; @@ -831,13 +838,13 @@ { MyFree(host); collapse($3); - DupString(host, $3); + host = $3; }; crulerule: RULE '=' QSTRING ';' { - MyFree(pass); - DupString(pass, $3); + MyFree(pass); + pass = $3; }; cruleall: ALL '=' YES ';' @@ -861,12 +868,12 @@ motditem: motdhost | motdfile | error; motdhost: HOST '=' QSTRING ';' { - DupString(host, $3); + host = $3; }; motdfile: TFILE '=' QSTRING ';' { - DupString(pass, $3); + pass = $3; }; featuresblock: FEATURES '{' featureitems '}' ';'; @@ -884,7 +891,10 @@ stringno = 2; } posextrastrings { + unsigned int ii; feature_set(NULL, (const char * const *)stringlist, stringno); + for (ii = 0; ii < stringno; ++ii) + MyFree(stringlist[ii]); }; posextrastrings: /* empty */ | extrastrings; extrastrings: extrastrings extrastring | extrastring; @@ -892,6 +902,8 @@ { if (stringno < MAX_STRINGS) stringlist[stringno++] = $1; + else + MyFree($1); }; quarantineblock: QUARANTINE '{' quarantineitems '}' ';'; @@ -899,8 +911,8 @@ quarantineitem: QSTRING '=' QSTRING ';' { struct qline *qconf = MyCalloc(1, sizeof(*qconf)); - DupString(qconf->chname, $1); - DupString(qconf->reason, $3); + qconf->chname = $1; + qconf->reason = $3; qconf->next = GlobalQuarantineList; GlobalQuarantineList = qconf; }; @@ -908,16 +920,19 @@ pseudoblock: PSEUDO QSTRING '{' { smap = MyCalloc(1, sizeof(struct s_map)); - DupString(smap->command, $2); + smap->command = $2; } pseudoitems '}' ';' { - if (!smap->name || !smap->services) - { - parse_error("pseudo commands need a service name and list of target nicks."); - return 0; - } - if (register_mapping(smap)) + int valid = 0; + + if (!smap->name) + parse_error("Missing name in pseudo %s block", smap->command); + else if (!smap->services) + parse_error("Missing nick in pseudo %s block", smap->command); + else + valid = 1; + if (valid && register_mapping(smap)) { smap->next = GlobalServiceMapList; GlobalServiceMapList = smap; @@ -942,11 +957,13 @@ pseudoitem: pseudoname | pseudoprepend | pseudonick | pseudoflags | error; pseudoname: NAME '=' QSTRING ';' { - DupString(smap->name, $3); + MyFree(smap->name); + smap->name = $3; }; pseudoprepend: PREPEND '=' QSTRING ';' { - DupString(smap->prepend, $3); + MyFree(smap->prepend); + smap->prepend = $3; }; pseudonick: NICK '=' QSTRING ';' { @@ -960,6 +977,7 @@ nh->next = smap->services; smap->services = nh; } + MyFree($3); }; pseudoflags: FAST ';' { @@ -972,11 +990,12 @@ tping = 60; } iauthitems '}' ';' { - if (!host || !port) { - parse_error("IAuth block needs a server name and port."); - return 0; - } - iauth_connect(host, port, pass, tconn, tping); + if (!host) + parse_error("Missing host in iauth block"); + else if (!port) + parse_error("Missing port in iauth block"); + else + iauth_connect(host, port, pass, tconn, tping); MyFree(pass); MyFree(host); pass = host = NULL; @@ -988,12 +1007,12 @@ iauthpass: PASS '=' QSTRING ';' { MyFree(pass); - DupString(pass, $3); + pass = $3; }; iauthhost: HOST '=' QSTRING ';' { MyFree(host); - DupString(host, $3); + host = $3; }; iauthport: PORT '=' NUMBER ';' { Index: ircd-ircdev/ircd/m_silence.c diff -u ircd-ircdev/ircd/m_silence.c:1.6 ircd-ircdev/ircd/m_silence.c:1.7 --- ircd-ircdev/ircd/m_silence.c:1.6 Mon Feb 21 02:20:04 2005 +++ ircd-ircdev/ircd/m_silence.c Sun Apr 24 15:18:06 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Handlers for SILENCE command. - * @version $Id: m_silence.c,v 1.6 2005/02/21 10:20:04 zolty Exp $ + * @version $Id: m_silence.c,v 1.7 2005/04/24 22:18:06 zolty Exp $ */ #include "config.h" @@ -58,7 +58,7 @@ * @return The new ban entry on success, NULL on failure. */ static struct Ban * -apply_silence(struct Client *sptr, const char *mask) +apply_silence(struct Client *sptr, char *mask) { struct Ban *sile; int flags; @@ -82,7 +82,7 @@ } /* Make the silence, set flags, and apply it. */ - sile = make_ban(mask); + sile = make_ban(pretty_mask(mask)); sile->flags |= flags; return apply_ban(&cli_user(sptr)->silence, sile, 1) ? NULL : sile; } Index: ircd-ircdev/ircd/m_userhost.c diff -u ircd-ircdev/ircd/m_userhost.c:1.5 ircd-ircdev/ircd/m_userhost.c:1.6 --- ircd-ircdev/ircd/m_userhost.c:1.5 Mon Jan 10 04:23:03 2005 +++ ircd-ircdev/ircd/m_userhost.c Sun Apr 24 15:18:06 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: m_userhost.c,v 1.5 2005/01/10 12:23:03 zolty Exp $ + * $Id: m_userhost.c,v 1.6 2005/04/24 22:18:06 zolty Exp $ * */ @@ -97,6 +97,13 @@ msgq_append(0, mb, "%s%s=%c%s@%s", cli_name(cptr), SeeOper(sptr,cptr) ? "*" : "", cli_user(cptr)->away ? '-' : '+', cli_user(cptr)->username, + /* Do not *EVER* change this to give opers the real host. + * Too many scripts rely on this data and can inadvertently + * publish the user's real host, thus breaking the security + * of +x. If an oper wants the real host, he should go to + * /whois to get it. + */ + /* HasHiddenHost(cptr) && (sptr != cptr) ? */ HasHiddenHost(cptr) && !IsAnOper(sptr) && (sptr != cptr) ? cli_user(cptr)->host : cli_user(cptr)->realhost); Index: ircd-ircdev/ircd/m_userip.c diff -u ircd-ircdev/ircd/m_userip.c:1.6 ircd-ircdev/ircd/m_userip.c:1.7 --- ircd-ircdev/ircd/m_userip.c:1.6 Mon Jan 10 04:23:03 2005 +++ ircd-ircdev/ircd/m_userip.c Sun Apr 24 15:18:06 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: m_userip.c,v 1.6 2005/01/10 12:23:03 zolty Exp $ + * $Id: m_userip.c,v 1.7 2005/04/24 22:18:06 zolty Exp $ * */ @@ -98,6 +98,13 @@ msgq_append(0, mb, "%s%s=%c%s@%s", cli_name(cptr), SeeOper(sptr,cptr) ? "*" : "", cli_user(cptr)->away ? '-' : '+', cli_user(cptr)->username, + /* Do not *EVER* change this to give opers the real host. + * Too many scripts rely on this data and can inadvertently + * publish the user's real host, thus breaking the security + * of +x. If an oper wants the real host, he should go to + * /whois to get it. + */ + /* HasHiddenHost(cptr) && (sptr != cptr) ? */ HasHiddenHost(cptr) && !IsAnOper(sptr) && (sptr != cptr) ? feature_str(FEAT_HIDDEN_IP) : ircd_ntoa(&cli_ip(cptr))); ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-04-28 22:00:31
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-28 22:00:20 UTC Modified files: ChangeLog ChangeLog.es TODO.es include/ddb.h include/patchlevel.h include/s_conf.h ircd/ddb.c ircd/ddb_events.c ircd/ircd.c ircd/ircd_lexer.l ircd/ircd_parser.y ircd/m_invite.c ircd/m_map.c ircd/m_whowas.c ircd/s_conf.c ircd/s_err.c ircd/s_stats.c ircd/s_user.c tools/convert-conf.py Log message: Author: zoltan <zo...@ir...> Log message: 2005-04-29 Toni García <zo...@ir...> 1.0.alpha29 * Tabla i de ilines * Tabla z de Config * Cambios en map * Cambios en parser.y ---------------------- diff included ---------------------- Index: ircd-ircdev/ChangeLog diff -u ircd-ircdev/ChangeLog:1.30 ircd-ircdev/ChangeLog:1.31 --- ircd-ircdev/ChangeLog:1.30 Sun Apr 24 15:18:05 2005 +++ ircd-ircdev/ChangeLog Thu Apr 28 14:59:58 2005 @@ -1,10 +1,16 @@ # # ChangeLog for ircd-ircdev # -# $Id: ChangeLog,v 1.30 2005/04/24 22:18:05 zolty Exp $ +# $Id: ChangeLog,v 1.31 2005/04/28 21:59:58 zolty Exp $ # # Insert new changes at beginning of the change list. # +2005-04-29 Toni García <zo...@ir...> 1.0.alpha29 + * Table i (ilines) + * Table z (config) + * Map changes + * parser.y changes + 2005-04-25 Toni García <zo...@ir...> 1.0.alpha28 * Fix bugs Index: ircd-ircdev/ChangeLog.es diff -u ircd-ircdev/ChangeLog.es:1.30 ircd-ircdev/ChangeLog.es:1.31 --- ircd-ircdev/ChangeLog.es:1.30 Sun Apr 24 15:18:05 2005 +++ ircd-ircdev/ChangeLog.es Thu Apr 28 15:00:05 2005 @@ -1,10 +1,16 @@ # # Log de Cambios para ircd-ircdev # -# $Id: ChangeLog.es,v 1.30 2005/04/24 22:18:05 zolty Exp $ +# $Id: ChangeLog.es,v 1.31 2005/04/28 22:00:05 zolty Exp $ # # Insertar los nuevos cambios al principio de esta lista de cambios. # +2005-04-29 Toni García <zo...@ir...> 1.0.alpha29 + * Tabla i de ilines + * Tabla z de Config + * Cambios en map + * Cambios en parser.y + 2005-04-25 Toni García <zo...@ir...> 1.0.alpha28 * Fix de bugs Index: ircd-ircdev/TODO.es diff -u ircd-ircdev/TODO.es:1.20 ircd-ircdev/TODO.es:1.21 --- ircd-ircdev/TODO.es:1.20 Wed Apr 20 15:09:46 2005 +++ ircd-ircdev/TODO.es Thu Apr 28 15:00:05 2005 @@ -1,7 +1,7 @@ # # TODO para ircd-ircdev # -# $Id: TODO.es,v 1.20 2005/04/20 22:09:46 zolty Exp $ +# $Id: TODO.es,v 1.21 2005/04/28 22:00:05 zolty Exp $ # # Insertar las nuevas entradas al principio de la lista TODO. # @@ -68,6 +68,9 @@ actualmente deja X clones para cada IP de ese rango, deberia haber alguna forma de que sea por rango. +[18:11:32] <Tor> quote opmode torcum #opers,#lala +[18:11:38] <Tor> quote opmode #opers +nk lalala +[18:14:59] <Tor> burst de aways DOCUMENTACION PENDIENTE -------------------------------------------------------------------------------------- Index: ircd-ircdev/include/ddb.h diff -u ircd-ircdev/include/ddb.h:1.5 ircd-ircdev/include/ddb.h:1.6 --- ircd-ircdev/include/ddb.h:1.5 Thu Apr 14 03:28:06 2005 +++ ircd-ircdev/include/ddb.h Thu Apr 28 15:00:07 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: ddb.h,v 1.5 2005/04/14 10:28:06 zolty Exp $ + * $Id: ddb.h,v 1.6 2005/04/28 22:00:07 zolty Exp $ * */ #ifndef INCLUDED_ddb_h @@ -45,11 +45,15 @@ #define DDB_INIT 'a' /* First table */ #define DDB_CHANDB 'c' /* ChanDB table */ +#define DDB_ILINEDB 'i' /* IlineDB table */ #define DDB_NICKDB 'n' /* NickDB table */ - +#define DDB_CONFIGDB 'z' /* ConfigDB table */ #define DDB_END 'z' /* Last table */ +#define DDB_CONFIGDB_MAX_CLONES_PER_IP "maxclones" +#define DDB_CONFIGDB_MSG_TOO_MANY_FROM_IP "msgmanyperip" + /* * PseudoBots */ @@ -120,8 +124,8 @@ extern unsigned int ddb_resident_table[DDB_TABLE_MAX]; extern unsigned int ddb_count_table[DDB_TABLE_MAX]; extern unsigned int ddb_id_table[DDB_TABLE_MAX]; -typedef void (*ddb_events_table_t)(char *, char *, int); -extern ddb_events_table_t ddb_events_table[DDB_TABLE_MAX]; +typedef void (*ddb_events_table_td)(char *, char *, int); +extern ddb_events_table_td ddb_events_table[DDB_TABLE_MAX]; extern unsigned int ddb_hashtable_hi[DDB_TABLE_MAX]; extern unsigned int ddb_hashtable_lo[DDB_TABLE_MAX]; extern int ddb_hash_register(char *key, int hash_size); Index: ircd-ircdev/include/patchlevel.h diff -u ircd-ircdev/include/patchlevel.h:1.29 ircd-ircdev/include/patchlevel.h:1.30 --- ircd-ircdev/include/patchlevel.h:1.29 Sun Apr 24 15:18:05 2005 +++ ircd-ircdev/include/patchlevel.h Thu Apr 28 15:00:08 2005 @@ -17,10 +17,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: patchlevel.h,v 1.29 2005/04/24 22:18:05 zolty Exp $ + * $Id: patchlevel.h,v 1.30 2005/04/28 22:00:08 zolty Exp $ * */ -#define PATCHLEVEL ".alpha28" +#define PATCHLEVEL ".alpha29" #define RELEASE "1.0" Index: ircd-ircdev/include/s_conf.h diff -u ircd-ircdev/include/s_conf.h:1.11 ircd-ircdev/include/s_conf.h:1.12 --- ircd-ircdev/include/s_conf.h:1.11 Fri Apr 22 09:22:13 2005 +++ ircd-ircdev/include/s_conf.h Thu Apr 28 15:00:08 2005 @@ -21,7 +21,7 @@ */ /** @file s_conf.h * @brief ircd configuration file API. - * @version $Id: s_conf.h,v 1.11 2005/04/22 16:22:13 zolty Exp $ + * @version $Id: s_conf.h,v 1.12 2005/04/28 22:00:08 zolty Exp $ */ #ifndef INCLUDED_s_conf_h #define INCLUDED_s_conf_h @@ -54,6 +54,8 @@ #define CONF_OPERATOR 0x0020 /**< ConfItem describes an Operator block */ #define CONF_UWORLD 0x8000 /**< ConfItem describes a Uworld server */ +#define CONF_AUTOCONNECT 0x0001 /**< Autoconnect to a server */ + /** Indicates ConfItem types that count associated clients. */ #define CONF_CLIENT_MASK (CONF_CLIENT | CONF_OPERATOR | CONF_SERVER) @@ -85,6 +87,7 @@ time_t hold; /**< Earliest time to attempt an outbound connect on this ConfItem. */ int dns_pending; /**< A dns request is pending. */ + int flags; /**< Additional modifiers for item. */ int addrbits; /**< Number of bits valid in ConfItem::address. */ struct Privs privs; /**< Privileges for opers. */ /** Used to detect if a privilege has been set by this ConfItem. */ Index: ircd-ircdev/ircd/ddb.c diff -u ircd-ircdev/ircd/ddb.c:1.5 ircd-ircdev/ircd/ddb.c:1.6 --- ircd-ircdev/ircd/ddb.c:1.5 Thu Apr 14 03:28:06 2005 +++ ircd-ircdev/ircd/ddb.c Thu Apr 28 15:00:08 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Implementation of Distributed DataBase. - * @version $Id: ddb.c,v 1.5 2005/04/14 10:28:06 zolty Exp $ + * @version $Id: ddb.c,v 1.6 2005/04/28 22:00:08 zolty Exp $ */ #include "config.h" @@ -161,7 +161,9 @@ * y no deben ser superiores a HASHSIZE, ya que ello * solo desperdiciaria memoria. */ + ddb_resident_table[DDB_ILINEDB] = 256; ddb_resident_table[DDB_NICKDB] = 32768; + ddb_resident_table[DDB_CONFIGDB] = 256; for (table = DDB_INIT; table <= DDB_END; table++) ddb_table_init(table); @@ -230,7 +232,7 @@ strcpy(keytemp, key); while (keytemp[i]) { -/* keytemp[i] = toLower(keytemp[i]); */ +/* keytemp[i] = ToLower(keytemp[i]); */ i++; } @@ -272,7 +274,7 @@ /* while (c[i] != 0) { - k[i] = toLower(c[i]); + k[i] = ToLower(c[i]); i++; } */ @@ -520,7 +522,10 @@ { /* if (!strcmp(ddb->key, k)) */ if (!ircd_strcmp(ddb->key, k)) + { + assert(0 != ddb->content); return ddb; + } } return NULL; } @@ -559,7 +564,13 @@ char * ddb_get_botname(char *bot) { - return cli_name(&me); + struct Ddb *ddb; + + ddb = ddb_find_key(DDB_CONFIGDB, DDB_NICKSERV); + if (ddb) + return ddb->content; + else + return cli_name(&me); } Index: ircd-ircdev/ircd/ddb_events.c diff -u ircd-ircdev/ircd/ddb_events.c:1.1 ircd-ircdev/ircd/ddb_events.c:1.2 --- ircd-ircdev/ircd/ddb_events.c:1.1 Thu Apr 14 03:28:07 2005 +++ ircd-ircdev/ircd/ddb_events.c Thu Apr 28 15:00:08 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Events of Distributed DataBase. - * @version $Id: ddb_events.c,v 1.1 2005/04/14 10:28:07 zolty Exp $ + * @version $Id: ddb_events.c,v 1.2 2005/04/28 22:00:08 zolty Exp $ */ #include "config.h" @@ -41,8 +41,9 @@ static int events_init = 0; static void ddb_events_table_n(char *key, char *content, int update); +static void ddb_events_table_z(char *key, char *content, int update); -ddb_events_table_t ddb_events_table[DDB_TABLE_MAX]; +ddb_events_table_td ddb_events_table[DDB_TABLE_MAX]; void @@ -51,7 +52,9 @@ if (events_init) return; + ddb_events_table[DDB_ILINEDB] = 0; ddb_events_table[DDB_NICKDB] = ddb_events_table_n; + ddb_events_table[DDB_CONFIGDB] = ddb_events_table_z; events_init = 1; } @@ -174,3 +177,8 @@ } } } + +static void +ddb_events_table_z(char *key, char *content, int update) +{ +} Index: ircd-ircdev/ircd/ircd.c diff -u ircd-ircdev/ircd/ircd.c:1.16 ircd-ircdev/ircd/ircd.c:1.17 --- ircd-ircdev/ircd/ircd.c:1.16 Fri Apr 22 09:22:13 2005 +++ ircd-ircdev/ircd/ircd.c Thu Apr 28 15:00:08 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Entry point and other initialization functions for the daemon. - * @version $Id: ircd.c,v 1.16 2005/04/22 16:22:13 zolty Exp $ + * @version $Id: ircd.c,v 1.17 2005/04/28 22:00:08 zolty Exp $ */ #include "config.h" @@ -268,6 +268,7 @@ */ if (!(aconf->status & CONF_SERVER) || aconf->address.port == 0 + || !(aconf->flags & CONF_AUTOCONNECT) || ((ajupe = jupe_find(aconf->name)) && JupeIsActive(ajupe))) continue; Index: ircd-ircdev/ircd/ircd_lexer.l diff -u ircd-ircdev/ircd/ircd_lexer.l:1.12 ircd-ircdev/ircd/ircd_lexer.l:1.13 --- ircd-ircdev/ircd/ircd_lexer.l:1.12 Sun Apr 24 15:18:05 2005 +++ ircd-ircdev/ircd/ircd_lexer.l Thu Apr 28 15:00:08 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: ircd_lexer.l,v 1.12 2005/04/24 22:18:05 zolty Exp $ + * $Id: ircd_lexer.l,v 1.13 2005/04/28 22:00:08 zolty Exp $ * */ @@ -26,6 +26,7 @@ #include <unistd.h> #include <stdio.h> #include <stdlib.h> +#include <string.h> #include "config.h" #include "ircd.h" #include "ircd_alloc.h" @@ -102,9 +103,11 @@ TOKEN(PREPEND), TOKEN(USERMODE), TOKEN(FAST), + TOKEN(AUTOCONNECT), #undef TOKEN { "administrator", ADMIN }, { "apass_opmode", TPRIV_APASS_OPMODE }, + { "auto", AUTOCONNECT }, { "b", BYTES }, { "badchan", TPRIV_BADCHAN }, { "chan_limit", TPRIV_CHAN_LIMIT }, Index: ircd-ircdev/ircd/ircd_parser.y diff -u ircd-ircdev/ircd/ircd_parser.y:1.19 ircd-ircdev/ircd/ircd_parser.y:1.20 --- ircd-ircdev/ircd/ircd_parser.y:1.19 Sun Apr 24 15:18:05 2005 +++ ircd-ircdev/ircd/ircd_parser.y Thu Apr 28 15:00:08 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: ircd_parser.y,v 1.19 2005/04/24 22:18:05 zolty Exp $ + * $Id: ircd_parser.y,v 1.20 2005/04/28 22:00:08 zolty Exp $ * */ %{ @@ -70,7 +70,7 @@ int yylex(void); /* Now all the globals we need :/... */ - int tping, tconn, maxlinks, sendq, port, invert, stringno; + int tping, tconn, maxlinks, sendq, port, invert, stringno, flags; char *name, *pass, *host, *ip, *username, *origin, *hub_limit; char *stringlist[MAX_STRINGS]; struct ConnectionClass *c_class; @@ -157,6 +157,7 @@ %token IAUTH %token TIMEOUT %token FAST +%token AUTOCONNECT /* and now a lot of privileges... */ %token TPRIV_CHAN_LIMIT TPRIV_MODE_LCHAN TPRIV_DEOP_LCHAN TPRIV_WALK_LCHAN %token TPRIV_LOCAL_KILL TPRIV_REHASH TPRIV_RESTART TPRIV_DIE @@ -396,7 +397,8 @@ connectblock: CONNECT { - maxlinks = 65535; + maxlinks = 65535; + flags = CONF_AUTOCONNECT; } '{' connectitems '}' { struct ConfItem *aconf = NULL; @@ -409,7 +411,7 @@ else if (strchr(host, '*') || strchr(host, '?')) parse_error("Invalid host '%s' in connect block", host); else if (c_class == NULL) - parse_error("Missing class in connect block"); + parse_error("Missing or non-existent class in connect block"); else { aconf = make_conf(CONF_SERVER); aconf->name = name; @@ -420,6 +422,7 @@ aconf->host = host; aconf->maximum = maxlinks; aconf->hub_limit = hub_limit; + aconf->flags = flags; lookup_confhost(aconf); } if (!aconf) { @@ -431,12 +434,12 @@ } name = pass = host = origin = hub_limit = NULL; c_class = NULL; - port = 0; + port = flags = 0; }';'; connectitems: connectitem connectitems | connectitem; connectitem: connectname | connectpass | connectclass | connecthost | connectport | connectvhost | connectleaf | connecthub - | connecthublimit | connectmaxhops | error; + | connecthublimit | connectmaxhops | connectauto | error; connectname: NAME '=' QSTRING ';' { MyFree(name); @@ -450,6 +453,8 @@ connectclass: CLASS '=' QSTRING ';' { c_class = find_class($3); + if (!c_class) + parse_error("No such connection class '%s' for Connect block", $3); MyFree($3); }; connecthost: HOST '=' QSTRING ';' @@ -484,6 +489,8 @@ { maxlinks = $3; }; +connectauto: AUTOCONNECT '=' YES ';' { flags |= CONF_AUTOCONNECT; } + | AUTOCONNECT '=' NO ';' { flags &= ~CONF_AUTOCONNECT; }; uworldblock: UWORLD '{' uworlditems '}' ';'; uworlditems: uworlditem uworlditems | uworlditem; @@ -503,7 +510,7 @@ else if (host == NULL) parse_error("Missing host in operator block"); else if (c_class == NULL) - parse_error("Missing class in operator block"); + parse_error("Invalid or missing class in operator block"); else { aconf = make_conf(CONF_OPERATOR); aconf->name = name; @@ -554,6 +561,8 @@ operclass: CLASS '=' QSTRING ';' { c_class = find_class($3); + if (!c_class) + parse_error("No such connection class '%s' for Operator block", $3); MyFree($3); }; @@ -654,17 +663,16 @@ } '{' clientitems '}' ';' { + struct ConfItem *aconf = 0; struct irc_in_addr addr; unsigned char addrbits = 0; - if (ip && !ipmask_parse(ip, &addr, &addrbits)) { - parse_error("Invalid IP address %s in block", ip); - MyFree(username); - MyFree(host); - MyFree(ip); - MyFree(pass); - } else { - struct ConfItem *aconf = make_conf(CONF_CLIENT); + if (!c_class) + parse_error("Invalid or missing class in Client block"); + else if (ip && !ipmask_parse(ip, &addr, &addrbits)) + parse_error("Invalid IP address %s in Client block", ip); + else { + aconf = make_conf(CONF_CLIENT); aconf->username = username; aconf->host = host; if (ip) @@ -673,10 +681,16 @@ memset(&aconf->address.addr, 0, sizeof(aconf->address.addr)); aconf->addrbits = addrbits; aconf->name = ip; - aconf->conn_class = c_class ? c_class : find_class("default"); + aconf->conn_class = c_class; aconf->maximum = maxlinks; aconf->passwd = pass; } + if (!aconf) { + MyFree(username); + MyFree(host); + MyFree(ip); + MyFree(pass); + } host = NULL; username = NULL; c_class = NULL; @@ -720,6 +734,8 @@ clientclass: CLASS '=' QSTRING ';' { c_class = find_class($3); + if (!c_class) + parse_error("No such connection class '%s' for Class block", $3); MyFree($3); }; clientpass: PASS '=' QSTRING ';' Index: ircd-ircdev/ircd/m_invite.c diff -u ircd-ircdev/ircd/m_invite.c:1.9 ircd-ircdev/ircd/m_invite.c:1.10 --- ircd-ircdev/ircd/m_invite.c:1.9 Mon Mar 21 10:39:08 2005 +++ ircd-ircdev/ircd/m_invite.c Thu Apr 28 15:00:08 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: m_invite.c,v 1.9 2005/03/21 18:39:08 zolty Exp $ + * $Id: m_invite.c,v 1.10 2005/04/28 22:00:08 zolty Exp $ * */ @@ -176,24 +176,23 @@ if (cli_user(acptr)->away) send_reply(sptr, RPL_AWAY, cli_name(acptr), cli_user(acptr)->away); - if (MyConnect(acptr)) + if (MyConnect(acptr)) { add_invite(acptr, chptr); + sendcmdto_one(sptr, CMD_INVITE, acptr, "%s %H", cli_name(acptr), chptr); + } if (!IsLocalChannel(chptr->chname) || MyConnect(acptr)) { if (feature_bool(FEAT_ANNOUNCE_INVITES)) { /* Announce to channel operators. */ sendcmdto_channel_butserv_butone(&me, get_error_numeric(RPL_ISSUEDINVITE)->str, - NULL, chptr, sptr, SKIP_NONOPS, + NULL, chptr, sptr, SKIP_NONOPS, "%H %C %C :%C has been invited by %C", chptr, acptr, sptr, acptr, sptr); - /* Announce to servers with channel operators, but skip acptr, - * since they will be notified below. */ - sendcmdto_channel_servers_butone(sptr, NULL, TOK_INVITE, chptr, acptr, SKIP_NONOPS, + /* Announce to servers with channel operators. */ + sendcmdto_channel_servers_butone(sptr, NULL, TOK_INVITE, chptr, NULL, SKIP_NONOPS, "%s %H %Tu", cli_name(acptr), chptr, chptr->creationtime); } - sendcmdto_one(sptr, CMD_INVITE, acptr, "%s %H %Tu", cli_name(acptr), - chptr, chptr->creationtime); } return 0; @@ -281,8 +280,10 @@ if (is_silenced(sptr, acptr)) return 0; - if (MyConnect(acptr)) + if (MyConnect(acptr)) { add_invite(acptr, chptr); + sendcmdto_one(sptr, CMD_INVITE, acptr, "%s %H", cli_name(acptr), chptr); + } if (feature_bool(FEAT_ANNOUNCE_INVITES)) { /* Announce to channel operators. */ @@ -290,16 +291,12 @@ NULL, chptr, sptr, SKIP_NONOPS, "%H %C %C :%C has been invited by %C", chptr, acptr, sptr, acptr, sptr); - /* Announce to servers with channel operators, but skip acptr, - * since they will be notified below. */ - sendcmdto_channel_servers_butone(sptr, NULL, TOK_INVITE, chptr, acptr, SKIP_NONOPS, + /* Announce to servers with channel operators. */ + sendcmdto_channel_servers_butone(sptr, NULL, TOK_INVITE, chptr, NULL, SKIP_NONOPS, "%s %H %Tu", cli_name(acptr), chptr, chptr->creationtime); } - sendcmdto_one(sptr, CMD_INVITE, acptr, - "%s %H %Tu", - cli_name(acptr), chptr, chptr->creationtime); return 0; } Index: ircd-ircdev/ircd/m_map.c diff -u ircd-ircdev/ircd/m_map.c:1.7 ircd-ircdev/ircd/m_map.c:1.8 --- ircd-ircdev/ircd/m_map.c:1.7 Mon Mar 21 10:39:08 2005 +++ ircd-ircdev/ircd/m_map.c Thu Apr 28 15:00:09 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: m_map.c,v 1.7 2005/03/21 18:39:08 zolty Exp $ + * $Id: m_map.c,v 1.8 2005/04/28 22:00:09 zolty Exp $ * */ @@ -115,6 +115,17 @@ else { char lag[512]; + unsigned int users; + unsigned int totalusers; + unsigned int percentage; + + totalusers = UserStats.clients; + if (!totalusers) + totalusers = 1; + + users = (IsMe(server) ? UserStats.local_clients : cli_serv(server)->clients); + percentage = (10000 * users) / totalusers; + if (cli_serv(server)->lag>10000) lag[0]=0; else if (cli_serv(server)->lag<0) @@ -128,8 +139,8 @@ else chr = ""; send_reply(cptr, RPL_MAP, prompt, chr, cli_name(server), - lag, (server == &me) ? UserStats.local_clients : - cli_serv(server)->clients); + lag, users, (users == 1) ? "" : "s", + (percentage / 100), (percentage % 100)); } if (prompt_length > 0) { Index: ircd-ircdev/ircd/m_whowas.c diff -u ircd-ircdev/ircd/m_whowas.c:1.7 ircd-ircdev/ircd/m_whowas.c:1.8 --- ircd-ircdev/ircd/m_whowas.c:1.7 Fri Apr 22 09:22:13 2005 +++ ircd-ircdev/ircd/m_whowas.c Thu Apr 28 15:00:09 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: m_whowas.c,v 1.7 2005/04/22 16:22:13 zolty Exp $ + * $Id: m_whowas.c,v 1.8 2005/04/28 22:00:09 zolty Exp $ * */ @@ -137,7 +137,7 @@ { send_reply(sptr, RPL_WHOWASUSER, temp->name, temp->username, temp->hostname, temp->realname); - if (IsAnOper(sptr) && ircd_strcmp(temp->hostname, temp->realhost)) + if (IsAnOper(sptr) && temp->realhost) send_reply(sptr, RPL_WHOISACTUALLY, temp->name, temp->username, temp->realhost); send_reply(sptr, RPL_WHOISSERVER, temp->name, feature_bool(FEAT_HIS_WHOIS_SERVERNAME) && !IsOper(sptr) ? Index: ircd-ircdev/ircd/s_conf.c diff -u ircd-ircdev/ircd/s_conf.c:1.13 ircd-ircdev/ircd/s_conf.c:1.14 --- ircd-ircdev/ircd/s_conf.c:1.13 Fri Apr 22 09:22:13 2005 +++ ircd-ircdev/ircd/s_conf.c Thu Apr 28 15:00:09 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief ircd configuration file driver - * @version $Id: s_conf.c,v 1.13 2005/04/22 16:22:13 zolty Exp $ + * @version $Id: s_conf.c,v 1.14 2005/04/28 22:00:09 zolty Exp $ */ #include "config.h" @@ -30,6 +30,7 @@ #include "class.h" #include "client.h" #include "crule.h" +#include "ddb.h" #include "ircd_features.h" #include "fileio.h" #include "gline.h" @@ -46,6 +47,7 @@ #include "listener.h" #include "match.h" #include "motd.h" +#include "msg.h" #include "numeric.h" #include "numnicks.h" #include "opercmds.h" @@ -369,8 +371,34 @@ static enum AuthorizationCheckResult check_limit_and_attach(struct Client* cptr, struct ConfItem* aconf) { +#if defined(DDB) + struct Ddb *ddb; + int clones; + int maxclones; + + ddb = ddb_find_key(DDB_ILINEDB, (char *)ircd_ntoa(&cli_ip(cptr))); + if (ddb && (clones = atoi(ddb->content))) + maxclones = clones; + else if ((ddb = ddb_find_key(DDB_CONFIGDB, (char *)DDB_CONFIGDB_MAX_CLONES_PER_IP)) + && (clones = atoi(ddb->content))) + maxclones = clones; + else + maxclones = aconf->maximum; + + if (IPcheck_nr(cptr) > maxclones) + { + ddb = ddb_find_key(DDB_CONFIGDB, (char *)DDB_CONFIGDB_MSG_TOO_MANY_FROM_IP); + + sendcmdto_one(&me, CMD_NOTICE, cptr, + "In %s IRC Network only allows %d clones for your IP (%s)%s%s", + feature_str(FEAT_NETWORK), maxclones, ircd_ntoa(&cli_ip(cptr)), + ddb ? ". " : "", ddb ? ddb->content : ""); + return ACR_TOO_MANY_FROM_IP; + } +#else if (IPcheck_nr(cptr) > aconf->maximum) return ACR_TOO_MANY_FROM_IP; +#endif return attach_conf(cptr, aconf); } Index: ircd-ircdev/ircd/s_err.c diff -u ircd-ircdev/ircd/s_err.c:1.17 ircd-ircdev/ircd/s_err.c:1.18 --- ircd-ircdev/ircd/s_err.c:1.17 Fri Apr 22 09:22:13 2005 +++ ircd-ircdev/ircd/s_err.c Thu Apr 28 15:00:09 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Error handling support. - * @version $Id: s_err.c,v 1.17 2005/04/22 16:22:13 zolty Exp $ + * @version $Id: s_err.c,v 1.18 2005/04/28 22:00:09 zolty Exp $ */ #include "config.h" @@ -65,7 +65,7 @@ /* 014 */ { 0 }, /* 015 */ - { RPL_MAP, ":%s%s%s %s [%i clients]", "015" }, + { RPL_MAP, ":%s%s%s %s [%i client%s - %i.%i%%]", "015" }, /* 016 */ { RPL_MAPMORE, ":%s%s --> *more*", "016" }, /* 017 */ Index: ircd-ircdev/ircd/s_stats.c diff -u ircd-ircdev/ircd/s_stats.c:1.12 ircd-ircdev/ircd/s_stats.c:1.13 --- ircd-ircdev/ircd/s_stats.c:1.12 Fri Apr 22 09:22:13 2005 +++ ircd-ircdev/ircd/s_stats.c Thu Apr 28 15:00:09 2005 @@ -22,7 +22,7 @@ /** @file * @brief Report configuration lines and other statistics from this * server. - * @version $Id: s_stats.c,v 1.12 2005/04/22 16:22:13 zolty Exp $ + * @version $Id: s_stats.c,v 1.13 2005/04/28 22:00:09 zolty Exp $ * * Note: The info is reported in the order the server uses * it--not reversed as in ircd.conf! @@ -415,7 +415,8 @@ nowr = CurrentTime - cli_since(&me); send_reply(to, RPL_STATSUPTIME, nowr / 86400, (nowr / 3600) % 24, (nowr / 60) % 60, nowr % 60); - send_reply(to, RPL_STATSCONN, max_connection_count, max_client_count); + send_reply(to, RPL_STATSCONN, max_connection_count, max_client_count, + ServerStats->is_cl); } /** Verbosely report on servers connected to the network. Index: ircd-ircdev/ircd/s_user.c diff -u ircd-ircdev/ircd/s_user.c:1.15 ircd-ircdev/ircd/s_user.c:1.16 --- ircd-ircdev/ircd/s_user.c:1.15 Fri Apr 22 09:22:13 2005 +++ ircd-ircdev/ircd/s_user.c Thu Apr 28 15:00:09 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Miscellaneous user-related helper functions. - * @version $Id: s_user.c,v 1.15 2005/04/22 16:22:13 zolty Exp $ + * @version $Id: s_user.c,v 1.16 2005/04/28 22:00:09 zolty Exp $ */ #include "config.h" @@ -432,7 +432,7 @@ { last_too_many1 = CurrentTime; sendto_opmask_butone(0, SNO_TOOMANY, "Too many connections in " - "class %i for %s.", get_client_class(sptr), + "class %s for %s.", get_client_class(sptr), get_client_name(sptr, SHOW_IP)); } ++ServerStats->is_ref; @@ -613,12 +613,32 @@ /* * Set user's initial modes */ - parv[0] = (char*)nick; - parv[1] = (char*)nick; - parv[2] = (char*)client_get_default_umode(sptr); - parv[3] = NULL; /* needed in case of +s */ - set_user_mode(sptr, sptr, 3, parv); - ClearHiddenHost(sptr); /* just in case somebody stuck +x in there */ + tmpstr = (char*)client_get_default_umode(sptr); + if (tmpstr) for (; *tmpstr; ++tmpstr) { + switch (*tmpstr) { + case 's': + if (!feature_bool(FEAT_HIS_SNOTICES_OPER_ONLY)) { + SetServNotice(sptr); + set_snomask(sptr, SNO_DEFAULT, SNO_SET); + } + break; + case 'w': + if (!feature_bool(FEAT_WALLOPS_OPER_ONLY)) + SetWallops(sptr); + break; + case 'i': + SetInvisible(sptr); + ++UserStats.inv_clients; + break; + case 'd': + SetDeaf(sptr); + break; + case 'g': + if (!feature_bool(FEAT_HIS_DEBUG_OPER_ONLY)) + SetDebug(sptr); + break; + } + } } else /* if (IsServer(cptr)) */ @@ -678,9 +698,14 @@ iptobase64(ip_base64, &cli_ip(sptr), sizeof(ip_base64), 0), NumNick(sptr), cli_info(sptr)); - /* Send server notice mask to client */ - if (MyUser(sptr) && (cli_snomask(sptr) != SNO_DEFAULT) && HasFlag(sptr, FLAG_SERVNOTICE)) - send_reply(sptr, RPL_SNOMASK, cli_snomask(sptr), cli_snomask(sptr)); + /* Send user mode to client */ + if (MyUser(sptr)) + { + static struct Flags flags; /* automatically initialized to zeros */ + send_umode(cptr, sptr, &flags, ALL_UMODES); + if ((cli_snomask(sptr) != SNO_DEFAULT) && HasFlag(sptr, FLAG_SERVNOTICE)) + send_reply(sptr, RPL_SNOMASK, cli_snomask(sptr), cli_snomask(sptr)); + } /* Notify new local user */ check_status_watch(sptr, RPL_LOGON); Index: ircd-ircdev/tools/convert-conf.py diff -u ircd-ircdev/tools/convert-conf.py:1.4 ircd-ircdev/tools/convert-conf.py:1.5 --- ircd-ircdev/tools/convert-conf.py:1.4 Fri Apr 22 09:22:13 2005 +++ ircd-ircdev/tools/convert-conf.py Thu Apr 28 15:00:09 2005 @@ -19,7 +19,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# $Id: convert-conf.py,v 1.4 2005/04/22 16:22:13 zolty Exp $ +# $Id: convert-conf.py,v 1.5 2005/04/28 22:00:09 zolty Exp $ # # Configuration file converter from 2.10.11 to 2.10.12 format @@ -70,6 +70,10 @@ "HIS_SERVERINFO", "HIS_URLSERVERS" ] +deprecated_features = [ + "VIRTUAL_HOST", + ] + # [ "old feature" => ( local oper priv, global oper priv ) ] # None means don't add this feature_to_priv = { @@ -209,7 +213,7 @@ opers.append(parts) cvtmap = { - 'M': ('General', ('name', 'vhost', 'description', '', '!numeric'), ''), + 'M': ('General', ('name', 'vhost', 'description', '-', '!numeric'), ''), 'A': ('Admin', ('location', 'contact', 'contact'), ''), 'Y': ('Class', ('name', '!pingfreq', '!connectfreq', '!maxlinks', '!sendq'), ''), 'I': do_iline, @@ -283,6 +287,11 @@ for item in items: if idx >= len(parts): break + # This field is ignored + if parts[idx]=="-": + continue + if len(parts[idx]) and not len(item): + sys.stderr.write("WARNING: Unknown field %i on line %i\n" % (idx,lno)) if len(parts[idx]) and len(item): if item[0] == '!': print "\t%s = %s;" % (item[1:], istr(parts[idx])) @@ -344,13 +353,18 @@ print "\tname = \"%s\";" % qstr(connects[i]["name"]) print "\thost = \"%s\";" % qstr(connects[i]["host"]) print "\tpassword = \"%s\";" % qstr(connects[i]["password"]) - if connects[i]["port"]: + if connects[i].has_key("port"): print "\tport = %s;" % connects[i]["port"] print "\tclass = \"%s\";" % qstr(connects[i]["class"]) if connects[i].has_key("hub"): print "\thub = \"%s\";" % qstr(connects[i]["hub"]) else: print "\tleaf;" + if not connects[i].has_key("port"): + print "# You can now specify ports without implying autoconnect" + print "#\tport = 4400;" + print "\tautoconnect = no;" + sys.stderr.write("NOTE: You should add a port for \"%s\", autoconnect is now specified seperately\n" % qstr(connects[i]["name"])) print "};" print @@ -367,8 +381,10 @@ print "# Option converted to locop privilege" elif name.startswith("OPER_"): print "# Option converted to oper privilege" + elif name in deprecated_features: + print "# Option is deprecated" else: - print "# Option no longer exists in 2.10.12" + print "# Unknown option" print "#\t\"%s\" = \"%s\";" % (qstr(name), qstr(value)) print "\t\"%s\" = \"%s\";" % (qstr(name), qstr(value)) print "};" ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-04-28 22:02:54
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-28 22:02:47 UTC Modified files: TODO.es Log message: Actualizacion TODO ---------------------- diff included ---------------------- Index: ircd-ircdev/TODO.es diff -u ircd-ircdev/TODO.es:1.21 ircd-ircdev/TODO.es:1.22 --- ircd-ircdev/TODO.es:1.21 Thu Apr 28 15:00:05 2005 +++ ircd-ircdev/TODO.es Thu Apr 28 15:02:37 2005 @@ -1,7 +1,7 @@ # # TODO para ircd-ircdev # -# $Id: TODO.es,v 1.21 2005/04/28 22:00:05 zolty Exp $ +# $Id: TODO.es,v 1.22 2005/04/28 22:02:37 zolty Exp $ # # Insertar las nuevas entradas al principio de la lista TODO. # @@ -9,11 +9,9 @@ URGENTE -------------------------------------------------------------------------------------- - [D] Implementar el protocolo DDB (ddb_db). - - [D] Implementar tabla i de Ilines - [D] Implementar tabla o de Operadores - [D] Implementar tabla p de Privilegios - [D] Implementar tabla f de Features - - [D] Implementar tabla (a definir) de diversas configuraciones ALTA PRIORIDAD -------------------------------------------------------------------------------------- @@ -23,7 +21,6 @@ - [G] ¿Modo +M de canales?. - [G] Poner uuna Feature para elegir entre salir o no el nombre del servidor en los notices de auth y dnslookup al conectar. - - [G] Completar el MAP, salir numeric, nº de usuarios, porcentajes. - [D] Virtualhost personalizado a traves de la DDB. - [D] U-lines a traves de la DDB. ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-05-01 12:59:58
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-05-01 12:59:50 UTC Modified files: ChangeLog ChangeLog.es include/patchlevel.h ircd/Makefile.in ircd/s_conf.c Added files: ircd/ddb_db_native.c Log message: Author: zoltan <zo...@ir...> Log message: 2005-05-01 Toni García <zo...@ir...> 1.0.alpha30 * DB nativo: Lectura y escritura de hashes ---------------------- diff included ---------------------- Index: ircd-ircdev/ChangeLog diff -u ircd-ircdev/ChangeLog:1.31 ircd-ircdev/ChangeLog:1.32 --- ircd-ircdev/ChangeLog:1.31 Thu Apr 28 14:59:58 2005 +++ ircd-ircdev/ChangeLog Sun May 1 05:59:37 2005 @@ -1,10 +1,13 @@ # # ChangeLog for ircd-ircdev # -# $Id: ChangeLog,v 1.31 2005/04/28 21:59:58 zolty Exp $ +# $Id: ChangeLog,v 1.32 2005/05/01 12:59:37 zolty Exp $ # # Insert new changes at beginning of the change list. # +2005-05-01 Toni García <zo...@ir...> 1.0.alpha30 + * Native DB: Hashes read and save + 2005-04-29 Toni García <zo...@ir...> 1.0.alpha29 * Table i (ilines) * Table z (config) Index: ircd-ircdev/ChangeLog.es diff -u ircd-ircdev/ChangeLog.es:1.31 ircd-ircdev/ChangeLog.es:1.32 --- ircd-ircdev/ChangeLog.es:1.31 Thu Apr 28 15:00:05 2005 +++ ircd-ircdev/ChangeLog.es Sun May 1 05:59:39 2005 @@ -1,10 +1,13 @@ # # Log de Cambios para ircd-ircdev # -# $Id: ChangeLog.es,v 1.31 2005/04/28 22:00:05 zolty Exp $ +# $Id: ChangeLog.es,v 1.32 2005/05/01 12:59:39 zolty Exp $ # # Insertar los nuevos cambios al principio de esta lista de cambios. # +2005-05-01 Toni García <zo...@ir...> 1.0.alpha30 + * DB nativo: Lectura y escritura de hashes + 2005-04-29 Toni García <zo...@ir...> 1.0.alpha29 * Tabla i de ilines * Tabla z de Config Index: ircd-ircdev/include/patchlevel.h diff -u ircd-ircdev/include/patchlevel.h:1.30 ircd-ircdev/include/patchlevel.h:1.31 --- ircd-ircdev/include/patchlevel.h:1.30 Thu Apr 28 15:00:08 2005 +++ ircd-ircdev/include/patchlevel.h Sun May 1 05:59:39 2005 @@ -17,10 +17,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: patchlevel.h,v 1.30 2005/04/28 22:00:08 zolty Exp $ + * $Id: patchlevel.h,v 1.31 2005/05/01 12:59:39 zolty Exp $ * */ -#define PATCHLEVEL ".alpha29" +#define PATCHLEVEL ".alpha30" #define RELEASE "1.0" Index: ircd-ircdev/ircd/Makefile.in diff -u ircd-ircdev/ircd/Makefile.in:1.23 ircd-ircdev/ircd/Makefile.in:1.24 --- ircd-ircdev/ircd/Makefile.in:1.23 Thu Apr 14 03:28:06 2005 +++ ircd-ircdev/ircd/Makefile.in Sun May 1 05:59:39 2005 @@ -18,7 +18,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA -# $Id: Makefile.in,v 1.23 2005/04/14 10:28:06 zolty Exp $ +# $Id: Makefile.in,v 1.24 2005/05/01 12:59:39 zolty Exp $ #### Start of system configuration section. #### @@ -93,7 +93,7 @@ DDB_SRC = \ ddb.c \ - ddb_db_template.c \ + ddb_db_native.c \ ddb_events.c\ m_db.c \ m_dbq.c \ Index: ircd-ircdev/ircd/ddb_db_native.c diff -u /dev/null ircd-ircdev/ircd/ddb_db_native.c:1.1 --- /dev/null Sun May 1 05:59:50 2005 +++ ircd-ircdev/ircd/ddb_db_native.c Sun May 1 05:59:40 2005 @@ -0,0 +1,142 @@ +/* + * IRC-Dev IRCD - An advanced and innovative IRC Daemon, ircd/ddb_db_native.c + * + * Copyright (C) 2002-2005 IRC-Dev Development Team <de...@ir...> + * Copyright (C) 2004-2005 Toni Garcia (zoltan) <zo...@ir...> + * Copyright (C) 1999-2003 Jesus Cea Avion <jc...@ar...> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +/** @file + * @brief Native DataBase implementation of Distributed DataBase. + * @version $Id: ddb_db_native.c,v 1.1 2005/05/01 12:59:40 zolty Exp $ + */ +#include "config.h" + +#include "ddb.h" +#include "ircd_features.h" +#include "numnicks.h" + +#include <fcntl.h> +#include <stdio.h> +#include <string.h> +#include <unistd.h> +/* +#include <stdlib.h> +#include <sys/mman.h> +#include <sys/stat.h> +*/ + + +int +ddb_db_open(unsigned char table, unsigned int id, struct ddb_memory_table *mt) +{ + return 1; +} + + +void ddb_db_close(struct ddb_memory_table *mt) +{ +} + +int ddb_db_read(struct ddb_memory_table *mt, char *mask, char *id, char *key, char *content) +{ + return 1; +} + +void ddb_db_write(unsigned char table, char *mask, unsigned int id, char *key, char *content) +{ +} + +void ddb_db_drop(unsigned char table) +{ +} + +void +ddb_db_compact(unsigned char table, char *mask, unsigned int id, char *comment) +{ + +} + + + +void +ddb_hash_read(unsigned char table, unsigned int *hi, unsigned int *lo) +{ + char path[1024]; + char c; + int handle; + + sprintf(path, "%s/hashes", feature_str(FEAT_DDBPATH)); + + handle = open(path, O_RDONLY, S_IRUSR | S_IWUSR); + if (handle == -1) + { + *hi = *lo = 0; + return; + } + + if (lseek(handle, (15 * (table - DDB_INIT)) + 2, SEEK_SET) == -1) + ddb_die("Error when reading table %c hashes (LSEEK)", table); + + read(handle, path, 12); + close(handle); + alarm(0); + + path[12] = '\0'; + c = path[6]; + path[6] = '\0'; + *hi = base64toint(path); + path[6] = c; + *lo = base64toint(path + 6); +} + +void +ddb_hash_write(unsigned char table) +{ + char path[1024]; + char hash[20]; + int handle; + + sprintf(path, "%s/hashes", feature_str(FEAT_DDBPATH)); + alarm(3); + handle = open(path, O_WRONLY, S_IRUSR | S_IWUSR); + if (handle == -1) + { + unsigned char tabletemp; + handle = open(path, O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR); + if (handle == -1) + ddb_die("Error when saving table %c hashes (OPEN)", table); + + for (tabletemp = DDB_INIT; tabletemp <= DDB_END; tabletemp++) + { + sprintf(hash, "%c AAAAAAAAAAAA\n", tabletemp); + write(handle, hash, 15); + } + } + + if (lseek(handle, (15 * (table - DDB_INIT)), SEEK_SET) == -1) + ddb_die("Error when saving table %c hashes (LSEEK)", table); + + inttobase64(hash, ddb_hashtable_hi[table], 6); + inttobase64(hash + 6, ddb_hashtable_lo[table], 6); + sprintf(path, "%c %s\n", table, hash); + if (write(handle, path, strlen(path)) == -1) + ddb_die("Error when saving table %c hashes (WRITE)", table); + close(handle); + alarm(0); +} + Index: ircd-ircdev/ircd/s_conf.c diff -u ircd-ircdev/ircd/s_conf.c:1.14 ircd-ircdev/ircd/s_conf.c:1.15 --- ircd-ircdev/ircd/s_conf.c:1.14 Thu Apr 28 15:00:09 2005 +++ ircd-ircdev/ircd/s_conf.c Sun May 1 05:59:40 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief ircd configuration file driver - * @version $Id: s_conf.c,v 1.14 2005/04/28 22:00:09 zolty Exp $ + * @version $Id: s_conf.c,v 1.15 2005/05/01 12:59:40 zolty Exp $ */ #include "config.h" @@ -390,8 +390,8 @@ ddb = ddb_find_key(DDB_CONFIGDB, (char *)DDB_CONFIGDB_MSG_TOO_MANY_FROM_IP); sendcmdto_one(&me, CMD_NOTICE, cptr, - "In %s IRC Network only allows %d clones for your IP (%s)%s%s", - feature_str(FEAT_NETWORK), maxclones, ircd_ntoa(&cli_ip(cptr)), + "%C :In the %s IRC Network only allows %d clones for your IP (%s)%s%s", + cptr, feature_str(FEAT_NETWORK), maxclones, ircd_ntoa(&cli_ip(cptr)), ddb ? ". " : "", ddb ? ddb->content : ""); return ACR_TOO_MANY_FROM_IP; } ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-05-07 12:43:48
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-05-07 12:43:39 UTC Modified files: ChangeLog ChangeLog.es include/ddb.h include/patchlevel.h ircd/Makefile.in ircd/ddb.c ircd/ddb_db_native.c ircd/ircd.c ircd/m_db.c Log message: Author: zoltan <zo...@ir...> Log message: 2005-05-07 Toni García <zo...@ir...> 1.0.alpha31 * DB nativo: Lectura y escritura de tablas * DB Burst ---------------------- diff included ---------------------- Index: ircd-ircdev/ChangeLog diff -u ircd-ircdev/ChangeLog:1.32 ircd-ircdev/ChangeLog:1.33 --- ircd-ircdev/ChangeLog:1.32 Sun May 1 05:59:37 2005 +++ ircd-ircdev/ChangeLog Sat May 7 05:43:28 2005 @@ -1,10 +1,14 @@ # # ChangeLog for ircd-ircdev # -# $Id: ChangeLog,v 1.32 2005/05/01 12:59:37 zolty Exp $ +# $Id: ChangeLog,v 1.33 2005/05/07 12:43:28 zolty Exp $ # # Insert new changes at beginning of the change list. # +2005-05-07 Toni García <zo...@ir...> 1.0.alpha31 + * Native DB: Tables read and save + * Burst DB + 2005-05-01 Toni García <zo...@ir...> 1.0.alpha30 * Native DB: Hashes read and save Index: ircd-ircdev/ChangeLog.es diff -u ircd-ircdev/ChangeLog.es:1.32 ircd-ircdev/ChangeLog.es:1.33 --- ircd-ircdev/ChangeLog.es:1.32 Sun May 1 05:59:39 2005 +++ ircd-ircdev/ChangeLog.es Sat May 7 05:43:28 2005 @@ -1,10 +1,14 @@ # # Log de Cambios para ircd-ircdev # -# $Id: ChangeLog.es,v 1.32 2005/05/01 12:59:39 zolty Exp $ +# $Id: ChangeLog.es,v 1.33 2005/05/07 12:43:28 zolty Exp $ # # Insertar los nuevos cambios al principio de esta lista de cambios. # +2005-05-07 Toni García <zo...@ir...> 1.0.alpha31 + * DB nativo: Lectura y escritura de tablas + * DB Burst + 2005-05-01 Toni García <zo...@ir...> 1.0.alpha30 * DB nativo: Lectura y escritura de hashes Index: ircd-ircdev/include/ddb.h diff -u ircd-ircdev/include/ddb.h:1.6 ircd-ircdev/include/ddb.h:1.7 --- ircd-ircdev/include/ddb.h:1.6 Thu Apr 28 15:00:07 2005 +++ ircd-ircdev/include/ddb.h Sat May 7 05:43:28 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: ddb.h,v 1.6 2005/04/28 22:00:07 zolty Exp $ + * $Id: ddb.h,v 1.7 2005/05/07 12:43:28 zolty Exp $ * */ #ifndef INCLUDED_ddb_h @@ -69,19 +69,18 @@ struct Ddb *next; }; -#if 0 -struct portable_stat -{ +struct ddb_stat { dev_t dev; /* ID of device containing a directory entry for this file */ ino_t ino; /* Inode number */ off_t size; /* File size in bytes */ time_t mtime; /* Time of last data modification */ -} -#endif - +}; +/* + * ddb_db_native + */ struct ddb_memory_table { - struct stat status; + struct ddb_stat file_stat; char *position; /* Posicion */ char *point_r; /* Lectura */ #if 0 @@ -89,30 +88,6 @@ #endif }; -#if 0 -struct db_file__ { - char *map_p; lo mismo que position - struct stat estado; - char *read_p; -}; -estado.st_size - -struct stat -{ - st_size - st_mtime -} - -struct portable_stat -{ - dev_t dev; /* ID of device containing a directory -entry for this file */ - ino_t ino; /* Inode number */ - off_t size; /* File size in bytes */ - time_t mtime; /* Time of last data modification */ -} -#endif - #define DdbMalloc(x) MyMalloc(x) #define DdbFree(x) MyFree(x) @@ -121,6 +96,7 @@ * Prototypes */ extern struct Ddb **ddb_data_table[DDB_TABLE_MAX]; +extern struct ddb_stat ddb_stats_table[DDB_TABLE_MAX]; extern unsigned int ddb_resident_table[DDB_TABLE_MAX]; extern unsigned int ddb_count_table[DDB_TABLE_MAX]; extern unsigned int ddb_id_table[DDB_TABLE_MAX]; @@ -136,10 +112,8 @@ extern void ddb_init(void); extern void ddb_events_init(void); +extern void ddb_end(void); -/* -extern int ddb_read(struct ddb_memory_table *dump, char *buf); -*/ extern void ddb_new_register(struct Client *cptr, unsigned char table, char *mask, unsigned int id, char *key, char *content); extern void ddb_drop(unsigned char table); extern void ddb_drop_memory(unsigned char table, int events); @@ -157,15 +131,15 @@ extern void ddb_report_stats(struct Client* to, const struct StatDesc* sd, char* param); /* Externs de ddb_db_*.c */ -extern int ddb_db_open(unsigned char table, unsigned int id, struct ddb_memory_table *mt); -extern void ddb_db_close(struct ddb_memory_table *mt); +extern void ddb_db_init(void); +extern int ddb_db_read(struct Client *cptr, unsigned char table, unsigned int id, int count); extern void ddb_db_write(unsigned char table, char *mask, unsigned int id, char *key, char *content); extern void ddb_db_drop(unsigned char table); extern void ddb_compact(unsigned char table, char *mask, unsigned int id, char *comment); extern void ddb_hash_read(unsigned char table, unsigned int *hi, unsigned int *lo); extern void ddb_hash_write(unsigned char table); +extern void ddb_db_end(void); #endif /* defined(DDB) */ #endif /* INCLUDED_ddb_h */ - Index: ircd-ircdev/include/patchlevel.h diff -u ircd-ircdev/include/patchlevel.h:1.31 ircd-ircdev/include/patchlevel.h:1.32 --- ircd-ircdev/include/patchlevel.h:1.31 Sun May 1 05:59:39 2005 +++ ircd-ircdev/include/patchlevel.h Sat May 7 05:43:28 2005 @@ -17,10 +17,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: patchlevel.h,v 1.31 2005/05/01 12:59:39 zolty Exp $ + * $Id: patchlevel.h,v 1.32 2005/05/07 12:43:28 zolty Exp $ * */ -#define PATCHLEVEL ".alpha30" +#define PATCHLEVEL ".alpha31" #define RELEASE "1.0" Index: ircd-ircdev/ircd/Makefile.in diff -u ircd-ircdev/ircd/Makefile.in:1.24 ircd-ircdev/ircd/Makefile.in:1.25 --- ircd-ircdev/ircd/Makefile.in:1.24 Sun May 1 05:59:39 2005 +++ ircd-ircdev/ircd/Makefile.in Sat May 7 05:43:29 2005 @@ -18,7 +18,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA -# $Id: Makefile.in,v 1.24 2005/05/01 12:59:39 zolty Exp $ +# $Id: Makefile.in,v 1.25 2005/05/07 12:43:29 zolty Exp $ #### Start of system configuration section. #### @@ -394,60 +394,71 @@ # DO NOT DELETE THIS LINE (or the blank line after it) -- make depend depends on them. +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" IPcheck.o: IPcheck.c ../config.h ../include/IPcheck.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ ../include/capab.h ../include/ircd.h ../include/struct.h \ ../include/match.h ../include/msg.h ../include/numnicks.h \ - ../include/ircd_alloc.h ../include/ircd_features.h \ - ../include/ircd_log.h ../include/s_debug.h ../include/s_user.h \ - ../include/send.h + ../include/ircd_alloc.h ../include/ircd_events.h \ + ../include/ircd_features.h ../include/ircd_log.h ../include/s_debug.h \ + ../include/s_user.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" channel.o: channel.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/capab.h \ ../include/destruct_event.h ../include/hash.h ../include/ircd.h \ ../include/struct.h ../include/ircd_alloc.h ../include/ircd_chattr.h \ - ../include/ircd_features.h ../include/ircd_log.h \ + ../include/ircd_defs.h ../include/ircd_features.h ../include/ircd_log.h \ ../include/ircd_reply.h ../include/ircd_snprintf.h \ ../include/ircd_string.h ../include/list.h ../include/match.h \ - ../include/msg.h ../include/numeric.h ../include/numnicks.h \ - ../include/querycmds.h ../include/s_bsd.h ../include/s_conf.h \ + ../include/msg.h ../include/msgq.h ../include/numeric.h \ + ../include/numnicks.h ../include/querycmds.h ../include/ircd_features.h \ + ../include/s_bsd.h ../include/s_conf.h ../include/client.h \ ../include/s_debug.h ../include/s_misc.h ../include/s_user.h \ - ../include/send.h ../include/sys.h ../include/whowas.h + ../include/send.h ../include/struct.h ../include/sys.h \ + ../include/whowas.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" class.o: class.c ../config.h ../include/class.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_alloc.h ../include/ircd_features.h \ + ../include/capab.h ../include/client.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_alloc.h ../include/ircd_features.h \ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/list.h ../include/numeric.h \ ../include/s_conf.h ../include/s_debug.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" client.o: client.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ - ../include/class.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_features.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/list.h ../include/numeric.h \ - ../include/s_conf.h ../include/s_debug.h ../include/send.h + ../include/class.h ../include/client.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_features.h ../include/ircd_log.h \ + ../include/ircd_reply.h ../include/list.h ../include/msgq.h \ + ../include/numeric.h ../include/s_conf.h ../include/s_debug.h \ + ../include/send.h ../include/struct.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" crule.o: crule.c ../config.h ../include/crule.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ ../include/capab.h ../include/ircd.h ../include/struct.h \ ../include/ircd_alloc.h ../include/ircd_chattr.h \ ../include/ircd_string.h ../include/match.h ../include/s_bsd.h \ - ../include/s_debug.h + ../include/s_debug.h ../include/struct.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" dbuf.o: dbuf.c ../config.h ../include/dbuf.h ../include/ircd_alloc.h \ ../include/ircd_chattr.h ../include/ircd_features.h \ ../include/ircd_log.h ../include/send.h ../include/sys.h -ddb.o: ddb.c ../config.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" destruct_event.o: destruct_event.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/s_debug.h \ ../include/ircd_alloc.h ../include/ircd.h ../include/struct.h \ ../include/ircd_events.h ../include/ircd_log.h ../include/send.h \ ../include/msg.h ../include/ircd_handler.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" fileio.o: fileio.c ../config.h ../include/fileio.h \ ../include/ircd_alloc.h ../include/ircd_log.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" gline.o: gline.c ../config.h ../include/gline.h ../include/res.h \ ../include/client.h ../include/ircd_defs.h ../include/dbuf.h \ ../include/msgq.h ../include/ircd_events.h ../include/ircd_handler.h \ @@ -457,67 +468,79 @@ ../include/ircd_snprintf.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/match.h ../include/numeric.h \ ../include/s_bsd.h ../include/s_debug.h ../include/s_misc.h \ - ../include/s_stats.h ../include/send.h ../include/msg.h \ - ../include/numnicks.h ../include/whocmds.h + ../include/s_stats.h ../include/send.h ../include/struct.h \ + ../include/msg.h ../include/numnicks.h ../include/whocmds.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" hash.o: hash.c ../config.h ../include/hash.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/channel.h ../include/ircd_alloc.h \ - ../include/ircd_chattr.h ../include/ircd_log.h ../include/ircd_reply.h \ - ../include/ircd_string.h ../include/ircd.h ../include/struct.h \ - ../include/msg.h ../include/numeric.h ../include/random.h \ - ../include/send.h ../include/sys.h ../include/watch.h + ../include/capab.h ../include/channel.h ../include/ddb.h ../config.h \ + ../include/client.h ../include/ircd_alloc.h ../include/ircd_chattr.h \ + ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd.h ../include/struct.h ../include/msg.h \ + ../include/numeric.h ../include/random.h ../include/send.h \ + ../include/struct.h ../include/sys.h ../include/watch.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" ircd.o: ircd.c ../config.h ../include/ircd.h ../include/struct.h \ ../include/ircd_defs.h ../include/IPcheck.h ../include/class.h \ ../include/client.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/crule.h ../include/destruct_event.h \ + ../include/capab.h ../include/client.h ../include/crule.h \ + ../include/ddb.h ../config.h ../include/destruct_event.h \ ../include/channel.h ../include/hash.h ../include/ircd_alloc.h \ - ../include/ircd_crypt.h ../include/ircd_features.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_signal.h \ + ../include/ircd_crypt.h ../include/ircd_events.h \ + ../include/ircd_features.h ../include/ircd_log.h \ + ../include/ircd_reply.h ../include/ircd_signal.h \ ../include/ircd_string.h ../include/ircd_chattr.h ../include/jupe.h \ ../include/list.h ../include/match.h ../include/motd.h ../include/msg.h \ ../include/numeric.h ../include/numnicks.h ../include/opercmds.h \ - ../include/parse.h ../include/s_auth.h ../include/s_bsd.h \ - ../include/s_conf.h ../include/s_debug.h ../include/s_misc.h \ - ../include/s_stats.h ../include/send.h ../include/sys.h \ - ../include/uping.h ../include/userload.h ../include/version.h \ - ../include/whowas.h + ../include/parse.h ../include/res.h ../include/s_auth.h \ + ../include/s_bsd.h ../include/s_conf.h ../include/s_debug.h \ + ../include/s_misc.h ../include/s_stats.h ../include/send.h \ + ../include/sys.h ../include/uping.h ../include/userload.h \ + ../include/version.h ../include/whowas.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" ircd_alloc.o: ircd_alloc.c ../config.h ../include/ircd_alloc.h \ ../include/ircd_log.h ../include/ircd_string.h ../include/ircd_chattr.h \ ../include/s_debug.h ../include/ircd_defs.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" ircd_auth.o: ircd_auth.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ ../include/capab.h ../include/ircd_alloc.h ../include/ircd_auth.h \ - ../include/ircd_features.h ../include/ircd_log.h \ - ../include/ircd_osdep.h ../include/ircd_snprintf.h \ - ../include/ircd_string.h ../include/ircd_chattr.h ../include/ircd.h \ - ../include/struct.h ../include/msg.h ../include/s_bsd.h \ + ../include/ircd_events.h ../include/ircd_features.h \ + ../include/ircd_log.h ../include/ircd_osdep.h \ + ../include/ircd_snprintf.h ../include/ircd_string.h \ + ../include/ircd_chattr.h ../include/ircd.h ../include/struct.h \ + ../include/msg.h ../include/msgq.h ../include/res.h ../include/s_bsd.h \ ../include/s_debug.h ../include/s_misc.h ../include/s_user.h \ ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" ircd_crypt.o: ircd_crypt.c ../config.h ../include/ircd_crypt.h \ ../include/ircd_alloc.h ../include/ircd_features.h \ ../include/ircd_log.h ../include/ircd_string.h ../include/ircd_chattr.h \ ../include/s_debug.h ../include/ircd_defs.h \ ../include/ircd_crypt_native.h ../include/ircd_crypt_plain.h \ ../include/ircd_crypt_smd5.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" ircd_events.o: ircd_events.c ../config.h ../include/ircd_events.h \ ../include/ircd.h ../include/struct.h ../include/ircd_defs.h \ ../include/ircd_alloc.h ../include/ircd_log.h \ ../include/ircd_snprintf.h ../include/s_debug.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" ircd_features.o: ircd_features.c ../config.h ../include/ircd_features.h \ ../include/channel.h ../include/ircd_defs.h ../include/res.h \ ../include/class.h ../include/client.h ../include/dbuf.h \ ../include/msgq.h ../include/ircd_events.h ../include/ircd_handler.h \ - ../include/capab.h ../include/hash.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_alloc.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/capab.h ../include/client.h ../include/hash.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_alloc.h \ + ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/match.h ../include/motd.h \ ../include/msg.h ../include/numeric.h ../include/numnicks.h \ ../include/random.h ../include/s_bsd.h ../include/s_debug.h \ ../include/s_misc.h ../include/s_stats.h ../include/send.h \ - ../include/sys.h ../include/whowas.h + ../include/struct.h ../include/sys.h ../include/whowas.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" ircd_log.o: ircd_log.c ../config.h ../include/ircd_log.h \ ../include/client.h ../include/ircd_defs.h ../include/dbuf.h \ ../include/msgq.h ../include/ircd_events.h ../include/ircd_handler.h \ @@ -525,7 +548,8 @@ ../include/ircd_reply.h ../include/ircd_snprintf.h \ ../include/ircd_string.h ../include/ircd_chattr.h ../include/ircd.h \ ../include/struct.h ../include/numeric.h ../include/s_debug.h \ - ../include/send.h + ../include/send.h ../include/struct.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" ircd_relay.o: ircd_relay.c ../config.h ../include/ircd_relay.h \ ../include/channel.h ../include/ircd_defs.h ../include/res.h \ ../include/client.h ../include/dbuf.h ../include/msgq.h \ @@ -536,13 +560,16 @@ ../include/match.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/s_debug.h ../include/s_misc.h \ ../include/s_user.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" ircd_reply.o: ircd_reply.c ../config.h ../include/ircd_reply.h \ ../include/client.h ../include/ircd_defs.h ../include/dbuf.h \ ../include/msgq.h ../include/ircd_events.h ../include/ircd_handler.h \ ../include/res.h ../include/capab.h ../include/ircd.h \ ../include/struct.h ../include/ircd_log.h ../include/ircd_snprintf.h \ - ../include/msg.h ../include/numeric.h ../include/s_conf.h \ - ../include/s_debug.h ../include/send.h + ../include/msg.h ../include/msgq.h ../include/numeric.h \ + ../include/s_conf.h ../include/client.h ../include/s_debug.h \ + ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" ircd_res.o: ircd_res.c ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../config.h ../include/ircd_handler.h ../include/res.h \ @@ -553,25 +580,32 @@ ../include/numeric.h ../include/fileio.h ../include/random.h \ ../include/s_bsd.h ../include/s_debug.h ../include/s_stats.h \ ../include/ircd_features.h ../include/send.h ../include/sys.h \ - ../include/ircd_reslib.h + ../include/res.h ../include/ircd_reslib.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" ircd_reslib.o: ircd_reslib.c ../include/ircd.h ../include/struct.h \ ../include/ircd_defs.h ../include/res.h ../config.h \ - ../include/ircd_reslib.h ../include/fileio.h ../include/ircd_string.h \ - ../include/ircd_chattr.h + ../include/ircd_reslib.h ../include/ircd_defs.h ../include/fileio.h \ + ../include/ircd_string.h ../include/ircd_chattr.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" ircd_signal.o: ircd_signal.c ../config.h ../include/ircd.h \ ../include/struct.h ../include/ircd_defs.h ../include/ircd_events.h \ ../include/ircd_log.h ../include/ircd_signal.h ../include/s_conf.h \ ../include/client.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" ircd_snprintf.o: ircd_snprintf.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ ../include/capab.h ../include/channel.h ../include/ircd_log.h \ ../include/ircd_snprintf.h ../include/struct.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" ircd_string.o: ircd_string.c ../config.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/ircd_defs.h ../include/ircd_log.h \ - ../include/res.h chattr.tab.c + ../include/ircd_chattr.h ../include/ircd_defs.h \ + ../include/ircd_chattr.h ../include/ircd_log.h ../include/res.h \ + chattr.tab.c +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" ircd_tea.o: ircd_tea.c ../config.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" jupe.o: jupe.c ../config.h ../include/jupe.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -580,44 +614,47 @@ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/match.h ../include/msg.h \ ../include/numeric.h ../include/numnicks.h ../include/s_bsd.h \ - ../include/s_misc.h ../include/send.h ../include/sys.h + ../include/s_misc.h ../include/send.h ../include/struct.h \ + ../include/sys.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" lex.yy.o: lex.yy.c ../config.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_defs.h ../include/ircd_string.h \ + ../include/ircd_defs.h ../include/ircd_alloc.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/s_debug.h y.tab.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" list.o: list.c ../config.h ../include/list.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ ../include/capab.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_alloc.h ../include/ircd_log.h ../include/ircd_reply.h \ - ../include/ircd_string.h ../include/ircd_chattr.h ../include/listener.h \ - ../include/match.h ../include/numeric.h ../include/s_auth.h \ - ../include/s_bsd.h ../include/s_conf.h ../include/s_debug.h \ - ../include/s_misc.h ../include/s_user.h ../include/send.h \ - ../include/whowas.h + ../include/ircd_alloc.h ../include/ircd_events.h ../include/ircd_log.h \ + ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd_chattr.h ../include/listener.h ../include/match.h \ + ../include/numeric.h ../include/res.h ../include/s_auth.h \ + ../include/s_bsd.h ../include/s_conf.h ../include/client.h \ + ../include/s_debug.h ../include/s_misc.h ../include/s_user.h \ + ../include/send.h ../include/struct.h ../include/whowas.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" listener.o: listener.c ../config.h ../include/listener.h \ ../include/ircd_defs.h ../include/ircd_events.h ../include/res.h \ ../include/client.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_handler.h ../include/capab.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_alloc.h ../include/ircd_features.h \ - ../include/ircd_log.h ../include/ircd_osdep.h ../include/ircd_reply.h \ + ../include/struct.h ../include/ircd_alloc.h ../include/ircd_events.h \ + ../include/ircd_features.h ../include/ircd_log.h \ + ../include/ircd_osdep.h ../include/ircd_reply.h \ ../include/ircd_snprintf.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/match.h ../include/numeric.h \ - ../include/s_bsd.h ../include/s_conf.h ../include/s_misc.h \ - ../include/s_stats.h ../include/send.h ../include/sys.h -m_account.o: m_account.c ../config.h ../include/client.h \ - ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ - ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/msg.h ../include/numnicks.h \ - ../include/s_debug.h ../include/s_user.h ../include/send.h + ../include/s_bsd.h ../include/s_conf.h ../include/client.h \ + ../include/s_misc.h ../include/s_stats.h ../include/send.h \ + ../include/sys.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_admin.o: m_admin.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ ../include/capab.h ../include/hash.h ../include/ircd.h \ ../include/struct.h ../include/ircd_features.h ../include/ircd_log.h \ ../include/ircd_reply.h ../include/msg.h ../include/numeric.h \ - ../include/numnicks.h ../include/s_conf.h ../include/s_user.h + ../include/numnicks.h ../include/s_conf.h ../include/client.h \ + ../include/s_user.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_asll.o: m_asll.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ @@ -626,6 +663,7 @@ ../include/ircd_chattr.h ../include/numeric.h ../include/numnicks.h \ ../include/match.h ../include/msg.h ../include/send.h \ ../include/s_bsd.h ../include/s_user.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_away.o: m_away.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ @@ -633,6 +671,7 @@ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/s_user.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_burst.o: m_burst.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ @@ -642,8 +681,9 @@ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/ircd_snprintf.h ../include/list.h \ ../include/match.h ../include/msg.h ../include/numeric.h \ - ../include/numnicks.h ../include/s_conf.h ../include/s_misc.h \ - ../include/send.h + ../include/numnicks.h ../include/s_conf.h ../include/client.h \ + ../include/s_misc.h ../include/send.h ../include/struct.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_cap.o: m_cap.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ @@ -651,6 +691,7 @@ ../include/ircd_log.h ../include/ircd_reply.h \ ../include/ircd_snprintf.h ../include/ircd_string.h ../include/msg.h \ ../include/numeric.h ../include/send.h ../include/s_user.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_clearmode.o: m_clearmode.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -660,13 +701,15 @@ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/list.h ../include/msg.h \ ../include/numeric.h ../include/numnicks.h ../include/s_conf.h \ - ../include/send.h + ../include/client.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_close.o: m_close.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ ../include/capab.h ../include/ircd.h ../include/struct.h \ ../include/ircd_log.h ../include/ircd_reply.h ../include/numeric.h \ ../include/s_bsd.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_connect.o: m_connect.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -675,13 +718,15 @@ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/jupe.h ../include/match.h \ ../include/msg.h ../include/numeric.h ../include/numnicks.h \ - ../include/s_bsd.h ../include/s_conf.h ../include/s_user.h \ - ../include/send.h + ../include/s_bsd.h ../include/s_conf.h ../include/client.h \ + ../include/s_user.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_cprivmsg.o: m_cprivmsg.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ ../include/capab.h ../include/ircd_log.h ../include/ircd_reply.h \ ../include/ircd_string.h ../include/ircd_chattr.h ../include/s_user.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_create.o: m_create.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ @@ -691,8 +736,7 @@ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/s_debug.h ../include/s_misc.h \ ../include/s_user.h ../include/send.h -m_db.o: m_db.c ../config.h -m_dbq.o: m_dbq.c ../config.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_defaults.o: m_defaults.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -700,6 +744,7 @@ ../include/ircd_log.h ../include/ircd_reply.h ../include/numeric.h \ ../include/numnicks.h ../include/send.h ../include/supported.h \ ../include/channel.h ../include/version.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_destruct.o: m_destruct.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ @@ -708,6 +753,7 @@ ../include/struct.h ../include/ircd_log.h ../include/ircd_reply.h \ ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ ../include/numeric.h ../include/numnicks.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_desynch.o: m_desynch.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -716,6 +762,7 @@ ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ ../include/numeric.h ../include/numnicks.h ../include/s_bsd.h \ ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_die.o: m_die.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ @@ -723,6 +770,7 @@ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/s_bsd.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_endburst.o: m_endburst.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ @@ -731,6 +779,7 @@ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_error.o: m_error.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -739,6 +788,7 @@ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/numeric.h ../include/numnicks.h \ ../include/s_debug.h ../include/s_misc.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_get.o: m_get.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ @@ -747,6 +797,7 @@ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/numeric.h ../include/numnicks.h \ ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_gline.o: m_gline.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -755,7 +806,8 @@ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/match.h ../include/msg.h \ ../include/numeric.h ../include/numnicks.h ../include/s_conf.h \ - ../include/s_misc.h ../include/send.h + ../include/client.h ../include/s_misc.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_help.o: m_help.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ @@ -763,6 +815,7 @@ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_info.o: m_info.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ @@ -770,7 +823,9 @@ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/s_misc.h ../include/s_user.h \ - ../include/s_conf.h ../include/send.h ../include/version.h + ../include/s_conf.h ../include/client.h ../include/send.h \ + ../include/version.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_invite.o: m_invite.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ @@ -779,13 +834,16 @@ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/list.h ../include/msg.h \ ../include/numeric.h ../include/numnicks.h ../include/s_user.h \ - ../include/send.h + ../include/send.h ../include/struct.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_ison.o: m_ison.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ ../include/hash.h ../include/ircd.h ../include/struct.h \ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/numeric.h ../include/send.h + ../include/ircd_chattr.h ../include/msgq.h ../include/numeric.h \ + ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_join.o: m_join.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ @@ -795,6 +853,7 @@ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/msg.h ../include/numeric.h ../include/numnicks.h \ ../include/s_debug.h ../include/s_user.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_jupe.o: m_jupe.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ @@ -803,7 +862,8 @@ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/match.h ../include/msg.h \ ../include/numeric.h ../include/numnicks.h ../include/s_conf.h \ - ../include/s_misc.h ../include/send.h + ../include/client.h ../include/s_misc.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_kick.o: m_kick.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ @@ -812,6 +872,7 @@ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_kill.o: m_kill.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ @@ -821,15 +882,17 @@ ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ ../include/numeric.h ../include/numnicks.h ../include/s_misc.h \ ../include/send.h ../include/whowas.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_links.o: m_links.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ ../include/capab.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_features.h ../include/ircd_log.h \ + ../include/ircd_defs.h ../include/ircd_features.h ../include/ircd_log.h \ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/match.h ../include/msg.h \ ../include/numeric.h ../include/numnicks.h ../include/s_user.h \ - ../include/send.h + ../include/send.h ../include/struct.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_list.o: m_list.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ @@ -839,6 +902,7 @@ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/msg.h ../include/numeric.h ../include/numnicks.h \ ../include/s_bsd.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_lusers.o: m_lusers.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -846,17 +910,21 @@ ../include/struct.h ../include/ircd_features.h ../include/ircd_log.h \ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ - ../include/numnicks.h ../include/querycmds.h ../include/s_misc.h \ - ../include/s_serv.h ../include/s_user.h ../include/send.h + ../include/numnicks.h ../include/querycmds.h ../include/ircd_features.h \ + ../include/s_misc.h ../include/s_serv.h ../include/s_user.h \ + ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_map.o: m_map.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_features.h \ - ../include/ircd_log.h ../include/ircd_reply.h \ - ../include/ircd_snprintf.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/list.h ../include/match.h \ - ../include/msg.h ../include/numeric.h ../include/s_user.h \ - ../include/s_serv.h ../include/send.h ../include/querycmds.h + ../include/ircd.h ../include/struct.h ../include/ircd_defs.h \ + ../include/ircd_features.h ../include/ircd_log.h \ + ../include/ircd_reply.h ../include/ircd_snprintf.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/list.h \ + ../include/match.h ../include/msg.h ../include/numeric.h \ + ../include/s_user.h ../include/s_serv.h ../include/send.h \ + ../include/querycmds.h ../include/ircd_features.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_mode.o: m_mode.c ../config.h ../include/handlers.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ @@ -864,8 +932,9 @@ ../include/ircd.h ../include/struct.h ../include/ircd_log.h \ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ - ../include/numnicks.h ../include/s_conf.h ../include/s_debug.h \ - ../include/s_user.h ../include/send.h + ../include/numnicks.h ../include/s_conf.h ../include/client.h \ + ../include/s_debug.h ../include/s_user.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_motd.o: m_motd.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ @@ -873,8 +942,9 @@ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/match.h ../include/motd.h \ ../include/msg.h ../include/numeric.h ../include/numnicks.h \ - ../include/s_conf.h ../include/class.h ../include/s_user.h \ - ../include/send.h + ../include/s_conf.h ../include/client.h ../include/class.h \ + ../include/s_user.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_names.o: m_names.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ @@ -883,15 +953,18 @@ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/s_user.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_nick.o: m_nick.c ../config.h ../include/IPcheck.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/hash.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_chattr.h ../include/ircd_features.h \ + ../include/capab.h ../include/ddb.h ../config.h ../include/client.h \ + ../include/hash.h ../include/ircd.h ../include/struct.h \ + ../include/ircd_chattr.h ../include/ircd_features.h \ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/msg.h ../include/numeric.h ../include/numnicks.h \ ../include/s_debug.h ../include/s_misc.h ../include/s_user.h \ ../include/send.h ../include/sys.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_notice.o: m_notice.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -899,6 +972,7 @@ ../include/ircd_relay.h ../include/ircd_reply.h \ ../include/ircd_string.h ../include/match.h ../include/msg.h \ ../include/numeric.h ../include/send.h ../include/handlers.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_oper.o: m_oper.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ @@ -907,9 +981,10 @@ ../include/ircd_features.h ../include/ircd_log.h \ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ - ../include/numnicks.h ../include/querycmds.h ../include/s_conf.h \ - ../include/s_debug.h ../include/s_user.h ../include/s_misc.h \ - ../include/send.h + ../include/numnicks.h ../include/querycmds.h ../include/ircd_features.h \ + ../include/s_conf.h ../include/client.h ../include/s_debug.h \ + ../include/s_user.h ../include/s_misc.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_opmode.o: m_opmode.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -917,7 +992,9 @@ ../include/ircd.h ../include/struct.h ../include/ircd_features.h \ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ - ../include/numnicks.h ../include/send.h ../include/s_conf.h + ../include/numnicks.h ../include/send.h ../include/s_conf.h \ + ../include/client.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_part.o: m_part.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ @@ -926,11 +1003,13 @@ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/numeric.h ../include/numnicks.h \ ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_pass.o: m_pass.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_ping.o: m_ping.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ @@ -939,6 +1018,7 @@ ../include/struct.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/opercmds.h ../include/s_debug.h \ ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_pong.o: m_pong.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ @@ -947,6 +1027,7 @@ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/opercmds.h ../include/s_user.h \ ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_privmsg.o: m_privmsg.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -955,13 +1036,15 @@ ../include/ircd_log.h ../include/ircd_relay.h ../include/ircd_reply.h \ ../include/ircd_string.h ../include/match.h ../include/msg.h \ ../include/numeric.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_privs.o: m_privs.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ ../include/capab.h ../include/hash.h ../include/ircd.h \ ../include/struct.h ../include/ircd_log.h ../include/ircd_reply.h \ - ../include/ircd_string.h ../include/ircd_chattr.h ../include/numeric.h \ - ../include/numnicks.h ../include/send.h + ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ + ../include/numeric.h ../include/numnicks.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_proto.o: m_proto.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -971,6 +1054,7 @@ ../include/numeric.h ../include/numnicks.h ../include/s_debug.h \ ../include/s_misc.h ../include/send.h ../include/supported.h \ ../include/channel.h ../include/version.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_pseudo.o: m_pseudo.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -979,20 +1063,25 @@ ../include/ircd_relay.h ../include/ircd_reply.h \ ../include/ircd_string.h ../include/ircd_chattr.h \ ../include/ircd_snprintf.h ../include/msg.h ../include/numeric.h \ - ../include/numnicks.h ../include/s_conf.h ../include/s_user.h + ../include/numnicks.h ../include/s_conf.h ../include/client.h \ + ../include/s_user.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_quit.o: m_quit.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/capab.h ../include/ircd.h \ ../include/struct.h ../include/ircd_log.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/s_misc.h ../include/ircd_reply.h + ../include/ircd_chattr.h ../include/struct.h ../include/s_misc.h \ + ../include/ircd_reply.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_rehash.o: m_rehash.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ ../include/capab.h ../include/ircd.h ../include/struct.h \ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/motd.h ../include/numeric.h \ - ../include/s_conf.h ../include/send.h + ../include/s_conf.h ../include/client.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_reset.o: m_reset.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -1001,6 +1090,7 @@ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/numeric.h ../include/numnicks.h \ ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_restart.o: m_restart.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -1008,6 +1098,7 @@ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/numeric.h ../include/numnicks.h \ ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_rping.o: m_rping.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -1016,6 +1107,7 @@ ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ ../include/numeric.h ../include/numnicks.h ../include/opercmds.h \ ../include/s_user.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_rpong.o: m_rpong.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -1024,6 +1116,7 @@ ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ ../include/numeric.h ../include/numnicks.h ../include/opercmds.h \ ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_server.o: m_server.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -1032,9 +1125,11 @@ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/jupe.h ../include/list.h \ ../include/match.h ../include/msg.h ../include/numeric.h \ - ../include/numnicks.h ../include/querycmds.h ../include/s_bsd.h \ - ../include/s_conf.h ../include/s_debug.h ../include/s_misc.h \ - ../include/s_serv.h ../include/send.h ../include/userload.h + ../include/numnicks.h ../include/querycmds.h ../include/ircd_features.h \ + ../include/s_bsd.h ../include/s_conf.h ../include/client.h \ + ../include/s_debug.h ../include/s_misc.h ../include/s_serv.h \ + ../include/send.h ../include/userload.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_set.o: m_set.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ @@ -1043,6 +1138,7 @@ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/numeric.h ../include/numnicks.h \ ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_settime.o: m_settime.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -1051,7 +1147,8 @@ ../include/ircd_reply.h ../include/ircd_snprintf.h \ ../include/ircd_string.h ../include/ircd_chattr.h ../include/list.h \ ../include/msg.h ../include/numeric.h ../include/numnicks.h \ - ../include/s_user.h ../include/send.h + ../include/s_user.h ../include/send.h ../include/struct.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_silence.o: m_silence.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ @@ -1061,7 +1158,8 @@ ../include/ircd_snprintf.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/list.h ../include/msg.h \ ../include/numeric.h ../include/numnicks.h ../include/s_user.h \ - ../include/send.h + ../include/send.h ../include/struct.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_squit.o: m_squit.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -1070,14 +1168,16 @@ ../include/ircd_reply.h ../include/ircd_string.h ../include/numeric.h \ ../include/numnicks.h ../include/match.h ../include/s_debug.h \ ../include/s_misc.h ../include/s_user.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_stats.o: m_stats.c ../config.h ../include/s_stats.h \ ../include/ircd_features.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_features.h \ + ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ - ../include/s_user.h ../include/send.h + ../include/s_user.h ../include/send.h ../include/struct.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_time.o: m_time.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ @@ -1086,6 +1186,7 @@ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/s_misc.h ../include/s_user.h \ ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_topic.o: m_topic.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ @@ -1094,16 +1195,18 @@ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_trace.o: m_trace.c ../config.h ../include/class.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/hash.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_features.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/capab.h ../include/client.h ../include/hash.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_features.h \ + ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/match.h ../include/msg.h \ ../include/numeric.h ../include/numnicks.h ../include/s_bsd.h \ ../include/s_conf.h ../include/s_user.h ../include/send.h \ ../include/version.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_uping.o: m_uping.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -1111,8 +1214,9 @@ ../include/struct.h ../include/ircd_log.h ../include/ircd_reply.h \ ../include/ircd_string.h ../include/ircd_chattr.h ../include/match.h \ ../include/msg.h ../include/numeric.h ../include/numnicks.h \ - ../include/s_conf.h ../include/s_user.h ../include/send.h \ - ../include/uping.h + ../include/s_conf.h ../include/client.h ../include/s_user.h \ + ../include/send.h ../include/uping.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_user.o: m_user.c ../config.h ../include/handlers.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -1121,26 +1225,30 @@ ../include/ircd_string.h ../include/numeric.h ../include/numnicks.h \ ../include/s_debug.h ../include/s_misc.h ../include/s_user.h \ ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_users.o: m_users.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ ../include/capab.h ../include/ircd_features.h ../include/ircd_log.h \ ../include/ircd_reply.h ../include/msg.h ../include/numeric.h \ - ../include/querycmds.h ../include/s_misc.h ../include/s_user.h \ - ../include/s_serv.h + ../include/querycmds.h ../include/ircd_features.h ../include/s_misc.h \ + ../include/s_user.h ../include/s_serv.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_userhost.o: m_userhost.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ ../include/capab.h ../include/ircd_log.h ../include/ircd_reply.h \ - ../include/ircd_string.h ../include/ircd_chattr.h ../include/numeric.h \ - ../include/s_user.h ../include/struct.h + ../include/ircd_string.h ../include/ircd_chattr.h ../include/msgq.h \ + ../include/numeric.h ../include/s_user.h ../include/struct.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_userip.o: m_userip.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ ../include/capab.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/ircd_features.h \ - ../include/ircd_log.h ../include/numeric.h ../include/s_user.h \ - ../include/struct.h + ../include/ircd_log.h ../include/msgq.h ../include/numeric.h \ + ../include/s_user.h ../include/struct.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_version.o: m_version.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -1151,6 +1259,7 @@ ../include/numeric.h ../include/numnicks.h ../include/s_debug.h \ ../include/s_user.h ../include/send.h ../include/supported.h \ ../include/channel.h ../include/version.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_wallchops.o: m_wallchops.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ @@ -1159,18 +1268,21 @@ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/s_user.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_wallops.o: m_wallops.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ ../includ... [truncated message content] |
From: Toni G. <zo...@us...> - 2005-05-07 12:44:54
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-05-07 12:44:47 UTC Modified files: TODO.es Log message: actualizacion TODO ---------------------- diff included ---------------------- Index: ircd-ircdev/TODO.es diff -u ircd-ircdev/TODO.es:1.22 ircd-ircdev/TODO.es:1.23 --- ircd-ircdev/TODO.es:1.22 Thu Apr 28 15:02:37 2005 +++ ircd-ircdev/TODO.es Sat May 7 05:44:36 2005 @@ -1,14 +1,14 @@ # # TODO para ircd-ircdev # -# $Id: TODO.es,v 1.22 2005/04/28 22:02:37 zolty Exp $ +# $Id: TODO.es,v 1.23 2005/05/07 12:44:36 zolty Exp $ # # Insertar las nuevas entradas al principio de la lista TODO. # URGENTE -------------------------------------------------------------------------------------- - - [D] Implementar el protocolo DDB (ddb_db). + - [D] DDB: compactado, hashes, seguridad y documentacion. - [D] Implementar tabla o de Operadores - [D] Implementar tabla p de Privilegios - [D] Implementar tabla f de Features ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-05-07 22:24:03
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-05-07 22:23:50 UTC Modified files: ChangeLog ChangeLog.es Doxyfile doc/en/log.txt include/ircd_log.h include/numeric.h include/patchlevel.h ircd/channel.c ircd/ddb.c ircd/ddb_db_native.c ircd/ddb_events.c ircd/engine_epoll.c ircd/ircd_auth.c ircd/ircd_log.c ircd/m_db.c ircd/m_invite.c ircd/m_join.c ircd/m_svsnick.c ircd/numnicks.c ircd/s_err.c ircd/s_misc.c ircd/s_stats.c ircd/s_user.c Log message: Author: zoltan <zo...@ir...> Log message: 2005-05-08 Toni García <zo...@ir...> 1.0.alpha32 * Fix de bugs ---------------------- diff included ---------------------- Index: ircd-ircdev/ChangeLog diff -u ircd-ircdev/ChangeLog:1.33 ircd-ircdev/ChangeLog:1.34 --- ircd-ircdev/ChangeLog:1.33 Sat May 7 05:43:28 2005 +++ ircd-ircdev/ChangeLog Sat May 7 15:23:39 2005 @@ -1,10 +1,13 @@ # # ChangeLog for ircd-ircdev # -# $Id: ChangeLog,v 1.33 2005/05/07 12:43:28 zolty Exp $ +# $Id: ChangeLog,v 1.34 2005/05/07 22:23:39 zolty Exp $ # # Insert new changes at beginning of the change list. # +2005-05-08 Toni García <zo...@ir...> 1.0.alpha32 + * Fix bugs + 2005-05-07 Toni García <zo...@ir...> 1.0.alpha31 * Native DB: Tables read and save * Burst DB Index: ircd-ircdev/ChangeLog.es diff -u ircd-ircdev/ChangeLog.es:1.33 ircd-ircdev/ChangeLog.es:1.34 --- ircd-ircdev/ChangeLog.es:1.33 Sat May 7 05:43:28 2005 +++ ircd-ircdev/ChangeLog.es Sat May 7 15:23:39 2005 @@ -1,10 +1,13 @@ # # Log de Cambios para ircd-ircdev # -# $Id: ChangeLog.es,v 1.33 2005/05/07 12:43:28 zolty Exp $ +# $Id: ChangeLog.es,v 1.34 2005/05/07 22:23:39 zolty Exp $ # # Insertar los nuevos cambios al principio de esta lista de cambios. # +2005-05-08 Toni García <zo...@ir...> 1.0.alpha32 + * Fix de bugs + 2005-05-07 Toni García <zo...@ir...> 1.0.alpha31 * DB nativo: Lectura y escritura de tablas * DB Burst Index: ircd-ircdev/Doxyfile diff -u ircd-ircdev/Doxyfile:1.3 ircd-ircdev/Doxyfile:1.4 --- ircd-ircdev/Doxyfile:1.3 Mon Mar 21 10:38:47 2005 +++ ircd-ircdev/Doxyfile Sat May 7 15:23:39 2005 @@ -41,7 +41,8 @@ # (Japanese with English messages), Korean, Norwegian, Polish, Portuguese, # Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. -OUTPUT_LANGUAGE = English +#OUTPUT_LANGUAGE = English +OUTPUT_LANGUAGE = Spanish # This tag can be used to specify the encoding used in the generated output. # The encoding is not always determined by the language that is chosen, @@ -691,7 +692,7 @@ # The RTF output is optimised for Word 97 and may not look very pretty with # other RTF readers or editors. -GENERATE_RTF = NO +GENERATE_RTF = YES # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be Index: ircd-ircdev/doc/en/log.txt diff -u ircd-ircdev/doc/en/log.txt:1.1 ircd-ircdev/doc/en/log.txt:1.2 --- ircd-ircdev/doc/en/log.txt:1.1 Wed Jan 5 10:00:34 2005 +++ ircd-ircdev/doc/en/log.txt Sat May 7 15:23:39 2005 @@ -1,4 +1,4 @@ -$Id: log.txt,v 1.1 2005/01/05 18:00:34 zolty Exp $ +$Id: log.txt,v 1.2 2005/05/07 22:23:39 zolty Exp $ Older versions of ircd had no consistent way of logging various actions. Some things, such as G-lines, were written out to log files @@ -109,15 +109,15 @@ * SOCKET - Used to report problems with sockets. By default, log messages to this subsystem go nowhere. + * IAUTH - Used to report connects, disconnects and errors for the + IAuth authorization mechanism. By default, log messages to this + subsystem go to the "NETWORK" server notice mask. + * DEBUG - Used only when debugging is enabled. All log messages to this subsystem go either to the console or to the debug log file compiled into the server, as well as to the "DEBUG" server notice mask. This is the only subsystem with a default log file. - * OLDLOG - Not used anywhere. This is a left-over from when the - logging subsystem was first created. Log messages to this - subsystem go nowhere. - Configuration The true power of the logging subsystem comes from its extremely Index: ircd-ircdev/include/ircd_log.h diff -u ircd-ircdev/include/ircd_log.h:1.6 ircd-ircdev/include/ircd_log.h:1.7 --- ircd-ircdev/include/ircd_log.h:1.6 Wed Mar 23 10:34:25 2005 +++ ircd-ircdev/include/ircd_log.h Sat May 7 15:23:39 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief IRC logging interface. - * @version $Id: ircd_log.h,v 1.6 2005/03/23 18:34:25 zolty Exp $ + * @version $Id: ircd_log.h,v 1.7 2005/05/07 22:23:39 zolty Exp $ */ #ifndef INCLUDED_ircd_log_h #define INCLUDED_ircd_log_h @@ -70,8 +70,8 @@ LS_OPER, /**< Users becoming operators. */ LS_RESOLVER, /**< DNS resolver errors. */ LS_SOCKET, /**< Unexpected socket operation errors. */ + LS_IAUTH, /**< IAuth status. */ LS_DEBUG, /**< Debug messages. */ - LS_OLDLOG, /**< Old logging messages (no longer used). */ LS_LAST_SYSTEM /**< Count of valid LogSys values. */ }; Index: ircd-ircdev/include/numeric.h diff -u ircd-ircdev/include/numeric.h:1.12 ircd-ircdev/include/numeric.h:1.13 --- ircd-ircdev/include/numeric.h:1.12 Mon Apr 11 01:44:59 2005 +++ ircd-ircdev/include/numeric.h Sat May 7 15:23:39 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Declarations of numeric replies and supporting functions. - * @version $Id: numeric.h,v 1.12 2005/04/11 08:44:59 zolty Exp $ + * @version $Id: numeric.h,v 1.13 2005/05/07 22:23:39 zolty Exp $ */ #ifndef INCLUDED_numeric_h #define INCLUDED_numeric_h @@ -462,13 +462,14 @@ ERR_WHOLIMEXCEED 523 dalnet */ #define ERR_QUARANTINED 524 /* Undernet extension -Vampire */ -#define ERR_NOTLOWEROPLEVEL 550 /* Undernet extension */ -#define ERR_NOTMANAGER 551 /* Undernet extension */ -#define ERR_CHANSECURED 552 /* Undernet extension */ -#define ERR_UPASSSET 553 /* Undernet extension */ -#define ERR_UPASSNOTSET 554 /* Undernet extension */ -#define ERR_NOMANAGER_LONG 555 /* Undernet extension */ -#define ERR_NOMANAGER_SHORT 556 /* Undernet extension */ +#define ERR_NOTLOWEROPLEVEL 560 /* Undernet extension */ +#define ERR_NOTMANAGER 561 /* Undernet extension */ +#define ERR_CHANSECURED 562 /* Undernet extension */ +#define ERR_UPASSSET 563 /* Undernet extension */ +#define ERR_UPASSNOTSET 564 /* Undernet extension */ +#define ERR_NOMANAGER_LONG 565 /* Undernet extension */ +#define ERR_NOMANAGER_SHORT 566 /* Undernet extension */ +#define ERR_UPASS_SAME_APASS 567 /* Undernet extension */ #define RPL_LOGON 600 /* Dalnet extension */ #define RPL_LOGOFF 601 /* Dalnet extension */ Index: ircd-ircdev/include/patchlevel.h diff -u ircd-ircdev/include/patchlevel.h:1.32 ircd-ircdev/include/patchlevel.h:1.33 --- ircd-ircdev/include/patchlevel.h:1.32 Sat May 7 05:43:28 2005 +++ ircd-ircdev/include/patchlevel.h Sat May 7 15:23:40 2005 @@ -17,10 +17,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: patchlevel.h,v 1.32 2005/05/07 12:43:28 zolty Exp $ + * $Id: patchlevel.h,v 1.33 2005/05/07 22:23:40 zolty Exp $ * */ -#define PATCHLEVEL ".alpha31" +#define PATCHLEVEL ".alpha32" #define RELEASE "1.0" Index: ircd-ircdev/ircd/channel.c diff -u ircd-ircdev/ircd/channel.c:1.19 ircd-ircdev/ircd/channel.c:1.20 --- ircd-ircdev/ircd/channel.c:1.19 Sun Apr 24 15:18:05 2005 +++ ircd-ircdev/ircd/channel.c Sat May 7 15:23:40 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Channel management and maintanance - * @version $Id: channel.c,v 1.19 2005/04/24 22:18:05 zolty Exp $ + * @version $Id: channel.c,v 1.20 2005/05/07 22:23:40 zolty Exp $ */ #include "config.h" @@ -2624,6 +2624,11 @@ send_reply(state->sptr, ERR_UPASSNOTSET, state->chptr->chname, state->chptr->chname); return; } + /* cannot set a +U password that is the same as +A */ + if (state->dir == MODE_ADD && !ircd_strcmp(state->chptr->mode.apass, t_str)) { + send_reply(state->sptr, ERR_UPASS_SAME_APASS, state->chptr->chname); + return; + } /* can't add a upass if one is set, nor can one remove the wrong upass */ if ((state->dir == MODE_ADD && *state->chptr->mode.upass) || (state->dir == MODE_DEL && @@ -3535,7 +3540,9 @@ remove_user_from_channel(jbuf->jb_source, chan); } else { #if defined(UNDERNET) - int oplevel = chan->mode.apass[0] ? 0 : MAXOPLEVEL; + int oplevel = !chan->mode.apass[0] ? MAXOPLEVEL + : (flags & CHFL_CHANNEL_MANAGER) ? 0 + : 1; /* Add user to channel */ if ((chan->mode.mode & MODE_DELJOINS) && !(flags & CHFL_VOICED_OR_OPPED)) add_user_to_channel(chan, jbuf->jb_source, flags | CHFL_DELAYED, oplevel); @@ -3551,16 +3558,24 @@ /* send notification to all servers */ if (jbuf->jb_type != JOINBUF_TYPE_CREATE && !IsLocalChannel(chan->chname)) - sendcmdto_serv_butone(jbuf->jb_source, CMD_JOIN, jbuf->jb_connect, - "%H %Tu", chan, chan->creationtime); + { +#if defined(UNDERNET) + if (flags & CHFL_CHANOP) + sendcmdto_serv_butone(jbuf->jb_source, CMD_JOIN, jbuf->jb_connect, + "%u:%H %Tu", oplevel, chan, chan->creationtime); + else +#endif + sendcmdto_serv_butone(jbuf->jb_source, CMD_JOIN, jbuf->jb_connect, + "%H %Tu", chan, chan->creationtime); + } if (!((chan->mode.mode & MODE_DELJOINS) && !(flags & CHFL_VOICED_OR_OPPED))) { /* Send the notification to the channel */ sendcmdto_channel_butserv_butone(jbuf->jb_source, CMD_JOIN, chan, NULL, 0, "%H", chan); /* send an op, too, if needed */ - if (!MyUser(jbuf->jb_source) && jbuf->jb_type == JOINBUF_TYPE_CREATE) - sendcmdto_channel_butserv_butone(jbuf->jb_source, CMD_MODE, chan, NULL, 0, "%H +o %C", + if (flags & CHFL_CHANOP) + sendcmdto_channel_butserv_butone(&me, CMD_MODE, chan, NULL, 0, "%H +o %C", chan, jbuf->jb_source); } else if (MyUser(jbuf->jb_source)) sendcmdto_one(jbuf->jb_source, CMD_JOIN, jbuf->jb_source, ":%H", chan); Index: ircd-ircdev/ircd/ddb.c diff -u ircd-ircdev/ircd/ddb.c:1.7 ircd-ircdev/ircd/ddb.c:1.8 --- ircd-ircdev/ircd/ddb.c:1.7 Sat May 7 05:43:29 2005 +++ ircd-ircdev/ircd/ddb.c Sat May 7 15:23:40 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Implementation of Distributed DataBase. - * @version $Id: ddb.c,v 1.7 2005/05/07 12:43:29 zolty Exp $ + * @version $Id: ddb.c,v 1.8 2005/05/07 22:23:40 zolty Exp $ */ #include "config.h" @@ -31,6 +31,7 @@ #include "ircd_chattr.h" #include "ircd_log.h" #include "ircd_reply.h" +#include "ircd_snprintf.h" #include "ircd_string.h" #include "ircd_tea.h" #include "list.h" @@ -124,9 +125,11 @@ /* ID Mask Key Content */ if (content) - sprintf(buf, "%u %s %s %s", id, mask, key, content); + ircd_snprintf(0, buf, sizeof(buf), "%u %s %s %s", + id, mask, key, content); else - sprintf(buf, "%u %s %s", id, mask, key); + ircd_snprintf(0, buf, sizeof(buf), "%u %s %s", + id, mask, key); memset(buffer, 0, sizeof(buffer)); strncpy((char *)buffer, buf, sizeof(buffer) - 1); @@ -623,7 +626,7 @@ vsprintf(exitmsg2, pattern, vl); va_end(vl); - sprintf(exitmsg, "DDB Error: %s", exitmsg2); + ircd_snprintf(0, exitmsg, sizeof(exitmsg), "DDB Error: %s", exitmsg2); for (i = 0; i <= HighestFd; i++) { Index: ircd-ircdev/ircd/ddb_db_native.c diff -u ircd-ircdev/ircd/ddb_db_native.c:1.2 ircd-ircdev/ircd/ddb_db_native.c:1.3 --- ircd-ircdev/ircd/ddb_db_native.c:1.2 Sat May 7 05:43:29 2005 +++ ircd-ircdev/ircd/ddb_db_native.c Sat May 7 15:23:40 2005 @@ -22,7 +22,7 @@ */ /** @file * @brief Native DataBase implementation of Distributed DataBase. - * @version $Id: ddb_db_native.c,v 1.2 2005/05/07 12:43:29 zolty Exp $ + * @version $Id: ddb_db_native.c,v 1.3 2005/05/07 22:23:40 zolty Exp $ */ #include "config.h" @@ -321,7 +321,7 @@ inttobase64(hash, ddb_hashtable_hi[table], 6); inttobase64(hash + 6, ddb_hashtable_lo[table], 6); - sprintf(path, "%c %s\n", table, hash); + ircd_snprintf(0, path, sizeof(path), "%c %s\n", table, hash); if (write(fd, path, strlen(path)) == -1) ddb_die("Error when saving table '%c' hashes (WRITE)", table); close(fd); Index: ircd-ircdev/ircd/ddb_events.c diff -u ircd-ircdev/ircd/ddb_events.c:1.2 ircd-ircdev/ircd/ddb_events.c:1.3 --- ircd-ircdev/ircd/ddb_events.c:1.2 Thu Apr 28 15:00:08 2005 +++ ircd-ircdev/ircd/ddb_events.c Sat May 7 15:23:40 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Events of Distributed DataBase. - * @version $Id: ddb_events.c,v 1.2 2005/04/28 22:00:08 zolty Exp $ + * @version $Id: ddb_events.c,v 1.3 2005/05/07 22:23:40 zolty Exp $ */ #include "config.h" @@ -29,6 +29,7 @@ #include "client.h" #include "hash.h" #include "ircd.h" +#include "ircd_snprintf.h" #include "ircd_tea.h" #include "msg.h" #include "numnicks.h" @@ -161,7 +162,8 @@ if (x[0] >= 4294000000ul) continue; - sprintf(newnick, "Guest%.6d", (int)(x[0] % 1000000)); + ircd_snprintf(0, newnick, sizeof(newnick), "Guest%.6d", + (int)(x[0] % 1000000)); acptr = FindUser(newnick); } while (acptr); @@ -170,7 +172,7 @@ parv[0] = cli_name(cptr); parv[1] = newnick; - sprintf(tmp, "%lu", TStime()); + ircd_snprintf(0, tmp, sizeof(tmp), "%T", TStime()); parv[2] = tmp; set_nick_name(cptr, cptr, newnick, 3, parv, flags); Index: ircd-ircdev/ircd/engine_epoll.c diff -u ircd-ircdev/ircd/engine_epoll.c:1.9 ircd-ircdev/ircd/engine_epoll.c:1.10 --- ircd-ircdev/ircd/engine_epoll.c:1.9 Mon Mar 21 10:39:06 2005 +++ ircd-ircdev/ircd/engine_epoll.c Sat May 7 15:23:40 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Linux epoll_*() event engine. - * @version $Id: engine_epoll.c,v 1.9 2005/03/21 18:39:06 zolty Exp $ + * @version $Id: engine_epoll.c,v 1.10 2005/05/07 22:23:40 zolty Exp $ */ #include "config.h" @@ -279,9 +279,9 @@ gen_ref_dec(sock); continue; } - } - - switch (s_state(sock)) { + } else if (events[i].events & EPOLLHUP) { + event_generate(ET_EOF, sock, 0); + } else switch (s_state(sock)) { case SS_CONNECTING: if (events[i].events & EPOLLOUT) /* connection completed */ event_generate(ET_CONNECT, sock, 0); @@ -294,12 +294,6 @@ case SS_NOTSOCK: case SS_CONNECTED: - if (events[i].events & EPOLLIN) - event_generate((events[i].events & EPOLLHUP) ? ET_EOF : ET_READ, sock, 0); - if (events[i].events & EPOLLOUT) - event_generate(ET_WRITE, sock, 0); - break; - case SS_DATAGRAM: case SS_CONNECTDG: if (events[i].events & EPOLLIN) Index: ircd-ircdev/ircd/ircd_auth.c diff -u ircd-ircdev/ircd/ircd_auth.c:1.5 ircd-ircdev/ircd/ircd_auth.c:1.6 --- ircd-ircdev/ircd/ircd_auth.c:1.5 Mon Mar 21 10:39:07 2005 +++ ircd-ircdev/ircd/ircd_auth.c Sat May 7 15:23:40 2005 @@ -22,7 +22,7 @@ */ /** @file * @brief IAuth client implementation for an IRC server. - * @version $Id: ircd_auth.c,v 1.5 2005/03/21 18:39:07 zolty Exp $ + * @version $Id: ircd_auth.c,v 1.6 2005/05/07 22:23:40 zolty Exp $ */ #include "config.h" #include "client.h" @@ -245,6 +245,7 @@ memset(&i_addr(iauth), 0, sizeof(i_addr(iauth))); i_port(iauth) = port; iauth_active = iauth; + timer_init(&i_reconn_timer(iauth)); i_reconnect(iauth) = reconnect; iauth_reconnect(iauth); } @@ -313,7 +314,7 @@ if (t_active(&i_request_timer(iauth))) timer_del(&i_request_timer(iauth)); /* Disconnect from the server. */ - if (s_fd(&i_socket(iauth)) != -1) + if (i_GetConnected(iauth)) iauth_disconnect(iauth); /* Free memory. */ MyFree(iauth); @@ -400,7 +401,7 @@ { close(s_fd(&i_socket(iauth))); socket_del(&i_socket(iauth)); - s_fd(&i_socket(iauth)) = -1; + i_ClrConnected(iauth); } /** DNS completion callback for an %IAuth connection. @@ -411,11 +412,11 @@ { struct IAuth *iauth = vptr; if (!he) { - sendto_opmask_butone(0, SNO_OLDSNO, "IAuth connection to %s failed: host lookup failed", i_host(iauth)); + log_write(LS_IAUTH, L_NOTICE, 0, "IAuth connection to %s failed: host lookup failed", i_host(iauth)); } else { memcpy(&i_addr(iauth).addr, &he->addr, sizeof(i_addr(iauth).addr)); if (!irc_in_addr_valid(&i_addr(iauth).addr)) { - sendto_opmask_butone(0, SNO_OLDSNO, "IAuth connection to %s failed: host came back as unresolved", i_host(iauth)); + log_write(LS_IAUTH, L_NOTICE, 0, "IAuth connection to %s failed: host came back as unresolved", i_host(iauth)); return; } iauth_reconnect(iauth); @@ -437,9 +438,12 @@ static void iauth_schedule_reconnect(struct IAuth *iauth) { struct Timer *timer; - assert(!t_active(&i_reconn_timer(iauth))); - timer = timer_init(&i_reconn_timer(iauth)); - timer_add(timer, iauth_reconnect_ev, iauth, TT_RELATIVE, i_reconnect(iauth)); + timer = &i_reconn_timer(iauth); + if (t_onqueue(timer)) + timer_chg(timer, TT_RELATIVE, i_reconnect(iauth)); + else + timer_add(&i_reconn_timer(iauth), iauth_reconnect_ev, + iauth, TT_RELATIVE, i_reconnect(iauth)); } /** Initiate a (re-)connection to \a iauth. @@ -451,7 +455,12 @@ IOResult result; int fd; - Debug((DEBUG_INFO, "IAuth attempt connection to %s port %p.", i_host(iauth), i_port(iauth))); + if (i_GetConnected(iauth)) { + iauth_disconnect(iauth); + iauth_schedule_reconnect(iauth); + return; + } + log_write(LS_IAUTH, L_DEBUG, 0, "IAuth attempt connection to %s port %p.", i_host(iauth), i_port(iauth)); if (!irc_in_addr_valid(&i_addr(iauth).addr) && !ircd_aton(&i_addr(iauth).addr, i_host(iauth))) { i_query(iauth).vptr = iauth; @@ -461,26 +470,32 @@ } local = irc_in_addr_is_ipv4(&i_addr(iauth).addr) ? &VirtualHost_v4 : &VirtualHost_v6; fd = os_socket(local, SOCK_STREAM, "IAuth"); - if (fd < 0) + if (fd < 0) { + iauth_schedule_reconnect(iauth); return; + } if (!os_set_sockbufs(fd, SERVER_TCP_WINDOW, SERVER_TCP_WINDOW)) { - close(fd); - sendto_opmask_butone(0, SNO_OLDSNO, "IAuth reconnect unable to set socket buffers: %s", strerror(errno)); - return; + log_write(LS_IAUTH, L_WARNING, 0, "IAuth reconnect unable to set socket buffers: %s", strerror(errno)); + goto failure; } + s_fd(&i_socket(iauth)) = fd; result = os_connect_nonb(fd, &i_addr(iauth)); if (result == IO_FAILURE) { - close(fd); - sendto_opmask_butone(0, SNO_OLDSNO, "IAuth reconnect unable to initiate connection: %s", strerror(errno)); - return; + log_write(LS_IAUTH, L_NOTICE, 0, "IAuth reconnect unable to initiate connection: %s", strerror(errno)); + goto failure; } if (!socket_add(&i_socket(iauth), iauth_sock_callback, iauth, (result == IO_SUCCESS) ? SS_CONNECTED : SS_CONNECTING, SOCK_EVENT_READABLE | SOCK_EVENT_WRITABLE, fd)) { - close(fd); - sendto_opmask_butone(0, SNO_OLDSNO, "IAuth reconnect unable to add socket: %s", strerror(errno)); - return; + log_write(LS_IAUTH, L_WARNING, 0, "IAuth reconnect unable to add socket: %s", strerror(errno)); + goto failure; } + return; +failure: + close(fd); + i_ClrConnected(iauth); + iauth_schedule_reconnect(iauth); + return; } /** Read input from \a iauth. @@ -494,8 +509,11 @@ char readbuf[SERVER_TCP_WINDOW]; length = 0; - if (IO_FAILURE == os_recv_nonb(s_fd(&i_socket(iauth)), readbuf, sizeof(readbuf), &length)) - return; + if (IO_FAILURE == os_recv_nonb(s_fd(&i_socket(iauth)), readbuf, sizeof(readbuf), &length) + || length == 0) { + iauth_reconnect(iauth); + return; + } i_recvB(iauth) += length; if (i_recvB(iauth) > 1023) { i_recvK(iauth) += i_recvB(iauth) >> 10; @@ -609,13 +627,12 @@ i_ClrBlocked(iauth); iauth_write(iauth); break; - case ET_EOF: - iauth_disconnect(iauth); - break; case ET_ERROR: - sendto_opmask_butone(0, SNO_OLDSNO, "IAuth socket error: %s", strerror(ev_data(ev))); - log_write(LS_SOCKET, L_ERROR, 0, "IAuth socket error: %s", strerror(ev_data(ev))); + log_write(LS_IAUTH, L_ERROR, 0, "IAuth socket error: %s", strerror(ev_data(ev))); + /* and fall through to the ET_EOF case */ + case ET_EOF: iauth_disconnect(iauth); + iauth_schedule_reconnect(iauth); break; default: assert(0 && "Unrecognized event type"); @@ -632,7 +649,7 @@ { /* TODO: this could probably be more intelligent */ if (ev_type(ev) == ET_EXPIRE) { - sendto_opmask_butone(0, SNO_OLDSNO, "IAuth request timed out; reconnecting"); + log_write(LS_IAUTH, L_NOTICE, 0, "IAuth request timed out; reconnecting"); iauth_reconnect(t_data(ev_timer(ev))); } } @@ -683,6 +700,7 @@ /* Allocate and initialize IAuthRequest struct. */ if (!(iar = MyCalloc(1, sizeof(*iar)))) return exit_client(cptr, cptr, &me, "IAuth memory allocation failed"); + cli_iauth(cptr) = iar; iar->iar_next = &i_list_head(iauth); iar->iar_prev = i_list_head(iauth).iar_prev; iar->iar_client = cptr; @@ -704,8 +722,10 @@ if (cli_iauth(cptr)) { iauth_dispose_request(iauth_active, cli_iauth(cptr)); cli_iauth(cptr) = NULL; - } else if (IsIAuthed(cptr) && i_GetIClass(iauth_active)) { - /* TODO: report quit to iauth */ + } + if (iauth_active && i_GetConnected(iauth_active)) { + iauth_send(iauth_active, "ExitUser %x", cptr); + iauth_write(iauth_active); } } @@ -736,7 +756,7 @@ static void iauth_dispose_request(struct IAuth *iauth, struct IAuthRequest *iar) { assert(iar->iar_client != NULL); - if (iar->iar_timed) + if (iar->iar_timed && t_active(&i_request_timer(iauth))) timer_del(&i_request_timer(iauth)); cli_iauth(iar->iar_client) = NULL; iar->iar_prev->iar_next = iar->iar_next; Index: ircd-ircdev/ircd/ircd_log.c diff -u ircd-ircdev/ircd/ircd_log.c:1.9 ircd-ircdev/ircd/ircd_log.c:1.10 --- ircd-ircdev/ircd/ircd_log.c:1.9 Wed Mar 23 10:34:48 2005 +++ ircd-ircdev/ircd/ircd_log.c Sat May 7 15:23:40 2005 @@ -22,7 +22,7 @@ */ /** @file * @brief IRC logging implementation. - * @version $Id: ircd_log.c,v 1.9 2005/03/23 18:34:48 zolty Exp $ + * @version $Id: ircd_log.c,v 1.10 2005/05/07 22:23:40 zolty Exp $ */ #include "config.h" @@ -165,8 +165,8 @@ S(OPER, -1, SNO_OLDREALOP), S(RESOLVER, -1, 0), S(SOCKET, -1, 0), + S(IAUTH, -1, SNO_NETWORK), S(DEBUG, -1, SNO_DEBUG), - S(OLDLOG, -1, 0), #undef S { LS_LAST_SYSTEM, 0, 0, -1, 0, -1, 0 } }; Index: ircd-ircdev/ircd/m_db.c diff -u ircd-ircdev/ircd/m_db.c:1.4 ircd-ircdev/ircd/m_db.c:1.5 --- ircd-ircdev/ircd/m_db.c:1.4 Sat May 7 05:43:29 2005 +++ ircd-ircdev/ircd/m_db.c Sat May 7 15:23:40 2005 @@ -22,7 +22,7 @@ */ /** @file * @brief Handlers for DB command. - * @version $Id: m_db.c,v 1.4 2005/05/07 12:43:29 zolty Exp $ + * @version $Id: m_db.c,v 1.5 2005/05/07 22:23:40 zolty Exp $ */ /* TODO-ZOLTAN * Traducidr los comentarios al ingles */ @@ -149,14 +149,15 @@ /* Desconectamos con todos los hubs menos el que nos envia la orden */ log_write(LS_DDB, L_INFO, 0, "DB Drop Table %c from %#C", table, cptr); - sprintf(ddb_buf, "DB DROP Table %c from %s", table, cli_name(cptr)); + ircd_snprintf(0, ddb_buf, sizeof(ddb_buf), "DB DROP Table %c from %s", + table, cli_name(cptr)); ddb_splithubs_butone(cptr, ddb_buf); /* Mandamos la respuesta de conformidad */ sendcmdto_one(&me, CMD_DB, cptr, "%s 0 E %s %c", cli_name(cptr), parv[4], table); - /* TODO-ZOLTAN: Cosa de ryden. Creo que hay que mandar a todos */ + /* TODO-ZOLTAN: Creo que hay que mandar a todos */ cli_serv(cptr)->ddb_open &= ~ddb_mask; /* Solicitamos de nuevo la tabla */ @@ -368,10 +369,10 @@ (cli_serv(lp->value.cptr)->ddb_open & ddb_mask)) { if (!delete) - sendcmdto_one(&me, CMD_DB, lp->value.cptr, "%s %u %c %s %s :%s", + sendcmdto_one(&me, CMD_DB, lp->value.cptr, "%s %u %c %s :%s", parv[1], id, table, parv[4], parv[5]); else - sendcmdto_one(&me, CMD_DB, lp->value.cptr, "%s %u %c %s %s", + sendcmdto_one(&me, CMD_DB, lp->value.cptr, "%s %u %c %s", parv[1], id, table, parv[4]); } } Index: ircd-ircdev/ircd/m_invite.c diff -u ircd-ircdev/ircd/m_invite.c:1.10 ircd-ircdev/ircd/m_invite.c:1.11 --- ircd-ircdev/ircd/m_invite.c:1.10 Thu Apr 28 15:00:08 2005 +++ ircd-ircdev/ircd/m_invite.c Sat May 7 15:23:40 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: m_invite.c,v 1.10 2005/04/28 22:00:08 zolty Exp $ + * $Id: m_invite.c,v 1.11 2005/05/07 22:23:40 zolty Exp $ * */ @@ -179,6 +179,9 @@ if (MyConnect(acptr)) { add_invite(acptr, chptr); sendcmdto_one(sptr, CMD_INVITE, acptr, "%s %H", cli_name(acptr), chptr); + } else { + sendcmdto_one(sptr, CMD_INVITE, acptr, "%s %H %Tu", cli_name(acptr), chptr, + chptr->creationtime); } if (!IsLocalChannel(chptr->chname) || MyConnect(acptr)) { @@ -189,7 +192,7 @@ "%H %C %C :%C has been invited by %C", chptr, acptr, sptr, acptr, sptr); /* Announce to servers with channel operators. */ - sendcmdto_channel_servers_butone(sptr, NULL, TOK_INVITE, chptr, NULL, SKIP_NONOPS, + sendcmdto_channel_servers_butone(sptr, NULL, TOK_INVITE, chptr, acptr, SKIP_NONOPS, "%s %H %Tu", cli_name(acptr), chptr, chptr->creationtime); } @@ -281,8 +284,11 @@ return 0; if (MyConnect(acptr)) { - add_invite(acptr, chptr); - sendcmdto_one(sptr, CMD_INVITE, acptr, "%s %H", cli_name(acptr), chptr); + add_invite(acptr, chptr); + sendcmdto_one(sptr, CMD_INVITE, acptr, "%s %H", cli_name(acptr), chptr); + } else { + sendcmdto_one(sptr, CMD_INVITE, acptr, "%s %H %Tu", cli_name(acptr), chptr, + chptr->creationtime); } if (feature_bool(FEAT_ANNOUNCE_INVITES)) { @@ -292,11 +298,10 @@ "%H %C %C :%C has been invited by %C", chptr, acptr, sptr, acptr, sptr); /* Announce to servers with channel operators. */ - sendcmdto_channel_servers_butone(sptr, NULL, TOK_INVITE, chptr, NULL, SKIP_NONOPS, + sendcmdto_channel_servers_butone(sptr, NULL, TOK_INVITE, chptr, acptr, SKIP_NONOPS, "%s %H %Tu", cli_name(acptr), chptr, chptr->creationtime); } return 0; } - Index: ircd-ircdev/ircd/m_join.c diff -u ircd-ircdev/ircd/m_join.c:1.10 ircd-ircdev/ircd/m_join.c:1.11 --- ircd-ircdev/ircd/m_join.c:1.10 Mon Mar 21 10:39:08 2005 +++ ircd-ircdev/ircd/m_join.c Sat May 7 15:23:40 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: m_join.c,v 1.10 2005/03/21 18:39:08 zolty Exp $ + * $Id: m_join.c,v 1.11 2005/05/07 22:23:40 zolty Exp $ * */ @@ -169,9 +169,6 @@ struct Channel *chptr; struct JoinBuf join; struct JoinBuf create; -#if defined(UNDERNET) - struct ModeBuf mbuf; -#endif struct Gline *gline; unsigned int flags = 0; int i, j, k = 0; @@ -249,8 +246,7 @@ #if defined(UNDERNET) int is_level0_op = 0; if (!BadPtr(keys) && *chptr->mode.apass) { - /* Don't use compall for the apass, only a single key is allowed. - Test Apass first in case someone set Apass and upass equal. */ + /* Don't use compall for the apass, only a single key is allowed. */ if (strcmp(chptr->mode.apass, keys) == 0) { is_level0_op = 1; flags &= ~CHFL_DEOPPED; @@ -307,18 +303,6 @@ } /* else if ((i = can_join(sptr, chptr, keys))) */ joinbuf_join(&join, chptr, flags); -#if defined(UNDERNET) - if (is_level0_op) - { - joinbuf_flush(&join); - modebuf_init(&mbuf, &me, cptr, chptr, - MODEBUF_DEST_CHANNEL | /* Send mode to channel */ - MODEBUF_DEST_SERVER); /* And send it to the other servers */ - modebuf_mode_client(&mbuf, - MODE_ADD | MODE_CHANOP, sptr); /* Give ops to the level0 op */ - modebuf_flush(&mbuf); - } -#endif } else if (!(chptr = get_channel(sptr, name, CGT_CREATE))) continue; /* couldn't get channel */ else if (check_target_limit(sptr, chptr, chptr->chname, 1)) @@ -365,7 +349,7 @@ struct Membership *member; struct Channel *chptr; struct JoinBuf join; - unsigned int flags = 0; + unsigned int flags; time_t creation = 0; char *p = 0; char *chanlist; @@ -398,6 +382,21 @@ if (join0(&join, cptr, sptr, name)) /* did client do a JOIN 0? */ continue; +#if defined(UNDERNET) + if (name[0] == '0' && name[1] == ':') + { + flags = CHFL_CHANOP | CHFL_CHANNEL_MANAGER; + name += 2; + } + else if (name[0] == '1' && name[1] == ':') + { + flags = CHFL_CHANOP; + name += 2; + } + else + flags = CHFL_DEOPPED; +#endif + if (IsLocalChannel(name) || !IsChannelName(name)) { protocol_violation(cptr, "%s tried to join %s", cli_name(sptr), name); @@ -413,9 +412,9 @@ name,cli_name(sptr)); continue; } - flags = CHFL_DEOPPED | (HasFlag(sptr, FLAG_TS8) ? CHFL_SERVOPOK : 0); + flags |= HasFlag(sptr, FLAG_TS8) ? CHFL_SERVOPOK : 0; - /* when the network is 2.10.11+ then remove MAGIC_REMOTE_JOIN_TS */ + /* when the network is 2.10.11+ then remove MAGIC_REMOTE_JOIN_TS */ chptr->creationtime = creation ? creation : MAGIC_REMOTE_JOIN_TS; } else { /* We have a valid channel? */ @@ -430,12 +429,12 @@ chptr = FindChannel(name); } else - flags = CHFL_DEOPPED | (HasFlag(sptr, FLAG_TS8) ? CHFL_SERVOPOK : 0); + flags |= HasFlag(sptr, FLAG_TS8) ? CHFL_SERVOPOK : 0; /* Always copy the timestamp when it is older, that is the only way to ensure network-wide synchronization of creation times. */ if (creation && creation < chptr->creationtime) chptr->creationtime = creation; - } + } joinbuf_join(&join, chptr, flags); } Index: ircd-ircdev/ircd/m_svsnick.c diff -u ircd-ircdev/ircd/m_svsnick.c:1.1 ircd-ircdev/ircd/m_svsnick.c:1.2 --- ircd-ircdev/ircd/m_svsnick.c:1.1 Thu Mar 31 04:58:04 2005 +++ ircd-ircdev/ircd/m_svsnick.c Sat May 7 15:23:40 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Handlers for SVSNICK command. - * @version $Id: m_svsnick.c,v 1.1 2005/03/31 12:58:04 zolty Exp $ + * @version $Id: m_svsnick.c,v 1.2 2005/05/07 22:23:40 zolty Exp $ */ #include "config.h" @@ -122,7 +122,8 @@ if (x[0] >= 4294000000ul) continue; - sprintf(newnick, "Guest%.6d", (int)(x[0] % 1000000)); + ircd_snprintf(0, newnick, sizeof(newnick), "Guest%.6d", + (int)(x[0] % 1000000)); bcptr = FindUser(newnick); } while (bcptr); @@ -141,7 +142,7 @@ parv[1] = newnick; { char tmp[100]; - sprintf(tmp, "%lu", TStime()); + ircd_snprintf(0, tmp, sizeof(tmp), "%T", TStime()); parv[2] = tmp; } Index: ircd-ircdev/ircd/numnicks.c diff -u ircd-ircdev/ircd/numnicks.c:1.7 ircd-ircdev/ircd/numnicks.c:1.8 --- ircd-ircdev/ircd/numnicks.c:1.7 Fri Apr 22 09:22:13 2005 +++ ircd-ircdev/ircd/numnicks.c Sat May 7 15:23:40 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Implementation of numeric nickname operations. - * @version $Id: numnicks.c,v 1.7 2005/04/22 16:22:13 zolty Exp $ + * @version $Id: numnicks.c,v 1.8 2005/05/07 22:23:40 zolty Exp $ */ #include "config.h" @@ -505,9 +505,12 @@ memset(addr, 0, sizeof(*addr)); if (strlen(input) == 6) { unsigned int in = base64toint(input); - addr->in6_16[5] = htons(65535); - addr->in6_16[6] = htons(in >> 16); - addr->in6_16[7] = htons(in & 65535); + /* An all-zero address should stay that way. */ + if (in) { + addr->in6_16[5] = htons(65535); + addr->in6_16[6] = htons(in >> 16); + addr->in6_16[7] = htons(in & 65535); + } } else { unsigned int pos = 0; do { Index: ircd-ircdev/ircd/s_err.c diff -u ircd-ircdev/ircd/s_err.c:1.18 ircd-ircdev/ircd/s_err.c:1.19 --- ircd-ircdev/ircd/s_err.c:1.18 Thu Apr 28 15:00:09 2005 +++ ircd-ircdev/ircd/s_err.c Sat May 7 15:23:40 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Error handling support. - * @version $Id: s_err.c,v 1.18 2005/04/28 22:00:09 zolty Exp $ + * @version $Id: s_err.c,v 1.19 2005/05/07 22:23:40 zolty Exp $ */ #include "config.h" @@ -1146,22 +1146,6 @@ { 0 }, /* 549 */ { 0 }, -#if defined(UNDERNET) -/* 550 */ - { ERR_NOTLOWEROPLEVEL, "%s %s %hu %hu :Cannot %s someone with %s op-level", "550" }, -/* 551 */ - { ERR_NOTMANAGER, "%s :You must be channel Admin to add or remove a password. Use /JOIN %s <AdminPass>.", "551" }, -/* 552 */ - { ERR_CHANSECURED, "%s :Channel is older than 48 hours and secured. Cannot change Admin pass anymore", "552" }, -/* 553 */ - { ERR_UPASSSET, "%s :Cannot remove Admin pass (+A) while User pass (+U) is still set. First use /MODE %s -U <userpass>", "553" }, -/* 554 */ - { ERR_UPASSNOTSET, "%s :Cannot set user pass (+U) while Admin pass (+A) is set. First use /MODE %s +A <adminpass>", "554" }, - /* 555 */ - { ERR_NOMANAGER_LONG, "%s :Re-create the channel. The channel must be *empty* for 48 continuous hours before it can be recreated.", "555" }, - /* 556 */ - { ERR_NOMANAGER_SHORT, "%s :Re-create the channel. The channel must be *empty* for a minute or two before it can be recreated.", "556" }, -#else /* 550 */ { 0 }, /* 551 */ @@ -1176,13 +1160,30 @@ { 0 }, /* 556 */ { 0 }, -#endif /* 557 */ { 0 }, /* 558 */ { 0 }, /* 559 */ { 0 }, +#if defined(UNDERNET) +/* 560 */ + { ERR_NOTLOWEROPLEVEL, "%s %s %hu %hu :Cannot %s someone with %s op-level", "550" }, +/* 561 */ + { ERR_NOTMANAGER, "%s :You must be channel Admin to add or remove a password. Use /JOIN %s <AdminPass>.", "551" }, +/* 562 */ + { ERR_CHANSECURED, "%s :Channel is older than 48 hours and secured. Cannot change Admin pass anymore", "552" }, +/* 563 */ + { ERR_UPASSSET, "%s :Cannot remove Admin pass (+A) while User pass (+U) is still set. First use /MODE %s -U <userpass>", "553" }, +/* 564 */ + { ERR_UPASSNOTSET, "%s :Cannot set user pass (+U) while Admin pass (+A) is set. First use /MODE %s +A <adminpass>", "554" }, +/* 565 */ + { ERR_NOMANAGER_LONG, "%s :Re-create the channel. The channel must be *empty* for 48 continuous hours before it can be recreated.", "555" }, +/* 566 */ + { ERR_NOMANAGER_SHORT, "%s :Re-create the channel. The channel must be *empty* for a minute or two before it can be recreated.", "556" }, +/* 567 */ + { ERR_UPASS_SAME_APASS, "%s :Cannot use the same pass for both admin (+A) and user (+U) pass.", "567" }, +#else /* 560 */ { 0 }, /* 561 */ @@ -1199,6 +1200,7 @@ { 0 }, /* 567 */ { 0 }, +#endif /* 568 */ { 0 }, /* 569 */ Index: ircd-ircdev/ircd/s_misc.c diff -u ircd-ircdev/ircd/s_misc.c:1.9 ircd-ircdev/ircd/s_misc.c:1.10 --- ircd-ircdev/ircd/s_misc.c:1.9 Sat Apr 2 11:47:35 2005 +++ ircd-ircdev/ircd/s_misc.c Sat May 7 15:23:40 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Miscellaneous support functions. - * @version $Id: s_misc.c,v 1.9 2005/04/02 19:47:35 zolty Exp $ + * @version $Id: s_misc.c,v 1.10 2005/05/07 22:23:40 zolty Exp $ */ #include "config.h" @@ -251,9 +251,8 @@ --UserStats.opers; if (MyConnect(bcptr)) Count_clientdisconnects(bcptr, UserStats); - else { + else Count_remoteclientquits(UserStats, bcptr); - } } else if (IsServer(bcptr)) { @@ -290,7 +289,7 @@ /* bcptr->user->server->serv->client_list[IndexYXX(bcptr)] = NULL; */ RemoveYXXClient(cli_user(bcptr)->server, cli_yxx(bcptr)); if (IsIAuthed(bcptr) || cli_iauth(bcptr)) - iauth_exit_client(bcptr); + iauth_exit_client(bcptr); } /* Remove bcptr from the client list */ Index: ircd-ircdev/ircd/s_stats.c diff -u ircd-ircdev/ircd/s_stats.c:1.13 ircd-ircdev/ircd/s_stats.c:1.14 --- ircd-ircdev/ircd/s_stats.c:1.13 Thu Apr 28 15:00:09 2005 +++ ircd-ircdev/ircd/s_stats.c Sat May 7 15:23:40 2005 @@ -22,7 +22,7 @@ /** @file * @brief Report configuration lines and other statistics from this * server. - * @version $Id: s_stats.c,v 1.13 2005/04/28 22:00:09 zolty Exp $ + * @version $Id: s_stats.c,v 1.14 2005/05/07 22:23:40 zolty Exp $ * * Note: The info is reported in the order the server uses * it--not reversed as in ircd.conf! @@ -175,12 +175,15 @@ { if (aconf->status != CONF_CLIENT) continue; - if ((!wilds && (!match(aconf->host, param) || - !match(aconf->name, param))) || - (wilds && (!mmatch(param, aconf->host) || - !mmatch(param, aconf->name)))) + if (wilds ? ((aconf->host && !mmatch(aconf->host, param)) + || (aconf->name && !mmatch(aconf->name, param))) + : ((aconf->host && !match(param, aconf->host)) + || (aconf->name && !match(param, aconf->name)))) { - send_reply(to, RPL_STATSILINE, 'I', aconf->host, aconf->name, + send_reply(to, RPL_STATSILINE, + (aconf->host ? aconf->host : "*"), aconf->maximum, + (aconf->name && aconf->name[0] == ':' ? "0" : ""), + aconf->name ? aconf->name : "*", aconf->address.port, get_conf_class(aconf)); if (--count == 0) break; Index: ircd-ircdev/ircd/s_user.c diff -u ircd-ircdev/ircd/s_user.c:1.16 ircd-ircdev/ircd/s_user.c:1.17 --- ircd-ircdev/ircd/s_user.c:1.16 Thu Apr 28 15:00:09 2005 +++ ircd-ircdev/ircd/s_user.c Sat May 7 15:23:40 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Miscellaneous user-related helper functions. - * @version $Id: s_user.c,v 1.16 2005/04/28 22:00:09 zolty Exp $ + * @version $Id: s_user.c,v 1.17 2005/05/07 22:23:40 zolty Exp $ */ #include "config.h" @@ -1738,9 +1738,7 @@ int i; struct Flags c_flags = cli_flags(cptr); - if (HasPriv(cptr, PRIV_PROPAGATE)) - FlagSet(&c_flags, FLAG_OPER); - else + if (!HasPriv(cptr, PRIV_PROPAGATE)) FlagClr(&c_flags, FLAG_OPER); for (i = 0; i < USERMODELIST_SIZE; ++i) ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-05-07 22:32:45
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-05-07 22:32:30 UTC Modified files: doc/ircd.sample-en.conf doc/ircd.sample-es.conf Log message: Actualizacion .confs ---------------------- diff included ---------------------- Index: ircd-ircdev/doc/ircd.sample-en.conf diff -u ircd-ircdev/doc/ircd.sample-en.conf:1.20 ircd-ircdev/doc/ircd.sample-en.conf:1.21 --- ircd-ircdev/doc/ircd.sample-en.conf:1.20 Sat Apr 23 08:57:02 2005 +++ ircd-ircdev/doc/ircd.sample-en.conf Sat May 7 15:32:20 2005 @@ -1,6 +1,6 @@ # ircd.conf - configuration file for IRC-Dev's IRCD. # -# Last Updated: 23, Apr 2005. +# Last Updated: 8, May 2005. # # Written by Niels <ni...@un...>, based on the original example.conf, # server code and some real-life (ahem) experience. @@ -519,12 +519,15 @@ # class = "classname"; # maxhops = 2; # hub = "*.eu.irc-dev.net"; +# autoconnect = no; # }; # # The "port" field defines the default port the server tries to connect # to if an operator uses /connect without specifying a port. This is also # the port used when the server attempts to auto-connect to the remote # server. (See "Class" blocks for more informationa about auto-connects). +# You may tell ircu to not automatically connect to a server by adding +# "autoconnect = no;"; the default is to autoconnect. # # The "maxhops" field causes an SQUIT if a hub tries to introduce # servers farther away than that; the element "leaf," is an alias for Index: ircd-ircdev/doc/ircd.sample-es.conf diff -u ircd-ircdev/doc/ircd.sample-es.conf:1.15 ircd-ircdev/doc/ircd.sample-es.conf:1.16 --- ircd-ircdev/doc/ircd.sample-es.conf:1.15 Sat Apr 23 08:57:13 2005 +++ ircd-ircdev/doc/ircd.sample-es.conf Sat May 7 15:32:20 2005 @@ -1,6 +1,6 @@ # ircd.conf - archivo de configuración para el IRCD de IRC-Dev. # -# Ultima actualización: 23, Abr 2005. +# Ultima actualización: 8, May 2005. # # Escrito por Niels <ni...@un...>, basado en el archivo example.conf # original, en el código del servidor y la experiencia de la vida real. @@ -544,6 +544,7 @@ # class = "nombreclase"; # maxhops = 2; # hub = "*.eu.irc-dev.net"; +# autoconnect = no; # }; # # El campo "port" define el puerto por defecto que el servidor intentará @@ -551,6 +552,8 @@ # un puerto. Este también es el puerto usado para los intentos del servidor # de autoconectar con el servidor remoto. (Véase los bloques "Class" para # más informacion sobre "auto-connects"). +# Puedes hacer que el ircd no se conecte automáticamente con un servidor +# añadiendo "autoconnect = no"; por defecto está la autoconexión. # # El campo "maxhops" causa un SQUIT si un hub intenta introducir servidores # más lejos que eso, el elemento "leaf"; es un alias para "maxhops = 0;". ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-05-16 19:51:49
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-05-16 11:31:30 UTC Modified files: ChangeLog ChangeLog.es include/patchlevel.h Added files: ircd/test/channel-1.cmd ircd/test/client-1.cmd ircd/test/die.cmd ircd/test/gline-1.cmd ircd/test/ircd-t1.conf ircd/test/run-tests.sh ircd/test/stats-1.cmd ircd/test/test-driver.pl Log message: Author: zoltan <zo...@ir...> Log message: 2005-05-16 Toni García <zo...@ir...> 1.0.alpha35 * Utilidades de Testing ---------------------- diff included ---------------------- Index: ircd-ircdev/ChangeLog diff -u ircd-ircdev/ChangeLog:1.36 ircd-ircdev/ChangeLog:1.37 --- ircd-ircdev/ChangeLog:1.36 Mon May 16 04:22:48 2005 +++ ircd-ircdev/ChangeLog Mon May 16 04:31:19 2005 @@ -1,10 +1,13 @@ # # ChangeLog for ircd-ircdev # -# $Id: ChangeLog,v 1.36 2005/05/16 11:22:48 zolty Exp $ +# $Id: ChangeLog,v 1.37 2005/05/16 11:31:19 zolty Exp $ # # Insert new changes at beginning of the change list. # +2005-05-16 Toni García <zo...@ir...> 1.0.alpha35 + * Testing tools + 2005-05-16 Toni García <zo...@ir...> 1.0.alpha34 * Undernet synchronization Index: ircd-ircdev/ChangeLog.es diff -u ircd-ircdev/ChangeLog.es:1.36 ircd-ircdev/ChangeLog.es:1.37 --- ircd-ircdev/ChangeLog.es:1.36 Mon May 16 04:22:48 2005 +++ ircd-ircdev/ChangeLog.es Mon May 16 04:31:19 2005 @@ -1,10 +1,13 @@ # # Log de Cambios para ircd-ircdev # -# $Id: ChangeLog.es,v 1.36 2005/05/16 11:22:48 zolty Exp $ +# $Id: ChangeLog.es,v 1.37 2005/05/16 11:31:19 zolty Exp $ # # Insertar los nuevos cambios al principio de esta lista de cambios. # +2005-05-16 Toni García <zo...@ir...> 1.0.alpha35 + * Utilidades de Testing + 2005-05-16 Toni García <zo...@ir...> 1.0.alpha34 * Sincronización Undernet Index: ircd-ircdev/include/patchlevel.h diff -u ircd-ircdev/include/patchlevel.h:1.35 ircd-ircdev/include/patchlevel.h:1.36 --- ircd-ircdev/include/patchlevel.h:1.35 Mon May 16 04:22:50 2005 +++ ircd-ircdev/include/patchlevel.h Mon May 16 04:31:20 2005 @@ -17,10 +17,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: patchlevel.h,v 1.35 2005/05/16 11:22:50 zolty Exp $ + * $Id: patchlevel.h,v 1.36 2005/05/16 11:31:20 zolty Exp $ * */ -#define PATCHLEVEL ".alpha34" +#define PATCHLEVEL ".alpha35" #define RELEASE "1.0" Index: ircd-ircdev/ircd/test/channel-1.cmd diff -u /dev/null ircd-ircdev/ircd/test/channel-1.cmd:1.1 --- /dev/null Mon May 16 04:31:30 2005 +++ ircd-ircdev/ircd/test/channel-1.cmd Mon May 16 04:31:20 2005 @@ -0,0 +1,48 @@ +define srv localhost:7701 + +connect cl1 Alex alex %srv% :Test client 1 +connect cl2 Bubb bubb %srv% :Test client 2 +:cl1 join #test +:cl1 join #test2 +:cl1 mode #test +bb *!*@127.0.0.1 *!*@127.0.0.2 +:cl2 wait cl1 +:cl2 join #test +:cl1 wait cl2 +:cl1 invite Bubb #test +:cl2 expect *cl1 invite #test +:cl2 join #test +:cl2 privmsg #test :Hello, *cl1. +:cl2 nick Buba +:cl2 mode #test +l 15 +:cl1 wait cl2 +:cl1 privmsg #test :Hello, *cl2. +:cl1 mode #test -b+kv *!*@127.0.0.1 secret Bubb +:cl1 mode #test +b foo!bar@baz +:cl1 mode #test +b +:cl1 mode #test : +:cl1 mode #test +:cl1 raw who #test %lfuh +:cl2 wait cl1 +:cl2 part #test +:cl1 wait cl2 +:cl2 join #test public +:cl2 join #test secret +:cl1 join 0 +:cl1 join #test2 +:cl2 wait cl1 +:cl2 join #test2 +:cl1 wait cl2 +:cl1 mode #test2 +smtinrDlAU 15 apples oranges +:cl1 mode #test2 +:cl2 wait cl1 +:cl2 join #test2 apples +:cl2 privmsg #test2 :Hello, oplevels. +:cl2 mode #test2 +:cl2 mode #test2 -io+v Alex Alex +:cl1 wait cl2 +:cl1 part #test2 +:cl1 join #test2 +:cl2 wait cl1 +:cl2 mode #test2 -D +:cl2 mode #test +v Alex +:cl1 wait cl2 Index: ircd-ircdev/ircd/test/client-1.cmd diff -u /dev/null ircd-ircdev/ircd/test/client-1.cmd:1.1 --- /dev/null Mon May 16 04:31:30 2005 +++ ircd-ircdev/ircd/test/client-1.cmd Mon May 16 04:31:20 2005 @@ -0,0 +1,15 @@ +define srv localhost:7701 + +connect cl1 Alex alex %srv% :Test client 1 +:cl1 oper oper1 oper1 +connect cl2 Bubb bubb %srv% :Test client 2 +:cl2 oper oper3 oper4 +:cl2 oper oldoper wrongpass +:cl2 oper md5oper wrongpass +:cl2 oper cryptoper wrongpass +:cl2 oper oper2 oper2 +:cl2 raw :privs Alex Alex +:cl1 wait cl2 +:cl1 raw :privs Bubb +:cl1 nick A +:cl1 nick Alexey Index: ircd-ircdev/ircd/test/die.cmd diff -u /dev/null ircd-ircdev/ircd/test/die.cmd:1.1 --- /dev/null Mon May 16 04:31:30 2005 +++ ircd-ircdev/ircd/test/die.cmd Mon May 16 04:31:20 2005 @@ -0,0 +1,5 @@ +connect cl1 Alex alex localhost:7701 :Test client 1 +:cl1 oper oper1 oper1 +:cl1 raw :restart brb +:cl1 oper oper1 oper1 +:cl1 raw :die :testing over Index: ircd-ircdev/ircd/test/gline-1.cmd diff -u /dev/null ircd-ircdev/ircd/test/gline-1.cmd:1.1 --- /dev/null Mon May 16 04:31:30 2005 +++ ircd-ircdev/ircd/test/gline-1.cmd Mon May 16 04:31:20 2005 @@ -0,0 +1,26 @@ +define srv localhost:7701 + +connect cl1 Alex alex %srv% :Test client 1 +:cl1 oper oper1 oper1 +:cl1 raw :gline !+$Rbubb 30 :Bubb is not welcome here +:cl1 sleep 35 +:cl1 raw :gline !+127.2.* 3600 :Localclone? +:cl1 sleep 5 +:cl1 raw :gline !+127.2.* 3600 :Localclone? +connect cl2 Bubb bubb %srv% :Test client 2 +:cl1 raw :gline +:cl1 raw :gline $Rbubb +:cl1 raw :gline -$Rbubb +:cl1 wait cl2 +:cl1 raw :gline !+$Rbubb * 3600 :Bubb is not welcome here +:cl1 sleep 5 +:cl1 raw :gline -$Rbubb +:cl1 raw :gline +#warez 30 :Warez r bad mmkay +:cl2 wait cl1 +:cl2 join #warez +:cl1 sleep 35 +:cl1 raw :stats glines +:cl1 raw :gline !+*@127.0.0.2 3600 :Localclone? +:cl1 raw :gline !+127.1.* 3600 :Localclone? +:cl1 raw :stats memory +:cl2 raw :gline Index: ircd-ircdev/ircd/test/ircd-t1.conf diff -u /dev/null ircd-ircdev/ircd/test/ircd-t1.conf:1.1 --- /dev/null Mon May 16 04:31:30 2005 +++ ircd-ircdev/ircd/test/ircd-t1.conf Mon May 16 04:31:20 2005 @@ -0,0 +1,97 @@ +General { + name = "test-1.example.net"; + vhost = "127.0.0.1"; + vhost = "::1"; + description = "Test Server 1"; + numeric = 1; +}; + +Admin { + location = "Somewhere"; + contact = "Someone"; +}; + +Class { + name = "Server"; + pingfreq = 180 seconds; + connectfreq = 300 seconds; + maxlinks = 1; + sendq = 9000000; +}; + +Class { + name = "others"; + pingfreq = 180 seconds; + sendq = 160000; + maxlinks = 100; + usermode = "+oiwx"; +}; + +Class { + name = "Opers"; + pingfreq = 180 seconds; + sendq = 160000; + maxlinks = 10; + local = no; +}; + +Connect { + name = "bogus.example.net"; + host = "example.net"; + password = "bogus_example"; + port = 7700; + class = "Server"; + maxhops = 2; + hub = "*.example.net"; + autoconnect = yes; # forces a DNS resolution attempt +}; + +CRule { + server = "bogus.example.net"; + all = yes; + rule = "connected(*)"; +}; + +CRule { + server = "bogus.example.net"; + all = no; + rule = "directcon(*)"; +}; + +UWorld { + name = "uworld.example.net"; + name = "uworld2.example.net"; +}; + +Jupe { + nick = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q"; + nick = "R,S,T,U,V,W,X,Y,Z,{,|,},~,-,_,`"; +}; + +Operator { name = "oper1"; host = "*@*"; password = "$PLAIN$oper1"; class = "Opers"; }; +Operator { name = "oper2"; host = "*@*"; password = "$PLAIN$oper2"; class = "Opers"; local = yes; }; +Operator { name = "oldoper"; host = "*@*"; password = "Xlfc26b4eYGWs"; class = "Opers"; }; +Operator { name = "md5oper"; host = "*@*"; password = "$SMD5$2O$4O.rSAmhE4Fg05MmG.047/"; class = "Opers"; }; +Operator { name = "cryptoper"; host = "*@*"; password = "$CRYPT$41ndrxPQu3B66"; class = "Opers"; }; + +Kill { username = "sub7"; realname = "s*7*"; reason = "You are infected with a Trojan"; }; +Kill { realname = "Chloe"; reason = "drones"; }; +Kill { username = "sub7"; reason = "You are infected with a Trojan"; }; + +Client { class = "others"; ip = "*"; }; + +Port { server = yes; port = 7700; }; +Port { server = no; port = 7701; }; + +Quarantine { + "#shells" = "Thou shalt not support the h4><0rz"; +}; + +Pseudo "X" { + name = "X"; + nick = "X...@ch..."; +}; + +Features { + "HIS_STATS_k" = "FALSE"; +}; Index: ircd-ircdev/ircd/test/run-tests.sh diff -u /dev/null ircd-ircdev/ircd/test/run-tests.sh:1.1 --- /dev/null Mon May 16 04:31:30 2005 +++ ircd-ircdev/ircd/test/run-tests.sh Mon May 16 04:31:20 2005 @@ -0,0 +1,12 @@ +#! /bin/sh +set -e +srcdir=$1 +for script in channel-1 client-1 stats-1 gline-1 ; do + echo "Running test $script." + ${srcdir}/test-driver.pl ${srcdir}/${script}.cmd +done +echo "Terminating server." +${srcdir}/test-driver.pl ${srcdir}/die.cmd +../ircd -? +../ircd -v +../ircd -x 6 -k -d ${srcdir} -f ircd-t1.conf -c user@127.0.0.1 Index: ircd-ircdev/ircd/test/stats-1.cmd diff -u /dev/null ircd-ircdev/ircd/test/stats-1.cmd:1.1 --- /dev/null Mon May 16 04:31:30 2005 +++ ircd-ircdev/ircd/test/stats-1.cmd Mon May 16 04:31:20 2005 @@ -0,0 +1,91 @@ +# Connect to server +connect cl1 Alex alex localhost:7701 :Test client 1 +:cl1 oper oper1 oper1 + +# Single letter stats commands +:cl1 raw :stats a +:cl1 raw :stats c +:cl1 raw :stats d +:cl1 raw :stats D +:cl1 raw :stats e +:cl1 raw :stats f +:cl1 raw :stats g +:cl1 raw :stats i +:cl1 raw :stats j +:cl1 raw :stats J +:cl1 raw :stats k +:cl1 raw :stats l +:cl1 raw :stats L +:cl1 raw :stats m +:cl1 raw :stats o +:cl1 raw :stats p +:cl1 raw :stats q +:cl1 raw :stats r +:cl1 raw :stats R +:cl1 raw :stats t +:cl1 raw :stats T +:cl1 raw :stats u +:cl1 raw :stats U +:cl1 raw :stats v +:cl1 raw :stats V +:cl1 raw :stats w +:cl1 raw :stats x +:cl1 raw :stats z +:cl1 raw :stats * + +# Named stats commands +:cl1 raw :stats nameservers +:cl1 raw :stats connect +:cl1 raw :stats maskrules +:cl1 raw :stats crules +:cl1 raw :stats engine +:cl1 raw :stats features +:cl1 raw :stats glines +:cl1 raw :stats access +:cl1 raw :stats histogram +:cl1 raw :stats jupes +:cl1 raw :stats klines +:cl1 raw :stats links +:cl1 raw :stats modules +:cl1 raw :stats commands +:cl1 raw :stats operators +:cl1 raw :stats ports +:cl1 raw :stats quarantines +:cl1 raw :stats mappings +:cl1 raw :stats usage +:cl1 raw :stats motds +:cl1 raw :stats locals +:cl1 raw :stats uworld +:cl1 raw :stats uptime +:cl1 raw :stats vservers +:cl1 raw :stats vserversmach +:cl1 raw :stats userload +:cl1 raw :stats memusage +:cl1 raw :stats classes +:cl1 raw :stats memory +:cl1 raw :stats help +:cl1 raw :hash +:cl1 raw :rehash +:cl1 nick Alexey + +# Varparam stats +:cl1 raw :stats access * 127.0.0.1 +:cl1 raw :stats access * * +:cl1 raw :stats klines * * +:cl1 raw :stats klines * *@* +:cl1 raw :stats links * * +:cl1 raw :stats ports * 7700 +:cl1 raw :stats quarantines * #frou-frou +:cl1 raw :stats vservers * *.example.net + +# Invalid or nonexistent stats requests +:cl1 raw :stats y +:cl1 raw :stats ÿ +:cl1 raw :stats mºDãç +:cl1 raw :stats long_garbage_here_to_hopefully_trigger_the_core_reported_by_dan + +# Drop oper status and try a few others +:cl1 mode Alex -o +:cl1 raw :stats k +:cl1 raw :stats k * * +:cl1 raw :stats k * *@* Index: ircd-ircdev/ircd/test/test-driver.pl diff -u /dev/null ircd-ircdev/ircd/test/test-driver.pl:1.1 --- /dev/null Mon May 16 04:31:30 2005 +++ ircd-ircdev/ircd/test/test-driver.pl Mon May 16 04:31:20 2005 @@ -0,0 +1,541 @@ +#! /usr/bin/perl -wT + +# If you edit this file, please check carefully that the garbage +# collection isn't broken. POE is sometimes too clever for our good +# in finding references to sessions, and keeps running even after we +# want to stop. +# $Id: test-driver.pl,v 1.1 2005/05/16 11:31:20 zolty Exp $ + +# This interprets a simple scripting language. Lines starting with a +# hash mark (#, aka octothorpe, pound sign, etc) are ignored. The +# special commands look like this, where angle brackets indicate a +# metavariable: +# define <macro> <value> +# undef <macro> +# connect <name> <nick> <ident> <server> :<userinfo> +# sync <name1>,<name2>[,<name3>]* +# :<name> <command>[ <args]* +# For the last line syntax, <command> may be an IRC or IRC-like +# command. Supported non-IRC commands are: +# :<name> expect <source|*name2> [...] +# :<name> raw <text> +# :<name> sleep <seconds> +# :<name> wait <name2> + +require 5.006; + +use bytes; +use warnings; +use strict; +use vars; +use constant DELAY => 2; +use constant EXPECT_TIMEOUT => 15; +use constant RECONNECT_TIMEOUT => 5; +use constant THROTTLED_TIMEOUT => 90; + +use FileHandle; +use POE; +use POE::Component::IRC; + +# this defines commands that take "zero time" to execute +# (specifically, those which do not send commands from the issuing +# client to the server) +our $zero_time = { + expect => 1, + sleep => 1, + wait => 1, + }; + +# Create the main session and start POE. +# All the empty anonymous subs are just to make POE:Session::ASSERT_STATES happy. +POE::Session->create(inline_states => + { + # POE kernel interaction + _start => \&drv_start, + _child => sub {}, + _stop => sub { + my $heap = $_[HEAP]; + print "\nThat's all, folks!"; + print "(exiting at line $heap->{lineno}: $heap->{line})" + if $heap->{line}; + print "\n"; + }, + _default => \&drv_default, + # generic utilities or miscellaneous functions + heartbeat => \&drv_heartbeat, + timeout_expect => \&drv_timeout_expect, + reconnect => \&drv_reconnect, + enable_client => sub { $_[ARG0]->{ready} = 1; }, + disable_client => sub { $_[ARG0]->{ready} = 0; }, + die => sub { $_[KERNEL]->signal($_[SESSION], 'TERM'); }, + # client-based command issuers + cmd_die => \&cmd_generic, + cmd_expect => \&cmd_expect, + cmd_invite => \&cmd_generic, + cmd_join => \&cmd_generic, + cmd_mode => \&cmd_generic, + cmd_nick => \&cmd_generic, + cmd_notice => \&cmd_message, + cmd_oper => \&cmd_generic, + cmd_part => \&cmd_generic, + cmd_privmsg => \&cmd_message, + cmd_quit => \&cmd_generic, + cmd_raw => \&cmd_raw, + cmd_sleep => \&cmd_sleep, + cmd_wait => \&cmd_wait, + # handlers for messages from IRC + irc_001 => \&irc_connected, # Welcome to ... + irc_snotice => sub {}, # notice from a server (anonymous/our uplink) + irc_notice => \&irc_notice, # NOTICE to self or channel + irc_msg => \&irc_msg, # PRIVMSG to self + irc_public => \&irc_public, # PRIVMSG to channel + irc_connected => sub {}, + irc_ctcp_action => sub {}, + irc_ctcp_ping => sub {}, + irc_ctcp_time => sub {}, + irc_ctcpreply_ping => sub {}, + irc_ctcpreply_time => sub {}, + irc_invite => \&irc_invite, # INVITE to channel + irc_join => sub {}, + irc_kick => sub {}, + irc_kill => sub {}, + irc_mode => sub {}, + irc_nick => sub {}, + irc_part => sub {}, + irc_ping => sub {}, + irc_quit => sub {}, + irc_topic => sub {}, + irc_error => \&irc_error, + irc_disconnected => \&irc_disconnected, + irc_socketerr => \&irc_socketerr, + }, + args => [@ARGV]); + +$| = 1; +$poe_kernel->run(); +exit; + +# Core/bookkeeping test driver functions + +sub drv_start { + my ($kernel, $session, $heap) = @_[KERNEL, SESSION, HEAP]; + + # initialize heap + $heap->{clients} = {}; # session details, indexed by (short) session name + $heap->{sessions} = {}; # session details, indexed by session ref + $heap->{servers} = {}; # server addresses, indexed by short names + $heap->{macros} = {}; # macros + + # Parse arguments + foreach my $arg (@_[ARG0..$#_]) { + if ($arg =~ /^-D$/) { + $heap->{irc_debug} = 1; + } elsif ($arg =~ /^-V$/) { + $heap->{verbose} = 1; + } elsif ($arg =~ /^-vhost=(.*)$/) { + $heap->{vhost} = $1; + } else { + die "Extra command-line argument $arg\n" if $heap->{script}; + $heap->{script} = new FileHandle($arg, 'r') + or die "Unable to open $arg for reading: $!\n"; + } + } + die "No test name specified\n" unless $heap->{script}; + + # hook in to POE + $kernel->alias_set('control'); + $kernel->yield('heartbeat'); +} + +sub drv_heartbeat { + my ($kernel, $session, $heap) = @_[KERNEL, SESSION, HEAP]; + my $script = $heap->{script}; + my $used = {}; + my $delay = DELAY; + + while (1) { + my ($line, $lineno); + if ($heap->{line}) { + $line = delete $heap->{line}; + } elsif (defined($line = <$script>)) { + $heap->{lineno} = $.; + print "." unless $heap->{irc_debug}; + } else { + # close all connections + foreach my $client (values %{$heap->{clients}}) { + $kernel->call($client->{irc}, 'quit', "I fell off the end of my script"); + $client->{quitting} = 1; + } + # unalias the control session + $kernel->alias_remove('control'); + # die in a few seconds + $kernel->delay_set('die', 5); + return; + } + + chomp $line; + # ignore comments and blank lines + next if $line =~ /^\#/ or $line !~ /\S/; + + # expand any macros in the line + $line =~ s/(?<=[^\\])%(\S+?)%/$heap->{macros}->{$1} + or die "Use of undefined macro $1 at $heap->{lineno}\n"/eg; + # remove any \-escapes + $line =~ s/\\(.)/$1/g; + # figure out the type of line + if ($line =~ /^#/) { + # comment, silently ignore it + } elsif ($line =~ /^define (\S+) (.+)$/i) { + # define a new macro + $heap->{macros}->{$1} = $2; + } elsif ($line =~ /^undef (\S+)$/i) { + # remove the macro + delete $heap->{macros}->{$1}; + } elsif ($line =~ /^connect (\S+) (\S+) (\S+) (\S+) :(.+)$/i) { + # connect a new session (named $1) to server $4 + my ($name, $nick, $ident, $server, $userinfo, $port) = ($1, $2, $3, $4, $5, 6667); + $server = $heap->{servers}->{$server} || $server; + if ($server =~ /(.+):(\d+)/) { + $server = $1; + $port = $2; + } + die "Client with nick $nick already exists (line $heap->{lineno})" if $heap->{clients}->{$nick}; + my $alias = "client_$name"; + POE::Component::IRC->new($alias) + or die "Unable to create new user $nick (line $heap->{lineno}): $!"; + my $client = { name => $name, + nick => $nick, + ready => 0, + expect => [], + expect_alarms => [], + irc => $kernel->alias_resolve($alias), + params => { Nick => $nick, + Server => $server, + Port => $port, + Username => $ident, + Ircname => $userinfo, + Debug => $heap->{irc_debug}, + } + }; + $client->params->{LocalAddr} = $heap->{vhost} + if $heap->{vhost}; + $heap->{clients}->{$client->{name}} = $client; + $heap->{sessions}->{$client->{irc}} = $client; + $kernel->call($client->{irc}, 'register', 'all'); + $kernel->call($client->{irc}, 'connect', $client->{params}); + $used->{$name} = 1; + } elsif ($line =~ /^sync (.+)$/i) { + # do multi-way synchronization between every session named in $1 + my @synced = split(/,|\s/, $1); + # first, check that they exist and are ready + foreach my $clnt (@synced) { + die "Unknown session name $clnt (line $heap->{lineno})" unless $heap->{clients}->{$clnt}; + goto REDO unless $heap->{clients}->{$clnt}->{ready}; + } + # next we actually send the synchronization signals + foreach my $clnt (@synced) { + my $client = $heap->{clients}->{$clnt}; + $client->{sync_wait} = [map { $_ eq $clnt ? () : $heap->{clients}->{$_}->{nick} } @synced]; + $kernel->call($client->{irc}, 'notice', $client->{sync_wait}, 'SYNC'); + $kernel->call($session, 'disable_client', $client); + } + } elsif ($line =~ /^:(\S+) (\S+)(.*)$/i) { + # generic command handler + my ($names, $cmd, $args) = ($1, lc($2), $3); + my (@avail, @unavail); + # figure out whether each listed client is available or not + foreach my $c (split ',', $names) { + my $client = $heap->{clients}->{$c}; + if (not $client) { + print "ERROR: Unknown session name $c (line $heap->{lineno}; ignoring)\n"; + } elsif (($used->{$c} and not $zero_time->{$cmd}) or not $client->{ready}) { + push @unavail, $c; + } else { + push @avail, $c; + } + } + # redo command with unavailable clients + if (@unavail) { + # This will break if the command can cause a redo for + # available clients.. this should be fixed sometime + $line = ':'.join(',', @unavail).' '.$cmd.$args; + $heap->{redo} = 1; + } + # do command with available clients + if (@avail) { + # split up the argument part of the line + $args =~ /^((?:(?: [^:])|[^ ])+)?(?: :(.+))?$/; + $args = [($1 ? split(' ', $1) : ()), ($2 ? $2 : ())]; + # find the client and figure out if we need to wait + foreach my $c (@avail) { + my $client = $heap->{clients}->{$c}; + die "Client $c used twice as source (line $heap->{lineno})" if $used->{c} and not $zero_time->{$cmd}; + $kernel->call($session, 'cmd_'.$cmd, $client, $args); + $used->{$c} = 1 unless $zero_time->{$cmd}; + } + } + } else { + die "Unrecognized input line $heap->{lineno}: $line"; + } + if ($heap->{redo}) { + REDO: + delete $heap->{redo}; + $heap->{line} = $line; + last; + } + } + # issue new heartbeat with appropriate delay + $kernel->delay_set('heartbeat', $delay); +} + +sub drv_timeout_expect { + my ($kernel, $session, $client) = @_[KERNEL, SESSION, ARG0]; + print "ERROR: Dropping timed-out expectation by $client->{name}: ".join(',', @{$client->{expect}->[0]})."\n"; + $client->{expect_alarms}->[0] = undef; + unexpect($kernel, $session, $client); +} + +sub drv_reconnect { + my ($kernel, $session, $client) = @_[KERNEL, SESSION, ARG0]; + $kernel->call($client->{irc}, 'connect', $client->{params}); +} + +sub drv_default { + my ($kernel, $heap, $sender, $session, $state, $args) = @_[KERNEL, HEAP, SENDER, SESSION, ARG0, ARG1]; + if ($state =~ /^irc_(\d\d\d)$/) { + my $client = $heap->{sessions}->{$sender}; + if (@{$client->{expect}} + and $args->[0] eq $client->{expect}->[0]->[0] + and $client->{expect}->[0]->[1] eq "$1") { + my $expect = $client->{expect}->[0]; + my $mismatch; + for (my $x=2; ($x<=$#$expect) and ($x<=$#$args) and not $mismatch; $x++) { + $mismatch = 1 unless $args->[$x] =~ /$expect->[$x]/i; + } + unexpect($kernel, $session, $client) unless $mismatch; + } + return undef; + } + print "ERROR: Unexpected event $state to test driver (from ".$sender->ID.")\n"; + return undef; +} + +# client-based command issuers + +sub cmd_message { + my ($kernel, $heap, $event, $client, $args) = @_[KERNEL, HEAP, STATE, ARG0, ARG1]; + die "Missing arguments" unless $#$args >= 1; + # translate each target as appropriate (e.g. *sessionname) + my @targets = split(/,/, $args->[0]); + foreach my $target (@targets) { + if ($target =~ /^\*(.+)$/) { + my $other = $heap->{clients}->{$1} or die "Unknown session name $1 (line $heap->{lineno})\n"; + $target = $other->{nick}; + } + } + $kernel->call($client->{irc}, substr($event, 4), \@targets, $args->[1]); +} + +sub cmd_generic { + my ($kernel, $heap, $event, $client, $args) = @_[KERNEL, HEAP, STATE, ARG0, ARG1]; + $event =~ s/^cmd_//; + $kernel->call($client->{irc}, $event, @$args); +} + +sub cmd_raw { + my ($kernel, $heap, $client, $args) = @_[KERNEL, HEAP, ARG0, ARG1]; + die "Missing argument" unless $#$args >= 0; + $kernel->call($client->{irc}, 'sl', $args->[0]); +} + +sub cmd_sleep { + my ($kernel, $session, $heap, $client, $args) = @_[KERNEL, SESSION, HEAP, ARG0, ARG1]; + die "Missing argument" unless $#$args >= 0; + $kernel->call($session, 'disable_client', $client); + $kernel->delay_set('enable_client', $args->[0], $client); +} + +sub cmd_wait { + my ($kernel, $session, $heap, $client, $args) = @_[KERNEL, SESSION, HEAP, ARG0, ARG1]; + die "Missing argument" unless $#$args >= 0; + # if argument was comma-delimited, split it up (space-delimited is split by generic parser) + $args = [split(/,/, $args->[0])] if $args->[0] =~ /,/; + # make sure we only wait if all the other clients are ready + foreach my $other (@$args) { + if (not $heap->{clients}->{$other}->{ready}) { + $heap->{redo} = 1; + return; + } + } + # disable this client, make the others send SYNC to it + $kernel->call($session, 'disable_client', $client); + $client->{sync_wait} = [map { $heap->{clients}->{$_}->{nick} } @$args]; + foreach my $other (@$args) { + die "Cannot wait on self" if $other eq $client->{name}; + $kernel->call($heap->{clients}->{$other}->{irc}, 'notice', $client->{nick}, 'SYNC'); + } +} + +sub cmd_expect { + my ($kernel, $session, $heap, $client, $args) = @_[KERNEL, SESSION, HEAP, ARG0, ARG1]; + die "Missing argument" unless $#$args >= 0; + push @{$client->{expect}}, $args; + push @{$client->{expect_alarms}}, $kernel->delay_set('timeout_expect', EXPECT_TIMEOUT, $client); + $kernel->call($session, 'disable_client', $client); +} + +# handlers for messages from IRC + +sub unexpect { + my ($kernel, $session, $client) = @_; + shift @{$client->{expect}}; + my $alarm_id = shift @{$client->{expect_alarms}}; + $kernel->alarm_remove($alarm_id) if $alarm_id; + $kernel->call($session, 'enable_client', $client) unless @{$client->{expect}}; +} + +sub check_expect { + my ($kernel, $session, $heap, $poe_sender, $sender, $text) = @_[KERNEL, SESSION, HEAP, SENDER, ARG0, ARG1]; + my $client = $heap->{sessions}->{$poe_sender}; + my $expected = $client->{expect}->[0]; + + # check sender + if ($expected->[0] =~ /\*(.+)/) { + # we expect *sessionname, so look up session's current nick + my $exp = $1; + $sender =~ /^(.+)!/; + return 0 if lc($heap->{clients}->{$exp}->{nick}) ne lc($1); + } elsif ($expected->[0] =~ /^:?(.+!.+)/) { + # expect :nick!user@host, so compare whole thing + return 0 if lc($1) ne lc($sender); + } else { + # we only expect :nick, so compare that part + $sender =~ /^:?(.+)!/; + return 0 if lc($expected->[0]) ne lc($1); + } + + # compare text + return 0 if lc($text) !~ /$expected->[2]/i; + + # drop expectation of event + unexpect($kernel, $session, $client); +} + +sub irc_connected { + my ($kernel, $session, $heap, $sender) = @_[KERNEL, SESSION, HEAP, SENDER]; + my $client = $heap->{sessions}->{$sender}; + print "Client $client->{name} connected to server $_[ARG0]\n" if $heap->{verbose}; + $kernel->call($session, 'enable_client', $client); +} + +sub irc_disconnected { + my ($kernel, $session, $heap, $sender, $server) = @_[KERNEL, SESSION, HEAP, SENDER, ARG0]; + my $client = $heap->{sessions}->{$sender}; + print "Client $client->{name} disconnected from server $_[ARG0]\n" if $heap->{verbose}; + if ($client->{quitting}) { + $kernel->call($sender, 'unregister', 'all'); + delete $heap->{sessions}->{$sender}; + delete $heap->{clients}->{$client->{name}}; + } else { + if ($client->{disconnect_expected}) { + delete $client->{disconnect_expected}; + } else { + print "Got unexpected disconnect for $client->{name} (nick $client->{nick})\n"; + } + $kernel->call($session, 'disable_client', $client); + $kernel->delay_set('reconnect', $client->{throttled} ? THROTTLED_TIMEOUT : RECONNECT_TIMEOUT, $client); + delete $client->{throttled}; + } +} + +sub irc_socketerr { + my ($kernel, $session, $heap, $sender, $msg) = @_[KERNEL, SESSION, HEAP, SENDER, ARG0]; + my $client = $heap->{sessions}->{$sender}; + print "Client $client->{name} (re-)connect error: $_[ARG0]\n"; + if ($client->{quitting}) { + $kernel->call($sender, 'unregister', 'all'); + delete $heap->{sessions}->{$sender}; + delete $heap->{clients}->{$client->{name}}; + } else { + if ($client->{disconnect_expected}) { + delete $client->{disconnect_expected}; + } else { + print "Got unexpected disconnect for $client->{name} (nick $client->{nick})\n"; + } + $kernel->call($session, 'disable_client', $client); + $kernel->delay_set('reconnect', $client->{throttled} ? THROTTLED_TIMEOUT : RECONNECT_TIMEOUT, $client); + delete $client->{throttled}; + } +} + +sub irc_notice { + my ($kernel, $session, $heap, $sender, $from, $to, $text) = @_[KERNEL, SESSION, HEAP, SENDER, ARG0, ARG1, ARG2]; + my $client = $heap->{sessions}->{$sender}; + if ($client->{sync_wait} and $text eq 'SYNC') { + $from =~ s/!.+$//; + my $x; + # find who sent it.. + for ($x=0; $x<=$#{$client->{sync_wait}}; $x++) { + last if $from eq $client->{sync_wait}->[$x]; + } + # exit if we don't expect them + if ($x>$#{$client->{sync_wait}}) { + print "Got unexpected SYNC from $from to $client->{name} ($client->{nick})\n"; + return; + } + # remove from the list of people we're waiting for + splice @{$client->{sync_wait}}, $x, 1; + # re-enable client if we're done waiting + if ($#{$client->{sync_wait}} == -1) { + delete $client->{sync_wait}; + $kernel->call($session, 'enable_client', $client); + } + } elsif (@{$client->{expect}} + and $client->{expect}->[0]->[1] =~ /notice/i) { + check_expect(@_[0..ARG0], $text); + } +} + +sub irc_msg { + my ($kernel, $session, $heap, $sender, $from, $to, $text) = @_[KERNEL, SESSION, HEAP, SENDER, ARG0, ARG1, ARG2]; + my $client = $heap->{sessions}->{$sender}; + if (@{$client->{expect}} + and $client->{expect}->[0]->[1] =~ /msg/i) { + check_expect(@_[0..ARG0], $text); + } +} + +sub irc_public { + my ($kernel, $session, $heap, $sender, $from, $to, $text) = @_[KERNEL, SESSION, HEAP, SENDER, ARG0, ARG1, ARG2]; + my $client = $heap->{sessions}->{$sender}; + if (@{$client->{expect}} + and $client->{expect}->[0]->[1] =~ /public/i + and grep($client->{expect}->[0]->[2], @$to)) { + splice @{$client->{expect}->[0]}, 2, 1; + check_expect(@_[0..ARG0], $text); + } +} + +sub irc_invite { + my ($kernel, $session, $heap, $sender, $from, $to) = @_[KERNEL, SESSION, HEAP, SENDER, ARG0, ARG1, ARG2]; + my $client = $heap->{sessions}->{$sender}; + if (ref $client->{expect} eq 'ARRAY' + and $client->{expect}->[0]->[1] =~ /invite/i + and $to =~ /$client->{expect}->[0]->[2]/) { + check_expect(@_[0..ARG0], $to); + } +} + +sub irc_error { + my ($kernel, $session, $heap, $sender, $what) = @_[KERNEL, SESSION, HEAP, SENDER, ARG0]; + my $client = $heap->{sessions}->{$sender}; + if (@{$client->{expect}} + and $client->{expect}->[0]->[1] =~ /error/i) { + splice @{$client->{expect}->[0]}, 2, 1; + unexpect($kernel, $session, $client); + $client->{disconnect_expected} = 1; + } else { + print "ERROR: From server to $client->{name}: $what\n"; + } + $client->{throttled} = 1 if $what =~ /throttled/i; +} ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-05-16 22:50:36
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-05-16 10:17:37 UTC Modified files: ChangeLog ChangeLog.es include/ddb.h include/patchlevel.h ircd/Makefile.in ircd/ddb.c ircd/ddb_db_native.c ircd/ddb_db_template.c ircd/ddb_events.c ircd/ircd_log.c ircd/m_db.c ircd/m_dbq.c ircd/m_ghost.c ircd/m_nick.c ircd/m_svsnick.c ircd/s_bsd.c ircd/s_conf.c ircd/s_serv.c ircd/s_user.c Log message: Author: zoltan <zo...@ir...> Log message: 2005-05-16 Toni García <zo...@ir...> 1.0.alpha33 * Fix de bugs * Documentación Doxygen ---------------------- diff included ---------------------- Index: ircd-ircdev/ChangeLog diff -u ircd-ircdev/ChangeLog:1.34 ircd-ircdev/ChangeLog:1.35 --- ircd-ircdev/ChangeLog:1.34 Sat May 7 15:23:39 2005 +++ ircd-ircdev/ChangeLog Mon May 16 03:17:26 2005 @@ -1,10 +1,14 @@ # # ChangeLog for ircd-ircdev # -# $Id: ChangeLog,v 1.34 2005/05/07 22:23:39 zolty Exp $ +# $Id: ChangeLog,v 1.35 2005/05/16 10:17:26 zolty Exp $ # # Insert new changes at beginning of the change list. # +2005-05-16 Toni García <zo...@ir...> 1.0.alpha33 + * Fix bugs + * Doxygen documentation + 2005-05-08 Toni García <zo...@ir...> 1.0.alpha32 * Fix bugs Index: ircd-ircdev/ChangeLog.es diff -u ircd-ircdev/ChangeLog.es:1.34 ircd-ircdev/ChangeLog.es:1.35 --- ircd-ircdev/ChangeLog.es:1.34 Sat May 7 15:23:39 2005 +++ ircd-ircdev/ChangeLog.es Mon May 16 03:17:26 2005 @@ -1,10 +1,14 @@ # # Log de Cambios para ircd-ircdev # -# $Id: ChangeLog.es,v 1.34 2005/05/07 22:23:39 zolty Exp $ +# $Id: ChangeLog.es,v 1.35 2005/05/16 10:17:26 zolty Exp $ # # Insertar los nuevos cambios al principio de esta lista de cambios. # +2005-05-16 Toni García <zo...@ir...> 1.0.alpha33 + * Fix de bugs + * Documentación Doxygen + 2005-05-08 Toni García <zo...@ir...> 1.0.alpha32 * Fix de bugs Index: ircd-ircdev/include/ddb.h diff -u ircd-ircdev/include/ddb.h:1.7 ircd-ircdev/include/ddb.h:1.8 --- ircd-ircdev/include/ddb.h:1.7 Sat May 7 05:43:28 2005 +++ ircd-ircdev/include/ddb.h Mon May 16 03:17:26 2005 @@ -18,8 +18,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: ddb.h,v 1.7 2005/05/07 12:43:28 zolty Exp $ - * + */ +/** @file + * @brief Distributed DataBases structures, macros and functions. + * @version $Id: ddb.h,v 1.8 2005/05/16 10:17:26 zolty Exp $ */ #ifndef INCLUDED_ddb_h #define INCLUDED_ddb_h @@ -34,64 +36,77 @@ /* * General defines */ -/* Las tablas con los registros, serie, version */ +/** Maxium number of tables */ #define DDB_TABLE_MAX 256 -/*Numero de peticiones de registros antes de que haya que empezar a reciclar */ +/** Number of keys is caching */ #define DDB_BUF_CACHE 32 + /* - * Distributed DataBase Tables + * Distributed DataBases Tables */ -#define DDB_INIT 'a' /* First table */ - -#define DDB_CHANDB 'c' /* ChanDB table */ -#define DDB_ILINEDB 'i' /* IlineDB table */ -#define DDB_NICKDB 'n' /* NickDB table */ -#define DDB_CONFIGDB 'z' /* ConfigDB table */ -#define DDB_END 'z' /* Last table */ +/** First table of %DDB Distributed Databases. */ +#define DDB_INIT 'a' +/** Channels table of %DDB Distributed Databases. */ +#define DDB_CHANDB 'c' +/** Ilines table of %DDB Distributed Databases. */ +#define DDB_ILINEDB 'i' +/** Nicks table of %DDB Distributed Databases. */ +#define DDB_NICKDB 'n' +/** Config table of %DDB Distributed Databases. */ +#define DDB_CONFIGDB 'z' +/** Last table of %DDB Distributed Databases. */ +#define DDB_END 'z' +/* + * Config keys of config table 'z' + */ +/** Number of max clones per ip */ #define DDB_CONFIGDB_MAX_CLONES_PER_IP "maxclones" +/** Message to clients with too many clones from your ip */ #define DDB_CONFIGDB_MSG_TOO_MANY_FROM_IP "msgmanyperip" + /* * PseudoBots */ +/** Nickname of virtual bot for nicks registers */ #define DDB_NICKSERV "NickServ" -/* - * Structures +/** Describes a key on one table. */ struct Ddb { - char *key; - char *content; - struct Ddb *next; + char* ddb_key; /**< Key of the register */ + char* ddb_content; /**< Content of the key */ + struct Ddb* ddb_next; /**< Next key on the table */ }; -struct ddb_stat { - dev_t dev; /* ID of device containing a directory entry for this file */ - ino_t ino; /* Inode number */ - off_t size; /* File size in bytes */ - time_t mtime; /* Time of last data modification */ -}; +/** Get key of the register. */ +#define ddb_key(ddb) ((ddb)->ddb_key) +/** Get content of the key. */ +#define ddb_content(ddb) ((ddb)->ddb_content) +/** Get next key on the table. */ +#define ddb_next(ddb) ((ddb)->ddb_next) -/* - * ddb_db_native + +/** An copy of kernel structure stat. */ -struct ddb_memory_table { - struct ddb_stat file_stat; - char *position; /* Posicion */ - char *point_r; /* Lectura */ -#if 0 - char *point_w; /* Escritura */ -#endif +struct ddb_stat { + dev_t dev; /**< ID of device containing a directory entry for this file */ + ino_t ino; /**< Inode number */ + off_t size; /**< File size in bytes */ + time_t mtime; /**< Time of last data modification */ }; +/** DDB Macro for allocations. */ #define DdbMalloc(x) MyMalloc(x) +/** DDB Macro for freeing memory. */ #define DdbFree(x) MyFree(x) + /* * Prototypes */ @@ -114,9 +129,10 @@ extern void ddb_events_init(void); extern void ddb_end(void); -extern void ddb_new_register(struct Client *cptr, unsigned char table, char *mask, unsigned int id, char *key, char *content); +extern void ddb_new_register(struct Client *cptr, unsigned char table, unsigned int id, char *mask, char *key, char *content); extern void ddb_drop(unsigned char table); extern void ddb_drop_memory(unsigned char table, int events); +extern void ddb_compact(unsigned char table, unsigned int id, char *content); extern void ddb_burst(struct Client *cptr); extern int ddb_table_burst(struct Client *cptr, unsigned char table, unsigned int id); @@ -130,14 +146,14 @@ extern void ddb_die(const char *pattern, ...); extern void ddb_report_stats(struct Client* to, const struct StatDesc* sd, char* param); -/* Externs de ddb_db_*.c */ +/* ddb_db_*.c externs */ extern void ddb_db_init(void); extern int ddb_db_read(struct Client *cptr, unsigned char table, unsigned int id, int count); -extern void ddb_db_write(unsigned char table, char *mask, unsigned int id, char *key, char *content); +extern void ddb_db_write(unsigned char table, unsigned int id, char *mask, char *key, char *content); extern void ddb_db_drop(unsigned char table); -extern void ddb_compact(unsigned char table, char *mask, unsigned int id, char *comment); -extern void ddb_hash_read(unsigned char table, unsigned int *hi, unsigned int *lo); -extern void ddb_hash_write(unsigned char table); +extern void ddb_db_compact(unsigned char table); +extern void ddb_db_hash_read(unsigned char table, unsigned int *hi, unsigned int *lo); +extern void ddb_db_hash_write(unsigned char table); extern void ddb_db_end(void); #endif /* defined(DDB) */ Index: ircd-ircdev/include/patchlevel.h diff -u ircd-ircdev/include/patchlevel.h:1.33 ircd-ircdev/include/patchlevel.h:1.34 --- ircd-ircdev/include/patchlevel.h:1.33 Sat May 7 15:23:40 2005 +++ ircd-ircdev/include/patchlevel.h Mon May 16 03:17:26 2005 @@ -17,10 +17,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: patchlevel.h,v 1.33 2005/05/07 22:23:40 zolty Exp $ + * $Id: patchlevel.h,v 1.34 2005/05/16 10:17:26 zolty Exp $ * */ -#define PATCHLEVEL ".alpha32" +#define PATCHLEVEL ".alpha33" #define RELEASE "1.0" Index: ircd-ircdev/ircd/Makefile.in diff -u ircd-ircdev/ircd/Makefile.in:1.25 ircd-ircdev/ircd/Makefile.in:1.26 --- ircd-ircdev/ircd/Makefile.in:1.25 Sat May 7 05:43:29 2005 +++ ircd-ircdev/ircd/Makefile.in Mon May 16 03:17:26 2005 @@ -18,7 +18,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA -# $Id: Makefile.in,v 1.25 2005/05/07 12:43:29 zolty Exp $ +# $Id: Makefile.in,v 1.26 2005/05/16 10:17:26 zolty Exp $ #### Start of system configuration section. #### @@ -1649,31 +1649,36 @@ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ ../include/capab.h ../include/ircd.h ../include/struct.h \ ../include/ircd_alloc.h ../include/ircd_chattr.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/ircd_string.h ../include/ircd_tea.h \ - ../include/list.h ../include/match.h ../include/msg.h \ - ../include/numeric.h ../include/s_bsd.h ../include/s_debug.h \ - ../include/s_misc.h ../include/send.h + ../include/ircd_reply.h ../include/ircd_snprintf.h \ + ../include/ircd_string.h ../include/ircd_tea.h ../include/list.h \ + ../include/match.h ../include/msg.h ../include/numeric.h \ + ../include/s_bsd.h ../include/s_debug.h ../include/s_misc.h \ + ../include/send.h # 1 "/usr/home/zoltan/ircd-ircdev/ircd//" ddb_db_native.o: ddb_db_native.c ../config.h ../include/ddb.h ../config.h \ ../include/client.h ../include/ircd_defs.h ../include/dbuf.h \ ../include/msgq.h ../include/ircd_events.h ../include/ircd_handler.h \ - ../include/res.h ../include/capab.h ../include/ircd_features.h \ - ../include/ircd_log.h ../include/ircd_snprintf.h ../include/numnicks.h + ../include/res.h ../include/capab.h ../include/client.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_features.h \ + ../include/ircd_log.h ../include/ircd_snprintf.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ + ../include/numnicks.h ../include/s_debug.h ../include/send.h # 1 "/usr/home/zoltan/ircd-ircdev/ircd//" ddb_events.o: ddb_events.c ../config.h ../include/ddb.h ../config.h \ ../include/client.h ../include/ircd_defs.h ../include/dbuf.h \ ../include/msgq.h ../include/ircd_events.h ../include/ircd_handler.h \ ../include/res.h ../include/capab.h ../include/client.h \ ../include/hash.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_tea.h ../include/msg.h ../include/numnicks.h \ - ../include/s_user.h ../include/send.h + ../include/ircd_snprintf.h ../include/ircd_tea.h ../include/msg.h \ + ../include/numnicks.h ../include/s_user.h ../include/send.h # 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_db.o: m_db.c ../config.h ../include/ddb.h ../config.h \ ../include/client.h ../include/ircd_defs.h ../include/dbuf.h \ ../include/msgq.h ../include/ircd_events.h ../include/ircd_handler.h \ ../include/res.h ../include/capab.h ../include/client.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/list.h ../include/match.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_features.h \ + ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/ircd_snprintf.h ../include/list.h ../include/match.h \ ../include/msg.h ../include/numnicks.h ../include/send.h \ ../include/s_debug.h # 1 "/usr/home/zoltan/ircd-ircdev/ircd//" @@ -1700,9 +1705,10 @@ ../include/capab.h ../include/ddb.h ../config.h ../include/client.h \ ../include/hash.h ../include/ircd.h ../include/struct.h \ ../include/ircd_features.h ../include/ircd_log.h \ - ../include/ircd_string.h ../include/ircd_chattr.h ../include/ircd_tea.h \ - ../include/msg.h ../include/numnicks.h ../include/s_conf.h \ - ../include/s_user.h ../include/send.h ../include/sys.h + ../include/ircd_snprintf.h ../include/ircd_string.h \ + ../include/ircd_chattr.h ../include/ircd_tea.h ../include/msg.h \ + ../include/numnicks.h ../include/s_conf.h ../include/s_user.h \ + ../include/send.h ../include/sys.h # 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_svsnick.o: m_svsnick.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ @@ -1710,9 +1716,10 @@ ../include/capab.h ../include/ddb.h ../config.h ../include/client.h \ ../include/hash.h ../include/ircd.h ../include/struct.h \ ../include/ircd_features.h ../include/ircd_log.h \ - ../include/ircd_string.h ../include/ircd_chattr.h ../include/ircd_tea.h \ - ../include/msg.h ../include/numnicks.h ../include/s_conf.h \ - ../include/s_user.h ../include/send.h ../include/sys.h + ../include/ircd_snprintf.h ../include/ircd_string.h \ + ../include/ircd_chattr.h ../include/ircd_tea.h ../include/msg.h \ + ../include/numnicks.h ../include/s_conf.h ../include/s_user.h \ + ../include/send.h ../include/sys.h # 1 "/usr/home/zoltan/ircd-ircdev/ircd//" # 1 "/usr/home/zoltan/ircd-ircdev/ircd//" # 1 "/usr/home/zoltan/ircd-ircdev/ircd//" Index: ircd-ircdev/ircd/ddb.c diff -u ircd-ircdev/ircd/ddb.c:1.8 ircd-ircdev/ircd/ddb.c:1.9 --- ircd-ircdev/ircd/ddb.c:1.8 Sat May 7 15:23:40 2005 +++ ircd-ircdev/ircd/ddb.c Mon May 16 03:17:26 2005 @@ -2,7 +2,8 @@ * IRC-Dev IRCD - An advanced and innovative IRC Daemon, ircd/ddb.c * * Copyright (C) 2002-2005 IRC-Dev Development Team <de...@ir...> - * Copyright (C) 2004 Toni Garcia (zoltan) <zo...@ir...> + * Copyright (C) 2004-2005 Toni Garcia (zoltan) <zo...@ir...> + * Copyright (C) 1999-2003 Jesus Cea Avion <jc...@ar...> Esnet IRC Network * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,7 +22,7 @@ */ /** @file * @brief Implementation of Distributed DataBase. - * @version $Id: ddb.c,v 1.8 2005/05/07 22:23:40 zolty Exp $ + * @version $Id: ddb.c,v 1.9 2005/05/16 10:17:26 zolty Exp $ */ #include "config.h" @@ -46,31 +47,53 @@ /* #include <assert.h> -- Now using assert in ircd_log.h */ #include <stdarg.h> #include <stdio.h> -/*#include <stdlib.h> */ #include <string.h> #include <time.h> +/** @page ddb Distributed DataBase + * + * + * TODO, explicacion del sistema + */ + +/** DDB registers cache. */ static struct Ddb ddb_buf_cache[DDB_BUF_CACHE]; +/** Buffer cache. */ static int ddb_buf_cache_i = 0; +/** Tables of %DDB. */ struct Ddb **ddb_data_table[DDB_TABLE_MAX]; -short ddb_corrupt_table[DDB_TABLE_MAX]; +/** Residents tables of %DDB. */ unsigned int ddb_resident_table[DDB_TABLE_MAX]; +/** Registers count of %DDB tables. */ unsigned int ddb_count_table[DDB_TABLE_MAX]; +/** ID number of %DDB tables. */ unsigned int ddb_id_table[DDB_TABLE_MAX]; +/** Hi hash table. */ unsigned int ddb_hashtable_hi[DDB_TABLE_MAX]; +/** Lo hash table. */ unsigned int ddb_hashtable_lo[DDB_TABLE_MAX]; +/** File or DB stats of %DDB tables.*/ struct ddb_stat ddb_stats_table[DDB_TABLE_MAX]; +/** Last key on iterator. */ static struct Ddb *ddb_iterator_key = NULL; +/** Last content on iterator. */ static struct Ddb **ddb_iterator_content = NULL; +/** Position of hash on iterator. */ static int ddb_iterator_hash_pos = 0; +/** Length of hash on iterator. */ static int ddb_iterator_hash_len = 0; +static void ddb_table_init(unsigned char table); static int ddb_add_key(unsigned char table, char *key, char *content); static int ddb_del_key(unsigned char table, char *key); +/** Verify if a table is resident. + * @param[in] table Table of the %DDB Distributed DataBase. + * @return Non-zero if a table is resident; zero is not resident. + */ int ddb_table_is_resident(unsigned char table) { return ddb_resident_table[table] ? 1 : 0; @@ -88,8 +111,10 @@ } */ -/** - * +/** Copy a malloc in the memory. + * @param[in] buf Buffer + * @param[in] len Length + * @param[in] p Pointer */ static void DdbCopyMalloc(char *buf, int len, char **p) @@ -104,15 +129,19 @@ } if (!p2) { - p2 = MyMalloc(len + 1); /* El '\0' final */ + p2 = MyMalloc(len + 1); /* The '\0' */ *p = p2; } memcpy(p2, buf, len); p2[len] = '\0'; } -/** - * +/** Calculates the hash. + * @param[in] table Table of the %DDB Distributed DataBase. + * @param[in] id ID number in the table. + * @param[in] mask Mask of the server. + * @param[in] key Key of the registry. + * @param[in] content Content of the registry. */ static void ddb_hash_calculate(unsigned char table, unsigned int id, char *mask, char *key, char *content) @@ -134,11 +163,14 @@ strncpy((char *)buffer, buf, sizeof(buffer) - 1); + /* TODO */ +#if 0 /* Parece que no es necesario, comprobarlo */ while ((p2 = strchr((char *)buffer, '\n'))) *p2 = '\0'; while ((p2 = strchr((char *)buffer, '\r'))) *p2 = '\0'; +#endif k[0] = k[1] = 0; x[0] = ddb_hashtable_hi[table]; @@ -154,8 +186,7 @@ ddb_hashtable_lo[table] = x[1]; } -/** initialize Distributed DataBase - * +/** Initialize %DDB Distributed DataBases. */ void ddb_init(void) @@ -168,33 +199,92 @@ memset(ddb_resident_table, 0, sizeof(ddb_resident_table)); /* - * Las longitudes DEBEN ser potencias de 2, - * y no deben ser superiores a HASHSIZE, ya que ello - * solo desperdiciaria memoria. + * The lengths MUST be powers of 2 and do not have + * to be superior to HASHSIZE. */ ddb_resident_table[DDB_ILINEDB] = 256; ddb_resident_table[DDB_NICKDB] = 32768; ddb_resident_table[DDB_CONFIGDB] = 256; for (table = DDB_INIT; table <= DDB_END; table++) - { - ddb_drop_memory(table, 0); - ddb_db_read(NULL, table, 0, 0); -/* ddb_hash_read(table); */ - } + ddb_table_init(table); /* - * La operacion anterior puede ser una operacion larga. - * Resincronizamos tiempo. + * The previous operation it can be a long operation. + * Updates time. */ CurrentTime = time(NULL); } -/** - * +/** Initialize a table of %DDB. + * @param[in] table + */ +static void ddb_table_init(unsigned char table) +{ + unsigned int hi, lo; + + /* First drop table */ + ddb_drop_memory(table, 0); + + /* Read the table on file or database */ + ddb_db_read(NULL, table, 0, 0); + + /* Read hashes */ + ddb_db_hash_read(table, &hi, &lo); + + /* Compare memory hashes with local hashes */ + sendto_opmask_butone(0, SNO_OLDSNO, "Lo: %d Hashtable_Lo: %d Hi: %d Hashtable_Hi %d", + lo, ddb_hashtable_lo[table], hi, ddb_hashtable_hi[table]); + +#if 0 + if ((ddb_hashtable_hi[table] != hi) || (ddb_hashtable_lo[table] != lo)) + { + struct DLink *lp; + char buf[1024]; + + log_write(LS_DDB, L_INFO, 0, "WARNING - Table '%c' is corrupt. Droping table...", table); + ddb_db_drop(table); + + ircd_snprintf(0, buf, sizeof(buf), "Table '%c' is corrupt. Reloading via remote burst...", table); + ddb_splithubs_butone(NULL, buf); + + log_write(LS_DDB, L_INFO, 0, "Solicit a copy of table '%s' to neighboring nodes", table); + + /* Solicit a copy to only hubs*/ + for (lp = cli_serv(&me)->down; lp; lp = lp->next) + { + if (IsHub(lp->value.cptr)) + sendcmdto_one(&me, CMD_DB, lp->value.cptr, "%C 0 J %u %c", + lp->value.cptr, ddb_id_table[table], table); + } + } + else +#endif + { + ddb_db_hash_write(table); + + if (ddb_resident_table[table]) + { + ddb_del_key(table, "*"); + log_write(LS_DDB, L_INFO, 0, "Loading Table '%c' finished: S=%u R=%u", + table, ddb_id_table[table], ddb_count_table[table]); + } + else if (ddb_count_table[table]) + log_write(LS_DDB, L_INFO, 0, "Loading Table '%c' finished: S=%u NoResident", + table, ddb_id_table[table]); + } +} + +/** Add a new register from the network or reading when ircd is starting. + * @param[in] cptr %Server sending a new register. If is NULL, it is own server during ircd start. + * @param[in] table Table of the %DDB Distributed DataBases. + * @param[in] id Identify number of the register. + * @param[in] mask Servermask of the register. + * @param[in] key Key of the register. + * @param[in] content Content of the key. */ void -ddb_new_register(struct Client *cptr, unsigned char table, char *mask, unsigned int id, char *key, char *content) +ddb_new_register(struct Client *cptr, unsigned char table, unsigned int id, char *mask, char *key, char *content) { static char *keytemp = NULL; static int key_len = 0; @@ -204,30 +294,27 @@ ddb_hash_calculate(table, id, mask, key, content); - /* Al iniciar, cptr no existe y por lo tanto no se escribe */ + /* In the ircd starting, cptr is NULL and it not writing on file or database */ if (cptr) { - ddb_db_write(table, mask, id, key, content); - ddb_hash_write(table); + ddb_db_write(table, id, mask, key, content); + ddb_db_hash_write(table); } ddb_id_table[table] = id; - /* Solo ponemos en memoria registros cuya mascara - * concuerda con el servidor. - * Y por supuesto, que sean residentes - */ + /* If the table is not resident, do not save in memory */ if (!ddb_resident_table[table]) return; - /* Usamos collapse+match por un bug en lastNNServer del find_match_server */ + /* If a mask is not concerned with me, do not save in memory */ + /* For lastNNServer bug (find_match_server) it use collapse + match */ collapse(mask); if (!match(mask, cli_name(&me))) { - int i = 0; +/* int i = 0; */ int update = 0; - /* pasamos el key en minusculas */ if ((strlen(key) + 1 > key_len) || (!keytemp)) { key_len = strlen(key) + 1; @@ -238,17 +325,21 @@ assert(0 != keytemp); } strcpy(keytemp, key); + +/* while (keytemp[i]) { -/* keytemp[i] = ToLower(keytemp[i]); */ + keytemp[i] = ToLower(keytemp[i]); i++; } +*/ if (content) update = ddb_add_key(table, keytemp, content); else ddb_del_key(table, keytemp); + /* TODO */ /* Ejecutamos los eventos */ /* if (!cptr && ddb_events_table[table]) */ if (ddb_events_table[table]) @@ -257,8 +348,11 @@ } -/** - * +/** Add or update an register on the memory. + * @param[in] table Table of the %DDB Distributed DataBases. + * @param[in] key Key of the register. + * @param[in] content Content of the key. + * @return 1 is an update, 0 is a new register. */ static int ddb_add_key(unsigned char table, char *key, char *content) @@ -281,7 +375,6 @@ strcpy(k, key); strcpy(c, content); - /* paso a minusculas */ /* while (c[i] != 0) { @@ -290,23 +383,25 @@ } */ - ddb->key = k; - ddb->content = c; - ddb->next = NULL; + ddb_key(ddb) = k; + ddb_content(ddb) = c; + ddb_next(ddb) = NULL; - hashi = ddb_hash_register(ddb->key, ddb_resident_table[table]); + hashi = ddb_hash_register(ddb_key(ddb), ddb_resident_table[table]); - Debug((DEBUG_INFO, "Inserto T='%c' K='%s' C='%s' H=%u",table, ddb->key, ddb->content, hashi)); + Debug((DEBUG_INFO, "Add DDB: T='%c' K='%s' C='%s' H=%u", table, ddb_key(ddb), ddb_content(ddb), hashi)); - ddb->next = ddb_data_table[table][hashi]; + ddb_next(ddb) = ddb_data_table[table][hashi]; ddb_data_table[table][hashi] = ddb; ddb_count_table[table]++; - return delete; + return delete; } -/** - * +/** Delete an register from memory. + * @param[in] table Table of the %DDB Distributed DataBases. + * @param[in] key Key of the register. + * @return 1 on success; 0 do not delete. */ static int ddb_del_key(unsigned char table, char *key) @@ -322,8 +417,8 @@ for (ddb = *ddb3; ddb; ddb = ddb2) { - ddb2 = ddb->next; - if (!strcmp(ddb->key, key)) + ddb2 = ddb_next(ddb); + if (!strcmp(ddb_key(ddb), key)) { *ddb3 = ddb2; delete = 1; @@ -331,30 +426,31 @@ ddb_count_table[table]--; break; } - ddb3 = &(ddb->next); + ddb3 = &(ddb_next(ddb)); } return delete; } -/** - * +/** Deletes a table. + * @param[in] table Table of the %DDB Distributed DataBases. */ void ddb_drop(unsigned char table) { - /* Borramos el fichero de la tabla */ + /* Delete file or database of the table */ ddb_db_drop(table); - /* Borramos la tabla en la memoria */ + /* Delete table from memory */ ddb_drop_memory(table, 0); - - ddb_hash_write(table); - ddb_corrupt_table[table] = 0; + + /* Write hash on file or database */ + ddb_db_hash_write(table); } -/** - * +/** Deletes a table from memory. + * @param[in] table Table of the %DDB Distributed DataBases. + * @param[in] events Non-zero impliques events. */ void ddb_drop_memory(unsigned char table, int events) @@ -371,10 +467,10 @@ { for (ddb = ddb_data_table[table][i]; ddb; ddb = ddb2) { - ddb2 = ddb->next; + ddb2 = ddb_next(ddb); if (events && ddb_events_table[table]) - ddb_events_table[table](ddb->key, NULL, 0); + ddb_events_table[table](ddb_key(ddb), NULL, 0); DdbFree(ddb); } @@ -395,19 +491,35 @@ ddb_id_table[table] = 0; ddb_hashtable_hi[table] = 0; ddb_hashtable_lo[table] = 0; -/* - tabla_corrupta[tabla] = 0; -*/ } -/** - * +/** Packing the table. + * @param[in] table Table of the %DDB Distributed DataBases. + * @param[in] id Identify number of the register. + * @param[in] content Content of the key. + */ +void +ddb_compact(unsigned char table, unsigned int id, char *content) +{ + log_write(LS_DDB, L_INFO, 0, "Packing table '%c'", table); + ddb_id_table[table] = id; + ddb_db_compact(table); + + ddb_hash_calculate(table, id, "*", "*", content); + ddb_db_write(table, id, "*", "*", content); + ddb_db_hash_write(table); +} + +/** Sending the %DDB burst tables. + * @param[in] cptr %Server sending the petition. */ void ddb_burst(struct Client *cptr) { int i; + sendto_opmask_butone(0, SNO_NETWORK, "Bursting DDB tables"); + sendcmdto_one(&me, CMD_DB, cptr, "* 0 J %u n", ddb_id_table[DDB_NICKDB]); @@ -419,8 +531,8 @@ } } -/** - * +/** Initializes %DDB iterator. + * @return ddb_iterator_key pointer. */ static struct Ddb * ddb_iterator_init(void) @@ -429,16 +541,13 @@ if (ddb_iterator_key) { - ddb_iterator_key = ddb_iterator_key->next; + ddb_iterator_key = ddb_next(ddb_iterator_key); if (ddb_iterator_key) { return ddb_iterator_key; } } - /* - * Indica el PROXIMO valor a utilizar. - */ while (ddb_iterator_hash_pos < ddb_iterator_hash_len) { ddb = ddb_iterator_content[ddb_iterator_hash_pos++]; @@ -456,8 +565,9 @@ return NULL; } -/** - * +/** Initializes iterator for a table. + * @param[in] table Table of the %DDB Distributed DataBase. + * @return First active register on a table. */ struct Ddb * ddb_iterator_first(unsigned char table) @@ -473,9 +583,9 @@ return ddb_iterator_init(); } - -/** - * + +/** Next iterator. + * @return Next active register on a table. */ struct Ddb * ddb_iterator_next(void) @@ -487,15 +597,17 @@ return ddb_iterator_init(); } -/** - * +/** Find a register by the key (internal). + * @param[in] table Table of the %DDB Distributed DataBases. + * @param[in] key Key of the register. + * @return Pointer of the register. */ static struct Ddb *ddb_find_registry_table(unsigned char table, char *key) { struct Ddb *ddb; static char *k = 0; static int k_len = 0; - int i, hashi; + int i = 0, hashi; if ((strlen(key) + 1 > k_len) || (!k)) { @@ -507,30 +619,33 @@ return 0; } strcpy(k, key); - /* paso a minusculas */ - i = 0; + +/* while (k[i]) { -/* k[i] = ToLower(k[i]); */ + k[i] = ToLower(k[i]); i++; } +*/ hashi = ddb_hash_register(k, ddb_resident_table[table]); - for (ddb = ddb_data_table[table][hashi]; ddb; ddb = ddb->next) + for (ddb = ddb_data_table[table][hashi]; ddb; ddb = ddb_next(ddb)) { -/* if (!strcmp(ddb->key, k)) */ - if (!ircd_strcmp(ddb->key, k)) +/* if (!strcmp(ddb_key(ddb), k)) */ + if (!ircd_strcmp(ddb_key(ddb), k)) { - assert(0 != ddb->content); + assert(0 != ddb_content(ddb)); return ddb; } } return NULL; } -/** - * +/** Find a register by the key. + * @param[in] table Table of the %DDB Distributed DataBases. + * @param[in] key Key of the register. + * @return Pointer of the register. */ struct Ddb *ddb_find_key(unsigned char table, char *key) { @@ -547,24 +662,25 @@ if (!ddb) return NULL; - /* Lo que sigue lo sustituye */ - key_init = ddb->key; + key_init = ddb_key(ddb); key_end = key_init + strlen(key_init); - content_init = ddb->content; + content_init = ddb_content(ddb); content_end = content_init + strlen(content_init); DdbCopyMalloc(key_init, key_end - key_init, - &ddb_buf_cache[ddb_buf_cache_i].key); + &ddb_buf_cache[ddb_buf_cache_i].ddb_key); DdbCopyMalloc(content_init, content_end - content_init, - &ddb_buf_cache[ddb_buf_cache_i].content); + &ddb_buf_cache[ddb_buf_cache_i].ddb_content); if (++ddb_buf_cache_i >= DDB_BUF_CACHE) ddb_buf_cache_i = 0; return ddb; } -/** - * +/** Get nick!user@host of the virtual bot. + * @param[in] bot Key of the register. + * @return nick!user@host of the virtual bot if exists and + * if not exists, return my servername. */ char * ddb_get_botname(char *bot) @@ -573,21 +689,19 @@ ddb = ddb_find_key(DDB_CONFIGDB, DDB_NICKSERV); if (ddb) - return ddb->content; + return ddb_content(ddb); else return cli_name(&me); } -/** - * +/** When IRCD is reloading, it is executing. */ void ddb_reload(void) { - sendto_opmask_butone(0, SNO_OLDSNO, "Reload Distributed DataBase..."); log_write(LS_DDB, L_INFO, 0, "Reload Distributed DataBase..."); - ddb_init(); + /* ddb_init(); */ } @@ -641,6 +755,8 @@ server_die(exitmsg); } +/** Finalizes the %DDB subsystem. + */ void ddb_end(void) { Index: ircd-ircdev/ircd/ddb_db_native.c diff -u ircd-ircdev/ircd/ddb_db_native.c:1.3 ircd-ircdev/ircd/ddb_db_native.c:1.4 --- ircd-ircdev/ircd/ddb_db_native.c:1.3 Sat May 7 15:23:40 2005 +++ ircd-ircdev/ircd/ddb_db_native.c Mon May 16 03:17:27 2005 @@ -3,7 +3,7 @@ * * Copyright (C) 2002-2005 IRC-Dev Development Team <de...@ir...> * Copyright (C) 2004-2005 Toni Garcia (zoltan) <zo...@ir...> - * Copyright (C) 1999-2003 Jesus Cea Avion <jc...@ar...> + * Copyright (C) 1999-2003 Jesus Cea Avion <jc...@ar...> Esnet IRC Network * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,8 +21,8 @@ * */ /** @file - * @brief Native DataBase implementation of Distributed DataBase. - * @version $Id: ddb_db_native.c,v 1.3 2005/05/07 22:23:40 zolty Exp $ + * @brief Native DataBase implementation of Distributed DataBases. + * @version $Id: ddb_db_native.c,v 1.4 2005/05/16 10:17:27 zolty Exp $ */ #include "config.h" @@ -32,8 +32,10 @@ #include "ircd_features.h" #include "ircd_log.h" #include "ircd_snprintf.h" +#include "ircd_string.h" #include "msg.h" #include "numnicks.h" +#include "s_debug.h" #include "send.h" /* #include <assert.h> -- Now using assert in ircd_log.h */ @@ -42,22 +44,30 @@ #include <string.h> #include <unistd.h> #include <sys/mman.h> + /* -#include <stdlib.h> -#include <sys/stat.h> -*/ + * ddb_db_native + */ +struct ddb_memory_table { + struct ddb_stat file_stat; + char *position; /* Posicion */ + char *point_r; /* Lectura */ +}; static int ddb_read(struct ddb_memory_table *map_table, char *buf); static int ddb_seek(struct ddb_memory_table *map_table, char *buf, unsigned int id); static void get_ddb_stat(int fd, struct ddb_stat *ddbstat); +static char *check_corrupt_table(unsigned char table, struct ddb_stat *ddbstat); -/** - * + +/** Initialize database gestion module of + * %DDB Distributed DataBases. */ void ddb_db_init(void) { char path[1024]; + unsigned char table; int fd; int temp; @@ -71,32 +81,50 @@ ddb_die("Error when creating %s directory", feature_str(FEAT_DDBPATH)); } #endif - /* Verificar archivo hashes */ + + /* Verify if hashes file is exist. */ ircd_snprintf(0, path, sizeof(path), "%s/hashes", feature_str(FEAT_DDBPATH)); alarm(3); fd = open(path, O_WRONLY, S_IRUSR | S_IWUSR); if (fd == -1) { - unsigned char tabletemp; fd = open(path, O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR); if (fd == -1) - ddb_die("Error when creating hashes file"); + ddb_die("Error when creating hashes file (OPEN)"); - for (tabletemp = DDB_INIT; tabletemp <= DDB_END; tabletemp++) + for (table = DDB_INIT; table <= DDB_END; table++) { - ircd_snprintf(0, path, sizeof(path), "%c AAAAAAAAAAAA\n", tabletemp); + ircd_snprintf(0, path, sizeof(path), "%c AAAAAAAAAAAA\n", table); write(fd, path, 15); } } close(fd); alarm(0); - /* Verificar archivos de las tablas */ - + /* Verify if tables file is exist. */ + for (table = DDB_INIT; table <= DDB_END; table++) + { + ircd_snprintf(0, path, sizeof(path), "%s/table.%c", + feature_str(FEAT_DDBPATH), table); + alarm(3); + fd = open(path, O_WRONLY, S_IRUSR | S_IWUSR); + if (fd == -1) + { + fd = open(path, O_CREAT, S_IRUSR | S_IWUSR); + if (fd == -1) + ddb_die("Error when creating table '%c' (OPEN)", table); + } + close(fd); + alarm(0); + } } -/** - * +/** Read the table. + * @param[in] cptr %Server if is exists, it sends to server. + * @param[in] table Table of the %DDB Distributed DataBase. + * @param[in] id ID number in the table. + * @param[in] count Number of registers to be read. + * @return 1 No data pending, 0 have data pending, -1 error. */ int ddb_db_read(struct Client *cptr, unsigned char table, unsigned int id, int count) @@ -122,15 +150,13 @@ MAP_SHARED | MAP_NORESERVE, fd, 0); if (fd == -1) -/* ddb_die("Error when reading table '%c' (OPEN)", table); */ - return -1; + ddb_die("Error when reading table '%c' (OPEN)", table); if ((map_table.file_stat.size != 0) && (map_table.position == MAP_FAILED)) ddb_die("Error when reading table '%c' (MMAP)", table); close(fd); alarm(0); -/* map_table->point_r = map_table->point_w = map_table->position; */ map_table.point_r = map_table.position; cont = ddb_seek(&map_table, buf, id); @@ -140,7 +166,7 @@ return -1; } - /* Leer */ + /* Read registers */ do { char *mask, *key, *content; @@ -165,8 +191,8 @@ *content++ = '\0'; if (!cptr) - /* Inicio del ircd */ - ddb_new_register(NULL, table, mask, cid, key, content); + /* IRCD starting */ + ddb_new_register(NULL, table, cid, mask, key, content); else { /* Burst */ @@ -187,34 +213,40 @@ } while(ddb_read(&map_table, buf) != -1); - /* CERRAR FICHERO */ + /* Close mmap file */ munmap(map_table.position, map_table.file_stat.size); return int_return; } -/** - * +/** Write the table. + * @param[in] table Table of the %DDB Distributed DataBase. + * @param[in] id ID number in the table. + * @param[in] mask Mask of the server. + * @param[in] key Key of the registry. + * @param[in] content Content of the registry. */ void -ddb_db_write(unsigned char table, char *mask, unsigned int id, char *key, char *content) +ddb_db_write(unsigned char table, unsigned int id, char *mask, char *key, char *content) { struct ddb_stat ddbstat; char path[1024]; + char *corrupt; int fd, offset; ircd_snprintf(0, path, sizeof(path), "%s/table.%c", feature_str(FEAT_DDBPATH), table); alarm(3); - fd = open(path, O_CREAT | O_APPEND | O_WRONLY, S_IRUSR | S_IWUSR); + fd = open(path, O_WRONLY | O_APPEND, S_IRUSR | S_IWUSR); if (fd == -1) ddb_die("Error when saving new key in table '%c' (OPEN)", table); get_ddb_stat(fd, &ddbstat); - /* TODO: Comprobar corrupcion - * comprueba_corrupcion(table, &ddbstat); - */ + corrupt = check_corrupt_table(table, &ddbstat); + if (corrupt) + ddb_die("A nonauthorized modification is detect in table '%c' [%s]", + table, corrupt); offset = lseek(fd, 0 , SEEK_CUR); if (offset < 0) @@ -233,8 +265,8 @@ alarm(0); } -/** - * +/** Delete a table. + * @param[in] table Table of the %DDB Distributed DataBase. */ void ddb_db_drop(unsigned char table) @@ -257,20 +289,21 @@ alarm(0); } -/** - * +/** Pack the table. + * @param[in] table Table of the %DDB Distributed DataBase. */ void -ddb_db_compact(unsigned char table, char *mask, unsigned int id, char *comment) +ddb_db_compact(unsigned char table) { - } -/** - * +/** Read the hashes. + * @param[in] table Table of the %DDB Distributed DataBase. + * @param[out] hi Hi hash. + * @param[out] lo Lo hash. */ void -ddb_hash_read(unsigned char table, unsigned int *hi, unsigned int *lo) +ddb_db_hash_read(unsigned char table, unsigned int *hi, unsigned int *lo) { char path[1024]; char c; @@ -278,6 +311,7 @@ ircd_snprintf(0, path, sizeof(path), "%s/hashes", feature_str(FEAT_DDBPATH)); + alarm(3); fd = open(path, O_RDONLY, S_IRUSR | S_IWUSR); if (fd == -1) { @@ -300,11 +334,11 @@ *lo = base64toint(path + 6); } -/** - * +/** Write the hash. + * @param[in] table Table of the %DDB Distributed DataBase. */ void -ddb_hash_write(unsigned char table) +ddb_db_hash_write(unsigned char table) { char path[1024]; char hash[20]; @@ -329,8 +363,7 @@ } -/** - * +/** Executes when finalizes the %DDB subsystem. */ void ddb_db_end(void) @@ -338,8 +371,9 @@ /* Backup copy? */ } -/** - * +/** Read the table. + * @param[in,out] map_table Structure ddb_memory_table. + * @param[in] buf Buffer. */ static int ddb_read(struct ddb_memory_table *map_table, char *buf) @@ -366,8 +400,10 @@ return -1; } -/** - * +/** Seek the table. + * @param[in,out] memory_table Structure ddb_memory_table. + * @param[in] buf Buffer. + * @param[in] id ID number in the table. */ static int ddb_seek(struct ddb_memory_table *map_table, char *buf, unsigned int id) @@ -411,8 +447,9 @@ return ddb_read(map_table, buf); } -/** - * +/** Fstat wrapper. + * @param[in] fd File Descriptor. + * @param[out] ddbstat Structure ddb_stat. */ static void get_ddb_stat(int fd, struct ddb_stat *ddbstat) @@ -427,3 +464,58 @@ ddbstat->size = st.st_size; ddbstat->mtime = st.st_mtime; } + +/** Checking if a table is corrupt + * @param[in] table Table of the %DDB Distributed DataBase. + * @param[in] ddbstat Structure ddb_stat + * @return If is NULL, the table is not corrupt else, return the reason message. + */ +static char * +check_corrupt_table(unsigned char table, struct ddb_stat *ddbstat) +{ + char *msg = NULL; + + /* TODO */ + return msg; + if (memcmp(&ddbstat, &ddb_stats_table[table], sizeof(ddbstat))) + { + char buf[1024]; + char *space = ""; + + if (ddbstat->dev != ddb_stats_table[table].dev) + { + ircd_snprintf(0, buf, sizeof(buf), "DEVICE %llu<>%llu", + ddbstat->dev, ddb_stats_table[table].dev); + space = " "; + Debug((DEBUG_INFO, "check_corrupt1: %s", buf)); + } + + if (ddbstat->ino != ddb_stats_table[table].ino) + { + ircd_snprintf(0, buf + strlen(buf), sizeof(buf), "%sINODE %llu<>%llu", + space, ddbstat->ino, ddb_stats_table[table].ino); + space = " "; + Debug((DEBUG_INFO, "check_corrupt2: %s", buf)); + } + + if (ddbstat->size != ddb_stats_table[table].size) + { + ircd_snprintf(0, buf + strlen(buf), sizeof(buf), "%sSIZE %llu<>%llu", + space, ddbstat->size, ddb_stats_table[table].size); + space = " "; + Debug((DEBUG_INFO, "check_corrupt3: %s", buf)); + } + + if (ddbstat->mtime != ddb_stats_table[table].mtime) + { + ircd_snprintf(0, buf + strlen(buf), sizeof(buf), "%sMTIME %llu<>%llu", + space, ddbstat->mtime, ddb_stats_table[table].mtime); + Debug((DEBUG_INFO, "check_corrupt4: %s", buf)); + } + Debug((DEBUG_INFO, "check_corrupt: %s", buf)); + ircd_strncpy(msg, buf, strlen(buf)); + } +/* TODO */ + return NULL; + return msg; +} Index: ircd-ircdev/ircd/ddb_db_template.c diff -u ircd-ircdev/ircd/ddb_db_template.c:1.1 ircd-ircdev/ircd/ddb_db_template.c:1.2 --- ircd-ircdev/ircd/ddb_db_template.c:1.1 Wed Mar 23 10:34:47 2005 +++ ircd-ircdev/ircd/ddb_db_template.c Mon May 16 03:17:27 2005 @@ -1,9 +1,8 @@ /* - * IRC-Dev IRCD - An advanced and innovative IRC Daemon, ircd/ddb_db_example.c + * IRC-Dev IRCD - An advanced and innovative IRC Daemon, ircd/ddb_db_template.c * * Copyright (C) 2002-2005 IRC-Dev Development Team <de...@ir...> * Copyright (C) 2004-2005 Toni Garcia (zoltan) <zo...@ir...> - * Copyright (C) 1999-2003 Jesus Cea Avion <jc...@ar...> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,59 +20,150 @@ * */ /** @file - * @brief Implementation of Distributed DataBase. - * @version $Id: ddb_db_template.c,v 1.1 2005/03/23 18:34:47 zolty Exp $ + * @brief Template DataBase mplementation of Distributed DataBases. + * @version $Id: ddb_db_template.c,v 1.2 2005/05/16 10:17:27 zolty Exp $ */ #include "config.h" #include "ddb.h" +#include "client.h" +#include "ircd.h" +#include "ircd_log.h" +#include "ircd_snprintf.h" +#include "ircd_string.h" +#include "msg.h" #include "numnicks.h" +#include "send.h" -#include <fcntl.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <sys/mman.h> -#include <sys/stat.h> -#include <unistd.h> +/* #include <assert.h> -- Now using assert in ircd_log.h */ -int -ddb_db_open(unsigned char table, unsigned int id, struct ddb_memory_table *mt) +/** Initialize database gestion module of + * %DDB Distributed DataBases. + */ +void +ddb_db_init(void) { - return 1; } - -void ddb_db_close(struct ddb_memory_table *mt) +/** Read the table. + * @param[in] cptr %Server if is exists, it sends to server. + * @param[in] table Table of the %DDB Distributed DataBase. + * @param[in] id ID number in the table. + * @param[in] count Number of registers to be read. + * @return 1 No data pending, 0 have data pending, -1 error. + */ +int +ddb_db_read(struct Client *cptr, unsigned char table, unsigned int id, int count) { -} + int int_return; -int ddb_db_read(struct ddb_memory_table *mt, char *mask, char *id, char *key, char *content) -{ - return 1; -} + int_return = 1; /* 1 = success */ + + /* Open file or database */ -void ddb_db_write(unsigned char table, char *mask, unsigned int id, char *key, char *content) + + /* Read registers */ + do + { + if (!cptr) + /* IRCD starting */ + ddb_new_register(NULL, table, mask, cid, key, content); + else + { + /* Burst */ + if (content) + sendcmdto_one(&me, CMD_DB, cptr, "%s %u %c %s :%s", + mask, cid, table, key, content); + else + sendcmdto_one(&me, CMD_DB, cptr, "%s %u %c %s", + mask, cid, table, key); + + if (!(--cont)) + { + int_return = 0; + break; + } + } + + } while(0) /* While read function */ + + /* Close File or Database */ + + return int_return; +} + +/** Write the table. + * @param[in] table Table of the %DDB Distributed DataBase. + * @param[in] id ID number in the table. + * @param[in] mask Mask of the server. + * @param[in] key Key of the registry. + * @param[in] content Content of the registry. + */ +void +ddb_db_write(unsigned char table, char *mask, unsigned int id, char *key, char *content) { + char buf[1024]; + + ircd_snprintf(0, buf, sizeof(buf), "%d %s %s%s%s\n", id, mask, key, + content ? " " : "", content ? content : ""); } -void ddb_db_drop(unsigned char table) +/** Delete a table. + * @param[in] table Table of the %DDB Distributed DataBase. + */ +void +ddb_db_drop(unsigned char table) { } +/** Pack the table. + * @param[in] table Table of the %DDB Distributed DataBase. + */ void ddb_db_compact(unsigned char table, char *mask, unsigned int id, char *comment) { - } +/** Read the hashes. + * @param[in] table Table of the %DDB Distributed DataBase. + * @param[out] hi Hi hash. + * @param[out] lo Lo hash. + */ +void +ddb_db_hash_read(unsigned char table, unsigned int *hi, unsigned int *lo) +{ + char buf[30]; + + /* Read buf + * buf = lala; + */ + buf[12] = '\0'; + c = buf[6]; + buf[6] = '\0'; + *hi = base64toint(buf); + buf[6] = c; + *lo = base64toint(buf + 6); +} -void ddb_hash_read(unsigned char table, unsigned int *hi, unsigned int *lo) +/** Write the hash. + * @param[in] table Table of the %DDB Distributed DataBase. + */ +void +ddb_db_hash_write(unsigned char table) { + char hash[20]; + + inttobase64(hash, ddb_hashtable_hi[table], 6); + inttobase64(hash + 6, ddb_hashtable_lo[table], 6); + ircd_snprintf(0, path, sizeof(path), "%c %s\n", table, hash); } -void ddb_hash_write(unsigned char table) +/** Executes whe finalizes the %DDB subsystem. + */ +void +ddb_db_end(void) { } + Index: ircd-ircdev/ircd/ddb_events.c diff -u ircd-ircdev/ircd/ddb_events.c:1.3 ircd-ircdev/ircd/ddb_events.c:1.4 --- ircd-ircdev/ircd/ddb_events.c:1.3 Sat May 7 15:23:40 2005 +++ ircd-ircdev/ircd/ddb_events.c Mon May 16 03:17:27 2005 @@ -20,8 +20,8 @@ * */ /** @file - * @brief Events of Distributed DataBase. - * @version $Id: ddb_events.c,v 1.3 2005/05/07 22:23:40 zolty Exp $ + * @brief Events of Distributed DataBases. + * @version $Id: ddb_events.c,v 1.4 2005/05/16 10:17:27 zolty Exp $ */ #include "config.h" @@ -39,14 +39,17 @@ #include <stdio.h> #include <string.h> - +/** It indicates events is initialized */ static int events_init = 0; +/** Events table engine */ +ddb_events_table_td ddb_events_table[DDB_TABLE_MAX]; + static void ddb_events_table_n(char *key, char *content, int update); static void ddb_events_table_z(char *key, char *content, int update); -ddb_events_table_td ddb_events_table[DDB_TABLE_MAX]; - +/** Initialize events module of %DDB Distributed DataBases. + */ void ddb_events_init(void) { @@ -60,7 +63,11 @@ events_init = 1; } - +/** Handle events on Nick Table. + * @param[in] key Key of registry. + * @param[in] content Content of registry. + * @param[in] update Update of registry or no. + */ static void ddb_events_table_n(char *key, char *content, int update) { @@ -86,20 +93,17 @@ send_umode_out(cptr, cptr, &oldflags, IsRegistered(cptr)); } - else + else if (content) { /* New Key or Update Key */ - char c = content[strlen(content) - 1]; int nick_suspend = 0; - int nick_forbid = 0; - if (c == '+') + if (content[strlen(content) - 1] == '+') nick_suspend = 1; - else if (c == '*') - nick_forbid = 1; - if (nick_forbid) + if (*content == '*') { + /* Forbid Nick */ sendcmdbotto_one(botname, CMD_NOTICE, cptr, "%C :*** Your nick %C has been forbided, cannot be used", cptr, cptr); nick_renames = 1; @@ -180,6 +184,11 @@ } } +/** Handle events on Config Table. + * @param[in] key Key of registry. + * @param[in] content Content of registry. + * @param[in] update Update of registry or no. + */ static void ddb_events_table_z(char *key, char *content, int update) { Index: ircd-ircdev/ircd/ircd_log.c diff -u ircd-ircdev/ircd/ircd_log.c:1.10 ircd-ircdev/ircd/ircd_log.c:1.11 --- ircd-ircdev/ircd/ircd_log.c:1.10 Sat May 7 15:23:40 2005 +++ ircd-ircdev/ircd/ircd_log.c Mon May 16 03:17:27 2005 @@ -22,7 +22,7 @@ */ /** @file * @brief IRC logging implementation. - * @version $Id: ircd_log.c,v 1.10 2005/05/07 22:23:40 zolty Exp $ + * @version $Id: ircd_log.c,v 1.11 2005/05/16 10:17:27 zolty Exp $ */ #include "config.h" @@ -157,7 +157,7 @@ S(WHO, -1, 0), S(NETWORK, -1, SNO_NETWORK), #ifdef DDB - S(DDB, -1, 0), + S(DDB, -1, SNO_NETWORK), #endif S(OPERKILL, -1, 0), S(SERVKILL, -1, 0), Index: ircd-ircdev/ircd/m_db.c diff -u ircd-ircdev/ircd/m_db.c:1.5 ircd-ircdev/ircd/m_db.c:1.6 --- ircd-ircdev/ircd/m_db.c:1.5 Sat May 7 15:23:40 2005 +++ ircd-ircdev/ircd/m_db.c Mon May 16 03:17:27 2005 @@ -22,17 +22,17 @@ */ /** @file * @brief Handlers for DB command. - * @version $Id: m_db.c,v 1.5 2005/05/07 22:23:40 zolty Exp $ + * @version $Id: m_db.c,v 1.6 2005/05/16 10:17:27 zolty Exp $ */ -/* TODO-ZOLTAN - * Traducidr los comentarios al ingles */ #include "config.h" #include "ddb.h" #include "client.h" #include "ircd.h" +#include "ircd_features.h" #include "ircd_log.h" #include "ircd_reply.h" +#include "ircd_snprintf.h" #include "list.h" #include "match.h" #include "msg.h" @@ -88,18 +88,18 @@ id = atoi(parv[2]); if (!id) { - /* No es un registro */ + /* It is not a register */ id = atoi(parv[4]); if (parc == 6) { table = *parv[5]; if ((table < DDB_INIT) || (table > DDB_END)) { - /* Se pide un HASH Global de todas las tablas */ + /* A global HASH of all the tables is requested */ if ((table == '*') && ((*parv[3] == 'Q') || (*parv[3] == 'R'))) table = '*'; #if 1 - /* COMPATIBILIDAD IRC-HISPANO */ + /* ESNET Compatibility */ else if (table == '2') table = DDB_NICKDB; #endif @@ -114,7 +114,7 @@ switch (*parv[3]) { - /* Peticion de Burst (quedan registros) */ + /* Burst command (Pending registers for send) */ case 'B': if (IsHub(cptr)) sendcmdto_one(&me, CMD_DB, cptr, "%s 0 J %u %c", parv[0], ddb_id_table[table], table); @@ -126,61 +126,60 @@ if (!IsHub(cptr)) break; - /* Enviamos el mensaje al resto de servidores */ + /* Send the message to the rest of servers */ for (lp = cli_serv(&me)->down; lp; lp = lp->next) { if (lp->value.cptr != cptr) { sendcmdto_one(&me, CMD_DB, lp->value.cptr, "%s 0 D %s %c", parv[1], parv[4], table); - /* TODO-ZOLTAN: Mirar si es necesario (IRC-Hispano) */ + /* TODO-ZOLTAN: Mirar si es necesario (ESNET) */ /* cli_serv(lp->value.cptr)->ddb_open &= ~ddb_mask); */ } } - - /* Usamos collapse+match por un bug en lastNNServer del find_match_server() */ + + /* For lastNNServer bug (find_match_server) it use collapse + match */ collapse(parv[1]); - /* Si no es para nosotros, lo ignoramos */ + /* If it is not for us, it ignored */ if (match(parv[1], cli_name(&me))) break; - /* Borramos la tabla en memoria y en disco */ + /* Drop the table on memory and disk */ ddb_drop(table); - /* Desconectamos con todos los hubs menos el que nos envia la orden */ - log_write(LS_DDB, L_INFO, 0, "DB Drop Table %c from %#C", table, cptr); - ircd_snprintf(0, ddb_buf, sizeof(ddb_buf), "DB DROP Table %c from %s", - table, cli_name(cptr)); + /* Disconnect with all hubs except which it sends to us */ + log_write(LS_DDB, L_INFO, 0, "DB Drop Table %c from %C", table, cptr); + ircd_snprintf(0, ddb_buf, sizeof(ddb_buf), "DB DROP Table %c from %C", + table, cptr); ddb_splithubs_butone(cptr, ddb_buf); - /* Mandamos la respuesta de conformidad */ + /* Send the conformity response */ sendcmdto_one(&me, CMD_DB, cptr, "%s 0 E %s %c", cli_name(cptr), parv[4], table); /* TODO-ZOLTAN: Creo que hay que mandar a todos */ cli_serv(cptr)->ddb_open &= ~ddb_mask; - /* Solicitamos de nuevo la tabla */ sendcmdto_one(&me, CMD_DB, cptr, "%s 0 J %u %c", cli_name(cptr), ddb_id_table[table], table); break; } - /* Respuesta de Drop */ + /* Drop response */ case 'E': - /* Si no es para nosotros, lo pasamos a otros */ + /* If it is not for us, passed it to others */ if ((acptr = find_match_server(parv[1])) && (!IsMe(acptr))) sendcmdto_one(sptr, CMD_DB, acptr, "%s 0 E %s %c", cli_name(acptr), parv[4], table); break; - /* Comprobacion de Hash automatico leaf <=> hub */ + /* Automatic verification of HASH leaf <=> Hub */ case 'H': { char *hash; unsigned int hash_lo, hash_hi; - if (IsHub(&me)) + if (feature_bool(FEAT_HUB)) return protocol_violation(cptr, "Don't HASH check to HUBs, table %c from %#C", table, cptr); hash = parv[4]; @@ -192,58 +191,59 @@ hash[6] = parv[4][6]; hash_hi = base64toint(hash + 6); + sendto_opmask_butone(0, SNO_OLDSNO, "Lo: %d Hashtable_Lo: %d Hi: %d Hashtable_Hi %d", + hash_lo, ddb_hashtable_lo[table], hash_hi, ddb_hashtable_hi[table]); +#if 0 if (!((hash_lo == ddb_hashtable_lo[table]) && (hash_hi == ddb_hashtable_hi[table]))) { - /* El HASH es incorrecto, a borrar */ - sendto_opmask_butone(0, SNO_OLDSNO, "DB HASH Check failed, droping table %c", table); + /* The HASH is incorrect, to erase */ log_write(LS_DDB, L_INFO, 0, "DB HASH Check failed, droping table %c", table); - /* Borramos la tabla en memoria y en disco*/ + /* Drop the table on memory and disk */ ddb_drop(table); - /* Solicitamos de nuevo la tabla */ sendcmdto_one(&me, CMD_DB, cptr, "%s 0 J %u %c", cli_name(cptr), ddb_id_table[table], table); } +#endif break; } /* Join */ case 'J': { - int burst; + int end_burst; if (id >= ddb_id_table[table]) { - /* Registros individuales */ + /* Individual registers*/ cli_serv(cptr)->ddb_open |= ddb_mask; break; } else if ((cli_serv(cptr)->ddb_open) & ddb_mask) { - /* Grifo abierto y registros antiguos. - * Ocurre si la copia de cptr de la DDB - * esta corrupta + /* Open faucet and old registers. + * It happens if the copy of cptr of the DDB + * is corrupt. */ (cli_serv(cptr)->ddb_open) &= ~ddb_mask; - /* Borramos su DDB para curarnos en salud */ + /* Drop your DDB */ sendcmdto_one(&me, CMD_DB, cptr, "%s 0 D DDB_CORRUPT %c", cli_name(cptr), table); break; } - /* En el Burst de tabla, se hacen rafagas de 1000 registros, - * se envia una en cada petición de JOIN. La funcion devuelve 1 - * si se han mandado todos los datos en el rafaga y 0 si aún hay - * datos pendientes. - * La comprobacion automatica de HASH solo se debe hacer a los - * leafs, NUNCA a HUBS, ya que si un HUB tiene la DB corrupta, - * toda la red se va a tomar por viento con un borrado masivo. + /* In the burst of table, bursts become of 1000 registers, is send + * one in each JOIN request. This function gives back 1 if all the + * data is sent and 0 if still there are pending data. + * The automatic HASH verification is due to do to leafs, NEVER to + * HUBS, since if a HUB has the corrupt DB, all the network is down + * by wind with a massive erasure. */ - burst = ddb_db_read(cptr, table, (id + 1), 1000); - if (burst == 1) + end_burst = ddb_db_read(cptr, table, (id + 1), 1000); + if (end_burst == 1) { cli_serv(cptr)->ddb_open |= ((unsigned int)1) << (table - DDB_INIT); if (IsHub(cptr)) @@ -254,26 +254,26 @@ sendcmdto_one(&me, CMD_DB, cptr, "%s 0 H %s %c", cli_name(cptr), ddb_buf, table); } - else if (burst == 0) + else if (end_burst == 0) sendcmdto_one(&me, CMD_DB, cptr, "%s 0 B %u %c", cli_name(cptr), ddb_id_table[table], table); break; } - /* Query de hash para comprobaciones desde un service */ + /* Hash Query command for verify from a service */ case 'Q': { if (!IsHub(cptr)) break; - /* Usamos collapse+match por un bug en lastNNServer del find_match_server() */ + /* For lastNNServer bug (find_match_server) it use collapse + match */ collapse(parv[1]); - /* Solo si es para nosotros si lo ignoramos */ + /* If it is not for us, passed it to others */ if (!match(parv[1], cli_name(&me))) { if (table == '*') { - /* HASH de todas las tablas */ + /* HASH of all the tables */ unsigned int hashes_hi = 0; unsigned int hashes_lo = 0; unsigned int id_tables = 1; @@ -297,7 +297,7 @@ } else { - /* Una tabla */ + /* One table */ inttobase64(ddb_buf, ddb_hashtable_hi[table], 6); inttobase64(ddb_buf + 6, ddb_hashtable_lo[table], 6); @@ -307,7 +307,7 @@ } } - /* Enviamos la petición a los demas */ + /* Send the petition to the others */ for (lp = cli_serv(&me)->down; lp; lp = lp->next) { if (lp->value.cptr != cptr) @@ -317,52 +317,44 @@ break; } - /* Respuesta de hash */ + /* Hash response */ case 'R': - /* Si no es para nosotros, lo pasamos a otros */ + /* If it is not for us, passed it to others */ if ((acptr = find_match_server(parv[1])) && (!IsMe(acptr))) sendcmdto_one(sptr, CMD_DB, acptr, "%s 0 R %s %c", cli_name(acptr), parv[4], table); break; - /* Registro nuevo, el parv[3] es la tabla */ + /* New register, parv[3] is the table */ default: { int delete; - /* Solo se aceptan registros procedentes de un HUB */ -/* Hablitarlo + /* Only accepted registers coming from a HUB */ if (!IsHub(cptr)) return 0; -*/ + table = *parv[3]; if (table < DDB_INIT || table > DDB_END) - { -#if 0 - /* COMPATIBILIDAD IRC-HISPANO */ - if (table == 'N') - table = DDB_NICKDB; -#endif return 0; - } id = atoi(parv[2]); - /* Rechazamos registros con ID inferior al nuestro */ + /* Rejected registers with ID lower to our */ if (id <= ddb_id_table[table]) return 0; if (parc == 5) - /* Borrado del registro */ + /* Delete register */ delete = 1; else if (parc > 5) - /* Insertado del registro */ + /* Add register */ delete = 0; else - /* No deberia ocurrir */ return protocol_violation(sptr, "DB Incorrect parameters"); ddb_mask = ((unsigned int) 1) << (table - DDB_INIT); - /* Propagamos a nuestros servidores hijos */ + + /* Propagated to our child servers */ for (lp = cli_serv(&me)->down; lp; lp = lp->next) { if ((lp->value.cptr != cptr) && @@ -378,11 +370,9 @@ } if (strcmp(parv[4], "*")) - ddb_new_register(cptr, table, parv[1], id, parv[4], (!delete ? parv[5] : NULL)); -/* + ddb_new_register(cptr, table, id, parv[1], parv[4], (!delete ? parv[5] : NULL)); else - ddb_compact(table, parv[1], id, parv[5]); -*/ + ddb_compact(table, id, parv[5]); break; } Index: ircd-ircdev/ircd/m_dbq.c diff -u ircd-ircdev/ircd/m_dbq.c:1.3 ircd-ircdev/ircd/m_dbq.c:1.4 --- ircd-ircdev/ircd/m_dbq.c:1.3 Wed Mar 23 10:34:51 2005 +++ ircd-ircdev/ircd/m_dbq.c Mon May 16 03:17:27 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Handlers for DBQ command. - * @version $Id: m_dbq.c,v 1.3 2005/03/23 18:34:51 zolty Exp $ + * @version $Id: m_dbq.c,v 1.4 2005/05/16 10:17:27 zolty Exp $ */ #include "config.h" @@ -77,7 +77,7 @@ if (parc == 3) { - server = NULL; /* no nos indican server */ + server = NULL; table = *parv[parc - 2]; key = parv[parc - 1]; } @@ -96,15 +96,14 @@ /* NOT BROADCAST */ if (!(acptr = find_match_server(server))) { - /* joer, el server de destino no existe */ send_reply(sptr, ERR_NOSUCHSERVER, server); return 0; } - if (!IsMe(acptr)) /* no es para mi, a rutar */ + if (!IsMe(acptr)) { sendcmdto_one(acptr, CMD_DBQ, sptr, "%s %c %s", server, table, key); - return 0; /* ok, rutado, fin del trabajo */ + return 0; } } } @@ -129,11 +128,11 @@ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :DBQ OK Table='%c' Key='%s' Content='%... [truncated message content] |
From: Toni G. <zo...@us...> - 2005-05-17 00:59:02
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-05-16 11:23:00 UTC Modified files: ChangeLog ChangeLog.es configure configure.in include/patchlevel.h ircd/channel.c ircd/ircd.c ircd/ircd_crypt_native.c ircd/ircd_parser.y ircd/m_trace.c ircd/motd.c ircd/msgq.c ircd/numnicks.c ircd/os_generic.c ircd/s_stats.c ircd/umkpasswd.c ircd/test/ircd_in_addr_t.c Log message: Author: zoltan <zo...@ir...> Log message: 2005-05-16 Toni García <zo...@ir...> 1.0.alpha34 * Sincronización Undernet ---------------------- diff included ---------------------- Index: ircd-ircdev/ChangeLog diff -u ircd-ircdev/ChangeLog:1.35 ircd-ircdev/ChangeLog:1.36 --- ircd-ircdev/ChangeLog:1.35 Mon May 16 03:17:26 2005 +++ ircd-ircdev/ChangeLog Mon May 16 04:22:48 2005 @@ -1,10 +1,13 @@ # # ChangeLog for ircd-ircdev # -# $Id: ChangeLog,v 1.35 2005/05/16 10:17:26 zolty Exp $ +# $Id: ChangeLog,v 1.36 2005/05/16 11:22:48 zolty Exp $ # # Insert new changes at beginning of the change list. # +2005-05-16 Toni García <zo...@ir...> 1.0.alpha34 + * Undernet synchronization + 2005-05-16 Toni García <zo...@ir...> 1.0.alpha33 * Fix bugs * Doxygen documentation Index: ircd-ircdev/ChangeLog.es diff -u ircd-ircdev/ChangeLog.es:1.35 ircd-ircdev/ChangeLog.es:1.36 --- ircd-ircdev/ChangeLog.es:1.35 Mon May 16 03:17:26 2005 +++ ircd-ircdev/ChangeLog.es Mon May 16 04:22:48 2005 @@ -1,10 +1,13 @@ # # Log de Cambios para ircd-ircdev # -# $Id: ChangeLog.es,v 1.35 2005/05/16 10:17:26 zolty Exp $ +# $Id: ChangeLog.es,v 1.36 2005/05/16 11:22:48 zolty Exp $ # # Insertar los nuevos cambios al principio de esta lista de cambios. # +2005-05-16 Toni García <zo...@ir...> 1.0.alpha34 + * Sincronización Undernet + 2005-05-16 Toni García <zo...@ir...> 1.0.alpha33 * Fix de bugs * Documentación Doxygen Index: ircd-ircdev/configure diff -u ircd-ircdev/configure:1.17 ircd-ircdev/configure:1.18 --- ircd-ircdev/configure:1.17 Fri Apr 22 09:51:16 2005 +++ ircd-ircdev/configure Mon May 16 04:22:48 2005 @@ -849,8 +849,7 @@ it is a system call --enable-debug Turn on debugging mode --disable-asserts Disable assertion checking - --disable-symbols Disable debugging symbols (remove -g from CFLAGS) - --enable-profile Enable profiling support (add -pg to CFLAGS) + --enable-profile Enable profiling support (add -pg to CFLAGS and LDFLAGS) --enable-pedantic Enable pedantic warnings (add -pedantic to CFLAGS) --enable-warnings Enable warnings (add -Wall to CFLAGS) --disable-inlines Disable inlining for a few critical functions @@ -861,8 +860,6 @@ Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-optimization=-O2 Explicitly set the compiler optimization flags - (default: -O3) --with-leak-detect Turn on the leak detector(requires patched boehm) --without-ipv6 disable IPv6 support (default is autodetect) --with-symlink=name Name to give the symlink; if name is "no," no @@ -982,7 +979,7 @@ else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi - cd "$ac_popdir" + cd $ac_popdir done fi @@ -2000,7 +1997,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -2058,7 +2056,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -2174,7 +2173,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -2228,7 +2228,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -2273,7 +2274,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -2317,7 +2319,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -2431,7 +2434,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -2468,61 +2472,6 @@ esac -# Check whether --with-optimization or --without-optimization was given. -if test "${with_optimization+set}" = set; then - withval="$with_optimization" - unet_cv_optimization=$withval -else - unet_cv_optimization='-O3' -fi; -echo "$as_me:$LINENO: checking optimization level" >&5 -echo $ECHO_N "checking optimization level... $ECHO_C" >&6 -if test "${unet_cv_optimization+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - unet_cv_optimization='-O3' -fi -echo "$as_me:$LINENO: result: $unet_cv_optimization" >&5 -echo "${ECHO_T}$unet_cv_optimization" >&6 -if test "x$unet_cv_optimization" = "xno" ; then - unet_cv_optimization="" -fi -if test x"$CFLAGS" != x; then - CFLAGS=`echo "$CFLAGS" | sed -e s/-O2/$unet_cv_optimization/` -fi -if test x"$CFLAGS" != x; then - unet_old_cflags=$CFLAGS - CFLAGS=`echo "$CFLAGS" | sed -e 's/-g//g'` -fi -if test x"$CFLAGS" != x"$unet_old_cflags"; then - # If -g was already there, force symbols to be enabled - unet_cv_enable_symbols=yes -fi -if test x"$CFLAGS" != x; then - unet_old_cflags=$CFLAGS - CFLAGS=`echo "$CFLAGS" | sed -e 's/-pg//g'` -fi -if test x"$CFLAGS" != x"$unet_old_cflags"; then - # If -pg was already there, force profiling to be enabled - unet_cv_enable_profile=yes -fi -if test x"$CFLAGS" != x; then - unet_old_cflags=$CFLAGS - CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wall//g'` -fi -if test x"$CFLAGS" != x"$unet_old_cflags"; then - # If -Wall was already there, force warnings to be enabled - unet_cv_enable_warnings=yes -fi -if test x"$CFLAGS" != x; then - unet_old_cflags=$CFLAGS - CFLAGS=`echo "$CFLAGS" | sed -e 's/-pedantic//g'` -fi -if test x"$CFLAGS" != x"$unet_old_cflags"; then - # If -pedantic was already there, force pedatic to be enabled - unet_cv_enable_pedantic=yes -fi - echo "$as_me:$LINENO: checking for library containing crypt" >&5 echo $ECHO_N "checking for library containing crypt... $ECHO_C" >&6 @@ -2562,7 +2511,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -2616,7 +2566,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -2721,7 +2672,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -2788,7 +2740,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -2861,7 +2814,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -2935,7 +2889,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -3002,7 +2957,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -3112,7 +3068,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -3178,7 +3135,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -3249,7 +3207,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -3567,7 +3526,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -3737,7 +3697,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -3813,7 +3774,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -3964,7 +3926,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4006,7 +3969,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4063,7 +4027,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4188,7 +4153,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4254,7 +4220,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4316,7 +4283,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4417,7 +4385,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4479,7 +4448,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4519,7 +4489,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4575,7 +4546,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4615,7 +4587,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4679,7 +4652,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4710,8 +4684,10 @@ esac else if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 -echo "$as_me: error: internal error: not reached in cross-compile" >&2;} + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF @@ -4823,7 +4799,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4885,7 +4862,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4925,7 +4903,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4981,7 +4960,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -5021,7 +5001,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -5085,7 +5066,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -5116,8 +5098,10 @@ esac else if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 -echo "$as_me: error: internal error: not reached in cross-compile" >&2;} + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF @@ -5229,7 +5213,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -5291,7 +5276,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -5331,7 +5317,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -5387,7 +5374,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -5427,7 +5415,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -5491,7 +5480,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -5522,8 +5512,10 @@ esac else if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 -echo "$as_me: error: internal error: not reached in cross-compile" >&2;} + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF @@ -5635,7 +5627,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -5697,7 +5690,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -5737,7 +5731,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -5793,7 +5788,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -5833,7 +5829,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -5897,7 +5894,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -5928,8 +5926,10 @@ esac else if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 -echo "$as_me: error: internal error: not reached in cross-compile" >&2;} + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF @@ -6041,7 +6041,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -6103,7 +6104,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -6143,7 +6145,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -6199,7 +6202,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -6239,7 +6243,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -6303,7 +6308,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -6334,8 +6340,10 @@ esac else if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 -echo "$as_me: error: internal error: not reached in cross-compile" >&2;} + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF @@ -6447,7 +6455,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -6509,7 +6518,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -6549,7 +6559,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -6605,7 +6616,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -6645,7 +6657,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -6709,7 +6722,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -6740,8 +6754,10 @@ esac else if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 -echo "$as_me: error: internal error: not reached in cross-compile" >&2;} + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF @@ -6854,7 +6870,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -6919,7 +6936,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -6985,7 +7003,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -7050,7 +7069,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -7121,7 +7141,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -7186,7 +7207,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -7252,7 +7274,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -7317,7 +7340,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -7383,7 +7407,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -7448,7 +7473,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -7519,7 +7545,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -7575,7 +7602,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -7632,7 +7660,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -7697,7 +7726,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -7767,7 +7797,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -7834,7 +7865,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -7936,7 +7968,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -8008,7 +8041,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -8073,7 +8107,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -8619,7 +8654,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -8685,7 +8721,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -8774,7 +8811,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -9071,7 +9109,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -9371,27 +9410,6 @@ fi -echo "$as_me:$LINENO: checking whether to enable debugging symbols" >&5 -echo $ECHO_N "checking whether to enable debugging symbols... $ECHO_C" >&6 -# Check whether --enable-symbols or --disable-symbols was given. -if test "${enable_symbols+set}" = set; then - enableval="$enable_symbols" - unet_cv_enable_symbols=$enable_symbols -else - if test "${unet_cv_enable_symbols+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - unet_cv_enable_symbols=yes -fi - -fi; -echo "$as_me:$LINENO: result: $unet_cv_enable_symbols" >&5 -echo "${ECHO_T}$unet_cv_enable_symbols" >&6 - -if test x"$unet_cv_enable_symbols" = xyes; then - CFLAGS="-g $CFLAGS" -fi - echo "$as_me:$LINENO: checking whether to enable profiling support (gprof)" >&5 echo $ECHO_N "checking whether to enable profiling support (gprof)... $ECHO_C" >&6 # Check whether --enable-profile or --disable-profile was given. @@ -9411,6 +9429,7 @@ if test x"$unet_cv_enable_profile" = xyes; then CFLAGS="-pg $CFLAGS" + LDFLAGS="-pg $LDFLAGS" fi echo "$as_me:$LINENO: checking whether to enable pedantic compiler warnings" >&5 @@ -9591,7 +9610,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -9656,7 +9676,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -9718,7 +9739,8 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -11071,6 +11093,11 @@ *) ac_INSTALL=$ac_top_builddir$INSTALL ;; esac + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ @@ -11109,12 +11136,6 @@ fi;; esac done` || { (exit 1); exit 1; } - - if test x"$ac_file" != x-; then - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - rm -f "$ac_file" - fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub Index: ircd-ircdev/configure.in diff -u ircd-ircdev/configure.in:1.16 ircd-ircdev/configure.in:1.17 --- ircd-ircdev/configure.in:1.16 Fri Apr 22 09:22:12 2005 +++ ircd-ircdev/configure.in Mon May 16 04:22:49 2005 @@ -22,7 +22,7 @@ dnl along with this program; if not, write to the Free Software dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA dnl -dnl $Id: configure.in,v 1.16 2005/04/22 16:22:12 zolty Exp $ +dnl $Id: configure.in,v 1.17 2005/05/16 11:22:49 zolty Exp $ dnl dnl Make sure we are in the correct directory (someone could have run @@ -57,54 +57,6 @@ dnl ANSIfy the C compiler whenever possible. AM_PROG_CC_STDC -dnl Allow specification of optimization level. -AC_ARG_WITH([optimization], - AS_HELP_STRING([--with-optimization=[-O2]], [Explicitly set the compiler optimization flags (default: -O3)]), - [unet_cv_optimization=$withval], - [unet_cv_optimization='-O3']) -AC_CACHE_CHECK([optimization level], [unet_cv_optimization], [unet_cv_optimization='-O3']) -if test "x$unet_cv_optimization" = "xno" ; then - unet_cv_optimization="" -fi -if test x"$CFLAGS" != x; then - CFLAGS=`echo "$CFLAGS" | sed -e s/-O2/$unet_cv_optimization/` -fi -dnl Notice the -g flag and deal accordingly -if test x"$CFLAGS" != x; then - unet_old_cflags=$CFLAGS - CFLAGS=`echo "$CFLAGS" | sed -e 's/-g//g'` -fi -if test x"$CFLAGS" != x"$unet_old_cflags"; then - # If -g was already there, force symbols to be enabled - unet_cv_enable_symbols=yes -fi -dnl Notice the -pg flag and deal accordingly -if test x"$CFLAGS" != x; then - unet_old_cflags=$CFLAGS - CFLAGS=`echo "$CFLAGS" | sed -e 's/-pg//g'` -fi -if test x"$CFLAGS" != x"$unet_old_cflags"; then - # If -pg was already there, force profiling to be enabled - unet_cv_enable_profile=yes -fi -dnl Notice the -Wall flag and deal accordingly -if test x"$CFLAGS" != x; then - unet_old_cflags=$CFLAGS - CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wall//g'` -fi -if test x"$CFLAGS" != x"$unet_old_cflags"; then - # If -Wall was already there, force warnings to be enabled - unet_cv_enable_warnings=yes -fi -dnl Notice the -pedantic flag and deal accordingly -if test x"$CFLAGS" != x; then - unet_old_cflags=$CFLAGS - CFLAGS=`echo "$CFLAGS" | sed -e 's/-pedantic//g'` -fi -if test x"$CFLAGS" != x"$unet_old_cflags"; then - # If -pedantic was already there, force pedatic to be enabled - unet_cv_enable_pedantic=yes -fi dnl Checks for libraries. @@ -313,23 +265,10 @@ AC_DEFINE([NDEBUG], 1, [Disable assertions]) fi -dnl Check for --enable-symbols -AC_MSG_CHECKING([whether to enable debugging symbols]) -AC_ARG_ENABLE([symbols], -[ --disable-symbols Disable debugging symbols (remove -g from CFLAGS)], -[unet_cv_enable_symbols=$enable_symbols], -[AC_CACHE_VAL(unet_cv_enable_symbols, -[unet_cv_enable_symbols=yes])]) -AC_MSG_RESULT([$unet_cv_enable_symbols]) - -if test x"$unet_cv_enable_symbols" = xyes; then - CFLAGS="-g $CFLAGS" -fi - dnl Now check for --enable-profile AC_MSG_CHECKING([whether to enable profiling support (gprof)]) AC_ARG_ENABLE([profile], -[ --enable-profile Enable profiling support (add -pg to CFLAGS)], +[ --enable-profile Enable profiling support (add -pg to CFLAGS and LDFLAGS)], [unet_cv_enable_profile=$enable_profile], [AC_CACHE_VAL(unet_cv_enable_profile, [unet_cv_enable_profile=no])]) Index: ircd-ircdev/include/patchlevel.h diff -u ircd-ircdev/include/patchlevel.h:1.34 ircd-ircdev/include/patchlevel.h:1.35 --- ircd-ircdev/include/patchlevel.h:1.34 Mon May 16 03:17:26 2005 +++ ircd-ircdev/include/patchlevel.h Mon May 16 04:22:50 2005 @@ -17,10 +17,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: patchlevel.h,v 1.34 2005/05/16 10:17:26 zolty Exp $ + * $Id: patchlevel.h,v 1.35 2005/05/16 11:22:50 zolty Exp $ * */ -#define PATCHLEVEL ".alpha33" +#define PATCHLEVEL ".alpha34" #define RELEASE "1.0" Index: ircd-ircdev/ircd/channel.c diff -u ircd-ircdev/ircd/channel.c:1.20 ircd-ircdev/ircd/channel.c:1.21 --- ircd-ircdev/ircd/channel.c:1.20 Sat May 7 15:23:40 2005 +++ ircd-ircdev/ircd/channel.c Mon May 16 04:22:50 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Channel management and maintanance - * @version $Id: channel.c,v 1.20 2005/05/07 22:23:40 zolty Exp $ + * @version $Id: channel.c,v 1.21 2005/05/16 11:22:50 zolty Exp $ */ #include "config.h" @@ -696,6 +696,12 @@ */ if (member->channel->mode.mode & MODE_MODERATED) return 0; +#if defined(UNDERNET) + /* TODO */ + /* If only logged in users may join and you're not one, you can't speak. */ + if (member->channel->mode.mode & MODE_REGONLY && !IsAccount(member->user)) + return 0; +#endif /* * If you're banned then you can't speak either. * but because of the amount of CPU time that is_banned chews @@ -3574,9 +3580,16 @@ sendcmdto_channel_butserv_butone(jbuf->jb_source, CMD_JOIN, chan, NULL, 0, "%H", chan); /* send an op, too, if needed */ +#if defined(UNDERNET) + if (flags & CHFL_CHANOP && (oplevel < MAXOPLEVEL || !MyUser(jbuf->jb_source))) + sendcmdto_channel_butserv_butone((chan->mode.apass[0] ? &me : jbuf->jb_source), + CMD_MODE, chan, NULL, 0, "%H +o %C", + chan, jbuf->jb_source); +#else if (flags & CHFL_CHANOP) sendcmdto_channel_butserv_butone(&me, CMD_MODE, chan, NULL, 0, "%H +o %C", chan, jbuf->jb_source); +#endif } else if (MyUser(jbuf->jb_source)) sendcmdto_one(jbuf->jb_source, CMD_JOIN, jbuf->jb_source, ":%H", chan); } Index: ircd-ircdev/ircd/ircd.c diff -u ircd-ircdev/ircd/ircd.c:1.18 ircd-ircdev/ircd/ircd.c:1.19 --- ircd-ircdev/ircd/ircd.c:1.18 Sat May 7 05:43:29 2005 +++ ircd-ircdev/ircd/ircd.c Mon May 16 04:22:50 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Entry point and other initialization functions for the daemon. - * @version $Id: ircd.c,v 1.18 2005/05/07 12:43:29 zolty Exp $ + * @version $Id: ircd.c,v 1.19 2005/05/16 11:22:50 zolty Exp $ */ #include "config.h" @@ -667,6 +667,23 @@ */ daemon_init(thisServer.bootopt & BOOT_TTY); +#ifdef DEBUGMODE + /* Must reserve fd 2... */ + if (debuglevel >= 0 && !(thisServer.bootopt & BOOT_TTY)) { + int fd; + if ((fd = open("/dev/null", O_WRONLY)) < 0) { + fprintf(stderr, "Unable to open /dev/null (to reserve fd 2): %s\n", + strerror(errno)); + return 8; + } + if (fd != 2 && dup2(fd, 2) < 0) { + fprintf(stderr, "Unable to reserve fd 2; dup2 said: %s\n", + strerror(errno)); + return 8; + } + } +#endif + event_init(MAXCONNECTIONS); setup_signals(); Index: ircd-ircdev/ircd/ircd_crypt_native.c diff -u ircd-ircdev/ircd/ircd_crypt_native.c:1.4 ircd-ircdev/ircd/ircd_crypt_native.c:1.5 --- ircd-ircdev/ircd/ircd_crypt_native.c:1.4 Mon Mar 21 10:39:07 2005 +++ ircd-ircdev/ircd/ircd_crypt_native.c Mon May 16 04:22:50 2005 @@ -22,14 +22,13 @@ /** * @file * @brief Native crypt() function routines - * @version $Id: ircd_crypt_native.c,v 1.4 2005/03/21 18:39:07 zolty Exp $ + * @version $Id: ircd_crypt_native.c,v 1.5 2005/05/16 11:22:50 zolty Exp $ * * Routines for handling passwords encrypted with the system's native crypt() * function (typically a DES encryption routine, but can be anything nowdays). * */ -#define _XOPEN_SOURCE -#define _XOPEN_VERSION 4 +#define _XOPEN_SOURCE 600 #include "config.h" #include "ircd_crypt.h" Index: ircd-ircdev/ircd/ircd_parser.y diff -u ircd-ircdev/ircd/ircd_parser.y:1.20 ircd-ircdev/ircd/ircd_parser.y:1.21 --- ircd-ircdev/ircd/ircd_parser.y:1.20 Thu Apr 28 15:00:08 2005 +++ ircd-ircdev/ircd/ircd_parser.y Mon May 16 04:22:50 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: ircd_parser.y,v 1.20 2005/04/28 22:00:08 zolty Exp $ + * $Id: ircd_parser.y,v 1.21 2005/05/16 11:22:50 zolty Exp $ * */ %{ @@ -184,7 +184,7 @@ block: adminblock | generalblock | classblock | connectblock | uworldblock | operblock | portblock | jupeblock | clientblock | killblock | cruleblock | motdblock | featuresblock | quarantineblock | - pseudoblock | iauthblock | error; + pseudoblock | iauthblock | error ';'; /* The timespec, sizespec and expr was ripped straight from * ircd-hybrid-7. */ @@ -258,22 +258,22 @@ jupeblock: JUPE '{' jupeitems '}' ';' ; jupeitems: jupeitem jupeitems | jupeitem; -jupeitem: jupenick | error; -jupenick: NICK '=' QSTRING +jupeitem: jupenick; +jupenick: NICK '=' QSTRING ';' { addNickJupes($3); MyFree($3); -} ';'; +}; -generalblock: GENERAL '{' generalitems '}' +generalblock: GENERAL '{' generalitems '}' ';' { if (localConf.name == NULL) parse_error("Your General block must contain a name."); if (localConf.numeric == 0) parse_error("Your General block must contain a numeric (between 1 and 4095)."); -} ';' ; +}; generalitems: generalitem generalitems | generalitem; -generalitem: generalnumeric | generalname | generalvhost | generaldesc | error; +generalitem: generalnumeric | generalname | generalvhost | generaldesc; generalnumeric: NUMERIC '=' NUMBER ';' { if (localConf.numeric == 0) @@ -314,7 +314,7 @@ MyFree($3); }; -adminblock: ADMIN '{' adminitems '}' +adminblock: ADMIN '{' adminitems '}' ';' { if (localConf.location1 == NULL) DupString(localConf.location1, ""); @@ -322,9 +322,9 @@ DupString(localConf.location2, ""); if (localConf.contact == NULL) DupString(localConf.contact, ""); -} ';'; +}; adminitems: adminitems adminitem | adminitem; -adminitem: adminlocation | admincontact | error; +adminitem: adminlocation | admincontact; adminlocation: LOCATION '=' QSTRING ';' { if (localConf.location1 == NULL) @@ -342,7 +342,7 @@ classblock: CLASS { tping = 90; -} '{' classitems '}' +} '{' classitems '}' ';' { if (name != NULL) { @@ -364,10 +364,10 @@ sendq = 0; memset(&privs, 0, sizeof(privs)); memset(&privs_dirty, 0, sizeof(privs_dirty)); -} ';'; +}; classitems: classitem classitems | classitem; classitem: classname | classpingfreq | classconnfreq | classmaxlinks | - classsendq | classusermode | priv | error; + classsendq | classusermode | priv; classname: NAME '=' QSTRING ';' { MyFree(name); @@ -399,7 +399,7 @@ { maxlinks = 65535; flags = CONF_AUTOCONNECT; -} '{' connectitems '}' +} '{' connectitems '}' ';' { struct ConfItem *aconf = NULL; if (name == NULL) @@ -435,11 +435,11 @@ name = pass = host = origin = hub_limit = NULL; c_class = NULL; port = flags = 0; -}';'; +}; connectitems: connectitem connectitems | connectitem; connectitem: connectname | connectpass | connectclass | connecthost | connectport | connectvhost | connectleaf | connecthub - | connecthublimit | connectmaxhops | connectauto | error; + | connecthublimit | connectmaxhops | connectauto; connectname: NAME '=' QSTRING ';' { MyFree(name); @@ -494,7 +494,7 @@ uworldblock: UWORLD '{' uworlditems '}' ';'; uworlditems: uworlditem uworlditems | uworlditem; -uworlditem: uworldname | error; +uworlditem: uworldname; uworldname: NAME '=' QSTRING ';' { make_conf(CONF_UWORLD)->host = $3; @@ -534,7 +534,7 @@ memset(&privs_dirty, 0, sizeof(privs_dirty)); }; operitems: operitem | operitems operitem; -operitem: opername | operpass | operhost | operclass | priv | error; +operitem: opername | operpass | operhost | operclass | priv; opername: NAME '=' QSTRING ';' { MyFree(name); @@ -623,7 +623,7 @@ port = tconn = tping = 0; }; portitems: portitem portitems | portitem; -portitem: portnumber | portvhost | portmask | portserver | porthidden | error; +portitem: portnumber | portvhost | portmask | portserver | porthidden; portnumber: PORT '=' NUMBER ';' { port = $3; @@ -698,7 +698,7 @@ pass = NULL; }; clientitems: clientitem clientitems | clientitem; -clientitem: clienthost | clientip | clientusername | clientclass | clientpass | clientmaxlinks | error; +clientitem: clienthost | clientip | clientusername | clientclass | clientpass | clientmaxlinks; clienthost: HOST '=' QSTRING ';' { char *sep = strchr($3, '@'); @@ -751,7 +751,7 @@ killblock: KILL { dconf = (struct DenyConf*) MyCalloc(1, sizeof(*dconf)); -} '{' killitems '}' +} '{' killitems '}' ';' { if (dconf->usermask || dconf->hostmask ||dconf->realmask) { if (dconf->hostmask != NULL) @@ -768,9 +768,9 @@ parse_error("Kill block must match on at least one of username, host or realname"); } dconf = NULL; -} ';'; +}; killitems: killitem killitems | killitem; -killitem: killuhost | killreal | killusername | killreasonfile | killreason | error; +killitem: killuhost | killreal | killusername | killreasonfile | killreason; killuhost: HOST '=' QSTRING ';' { char *h; @@ -848,7 +848,7 @@ }; cruleitems: cruleitem cruleitems | cruleitem; -cruleitem: cruleserver | crulerule | cruleall | error; +cruleitem: cruleserver | crulerule | cruleall; cruleserver: SERVER '=' QSTRING ';' { @@ -881,7 +881,7 @@ }; motditems: motditem motditems | motditem; -motditem: motdhost | motdfile | error; +motditem: motdhost | motdfile; motdhost: HOST '=' QSTRING ';' { host = $3; @@ -970,7 +970,7 @@ }; pseudoitems: pseudoitem pseudoitems | pseudoitem; -pseudoitem: pseudoname | pseudoprepend | pseudonick | pseudoflags | error; +pseudoitem: pseudoname | pseudoprepend | pseudonick | pseudoflags; pseudoname: NAME '=' QSTRING ';' { MyFree(smap->name); @@ -1019,7 +1019,7 @@ }; iauthitems: iauthitem iauthitems | iauthitem; -iauthitem: iauthpass | iauthhost | iauthport | iauthconnfreq | iauthtimeout | error; +iauthitem: iauthpass | iauthhost | iauthport | iauthconnfreq | iauthtimeout; iauthpass: PASS '=' QSTRING ';' { MyFree(pass); Index: ircd-ircdev/ircd/m_trace.c diff -u ircd-ircdev/ircd/m_trace.c:1.6 ircd-ircdev/ircd/m_trace.c:1.7 --- ircd-ircdev/ircd/m_trace.c:1.6 Mon Jan 10 04:23:03 2005 +++ ircd-ircdev/ircd/m_trace.c Mon May 16 04:22:50 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: m_trace.c,v 1.6 2005/01/10 12:23:03 zolty Exp $ + * $Id: m_trace.c,v 1.7 2005/05/16 11:22:50 zolty Exp $ * */ @@ -105,6 +105,7 @@ { int i; struct Client *acptr; + struct Client *acptr2; const struct ConnectionClass* cl; char* tname; int doall; @@ -259,14 +260,19 @@ */ case STAT_SERVER: - if (cli_serv(acptr)->user) + if (cli_serv(acptr)->user) { + if (!cli_serv(acptr)->by[0] + || !(acptr2 = findNUser(cli_serv(acptr)->by)) + || (cli_user(acptr2) != cli_serv(acptr)->user)) + acptr2 = NULL; send_reply(sptr, RPL_TRACESERVER, conClass, link_s[i], link_u[i], cli_name(acptr), - (*(cli_serv(acptr))->by) ? cli_serv(acptr)->by : "*", - cli_serv(acptr)->user->username, cli_serv(acptr)->user->host, + acptr2 ? cli_name(acptr2) : "*", + cli_serv(acptr)->user->username, + cli_serv(acptr)->user->host, CurrentTime - cli_lasttime(acptr), CurrentTime - cli_serv(acptr)->timestamp); - else + } else send_reply(sptr, RPL_TRACESERVER, conClass, link_s[i], link_u[i], cli_name(acptr), (*(cli_serv(acptr))->by) ? cli_serv(acptr)->by : "*", "*", Index: ircd-ircdev/ircd/motd.c diff -u ircd-ircdev/ircd/motd.c:1.7 ircd-ircdev/ircd/motd.c:1.8 --- ircd-ircdev/ircd/motd.c:1.7 Tue Feb 15 08:31:51 2005 +++ ircd-ircdev/ircd/motd.c Mon May 16 04:22:50 2005 @@ -22,7 +22,7 @@ */ /** @file * @brief Message-of-the-day manipulation implementation. - * @version $Id: motd.c,v 1.7 2005/02/15 16:31:51 zolty Exp $ + * @version $Id: motd.c,v 1.8 2005/05/16 11:22:50 zolty Exp $ */ #include "config.h" @@ -446,10 +446,10 @@ struct Motd *ptr; struct MotdCache *cache; unsigned int mt = 0, /* motd count */ - mtm = 0, /* memory consumed by motd */ mtc = 0, /* motd cache count */ - mtcm = 0, /* memory consumed by motd cache */ mtf = 0; /* motd free list count */ + size_t mtm = 0, /* memory consumed by motd */ + mtcm = 0; /* memory consumed by motd cache */ if (MotdList.local) { mt++; Index: ircd-ircdev/ircd/msgq.c diff -u ircd-ircdev/ircd/msgq.c:1.6 ircd-ircdev/ircd/msgq.c:1.7 --- ircd-ircdev/ircd/msgq.c:1.6 Mon Mar 21 10:39:10 2005 +++ ircd-ircdev/ircd/msgq.c Mon May 16 04:22:50 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Outbound message queue implementation. - * @version $Id: msgq.c,v 1.6 2005/03/21 18:39:10 zolty Exp $ + * @version $Id: msgq.c,v 1.7 2005/05/16 11:22:50 zolty Exp $ */ #include "config.h" @@ -617,8 +617,8 @@ send_reply(cptr, SND_EXPLICIT | RPL_STATSDEBUG, ":Histogram of message lengths (%lu messages)", tmp.msgs); for (i = 0; i + 16 <= BUFSIZE; i += 16) - send_reply(cptr, SND_EXPLICIT | RPL_STATSDEBUG, ":% 4d: %lu %lu %lu %lu " - "%lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu", i + 1, + send_reply(cptr, SND_EXPLICIT | RPL_STATSDEBUG, ":% 4d: %u %u %u %u " + "%u %u %u %u %u %u %u %u %u %u %u %u", i + 1, tmp.sizes[i + 0], tmp.sizes[i + 1], tmp.sizes[i + 2], tmp.sizes[i + 3], tmp.sizes[i + 4], tmp.sizes[i + 5], tmp.sizes[i + 6], tmp.sizes[i + 7], tmp.sizes[i + 8], Index: ircd-ircdev/ircd/numnicks.c diff -u ircd-ircdev/ircd/numnicks.c:1.8 ircd-ircdev/ircd/numnicks.c:1.9 --- ircd-ircdev/ircd/numnicks.c:1.8 Sat May 7 15:23:40 2005 +++ ircd-ircdev/ircd/numnicks.c Mon May 16 04:22:50 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Implementation of numeric nickname operations. - * @version $Id: numnicks.c,v 1.8 2005/05/07 22:23:40 zolty Exp $ + * @version $Id: numnicks.c,v 1.9 2005/05/16 11:22:50 zolty Exp $ */ #include "config.h" @@ -516,7 +516,7 @@ do { if (*input == '_') { unsigned int left; - for (left = (25 - strlen(input)) / 3; left; left--) + for (left = (25 - strlen(input)) / 3 - pos; left; left--) addr->in6_16[pos++] = 0; input++; } else { @@ -524,7 +524,6 @@ accum = (accum << NUMNICKLOG) | convert2n[(unsigned char)*input++]; accum = (accum << NUMNICKLOG) | convert2n[(unsigned char)*input++]; addr->in6_16[pos++] = ntohs(accum); - input += 3; } } while (pos < 8); } Index: ircd-ircdev/ircd/os_generic.c diff -u ircd-ircdev/ircd/os_generic.c:1.8 ircd-ircdev/ircd/os_generic.c:1.9 --- ircd-ircdev/ircd/os_generic.c:1.8 ... [truncated message content] |
From: Toni G. <zo...@us...> - 2005-05-17 02:12:20
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-05-16 10:19:07 UTC Modified files: TODO.es Log message: Actualizacion TODO ---------------------- diff included ---------------------- Index: ircd-ircdev/TODO.es diff -u ircd-ircdev/TODO.es:1.23 ircd-ircdev/TODO.es:1.24 --- ircd-ircdev/TODO.es:1.23 Sat May 7 05:44:36 2005 +++ ircd-ircdev/TODO.es Mon May 16 03:18:57 2005 @@ -1,14 +1,13 @@ # # TODO para ircd-ircdev # -# $Id: TODO.es,v 1.23 2005/05/07 12:44:36 zolty Exp $ +# $Id: TODO.es,v 1.24 2005/05/16 10:18:57 zolty Exp $ # # Insertar las nuevas entradas al principio de la lista TODO. # URGENTE -------------------------------------------------------------------------------------- - - [D] DDB: compactado, hashes, seguridad y documentacion. - [D] Implementar tabla o de Operadores - [D] Implementar tabla p de Privilegios - [D] Implementar tabla f de Features @@ -27,6 +26,7 @@ PRIORIDAD MEDIA -------------------------------------------------------------------------------------- + - [D] DDB: compactado. - [G] Caracter '~' en los nicks. - [G] Los clientes con +k han de poder "hablar" en canales. - [G] Mostrar tiempo en formato humano en las G-lines. @@ -71,8 +71,7 @@ DOCUMENTACION PENDIENTE -------------------------------------------------------------------------------------- - - [G] Documentar para Doxygen el Watch y el DDB - - [G] Traducir comentarios DDB al ingles + - [G] Documentar para Doxygen el Watch - [G] Documentar en el RELEASE.NOTES lo relacionado con DDB y Services. - [G] Traducir el archivo Authors. - [G] Traducir el archivo chroot.txt @@ -100,10 +99,6 @@ 15/Mar/2005 - [G] Bajo en ciertas circunstancias desconocidas del ircd.conf no pueden entrar clientes al IRCD. Investigar eso. -31/Mar/2005 - - [D] No se propaga el modo cuando estamos autentificando al conectar. -20/Abr/2005 - - [D] A veces un nick forbid puede tener +r. Leyenda: [G] General ----------------------- End of diff ----------------------- |