[eggheads-patches] PATCH: putlog-misc.diff

Tothwolf tothwolf at concentric.net
Mon Oct 25 14:54:06 CST 1999


putlog-misc.diff:
  Fixed putlog() LOG_* levels in many places
  Rewrote filedb size test in configure to work properly with --quiet
  filedb size test in configure needed 'int main()' instead of 'main()'
  Use TCL_PATCH_LEVEL for Tcl version if avaliable
  Comment lines in acconfig.h/config.h.in now follow autoconf standard
  Added proper Tcl lib vars for XREQS and XLIBS in Makefile.in
  rm -f pre-existing module objects before we mv the new ones to src/mod/
  Misc Makefile.in changes

-Toth
-------------- next part --------------
diff -urNPX ../exclude ../eggdrop1.3.cvs/Makefile.in ./Makefile.in
--- ../eggdrop1.3.cvs/Makefile.in	Mon Oct 18 15:27:29 1999
+++ ./Makefile.in	Mon Oct 25 01:17:14 1999
@@ -50,7 +50,8 @@
 # STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP #
 
 # stuff for Tcl
-XREQ = @TCL_REQS@
+XREQS = @TCL_REQS@
+XLIBS = @TCL_LIBS@ @LIBS@
 TCLLIB = @TCLLIB@
 TCLLIBFN = @TCLLIBFN@
 
@@ -60,12 +61,12 @@
 MAKE_STATIC = $(MAKE) 'CC=$(CC)' 'LD=$(LD)' 'STRIP=$(STRIP)' \
 'RANLIB=$(RANLIB)' 'CFLAGS=$(CFLAGS) -DSTATIC' \
 'CPPFLAGS=$(CPPFLAGS)' 'EGGEXEC=$(EGGEXEC)' 'TCLLIB=$(TCLLIB)' \
-'TCLLIBFN=$(TCLLIBFN)' 'XREQ=$(XREQ)' 'XLIBS=@TCL_LIBS@ @LIBS@'
+'TCLLIBFN=$(TCLLIBFN)' 'XREQS=$(XREQS)' 'XLIBS=$(XLIBS)'
 
 MAKE_MODEGG = $(MAKE) 'CC=$(MOD_CC)' 'LD=$(MOD_LD)' 'STRIP=$(MOD_STRIP)' \
 'RANLIB=$(RANLIB)' 'CFLAGS=$(CFLAGS)' \
 'CPPFLAGS=$(CPPFLAGS)' 'EGGEXEC=$(EGGEXEC)' 'TCLLIB=$(TCLLIB)' \
-'TCLLIBFN=$(TCLLIBFN)' 'XREQ=$(XREQ)' 'XLIBS=@TCL_LIBS@ @LIBS@'
+'TCLLIBFN=$(TCLLIBFN)' 'XREQS=$(XREQS)' 'XLIBS=$(XLIBS)'
 
 MAKE_MODULES = $(MAKE) 'CC=$(SHLIB_CC)' 'LD=$(SHLIB_LD)' \
 'STRIP=$(SHLIB_STRIP)' 'CFLAGS=$(CFLAGS)' 'CPPFLAGS=$(CPPFLAGS)'
@@ -73,12 +74,12 @@
 MAKE_SDEBUG = $(MAKE) 'CC=$(CC)' 'LD=$(LD)' 'STRIP=touch' \
 'RANLIB=$(RANLIB)' 'CFLAGS=-g3 $(CFLAGS) -DSTATIC -DEBUG_MEM' \
 'CPPFLAGS=$(CPPFLAGS)' 'EGGEXEC=$(EGGEXEC)' 'TCLLIB=$(TCLLIB)' \
-'TCLLIBFN=$(TCLLIBFN)' 'XREQ=$(XREQ)' 'XLIBS=@TCL_LIBS@ @LIBS@'
+'TCLLIBFN=$(TCLLIBFN)' 'XREQS=$(XREQS)' 'XLIBS=$(XLIBS)'
 
 MAKE_MEMEGG = $(MAKE) 'CC=$(MOD_CC)' 'LD=$(MOD_LD)' 'STRIP=touch' \
 'RANLIB=$(RANLIB)' 'CFLAGS=-g3 $(CFLAGS) -DEBUG_MEM' \
 'CPPFLAGS=$(CPPFLAGS)' 'EGGEXEC=$(EGGEXEC)' 'TCLLIB=$(TCLLIB)' \
-'TCLLIBFN=$(TCLLIBFN)' 'XREQ=$(XREQ)' 'XLIBS=@TCL_LIBS@ @LIBS@'
+'TCLLIBFN=$(TCLLIBFN)' 'XREQS=$(XREQS)' 'XLIBS=$(XLIBS)'
 
 MAKE_DEBMODULES = $(MAKE) 'CC=$(SHLIB_CC)' 'LD=$(SHLIB_LD)' \
 'STRIP=touch' 'CFLAGS=-g3 $(CFLAGS) -DEBUG_MEM' 'CPPFLAGS=$(CPPFLAGS)'
@@ -102,7 +103,7 @@
 distrib: distclean
 	@rm -f `find . \( -name '*~' -o -name '*#' -o -name '*.orig' \
 		-o -name '*.rej' -o -name '*.bak' \) -print`
-	@rm -rf `find . \( -name "CVS" \) -print`
+	@rm -rf `find . \( -name 'CVS' \) -print`
 	@(echo "all:"; \
 	echo "	@echo \"\""; \
 	echo "	@echo \"Before you can compile your bot you have to configure it.\""; \
@@ -138,10 +139,10 @@
 	@./$(EGGEXEC) -v
 	@ls -l $(EGGEXEC)
 
-debug: memegg debmodules
+debug: debegg debmodules
 
-memegg: modtest
-	@cd src; $(MAKE_MEMEGG) memegg
+debegg: modtest
+	@cd src; $(MAKE_MEMEGG) debegg
 	@echo ""
 	@./$(EGGEXEC) -v
 	@ls -l $(EGGEXEC)
diff -urNPX ../exclude ../eggdrop1.3.cvs/acconfig.h ./acconfig.h
--- ../eggdrop1.3.cvs/acconfig.h	Fri Oct 22 15:27:47 1999
+++ ./acconfig.h	Fri Oct 22 12:36:19 1999
@@ -1,32 +1,32 @@
-/* this will get defined if modules will work on your system  */
+/* Define if modules will work on your system  */
 #undef MODULES_OK
 
-/* use hpux dynamic linking ?  */
+/* Define if running on hpux that supports dynamic linking  */
 #undef HPUX_HACKS
 
-/* using hpux 10.x ?  */
+/* Define if running on hpux 10.x  */
 #undef HPUX10_HACKS
 
-/* using osf1 ?  */
+/* Define if running on OSF/1 platform.  */
 #undef OSF1_HACKS
 
 /* Define if running on OSF/1 platform.  */
 #undef STOP_UAC
 
-/* sunos 4.0 *sigh*  */
+/* Define if running on sunos 4.0 *sigh*  */
 #undef DLOPEN_1
 
-/* running on NeXT Step  */
+/* Define if running on NeXT Step  */
 #undef BORGCUBES
 
-/* running under cygwin  */
+/* Define if running under cygwin  */
 #undef CYGWIN_HACKS
 
-/* we may need dlopen now (modules) so include it  */
+/* Define if we need dlopen (for module support)  */
 #undef HAVE_DLOPEN
 
-/* for pre Tcl 7.5 compat  */
+/* Define for pre Tcl 7.5 compat  */
 #undef HAVE_OLD_TCL
 
-/* for buggy Tcl 8.1 threads  */
+/* Define for buggy Tcl threads  */
 #undef HAVE_BUGGY_TCL_THREADS
diff -urNPX ../exclude ../eggdrop1.3.cvs/config.h.in ./config.h.in
--- ../eggdrop1.3.cvs/config.h.in	Fri Oct 22 15:27:48 1999
+++ ./config.h.in	Fri Oct 22 12:36:35 1999
@@ -36,37 +36,37 @@
    byte first (like Motorola and SPARC, unlike Intel and VAX).  */
 #undef WORDS_BIGENDIAN
 
-/* this will get defined if modules will work on your system  */
+/* Define if modules will work on your system  */
 #undef MODULES_OK
 
-/* use hpux dynamic linking ?  */
+/* Define if running on hpux that supports dynamic linking  */
 #undef HPUX_HACKS
 
-/* using hpux 10.x ?  */
+/* Define if running on hpux 10.x  */
 #undef HPUX10_HACKS
 
-/* using osf1 ?  */
+/* Define if running on OSF/1 platform.  */
 #undef OSF1_HACKS
 
 /* Define if running on OSF/1 platform.  */
 #undef STOP_UAC
 
-/* sunos 4.0 *sigh*  */
+/* Define if running on sunos 4.0 *sigh*  */
 #undef DLOPEN_1
 
-/* running on NeXT Step  */
+/* Define if running on NeXT Step  */
 #undef BORGCUBES
 
-/* running under cygwin  */
+/* Define if running under cygwin  */
 #undef CYGWIN_HACKS
 
-/* we may need dlopen now (modules) so include it  */
+/* Define if we need dlopen (for module support)  */
 #undef HAVE_DLOPEN
 
-/* for pre Tcl 7.5 compat  */
+/* Define for pre Tcl 7.5 compat  */
 #undef HAVE_OLD_TCL
 
-/* for buggy Tcl 8.1 threads  */
+/* Define for buggy Tcl threads  */
 #undef HAVE_BUGGY_TCL_THREADS
 
 /* The number of bytes in a int.  */
diff -urNPX ../exclude ../eggdrop1.3.cvs/configure ./configure
--- ../eggdrop1.3.cvs/configure	Sat Oct 23 13:09:59 1999
+++ ./configure	Mon Oct 25 02:04:39 1999
@@ -2781,31 +2781,32 @@
 
 echo $ac_n "checking space left in file database struct""... $ac_c" 1>&6
 echo "configure:2784: checking space left in file database struct" >&5
-if test "$cross_compiling" = yes; then
-    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+if eval "test \"`echo '$''{'ac_cv_var_filedb_struct'+set}'`\" = set"
+then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
-  cat > conftest.$ac_ext <<EOF
-#line 2789 "configure"
+  cat > conftest.$ac_ext << EOF
 #include "confdefs.h"
-
 #include <stdio.h>
 #include <sys/time.h>
 #include "src/mod/filesys.mod/files.h"
-main() {
+int main() {
   fprintf(stdout, "%d/%d %s\n", 512 - sizeof(struct filler), sizeof(filedb), "bytes");
 }
-
 EOF
-if { (eval echo configure:2800: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
-  :
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-fi
-rm -fr conftest*
+  if { (eval echo configure: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}
+  then
+    ac_cv_var_filedb_struct=`./conftest${ac_exeext}`
+    rm -rf conftest*
+  else
+    echo "configure: failed program was:" >&5
+    cat conftest.$ac_ext >&5
+    ac_cv_var_filedb_struct=unknown
+    rm -rf conftest*
+  fi
+  rm -f conftest*
 fi
-
+echo "$ac_t""$ac_cv_var_filedb_struct" 1>&6
 echo "$ac_t""   (standard is currently 48/512 bytes)" 1>&6
 
 # ---------- begin robey's tcl thingies
@@ -3028,7 +3029,7 @@
 fi
 
 echo $ac_n "checking for Tcl library""... $ac_c" 1>&6
-echo "configure:3032: checking for Tcl library" >&5
+echo "configure:3033: checking for Tcl library" >&5
 
 # attempt autodetect for $TCLLIBFN if it's not set
 if test ! "x${TCLLIBFN}" = "x"
@@ -3062,7 +3063,7 @@
 fi
 
 echo $ac_n "checking for Tcl header""... $ac_c" 1>&6
-echo "configure:3066: checking for Tcl header" >&5
+echo "configure:3067: checking for Tcl header" >&5
 
 # attempt autodetect for $TCLINCFN if it's not set
 if test ! "x${TCLINCFN}" = "x"
@@ -3110,16 +3111,23 @@
   echo "$ac_t""not found" 1>&6
 fi
 
-# done looking, now either TCLLIBFN & TCLINCFN are both set, or we will bail
+# done looking, now either TCLLIBFN & TCLINCFN are both set, or we bail
 if test ! "x${TCLLIBFN}" = "x" && test ! "x${TCLINCFN}" = "x"
 then
-  # is this really Tcl ?
-  TCL_VERSION=`grep TCL_VERSION $TCLINC/$TCLINCFN | head -1 | $AWK '{gsub(/\"/, "", $3); print $3}'`
+
+  # find Tcl's version
+  TCL_PATCH_LEVEL=`grep TCL_PATCH_LEVEL $TCLINC/$TCLINCFN | head -1 | $AWK '{gsub(/\"/, "", $3); print $3}'`
+  if test ! "x${TCL_PATCH_LEVEL}" = "x"
+  then
+    TCL_VERSION=$TCL_PATCH_LEVEL
+  else
+    TCL_VERSION=`grep TCL_VERSION $TCLINC/$TCLINCFN | head -1 | $AWK '{gsub(/\"/, "", $3); print $3}'`
+  fi
 fi
 
-# check Tcl version
+# check if we found Tcl's version
 echo $ac_n "checking for Tcl version""... $ac_c" 1>&6
-echo "configure:3123: checking for Tcl version" >&5
+echo "configure:3131: checking for Tcl version" >&5
 if test ! "x${TCL_VERSION}" = "x"
 then
   echo "$ac_t""$TCL_VERSION" 1>&6
@@ -3176,7 +3184,7 @@
 
 # check for Tcl threads
 echo $ac_n "checking for Tcl threads""... $ac_c" 1>&6
-echo "configure:3180: checking for Tcl threads" >&5
+echo "configure:3188: checking for Tcl threads" >&5
 TCL_VER_POST81=`echo $TCL_VERSION | $AWK '{split($1, i, "."); if (((i[1] == 8) && (i[2] >= 1)) || (i[1] >= 9)) print "yes"; else print "no"}'`
 if test "x${TCL_VER_POST81}" = "xyes"
 then
diff -urNPX ../exclude ../eggdrop1.3.cvs/configure.in ./configure.in
--- ../eggdrop1.3.cvs/configure.in	Sat Oct 23 13:09:59 1999
+++ ./configure.in	Mon Oct 25 02:04:08 1999
@@ -343,14 +343,32 @@
 
 dnl check how much space is left in filedb (informational purposes)
 AC_MSG_CHECKING(space left in file database struct)
-AC_TRY_RUN([
+if eval "test \"`echo '$''{'ac_cv_var_filedb_struct'+set}'`\" = set"
+then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext << EOF
+#include "confdefs.h"
 #include <stdio.h>
 #include <sys/time.h>
 #include "src/mod/filesys.mod/files.h"
-main() {
+int main() {
   fprintf(stdout, "%d/%d %s\n", 512 - sizeof(struct filler), sizeof(filedb), "bytes");
 }
-])
+EOF
+  if { (eval echo configure: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}
+  then
+    ac_cv_var_filedb_struct=`./conftest${ac_exeext}`
+    rm -rf conftest*
+  else
+    echo "configure: failed program was:" >&5
+    cat conftest.$ac_ext >&5
+    ac_cv_var_filedb_struct=unknown
+    rm -rf conftest*
+  fi
+  rm -f conftest*
+fi
+AC_MSG_RESULT($ac_cv_var_filedb_struct)
 AC_MSG_RESULT([   (standard is currently 48/512 bytes)])
 
 dnl where is tcl?  is it here?
@@ -647,14 +665,21 @@
   AC_MSG_RESULT(not found)
 fi
 
-# done looking, now either TCLLIBFN & TCLINCFN are both set, or we will bail
+# done looking, now either TCLLIBFN & TCLINCFN are both set, or we bail
 if test ! "x${TCLLIBFN}" = "x" && test ! "x${TCLINCFN}" = "x"
 then
-  # is this really Tcl ?
-  TCL_VERSION=`grep TCL_VERSION $TCLINC/$TCLINCFN | head -1 | $AWK '{gsub(/\"/, "", $3); print $3}'`
+
+  # find Tcl's version
+  TCL_PATCH_LEVEL=`grep TCL_PATCH_LEVEL $TCLINC/$TCLINCFN | head -1 | $AWK '{gsub(/\"/, "", $3); print $3}'`
+  if test ! "x${TCL_PATCH_LEVEL}" = "x"
+  then
+    TCL_VERSION=$TCL_PATCH_LEVEL
+  else
+    TCL_VERSION=`grep TCL_VERSION $TCLINC/$TCLINCFN | head -1 | $AWK '{gsub(/\"/, "", $3); print $3}'`
+  fi
 fi
 
-# check Tcl version
+# check if we found Tcl's version
 AC_MSG_CHECKING(for Tcl version)
 if test ! "x${TCL_VERSION}" = "x"
 then
diff -urNPX ../exclude ../eggdrop1.3.cvs/src/Makefile.in ./src/Makefile.in
--- ../eggdrop1.3.cvs/src/Makefile.in	Sat Oct 16 20:04:07 1999
+++ ./src/Makefile.in	Mon Oct 25 01:13:33 1999
@@ -18,7 +18,7 @@
 	@echo ""
 	@cd $(top_srcdir); $(MAKE)
 
-modegg: $(OBJS) $(XREQ)
+modegg: $(OBJS) $(XREQS)
 	@echo ""
 	@echo "Linking eggdrop..."
 	@echo ""
@@ -27,7 +27,7 @@
 	@echo "Successful compile: $(EGGEXEC)"
 	@echo ""
 
-static: $(OBJS) $(XREQ)
+static: $(OBJS) $(XREQS)
 	@echo ""
 	@echo "Linking eggdrop... (static version)"
 	@echo ""
@@ -36,7 +36,7 @@
 	@echo "Successful compile: $(EGGEXEC)"
 	@echo ""
 
-memegg: $(OBJS) $(XREQ)
+debegg: $(OBJS) $(XREQS)
 	@echo ""
 	@echo "Linking eggdrop... (debug version)"
 	@echo ""
@@ -44,7 +44,7 @@
 	@echo "Successful compile: $(EGGEXEC)"
 	@echo ""
 
-sdebug: $(OBJS) $(XREQ)
+sdebug: $(OBJS) $(XREQS)
 	@echo ""
 	@echo "Linking eggdrop... (static and debug version)"
 	@echo ""
@@ -72,10 +72,10 @@
 
 libtcle.a: $(TCLLIB)/lib$(TCLLIBFN)
 	@echo "[ Fixing lib$(TCLLIBFN) -> libtcle.a ]"
-	cp $(TCLLIB)/lib$(TCLLIBFN) ./libtcle.a
+	cp $(TCLLIB)/lib$(TCLLIBFN) libtcle.a
 	chmod u+rw libtcle.a
-	ar d ./libtcle.a tclMain.o
-	$(RANLIB) ./libtcle.a
+	ar d libtcle.a tclMain.o
+	$(RANLIB) libtcle.a
 
 eggdrop.h:
 	@echo "You do not have the eggdrop source!"
diff -urNPX ../exclude ../eggdrop1.3.cvs/src/botnet.c ./src/botnet.c
--- ../eggdrop1.3.cvs/src/botnet.c	Tue Oct 19 19:54:47 1999
+++ ./src/botnet.c	Sun Oct 24 21:45:07 1999
@@ -1094,11 +1094,9 @@
     lostdcc(i);
     return;
   }
-  putlog(LOG_MISC, "*", "%s [%s]%s/%d",
-	 BOT_LOSTDCCUSER, dcc[idx].nick,
+  putlog(LOG_MISC, "*", "%s [%s]%s/%d", BOT_LOSTDCCUSER, dcc[idx].nick,
 	 dcc[idx].host, dcc[idx].port);
-  putlog(LOG_MISC, "*", "(%s %s)",
-	 BOT_DROPPINGRELAY, dcc[tidx].nick);
+  putlog(LOG_MISC, "*", "(%s %s)", BOT_DROPPINGRELAY, dcc[tidx].nick);
   if ((dcc[tidx].sock != STDOUT) || backgrd) {
     if (idx > tidx) {
       int t = tidx;
diff -urNPX ../exclude ../eggdrop1.3.cvs/src/cmds.c ./src/cmds.c
--- ../eggdrop1.3.cvs/src/cmds.c	Tue Oct 19 19:54:48 1999
+++ ./src/cmds.c	Sun Oct 24 21:37:19 1999
@@ -582,7 +582,7 @@
       }
       botnet_send_reject(i, dcc[idx].nick, botnetnick, whonick,
 			 who, par[0] ? par : dcc[idx].nick);
-      putlog(LOG_MISC, "*", "#%s# boot %s@%s (%s)", dcc[idx].nick, whonick,
+      putlog(LOG_BOTS, "*", "#%s# boot %s@%s (%s)", dcc[idx].nick, whonick,
 	     who, par[0] ? par : dcc[idx].nick);
     } else
       dprintf(idx, "Remote boots are disabled here.\n");
diff -urNPX ../exclude ../eggdrop1.3.cvs/src/dcc.c ./src/dcc.c
--- ../eggdrop1.3.cvs/src/dcc.c	Tue Oct 19 19:54:48 1999
+++ ./src/dcc.c	Sun Oct 24 22:10:40 1999
@@ -580,7 +580,7 @@
 
 static void eof_dcc_general(int idx)
 {
-  putlog(LOG_MISC, "*",DCC_LOSTDCC, dcc[idx].nick,
+  putlog(LOG_MISC, "*", DCC_LOSTDCC, dcc[idx].nick,
 	 dcc[idx].host, dcc[idx].port);
   killsock(dcc[idx].sock);
   lostdcc(idx);
@@ -589,7 +589,7 @@
 static void tout_dcc_chat_pass(int idx)
 {
   dprintf(idx, "Timeout.\n");
-  putlog(LOG_MISC, "*",DCC_PWDTIMEOUT, dcc[idx].nick,
+  putlog(LOG_MISC, "*", DCC_PWDTIMEOUT, dcc[idx].nick,
 	 dcc[idx].host);
   killsock(dcc[idx].sock);
   lostdcc(idx);
@@ -1083,7 +1083,7 @@
    * <bindle> [09:37] Lost connection while identing [168.246.255.191/0]
    */
   context;
-  /* use dcc-portrange x:x on incoming telnets to ,dw */
+  /* use dcc-portrange x:x on incoming telnets too, dw */
   if ((port < min_dcc_port) || (port > max_dcc_port)) {
     putlog(LOG_BOTS, "*", DCC_BADSRC, s, port);
     killsock(sock);
@@ -1193,8 +1193,7 @@
   /* toss out bad nicknames */
   if ((dcc[idx].nick[0] != '@') && (!wild_match(dcc[idx].nick, buf))) {
     dprintf(idx, "Sorry, that nickname format is invalid.\r\n");
-    
-putlog(LOG_BOTS, "*", DCC_BADNICK, dcc[idx].host);
+    putlog(LOG_BOTS, "*", DCC_BADNICK, dcc[idx].host);
     killsock(dcc[idx].sock);
     lostdcc(idx);
     return;
@@ -1241,8 +1240,7 @@
   }
   if (!ok) {
     dprintf(idx, "You don't have access.\r\n");
-    putlog(LOG_BOTS, "*", DCC_INVHANDLE,
-	   dcc[idx].host, buf);
+    putlog(LOG_BOTS, "*", DCC_INVHANDLE, dcc[idx].host, buf);
     killsock(dcc[idx].sock);
     lostdcc(idx);
     return;
@@ -1432,8 +1430,7 @@
     if (make_userfile) {
       dprintf(idx, "\nYOU ARE THE MASTER/OWNER ON THIS BOT NOW\n");
       dprintf(idx, IRC_LIMBO);
-      putlog(LOG_MISC, "*", DCC_INSTCOMPL,
-	     buf);
+      putlog(LOG_MISC, "*", DCC_INSTCOMPL, buf);
       make_userfile = 0;
       write_userfile(-1);
       add_note(buf, botnetnick, "Welcome to eggdrop! :)", -1, 0);
@@ -1464,8 +1461,8 @@
     dprintf(idx, "Try another one please:\n");
     return;
   }
-  putlog(LOG_MISC, "*", DCC_NEWUSER, dcc[idx].nick,
-	 dcc[idx].host, dcc[idx].port);
+  putlog(LOG_MISC, "*", DCC_NEWUSER, dcc[idx].nick, dcc[idx].host,
+	 dcc[idx].port);
   if (notify_new[0]) {
     char s[121], s1[121], s2[121];
 
@@ -1491,16 +1488,15 @@
 
 static void eof_dcc_telnet_new(int idx)
 {
-  putlog(LOG_MISC, "*", DCC_LOSTNEWUSER, dcc[idx].host,
-	 dcc[idx].port);
+  putlog(LOG_MISC, "*", DCC_LOSTNEWUSER, dcc[idx].host, dcc[idx].port);
   killsock(dcc[idx].sock);
   lostdcc(idx);
 }
 
 static void eof_dcc_telnet_pw(int idx)
 {
-  putlog(LOG_MISC, "*", DCC_LOSTNEWUSR2, dcc[idx].nick,
-	 dcc[idx].host, dcc[idx].port);
+  putlog(LOG_MISC, "*", DCC_LOSTNEWUSR2, dcc[idx].nick, dcc[idx].host,
+	 dcc[idx].port);
   deluser(dcc[idx].nick);
   killsock(dcc[idx].sock);
   lostdcc(idx);
@@ -1518,8 +1514,8 @@
 static void tout_dcc_telnet_pw(int idx)
 {
   dprintf(idx, "Guess you're not there.  Bye.\n");
-  putlog(LOG_MISC, "*", DCC_TIMEOUTUSR2,
-	 dcc[idx].nick, dcc[idx].host, dcc[idx].port);
+  putlog(LOG_MISC, "*", DCC_TIMEOUTUSR2, dcc[idx].nick,
+	 dcc[idx].host, dcc[idx].port);
   killsock(dcc[idx].sock);
   lostdcc(idx);
 }
@@ -1638,9 +1634,8 @@
   if (dcc[idx].type && dcc[idx].type->eof)
     dcc[idx].type->eof(idx);
   else {
-    putlog(LOG_MISC, "*",
-	   DCC_DEADSOCKET,
-	   dcc[idx].sock, dcc[idx].type->name);
+    putlog(LOG_MISC, "*", DCC_DEADSOCKET, dcc[idx].sock,
+	   dcc[idx].type->name);
     killsock(dcc[idx].sock);
     lostdcc(idx);
   }
@@ -1752,8 +1747,7 @@
 {
   int i;
 
-  putlog(LOG_MISC, "*", DCC_LOSTCONN,
-	 dcc[idx].host, dcc[idx].port);
+  putlog(LOG_MISC, "*", DCC_LOSTCONN, dcc[idx].host, dcc[idx].port);
   for (i = 0; i < dcc_total; i++)
     if ((dcc[i].type == &DCC_IDENT) &&
 	(dcc[i].u.ident_sock == dcc[idx].sock)) {
diff -urNPX ../exclude ../eggdrop1.3.cvs/src/main.c ./src/main.c
--- ../eggdrop1.3.cvs/src/main.c	Sun Oct 17 15:40:16 1999
+++ ./src/main.c	Sun Oct 24 22:00:03 1999
@@ -250,9 +250,9 @@
 {
   write_debug();
   if (!module) {
-    putlog (LOG_MISC, "*", "* In file %s, line %u", file, line);
+    putlog(LOG_MISC, "*", "* In file %s, line %u", file, line);
   } else {
-    putlog (LOG_MISC, "*", "* In file %s:%s, line %u", module, file, line);
+    putlog(LOG_MISC, "*", "* In file %s:%s, line %u", module, file, line);
   }
   fatal ("ASSERT FAILED -- CRASHING!", 1);
   exit (1);
diff -urNPX ../exclude ../eggdrop1.3.cvs/src/mod/assoc.mod/Makefile ./src/mod/assoc.mod/Makefile
--- ../eggdrop1.3.cvs/src/mod/assoc.mod/Makefile	Sun Oct 17 15:40:18 1999
+++ ./src/mod/assoc.mod/Makefile	Mon Oct 25 02:17:57 1999
@@ -15,6 +15,7 @@
 
 ../assoc.o: ../module.h ../modvals.h ../../eggdrop.h ../../tandem.h
 	$(CC) $(CFLAGS) $(CPPFLAGS) -DMAKING_MODS -c assoc.c
+	rm -f ../assoc.o
 	mv assoc.o ../
 
 ../../../assoc.so: ../assoc.o
diff -urNPX ../exclude ../eggdrop1.3.cvs/src/mod/blowfish.mod/Makefile ./src/mod/blowfish.mod/Makefile
--- ../eggdrop1.3.cvs/src/mod/blowfish.mod/Makefile	Sun Oct 17 15:40:18 1999
+++ ./src/mod/blowfish.mod/Makefile	Mon Oct 25 02:18:55 1999
@@ -15,6 +15,7 @@
 
 ../blowfish.o: ../module.h ../modvals.h ../../eggdrop.h bf_tab.h blowfish.h
 	$(CC) $(CFLAGS) $(CPPFLAGS) -DMAKING_MODS -c blowfish.c
+	rm -f ../blowfish.o
 	mv blowfish.o ../
 
 ../../../blowfish.so: ../blowfish.o
diff -urNPX ../exclude ../eggdrop1.3.cvs/src/mod/channels.mod/Makefile ./src/mod/channels.mod/Makefile
--- ../eggdrop1.3.cvs/src/mod/channels.mod/Makefile	Sun Oct 17 15:40:18 1999
+++ ./src/mod/channels.mod/Makefile	Mon Oct 25 02:17:46 1999
@@ -16,6 +16,7 @@
 ../channels.o: ../module.h ../modvals.h ../../eggdrop.h cmdschan.c tclchan.c \
 userchan.c channels.h
 	$(CC) $(CFLAGS) $(CPPFLAGS) -DMAKING_MODS -c channels.c
+	rm -f ../channels.o
 	mv channels.o ../
 
 ../../../channels.so: ../channels.o
diff -urNPX ../exclude ../eggdrop1.3.cvs/src/mod/channels.mod/cmdschan.c ./src/mod/channels.mod/cmdschan.c
--- ../eggdrop1.3.cvs/src/mod/channels.mod/cmdschan.c	Sun Oct 17 15:40:18 1999
+++ ./src/mod/channels.mod/cmdschan.c	Sun Oct 24 22:16:27 1999
@@ -1338,7 +1338,7 @@
     dprintf(idx, "No channel saving file defined.\n");
   else {
     dprintf(idx, "Saving all dynamic channel settings.\n");
-    putlog(LOG_MISC, "*", "#%s# chansave", dcc[idx].nick);
+    putlog(LOG_CMDS, "*", "#%s# chansave", dcc[idx].nick);
     write_channels();
   }
 }
@@ -1349,7 +1349,7 @@
     dprintf(idx, "No channel saving file defined.\n");
   else {
     dprintf(idx, "Reloading all dynamic channel settings.\n");
-    putlog(LOG_MISC, "*", "#%s# chanload", dcc[idx].nick);
+    putlog(LOG_CMDS, "*", "#%s# chanload", dcc[idx].nick);
     setstatic = 0;
     read_channels(1);
   }
diff -urNPX ../exclude ../eggdrop1.3.cvs/src/mod/console.mod/Makefile ./src/mod/console.mod/Makefile
--- ../eggdrop1.3.cvs/src/mod/console.mod/Makefile	Sun Oct 17 15:40:18 1999
+++ ./src/mod/console.mod/Makefile	Mon Oct 25 02:18:49 1999
@@ -15,6 +15,7 @@
 
 ../console.o: ../module.h ../modvals.h ../../eggdrop.h
 	$(CC) $(CFLAGS) $(CPPFLAGS) -DMAKING_MODS -c console.c
+	rm -f ../console.o
 	mv console.o ../
 
 ../../../console.so: ../console.o
diff -urNPX ../exclude ../eggdrop1.3.cvs/src/mod/ctcp.mod/Makefile ./src/mod/ctcp.mod/Makefile
--- ../eggdrop1.3.cvs/src/mod/ctcp.mod/Makefile	Sun Oct 17 15:40:18 1999
+++ ./src/mod/ctcp.mod/Makefile	Mon Oct 25 02:17:32 1999
@@ -16,6 +16,7 @@
 ../ctcp.o: ../module.h ../modvals.h ../../eggdrop.h ctcp.h \
 ../server.mod/server.h
 	$(CC) $(CFLAGS) $(CPPFLAGS) -DMAKING_MODS -c ctcp.c
+	rm -f ../ctcp.o
 	mv ctcp.o ../
 
 ../../../ctcp.so: ../ctcp.o
diff -urNPX ../exclude ../eggdrop1.3.cvs/src/mod/filesys.mod/Makefile ./src/mod/filesys.mod/Makefile
--- ../eggdrop1.3.cvs/src/mod/filesys.mod/Makefile	Sun Oct 17 15:40:19 1999
+++ ./src/mod/filesys.mod/Makefile	Mon Oct 25 02:18:42 1999
@@ -17,6 +17,7 @@
 files.c tclfiles.c files.h filesys.h ../../lang.h ../../tandem.h \
 ../transfer.mod/transfer.h
 	$(CC) $(CFLAGS) $(CPPFLAGS) -DMAKING_MODS -c filesys.c
+	rm -f ../filesys.o
 	mv filesys.o ../
 
 ../../../filesys.so: ../filesys.o
diff -urNPX ../exclude ../eggdrop1.3.cvs/src/mod/irc.mod/Makefile ./src/mod/irc.mod/Makefile
--- ../eggdrop1.3.cvs/src/mod/irc.mod/Makefile	Sun Oct 17 15:40:19 1999
+++ ./src/mod/irc.mod/Makefile	Mon Oct 25 02:17:15 1999
@@ -16,6 +16,7 @@
 ../irc.o: ../module.h ../modvals.h ../../eggdrop.h chan.c cmdsirc.c mode.c \
 msgcmds.c tclirc.c irc.h ../channels.mod/channels.h ../server.mod/server.h
 	$(CC) $(CFLAGS) $(CPPFLAGS) -DMAKING_MODS -c irc.c
+	rm -f ../irc.o
 	mv irc.o ../
 
 ../../../irc.so: ../irc.o
diff -urNPX ../exclude ../eggdrop1.3.cvs/src/mod/notes.mod/Makefile ./src/mod/notes.mod/Makefile
--- ../eggdrop1.3.cvs/src/mod/notes.mod/Makefile	Sun Oct 17 15:40:19 1999
+++ ./src/mod/notes.mod/Makefile	Mon Oct 25 02:18:35 1999
@@ -16,6 +16,7 @@
 ../notes.o: ../module.h ../modvals.h ../../eggdrop.h cmdsnote.c notes.c \
 notes.h ../../tandem.h
 	$(CC) $(CFLAGS) $(CPPFLAGS) -DMAKING_MODS -c notes.c
+	rm -f ../notes.o
 	mv notes.o ../
 
 ../../../notes.so: ../notes.o
diff -urNPX ../exclude ../eggdrop1.3.cvs/src/mod/seen.mod/Makefile ./src/mod/seen.mod/Makefile
--- ../eggdrop1.3.cvs/src/mod/seen.mod/Makefile	Sun Oct 17 15:40:19 1999
+++ ./src/mod/seen.mod/Makefile	Mon Oct 25 02:17:08 1999
@@ -16,6 +16,7 @@
 ../seen.o: ../module.h ../modvals.h ../../eggdrop.h \
 ../channels.mod/channels.h ../../chan.h ../../users.h
 	$(CC) $(CFLAGS) $(CPPFLAGS) -DMAKING_MODS -c seen.c
+	rm -f ../seen.o
 	mv seen.o ../
 
 ../../../seen.so: ../seen.o
diff -urNPX ../exclude ../eggdrop1.3.cvs/src/mod/seen.mod/seen.c ./src/mod/seen.mod/seen.c
--- ../eggdrop1.3.cvs/src/mod/seen.mod/seen.c	Sun Oct 17 15:40:19 1999
+++ ./src/mod/seen.mod/seen.c	Sun Oct 24 22:26:52 1999
@@ -114,10 +114,10 @@
 
   context;
   if (!u) {
-    putlog(LOG_MISC, "*", "[%s!%s] seen %s", nick, host, text);
+    putlog(LOG_CMDS, "*", "[%s!%s] seen %s", nick, host, text);
     return 0;
   }
-  putlog(LOG_MISC, "*", "(%s!%s) !%s! SEEN %s", nick, host, u->handle, text);
+  putlog(LOG_CMDS, "*", "(%s!%s) !%s! SEEN %s", nick, host, u->handle, text);
   sprintf(prefix, "PRIVMSG %s :", nick);
   do_seen(DP_SERVER, prefix, nick, u->handle, "", text);
   return 0;
@@ -429,8 +429,7 @@
 	  strcat(whoredirect, whotarget);
 	  strcat(whoredirect,
 	   " is 'observing' this channel right now from my party line!");
-	  dprintf(idx, "%s%s\n",
-		  prefix, whoredirect);
+	  dprintf(idx, "%s%s\n", prefix, whoredirect);
 	} else {
 	  dprintf(idx,
 		  "%s%s%s is linked to me via DCC CHAT right now!\n",
diff -urNPX ../exclude ../eggdrop1.3.cvs/src/mod/server.mod/Makefile ./src/mod/server.mod/Makefile
--- ../eggdrop1.3.cvs/src/mod/server.mod/Makefile	Sun Oct 17 15:40:19 1999
+++ ./src/mod/server.mod/Makefile	Mon Oct 25 02:18:29 1999
@@ -16,6 +16,7 @@
 ../server.o: ../module.h ../modvals.h ../../eggdrop.h cmdsserv.c server.c \
 servmsg.c server.h
 	$(CC) $(CFLAGS) $(CPPFLAGS) -DMAKING_MODS -c server.c
+	rm -f ../server.o
 	mv server.o ../
 
 ../../../server.so: ../server.o
diff -urNPX ../exclude ../eggdrop1.3.cvs/src/mod/server.mod/servmsg.c ./src/mod/server.mod/servmsg.c
--- ../eggdrop1.3.cvs/src/mod/server.mod/servmsg.c	Sun Oct 17 15:40:19 1999
+++ ./src/mod/server.mod/servmsg.c	Sun Oct 24 22:31:26 1999
@@ -831,7 +831,7 @@
   fixcolon(msg);
   putlog(LOG_SERV | LOG_MSGS, "*", "-ERROR from server- %s", msg);
   if (serverror_quit) {
-    putlog(LOG_BOTS, "*", "Disconnecting from server.");
+    putlog(LOG_SERV, "*", "Disconnecting from server.");
     nuke_server("Bah, stupid error messages.");
   }
   return 1;
diff -urNPX ../exclude ../eggdrop1.3.cvs/src/mod/share.mod/Makefile ./src/mod/share.mod/Makefile
--- ../eggdrop1.3.cvs/src/mod/share.mod/Makefile	Sun Oct 17 15:40:19 1999
+++ ./src/mod/share.mod/Makefile	Mon Oct 25 02:19:09 1999
@@ -16,6 +16,7 @@
 ../share.o: ../module.h ../modvals.h ../../eggdrop.h share.c ../../chan.h \
 ../../users.h ../channels.mod/channels.h ../transfer.mod/transfer.h
 	$(CC) $(CFLAGS) $(CPPFLAGS) -DMAKING_MODS -c share.c
+	rm -f ../share.o
 	mv share.o ../
 
 ../../../share.so: ../share.o
diff -urNPX ../exclude ../eggdrop1.3.cvs/src/mod/share.mod/share.c ./src/mod/share.mod/share.c
--- ../eggdrop1.3.cvs/src/mod/share.mod/share.c	Sun Oct 24 16:48:28 1999
+++ ./src/mod/share.mod/share.c	Sun Oct 24 22:50:36 1999
@@ -855,7 +855,8 @@
 
 static void share_ufno(int idx, char *par)
 {
-  putlog(LOG_BOTS, "*", "User file rejected by %s: %s", dcc[idx].nick, par);
+  putlog(LOG_BOTS, "*", "User file rejected by %s: %s",
+	 dcc[idx].nick, par);
   dcc[idx].status &= ~STAT_OFFERED;
   if (!(dcc[idx].status & STAT_GETTING))
     dcc[idx].status &= ~(STAT_SHARE | STAT_AGGRESSIVE);
@@ -869,7 +870,8 @@
     dcc[idx].status |= STAT_SHARE;
     dcc[idx].status |= STAT_SENDING;
     start_sending_users(idx);
-    putlog(LOG_BOTS, "*", "Sending user file send request to %s", dcc[idx].nick);
+    putlog(LOG_BOTS, "*", "Sending user file send request to %s",
+	   dcc[idx].nick);
   }
 }
 
@@ -931,7 +933,7 @@
     port = newsplit(&par);
     if (open_telnet_dcc(sock, ip, port) < 0) {
       killsock(sock);
-      putlog(LOG_MISC, "*", "Asynchronous connection failed!");
+      putlog(LOG_BOTS, "*", "Asynchronous connection failed!");
       dprintf(idx, "s e Can't connect to you!\n");
       zapfbot(idx);
     } else {
@@ -1190,7 +1192,7 @@
       strcpy(tbuf[i].bot, bot);
       tbuf[i].q = NULL;
       tbuf[i].timer = now;
-      putlog(LOG_MISC, "*", "Creating resync buffer for %s", bot);
+      putlog(LOG_BOTS, "*", "Creating resync buffer for %s", bot);
       break;
     }
 }
@@ -1231,7 +1233,7 @@
 	  nfree(q->msg);
 	  nfree(q);
 	}
-	putlog(LOG_MISC, "*", "Flushing resync buffer for clonebot %s.",
+	putlog(LOG_BOTS, "*", "Flushing resync buffer for clonebot %s.",
 	       tbuf[i].bot);
 	tbuf[i].bot[0] = 0;
       }
@@ -1395,7 +1397,7 @@
       ok = write_exempts(f, idx); /* we share these now */
       ok = write_invites(f, idx); /* we share these now */
     } else
-      putlog(LOG_MISC, "*", "%s is too old: not sharing exempts and invites.",
+      putlog(LOG_BOTS, "*", "%s is too old: not sharing exempts and invites.",
              dcc[idx].nick);
     fclose(f);
     if (!ok)
@@ -1534,7 +1536,7 @@
       putlog(LOG_MISC, "*", "%s", USERF_CANTREAD);
     else {
       context;
-      putlog(LOG_MISC, "*", "%s.", USERF_XFERDONE);
+      putlog(LOG_BOTS, "*", "%s.", USERF_XFERDONE);
       clear_chanlist();
       userlist = u;
       lastuser = NULL;
@@ -1635,7 +1637,7 @@
     context;
     dprintf(idx, "s e %s\n", USERF_CANTSEND);
     context;
-    putlog(LOG_MISC, "*", "%s -- can't send userfile",
+    putlog(LOG_BOTS, "*", "%s -- can't send userfile",
 	   i == 1 ? "NO MORE DCC CONNECTIONS" :
 	   i == 2 ? "CAN'T OPEN A LISTENING SOCKET" : "BAD FILE");
     dcc[idx].status &= ~(STAT_SHARE | STAT_SENDING | STAT_AGGRESSIVE);
diff -urNPX ../exclude ../eggdrop1.3.cvs/src/mod/transfer.mod/Makefile ./src/mod/transfer.mod/Makefile
--- ../eggdrop1.3.cvs/src/mod/transfer.mod/Makefile	Sun Oct 17 15:40:19 1999
+++ ./src/mod/transfer.mod/Makefile	Mon Oct 25 02:18:19 1999
@@ -16,6 +16,7 @@
 ../transfer.o: ../module.h ../modvals.h ../../eggdrop.h transfer.h \
 ../../tandem.h ../../users.h
 	$(CC) $(CFLAGS) $(CPPFLAGS) -DMAKING_MODS -c transfer.c
+	rm -f ../transfer.o
 	mv transfer.o ../
 
 ../../../transfer.so: ../transfer.o
diff -urNPX ../exclude ../eggdrop1.3.cvs/src/mod/transfer.mod/transfer.c ./src/mod/transfer.mod/transfer.c
--- ../eggdrop1.3.cvs/src/mod/transfer.mod/transfer.c	Sat Oct 23 13:10:03 1999
+++ ./src/mod/transfer.mod/transfer.c	Sun Oct 24 22:42:51 1999
@@ -311,7 +311,7 @@
       dcc[y].status &= ~STAT_GETTING;
       dcc[y].status &= ~STAT_SHARE;
     }
-    putlog(LOG_MISC, "*", USERF_FAILEDXFER);
+    putlog(LOG_BOTS, "*", USERF_FAILEDXFER);
     unlink(dcc[idx].u.xfer->filename);
   } else {
     neterror(s1);
@@ -420,7 +420,7 @@
 	  (dcc[x].type->flags & DCT_BOT))
 	y = x;
     if (y) {
-      putlog(LOG_MISC, "*", "Lost userfile transfer to %s; aborting.",
+      putlog(LOG_BOTS, "*", "Lost userfile transfer to %s; aborting.",
 	     dcc[y].nick);
       unlink(dcc[idx].u.xfer->filename);
       /* drop that bot */
@@ -483,7 +483,7 @@
   if ((cmp > dcc[idx].status) && (cmp <= dcc[idx].u.xfer->length)) {
     /* attempt to resume I guess */
     if (!strcmp(dcc[idx].nick, "*users")) {
-      putlog(LOG_MISC, "*", "!!! Trying to skip ahead on userfile transfer");
+      putlog(LOG_BOTS, "*", "!!! Trying to skip ahead on userfile transfer");
     } else {
       fseek(dcc[idx].u.xfer->f, cmp, SEEK_SET);
       dcc[idx].status = cmp;
@@ -509,7 +509,7 @@
 	  y = x;
       if (y != 0)
 	dcc[y].status &= ~STAT_SENDING;
-      putlog(LOG_MISC, "*", "Completed userfile transfer to %s.",
+      putlog(LOG_BOTS, "*", "Completed userfile transfer to %s.",
 	     dcc[y].nick);
       unlink(dcc[idx].u.xfer->filename);
       /* any sharebot things that were queued: */
@@ -568,7 +568,7 @@
       if ((!strcasecmp(dcc[x].nick, dcc[idx].host)) &&
 	  (dcc[x].type->flags & DCT_BOT))
 	y = x;
-    putlog(LOG_MISC, "*", "Lost userfile transfer; aborting.");
+    putlog(LOG_BOTS, "*", "Lost userfile transfer; aborting.");
     /* unlink(dcc[idx].u.xfer->filename); *//* <- already unlinked */
     xnick[0] = 0;
     /* drop that bot */
@@ -719,7 +719,7 @@
       dcc[y].status &= ~STAT_SHARE;
     }
     unlink(dcc[i].u.xfer->filename);
-    putlog(LOG_MISC, "*", "Timeout on userfile transfer.");
+    putlog(LOG_BOTS, "*", "Timeout on userfile transfer.");
     dprintf(y, "bye\n");
     simple_sprintf(xx, "Disconnected %s (timed-out userfile transfer)",
 		   dcc[y].nick);
@@ -766,7 +766,7 @@
       dcc[y].status &= ~STAT_SHARE;
     }
     unlink(dcc[idx].u.xfer->filename);
-    putlog(LOG_MISC, "*", "Timeout on userfile transfer.");
+    putlog(LOG_BOTS, "*", "Timeout on userfile transfer.");
   } else {
     char xx[1024];
 
diff -urNPX ../exclude ../eggdrop1.3.cvs/src/mod/wire.mod/Makefile ./src/mod/wire.mod/Makefile
--- ../eggdrop1.3.cvs/src/mod/wire.mod/Makefile	Sun Oct 17 15:40:19 1999
+++ ./src/mod/wire.mod/Makefile	Mon Oct 25 02:19:03 1999
@@ -16,6 +16,7 @@
 ../wire.o: ../module.h ../modvals.h ../../eggdrop.h wire.c wire.h \
 ../../chan.h ../../users.h
 	$(CC) $(CFLAGS) $(CPPFLAGS) -DMAKING_MODS -c wire.c
+	rm -f ../wire.o
 	mv wire.o ../
 
 ../../../wire.so: ../wire.o
diff -urNPX ../exclude ../eggdrop1.3.cvs/src/mod/woobie.mod/Makefile ./src/mod/woobie.mod/Makefile
--- ../eggdrop1.3.cvs/src/mod/woobie.mod/Makefile	Sun Oct 17 15:40:20 1999
+++ ./src/mod/woobie.mod/Makefile	Mon Oct 25 02:18:05 1999
@@ -15,6 +15,7 @@
 
 ../woobie.o: ../module.h ../modvals.h ../../eggdrop.h
 	$(CC) $(CFLAGS) $(CPPFLAGS) -DMAKING_MODS -c woobie.c
+	rm -f ../woobie.o
 	mv woobie.o ../
 
 ../../../woobie.so: ../woobie.o


More information about the Patches mailing list