irc-dev-cvs Mailing List for IRC-Dev ircd development (Page 5)
Brought to you by:
zolty
You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(22) |
Sep
|
Oct
(2) |
Nov
|
Dec
(2) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(30) |
Feb
(4) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
(27) |
Dec
(17) |
| 2004 |
Jan
|
Feb
(4) |
Mar
|
Apr
(4) |
May
(8) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(14) |
Dec
(2) |
| 2005 |
Jan
(18) |
Feb
(2) |
Mar
(12) |
Apr
(18) |
May
(16) |
Jun
(3) |
Jul
(2) |
Aug
|
Sep
(3) |
Oct
(9) |
Nov
|
Dec
|
| 2007 |
Jan
|
Feb
|
Mar
|
Apr
(8) |
May
|
Jun
|
Jul
(3) |
Aug
|
Sep
(5) |
Oct
|
Nov
(3) |
Dec
(2) |
| 2008 |
Jan
(6) |
Feb
|
Mar
|
Apr
|
May
|
Jun
(4) |
Jul
(8) |
Aug
(14) |
Sep
(4) |
Oct
(11) |
Nov
(1) |
Dec
|
|
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-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-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-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-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-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-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-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: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: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-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-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-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 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-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-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-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-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-02 19:49:26
|
CVSROOT : /cvsroot/irc-dev
Module : ircd-ircdev
Commit time: 2005-04-02 19:49:20 UTC
Modified files:
TODO.es
Log message:
Actualizacion TODO
---------------------- diff included ----------------------
Index: ircd-ircdev/TODO.es
diff -u ircd-ircdev/TODO.es:1.15 ircd-ircdev/TODO.es:1.16
--- ircd-ircdev/TODO.es:1.15 Thu Mar 31 05:12:02 2005
+++ ircd-ircdev/TODO.es Sat Apr 2 11:49:09 2005
@@ -1,7 +1,7 @@
#
# TODO para ircd-ircdev
#
-# $Id: TODO.es,v 1.15 2005/03/31 13:12:02 zolty Exp $
+# $Id: TODO.es,v 1.16 2005/04/02 19:49:09 zolty Exp $
#
# Insertar las nuevas entradas al principio de la lista TODO.
#
@@ -9,6 +9,7 @@
URGENTE
--------------------------------------------------------------------------------------
- [D] Implementar el protocolo DDB.
+ - [D] Implementar tabla i de Ilines
- [D] Implementar tabla o de Operadores
- [D] Implementar tabla p de Privilegios
- [D] Implementar tabla f de Features
@@ -57,7 +58,6 @@
- [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] STATS J para listar nicks en jupe
- [G] Modo de canal +u de esconder mensajes de quit y part (evitar
publicidad)
- [G] Sistema de modulos dinámicos
----------------------- End of diff -----------------------
|
|
From: Toni G. <zo...@us...> - 2005-04-02 19:47:56
|
CVSROOT : /cvsroot/irc-dev
Module : ircd-ircdev
Commit time: 2005-04-02 19:47:45 UTC
Modified files:
ChangeLog ChangeLog.es doc/ircd.sample-en.conf
doc/ircd.sample-es.conf include/client.h include/handlers.h
include/hash.h include/ircd_features.h include/msg.h
include/numeric.h include/patchlevel.h include/s_conf.h
include/struct.h ircd/channel.c ircd/engine_kqueue.c ircd/hash.c
ircd/ircd_events.c ircd/ircd_features.c ircd/ircd_lexer.l
ircd/ircd_parser.y ircd/ircd_res.c ircd/m_burst.c ircd/m_part.c
ircd/m_privs.c ircd/m_server.c ircd/parse.c ircd/s_bsd.c
ircd/s_err.c ircd/s_misc.c ircd/s_serv.c ircd/s_stats.c
Log message:
Author: zoltan <zo...@ir...>
Log message:
2005-04-02 Toni García <zo...@ir...> 1.0.alpha24
* STATS J para jupe de nicks
* PRIVS remoto
* Correccion de Bugs
* Sincronización Undernet
---------------------- diff included ----------------------
Index: ircd-ircdev/ChangeLog
diff -u ircd-ircdev/ChangeLog:1.25 ircd-ircdev/ChangeLog:1.26
--- ircd-ircdev/ChangeLog:1.25 Thu Mar 31 04:58:01 2005
+++ ircd-ircdev/ChangeLog Sat Apr 2 11:47:33 2005
@@ -1,10 +1,16 @@
#
# ChangeLog for ircd-ircdev
#
-# $Id: ChangeLog,v 1.25 2005/03/31 12:58:01 zolty Exp $
+# $Id: ChangeLog,v 1.26 2005/04/02 19:47:33 zolty Exp $
#
# Insert new changes at beginning of the change list.
#
+2005-04-02 Toni García <zo...@ir...> 1.0.alpha24
+ * STATS J for jupe nicks
+ * PRIVS remote
+ * Fix bugs
+ * Undernet synchronization
+
2005-03-30 Toni García <zo...@ir...> 1.0.alpha23
* Table n (NICKDB) support
* Usermode +r
Index: ircd-ircdev/ChangeLog.es
diff -u ircd-ircdev/ChangeLog.es:1.25 ircd-ircdev/ChangeLog.es:1.26
--- ircd-ircdev/ChangeLog.es:1.25 Thu Mar 31 04:58:01 2005
+++ ircd-ircdev/ChangeLog.es Sat Apr 2 11:47:33 2005
@@ -1,10 +1,16 @@
#
# Log de Cambios para ircd-ircdev
#
-# $Id: ChangeLog.es,v 1.25 2005/03/31 12:58:01 zolty Exp $
+# $Id: ChangeLog.es,v 1.26 2005/04/02 19:47:33 zolty Exp $
#
# Insertar los nuevos cambios al principio de esta lista de cambios.
#
+2005-04-02 Toni García <zo...@ir...> 1.0.alpha24
+ * STATS J para jupe de nicks
+ * PRIVS remoto
+ * Correccion de Bugs
+ * Sincronización Undernet
+
2005-03-30 Toni García <zo...@ir...> 1.0.alpha23
* Soporte de tabla n (NICKDB)
* Modo de usuario +r
Index: ircd-ircdev/doc/ircd.sample-en.conf
diff -u ircd-ircdev/doc/ircd.sample-en.conf:1.15 ircd-ircdev/doc/ircd.sample-en.conf:1.16
--- ircd-ircdev/doc/ircd.sample-en.conf:1.15 Mon Mar 21 09:26:29 2005
+++ ircd-ircdev/doc/ircd.sample-en.conf Sat Apr 2 11:47:33 2005
@@ -811,6 +811,7 @@
# "HIS_STATS_h" = "TRUE";
# "HIS_STATS_i" = "TRUE";
# "HIS_STATS_j" = "TRUE";
+# "HIS_STATS_J" = "TRUE";
# "HIS_STATS_k" = "TRUE";
# "HIS_STATS_l" = "TRUE";
# "HIS_STATS_L" = "TRUE";
Index: ircd-ircdev/doc/ircd.sample-es.conf
diff -u ircd-ircdev/doc/ircd.sample-es.conf:1.11 ircd-ircdev/doc/ircd.sample-es.conf:1.12
--- ircd-ircdev/doc/ircd.sample-es.conf:1.11 Mon Mar 21 09:26:31 2005
+++ ircd-ircdev/doc/ircd.sample-es.conf Sat Apr 2 11:47:33 2005
@@ -848,6 +848,7 @@
# "HIS_STATS_h" = "TRUE";
# "HIS_STATS_i" = "TRUE";
# "HIS_STATS_j" = "TRUE";
+# "HIS_STATS_J" = "TRUE";
# "HIS_STATS_k" = "TRUE";
# "HIS_STATS_l" = "TRUE";
# "HIS_STATS_L" = "TRUE";
Index: ircd-ircdev/include/client.h
diff -u ircd-ircdev/include/client.h:1.13 ircd-ircdev/include/client.h:1.14
--- ircd-ircdev/include/client.h:1.13 Thu Mar 31 04:58:02 2005
+++ ircd-ircdev/include/client.h Sat Apr 2 11:47:34 2005
@@ -21,7 +21,7 @@
*/
/** @file
* @brief Structures and functions for handling local clients.
- * @version $Id: client.h,v 1.13 2005/03/31 12:58:02 zolty Exp $
+ * @version $Id: client.h,v 1.14 2005/04/02 19:47:34 zolty Exp $
*/
#ifndef INCLUDED_client_h
#define INCLUDED_client_h
@@ -277,7 +277,7 @@
struct irc_in_addr cli_ip; /**< Real IP of client */
short cli_status; /**< Client type */
char cli_name[HOSTLEN + 1]; /**< Unique name of the client, nick or host */
- char cli_username[USERLEN + 1]; /**< username here now for auth stuff */
+ char cli_username[USERLEN + 1]; /**< Username determined by ident lookup */
char cli_info[REALLEN + 1]; /**< Free form additional client information */
};
Index: ircd-ircdev/include/handlers.h
diff -u ircd-ircdev/include/handlers.h:1.11 ircd-ircdev/include/handlers.h:1.12
--- ircd-ircdev/include/handlers.h:1.11 Thu Mar 31 04:58:02 2005
+++ ircd-ircdev/include/handlers.h Sat Apr 2 11:47:34 2005
@@ -21,7 +21,7 @@
*/
/** @file
* @brief Declarations for all protocol message handler functions.
- * @version $Id: handlers.h,v 1.11 2005/03/31 12:58:02 zolty Exp $
+ * @version $Id: handlers.h,v 1.12 2005/04/02 19:47:34 zolty Exp $
*/
#ifndef INCLUDED_handlers_h
#define INCLUDED_handlers_h
@@ -229,6 +229,7 @@
extern int ms_ping(struct Client*, struct Client*, int, char*[]);
extern int ms_pong(struct Client*, struct Client*, int, char*[]);
extern int ms_privmsg(struct Client*, struct Client*, int, char*[]);
+extern int ms_privs(struct Client*, struct Client*, int, char*[]);
extern int ms_quit(struct Client*, struct Client*, int, char*[]);
extern int ms_rping(struct Client*, struct Client*, int, char*[]);
extern int ms_rpong(struct Client*, struct Client*, int, char*[]);
Index: ircd-ircdev/include/hash.h
diff -u ircd-ircdev/include/hash.h:1.6 ircd-ircdev/include/hash.h:1.7
--- ircd-ircdev/include/hash.h:1.6 Wed Mar 23 10:34:25 2005
+++ ircd-ircdev/include/hash.h Sat Apr 2 11:47:34 2005
@@ -22,13 +22,14 @@
*/
/** @file
* @brief Hash table management APIs.
- * @version $Id: hash.h,v 1.6 2005/03/23 18:34:25 zolty Exp $
+ * @version $Id: hash.h,v 1.7 2005/04/02 19:47:34 zolty Exp $
*/
#ifndef INCLUDED_hash_h
#define INCLUDED_hash_h
struct Client;
struct Channel;
+struct StatDesc;
struct Watch;
/*
@@ -98,6 +99,8 @@
extern int isNickJuped(const char *nick);
extern int addNickJupes(const char *nicks);
extern void clearNickJupes(void);
+extern void stats_nickjupes(struct Client* to, const struct StatDesc* sd,
+ char* param);
extern void list_next_channels(struct Client *cptr);
#endif /* INCLUDED_hash_h */
Index: ircd-ircdev/include/ircd_features.h
diff -u ircd-ircdev/include/ircd_features.h:1.11 ircd-ircdev/include/ircd_features.h:1.12
--- ircd-ircdev/include/ircd_features.h:1.11 Thu Mar 31 04:58:02 2005
+++ ircd-ircdev/include/ircd_features.h Sat Apr 2 11:47:34 2005
@@ -21,7 +21,7 @@
*/
/** @file
* @brief Public interfaces and declarations for dealing with configurable features.
- * @version $Id: ircd_features.h,v 1.11 2005/03/31 12:58:02 zolty Exp $
+ * @version $Id: ircd_features.h,v 1.12 2005/04/02 19:47:34 zolty Exp $
*/
#ifndef INCLUDED_features_h
#define INCLUDED_features_h
@@ -112,28 +112,29 @@
FEAT_HIS_MAP,
FEAT_HIS_LINKS,
FEAT_HIS_TRACE,
- FEAT_HIS_STATS_l,
- FEAT_HIS_STATS_L,
FEAT_HIS_STATS_a,
#if defined(DDB)
FEAT_HIS_STATS_b,
#endif
FEAT_HIS_STATS_c,
+ FEAT_HIS_STATS_d,
+ FEAT_HIS_STATS_e,
+ FEAT_HIS_STATS_f,
FEAT_HIS_STATS_g,
FEAT_HIS_STATS_h,
- FEAT_HIS_STATS_k,
- FEAT_HIS_STATS_f,
FEAT_HIS_STATS_i,
FEAT_HIS_STATS_j,
- FEAT_HIS_STATS_M,
+ FEAT_HIS_STATS_J,
+ FEAT_HIS_STATS_k,
+ FEAT_HIS_STATS_l,
+ FEAT_HIS_STATS_L,
FEAT_HIS_STATS_m,
+ FEAT_HIS_STATS_M,
FEAT_HIS_STATS_o,
FEAT_HIS_STATS_p,
FEAT_HIS_STATS_q,
- FEAT_HIS_STATS_R,
FEAT_HIS_STATS_r,
- FEAT_HIS_STATS_d,
- FEAT_HIS_STATS_e,
+ FEAT_HIS_STATS_R,
FEAT_HIS_STATS_t,
FEAT_HIS_STATS_T,
FEAT_HIS_STATS_u,
Index: ircd-ircdev/include/msg.h
diff -u ircd-ircdev/include/msg.h:1.11 ircd-ircdev/include/msg.h:1.12
--- ircd-ircdev/include/msg.h:1.11 Thu Mar 31 04:58:02 2005
+++ ircd-ircdev/include/msg.h Sat Apr 2 11:47:34 2005
@@ -21,7 +21,7 @@
*/
/** @file
* @brief Command and token declarations and structures.
- * @version $Id: msg.h,v 1.11 2005/03/31 12:58:02 zolty Exp $
+ * @version $Id: msg.h,v 1.12 2005/04/02 19:47:34 zolty Exp $
*/
#ifndef INCLUDED_msg_h
#define INCLUDED_msg_h
@@ -360,7 +360,8 @@
#define TOK_GET "GET"
#define MSG_PRIVS "PRIVS" /* PRIV */
-#define TOK_PRIVS "PRIVS"
+#define TOK_PRIVS "PR"
+#define CMD_PRIVS MSG_PRIVS, TOK_PRIVS
#define MSG_CAP "CAP"
#define TOK_CAP "CAP"
Index: ircd-ircdev/include/numeric.h
diff -u ircd-ircdev/include/numeric.h:1.10 ircd-ircdev/include/numeric.h:1.11
--- ircd-ircdev/include/numeric.h:1.10 Thu Mar 31 04:58:02 2005
+++ ircd-ircdev/include/numeric.h Sat Apr 2 11:47:34 2005
@@ -21,7 +21,7 @@
*/
/** @file
* @brief Declarations of numeric replies and supporting functions.
- * @version $Id: numeric.h,v 1.10 2005/03/31 12:58:02 zolty Exp $
+ * @version $Id: numeric.h,v 1.11 2005/04/02 19:47:34 zolty Exp $
*/
#ifndef INCLUDED_numeric_h
#define INCLUDED_numeric_h
@@ -97,7 +97,7 @@
#define RPL_STATSNLINE 214 /* unused */
#define RPL_STATSILINE 215
#define RPL_STATSKLINE 216
-#define RPL_STATSPLINE 217 /* Undernet extenstion */
+#define RPL_STATSPLINE 217 /* Undernet extension */
/* RPL_STATSQLINE 217 Various */
#define RPL_STATSYLINE 218
#define RPL_ENDOFSTATS 219 /* See also RPL_STATSDLINE */
@@ -106,6 +106,7 @@
/* RPL_STATSBLINE 220 Numerics List: Dalnet,unreal */
#define RPL_UMODEIS 221
/* RPL_SQLINE_NICK 222 Numerics List: Dalnet */
+#define RPL_STATSJLINE 222 /* Undernet extension */
/* RPL_STATSELINE 223 dalnet */
/* RPL_STATSGLINE 223 unreal */
/* RPL_STATSFLINE 224 Hybrid extension,Dalnet */
Index: ircd-ircdev/include/patchlevel.h
diff -u ircd-ircdev/include/patchlevel.h:1.25 ircd-ircdev/include/patchlevel.h:1.26
--- ircd-ircdev/include/patchlevel.h:1.25 Thu Mar 31 04:58:03 2005
+++ ircd-ircdev/include/patchlevel.h Sat Apr 2 11:47:34 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.25 2005/03/31 12:58:03 zolty Exp $
+ * $Id: patchlevel.h,v 1.26 2005/04/02 19:47:34 zolty Exp $
*
*/
-#define PATCHLEVEL ".alpha23"
+#define PATCHLEVEL ".alpha24"
#define RELEASE "1.0"
Index: ircd-ircdev/include/s_conf.h
diff -u ircd-ircdev/include/s_conf.h:1.8 ircd-ircdev/include/s_conf.h:1.9
--- ircd-ircdev/include/s_conf.h:1.8 Mon Jan 10 04:22:00 2005
+++ ircd-ircdev/include/s_conf.h Sat Apr 2 11:47:34 2005
@@ -21,7 +21,7 @@
*/
/** @file s_conf.h
* @brief ircd configuration file API.
- * @version $Id: s_conf.h,v 1.8 2005/01/10 12:22:00 zolty Exp $
+ * @version $Id: s_conf.h,v 1.9 2005/04/02 19:47:34 zolty Exp $
*/
#ifndef INCLUDED_s_conf_h
#define INCLUDED_s_conf_h
@@ -156,6 +156,8 @@
char nick[1]; /**< start of nick\@server string */
};
+#define SMAP_FAST 1 /**< Command does not have MFLG_SLOW. */
+
/** Target set for a service pseudo-command. */
struct s_map {
struct s_map *next; /**< Next element in #GlobalServiceMapList. */
@@ -163,6 +165,7 @@
char *name; /**< Text name of the mapping. */
char *command; /**< Command name to use. */
char *prepend; /**< Extra text to prepend to user's text. */
+ unsigned int flags; /**< Bitwise map of SMAP_* flags. */
struct nick_host *services; /**< Linked list of possible targets. */
};
Index: ircd-ircdev/include/struct.h
diff -u ircd-ircdev/include/struct.h:1.8 ircd-ircdev/include/struct.h:1.9
--- ircd-ircdev/include/struct.h:1.8 Wed Mar 23 10:34:27 2005
+++ ircd-ircdev/include/struct.h Sat Apr 2 11:47:34 2005
@@ -22,7 +22,7 @@
*/
/** @file
* @brief Structure definitions for users and servers.
- * @version $Id: struct.h,v 1.8 2005/03/23 18:34:27 zolty Exp $
+ * @version $Id: struct.h,v 1.9 2005/04/02 19:47:34 zolty Exp $
*/
#ifndef INCLUDED_struct_h
#define INCLUDED_struct_h
@@ -82,7 +82,12 @@
unsigned int joined; /**< number of channels joined */
unsigned int invites; /**< Number of channels we've been invited to */
unsigned int watches; /**< Number of entrances in the watch list */
- char username[USERLEN + 1]; /**< remote account name */
+ /** Remote account name. Before registration is complete, this is
+ * either empty or contains the username from the USER command.
+ * After registration, that may be prefixed with ~ or it may be
+ * overwritten with the ident response.
+ */
+ char username[USERLEN + 1];
char host[HOSTLEN + 1]; /**< displayed hostname */
char realhost[HOSTLEN + 1]; /**< actual hostname */
#if defined(UNDERNET)
Index: ircd-ircdev/ircd/channel.c
diff -u ircd-ircdev/ircd/channel.c:1.15 ircd-ircdev/ircd/channel.c:1.16
--- ircd-ircdev/ircd/channel.c:1.15 Mon Mar 21 10:39:05 2005
+++ ircd-ircdev/ircd/channel.c Sat Apr 2 11:47:34 2005
@@ -21,7 +21,7 @@
*/
/** @file
* @brief Channel management and maintanance
- * @version $Id: channel.c,v 1.15 2005/03/21 18:39:05 zolty Exp $
+ * @version $Id: channel.c,v 1.16 2005/04/02 19:47:34 zolty Exp $
*/
#include "config.h"
@@ -996,7 +996,7 @@
* Do we have a nick with a new mode ?
* Or are we starting a new BURST line?
*/
- if (new_mode || !feat_oplevels)
+ if (new_mode)
{
/*
* This means we are at the _first_ member that has only
@@ -1024,7 +1024,7 @@
msgq_append(&me, mb, tbuf);
new_mode = 0;
}
- else if (flag_cnt > 1 && last_oplevel != member->oplevel)
+ else if (feat_oplevels && flag_cnt > 1 && last_oplevel != member->oplevel)
{
/*
* This can't be the first member of a (continued) BURST
Index: ircd-ircdev/ircd/engine_kqueue.c
diff -u ircd-ircdev/ircd/engine_kqueue.c:1.6 ircd-ircdev/ircd/engine_kqueue.c:1.7
--- ircd-ircdev/ircd/engine_kqueue.c:1.6 Wed Jan 26 09:19:47 2005
+++ ircd-ircdev/ircd/engine_kqueue.c Sat Apr 2 11:47:35 2005
@@ -21,7 +21,7 @@
*/
/** @file
* @brief FreeBSD kqueue()/kevent() event engine.
- * @version $Id: engine_kqueue.c,v 1.6 2005/01/26 17:19:47 zolty Exp $
+ * @version $Id: engine_kqueue.c,v 1.7 2005/04/02 19:47:35 zolty Exp $
*/
#include "config.h"
@@ -301,11 +301,6 @@
dellist[1].data = 0;
dellist[1].udata = 0;
- /* make it all go away */
- if (kevent(kqueue_id, dellist, 2, 0, 0, 0) < 0)
- log_write(LS_SOCKET, L_WARNING, 0,
- "Unable to delete kevent items for socket %d", s_fd(sock));
-
sockList[s_fd(sock)] = 0;
}
Index: ircd-ircdev/ircd/hash.c
diff -u ircd-ircdev/ircd/hash.c:1.8 ircd-ircdev/ircd/hash.c:1.9
--- ircd-ircdev/ircd/hash.c:1.8 Wed Mar 23 10:34:47 2005
+++ ircd-ircdev/ircd/hash.c Sat Apr 2 11:47:35 2005
@@ -22,7 +22,7 @@
*/
/** @file
* @brief Hash table management.
- * @version $Id: hash.c,v 1.8 2005/03/23 18:34:47 zolty Exp $
+ * @version $Id: hash.c,v 1.9 2005/04/02 19:47:35 zolty Exp $
*
* This file used to use some very complicated hash function. Now it
* uses CRC-32, but effectively remaps each input byte according to a
@@ -479,6 +479,21 @@
jupeTable[i][0] = '\000';
}
+/** Report all nick jupes to a user.
+ * @param[in] to Client requesting statistics.
+ * @param[in] sd Stats descriptor for request (ignored).
+ * @param[in] param Extra parameter from user (ignored).
+ */
+void
+stats_nickjupes(struct Client* to, const struct StatDesc* sd, char* param)
+{
+ int i;
+
+ for (i = 0; i < JUPEHASHSIZE; i++)
+ if (jupeTable[i][0])
+ send_reply(to, RPL_STATSJLINE, jupeTable[i]);
+}
+
/** Send more channels to a client in mid-LIST.
* @param[in] cptr Client to send the list to.
*/
Index: ircd-ircdev/ircd/ircd_events.c
diff -u ircd-ircdev/ircd/ircd_events.c:1.6 ircd-ircdev/ircd/ircd_events.c:1.7
--- ircd-ircdev/ircd/ircd_events.c:1.6 Mon Jan 10 04:22:59 2005
+++ ircd-ircdev/ircd/ircd_events.c Sat Apr 2 11:47:35 2005
@@ -21,7 +21,7 @@
*/
/** @file
* @brief Implementation of event loop mid-layer.
- * @version $Id: ircd_events.c,v 1.6 2005/01/10 12:22:59 zolty Exp $
+ * @version $Id: ircd_events.c,v 1.7 2005/04/02 19:47:35 zolty Exp $
*/
#include "config.h"
@@ -528,12 +528,20 @@
"timeout %Tu", timer, timer_to_name(timer->t_type), timer->t_value,
timer_to_name(type), value));
- gen_dequeue(timer); /* remove the timer from the queue */
-
timer->t_type = type; /* Set the new type and value */
timer->t_value = value;
timer->t_expire = 0;
+ /* If the timer expiration callback tries to change the timer
+ * expiration, flag the timer but do not dequeue it yet.
+ */
+ if (timer->t_header.gh_flags & GEN_MARKED)
+ {
+ timer->t_header.gh_flags |= GEN_READD;
+ return;
+ }
+ gen_dequeue(timer); /* remove the timer from the queue */
+
timer_enqueue(timer); /* re-queue the timer */
}
Index: ircd-ircdev/ircd/ircd_features.c
diff -u ircd-ircdev/ircd/ircd_features.c:1.13 ircd-ircdev/ircd/ircd_features.c:1.14
--- ircd-ircdev/ircd/ircd_features.c:1.13 Thu Mar 31 04:58:04 2005
+++ ircd-ircdev/ircd/ircd_features.c Sat Apr 2 11:47:35 2005
@@ -21,7 +21,7 @@
*/
/** @file
* @brief Implementation of configurable feature support.
- * @version $Id: ircd_features.c,v 1.13 2005/03/31 12:58:04 zolty Exp $
+ * @version $Id: ircd_features.c,v 1.14 2005/04/02 19:47:35 zolty Exp $
*/
#include "config.h"
@@ -352,28 +352,29 @@
F_B(HIS_MAP, 0, 1, 0),
F_B(HIS_LINKS, 0, 1, 0),
F_B(HIS_TRACE, 0, 1, 0),
- F_B(HIS_STATS_l, 0, 1, 0),
- F_B(HIS_STATS_L, 0, 1, 0),
F_B(HIS_STATS_a, 0, 1, 0),
#if defined(DDB)
F_B(HIS_STATS_b, 0, 1, 0),
#endif
F_B(HIS_STATS_c, 0, 1, 0),
+ F_B(HIS_STATS_d, 0, 1, 0),
+ F_B(HIS_STATS_e, 0, 1, 0),
+ F_B(HIS_STATS_f, 0, 1, 0),
F_B(HIS_STATS_g, 0, 1, 0),
F_B(HIS_STATS_h, 0, 1, 0),
- F_B(HIS_STATS_k, 0, 1, 0),
- F_B(HIS_STATS_f, 0, 1, 0),
F_B(HIS_STATS_i, 0, 1, 0),
F_B(HIS_STATS_j, 0, 1, 0),
- F_B(HIS_STATS_M, 0, 1, 0),
+ F_B(HIS_STATS_J, 0, 1, 0),
+ F_B(HIS_STATS_k, 0, 1, 0),
+ F_B(HIS_STATS_l, 0, 1, 0),
+ F_B(HIS_STATS_L, 0, 1, 0),
F_B(HIS_STATS_m, 0, 1, 0),
+ F_B(HIS_STATS_M, 0, 1, 0),
F_B(HIS_STATS_o, 0, 1, 0),
F_B(HIS_STATS_p, 0, 1, 0),
F_B(HIS_STATS_q, 0, 1, 0),
- F_B(HIS_STATS_R, 0, 1, 0),
F_B(HIS_STATS_r, 0, 1, 0),
- F_B(HIS_STATS_d, 0, 1, 0),
- F_B(HIS_STATS_e, 0, 1, 0),
+ F_B(HIS_STATS_R, 0, 1, 0),
F_B(HIS_STATS_t, 0, 1, 0),
F_B(HIS_STATS_T, 0, 1, 0),
F_B(HIS_STATS_u, 0, 0, 0),
Index: ircd-ircdev/ircd/ircd_lexer.l
diff -u ircd-ircdev/ircd/ircd_lexer.l:1.10 ircd-ircdev/ircd/ircd_lexer.l:1.11
--- ircd-ircdev/ircd/ircd_lexer.l:1.10 Wed Mar 9 10:12:34 2005
+++ ircd-ircdev/ircd/ircd_lexer.l Sat Apr 2 11:47:35 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.10 2005/03/09 18:12:34 zolty Exp $
+ * $Id: ircd_lexer.l,v 1.11 2005/04/02 19:47:35 zolty Exp $
*
*/
@@ -100,6 +100,7 @@
TOKEN(PSEUDO),
TOKEN(PREPEND),
TOKEN(USERMODE),
+ TOKEN(FAST),
#undef TOKEN
{ "administrator", ADMIN },
{ "apass_opmode", TPRIV_APASS_OPMODE },
Index: ircd-ircdev/ircd/ircd_parser.y
diff -u ircd-ircdev/ircd/ircd_parser.y:1.15 ircd-ircdev/ircd/ircd_parser.y:1.16
--- ircd-ircdev/ircd/ircd_parser.y:1.15 Mon Mar 21 10:39:07 2005
+++ ircd-ircdev/ircd/ircd_parser.y Sat Apr 2 11:47:35 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.15 2005/03/21 18:39:07 zolty Exp $
+ * $Id: ircd_parser.y,v 1.16 2005/04/02 19:47:35 zolty Exp $
*
*/
%{
@@ -158,6 +158,7 @@
%token USERMODE
%token IAUTH
%token TIMEOUT
+%token FAST
/* 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
@@ -945,7 +946,7 @@
};
pseudoitems: pseudoitem pseudoitems | pseudoitem;
-pseudoitem: pseudoname | pseudoprepend | pseudonick | error;
+pseudoitem: pseudoname | pseudoprepend | pseudonick | pseudoflags | error;
pseudoname: NAME '=' QSTRING ';'
{
DupString(smap->name, $3);
@@ -967,6 +968,10 @@
smap->services = nh;
}
};
+pseudoflags: FAST ';'
+{
+ smap->flags |= SMAP_FAST;
+};
iauthblock: IAUTH '{'
{
Index: ircd-ircdev/ircd/ircd_res.c
diff -u ircd-ircdev/ircd/ircd_res.c:1.7 ircd-ircdev/ircd/ircd_res.c:1.8
--- ircd-ircdev/ircd/ircd_res.c:1.7 Mon Mar 21 10:39:08 2005
+++ ircd-ircdev/ircd/ircd_res.c Sat Apr 2 11:47:35 2005
@@ -41,7 +41,7 @@
*/
/** @file
* @brief IRC resolver functions.
- * @version $Id: ircd_res.c,v 1.7 2005/03/21 18:39:08 zolty Exp $
+ * @version $Id: ircd_res.c,v 1.8 2005/04/02 19:47:35 zolty Exp $
*/
#include "client.h"
#include "ircd_alloc.h"
@@ -300,23 +300,30 @@
{
if (when > CurrentTime + AR_TTL)
when = CurrentTime + AR_TTL;
- if (!t_active(&res_timeout) || !t_onqueue(&res_timeout))
+ /* TODO after 2.10.12: Rewrite the timer API because there should be
+ * no need for clients to know this kind of implementation detail. */
+ if (when > t_expire(&res_timeout))
+ /* do nothing */;
+ else if (t_onqueue(&res_timeout) && !(res_timeout.t_header.gh_flags & GEN_MARKED))
+ timer_chg(&res_timeout, TT_ABSOLUTE, when);
+ else
timer_add(&res_timeout, timeout_resolver, NULL, TT_ABSOLUTE, when);
- else if (when < t_expire(&res_timeout))
- timer_chg(&res_timeout, TT_ABSOLUTE, when);
}
/** Drop pending DNS lookups which have timed out.
- * @param[in] notused Timer event data (ignored).
+ * @param[in] ev Timer event data (ignored).
*/
static void
-timeout_resolver(struct Event *notused)
+timeout_resolver(struct Event *ev)
{
struct dlink *ptr, *next_ptr;
struct reslist *request;
time_t next_time = 0;
time_t timeout = 0;
+ if (ev_type(ev) != ET_EXPIRE)
+ return;
+
for (ptr = request_list.next; ptr != &request_list; ptr = next_ptr)
{
next_ptr = ptr->next;
@@ -531,6 +538,7 @@
if (request == NULL)
{
request = make_request(query);
+ request->state= REQ_PTR;
request->type = T_PTR;
memcpy(&request->addr, addr, sizeof(request->addr));
request->name = (char *)MyMalloc(HOSTLEN + 1);
@@ -822,7 +830,7 @@
* If a bad error was returned, we stop here and don't send
* send any more (no retries granted).
*/
- Debug((DEBUG_DNS, "Request %p has bad response (state %d type %d)", request, request->state, request->type));
+ Debug((DEBUG_DNS, "Request %p has bad response (state %d type %d rcode %d)", request, request->state, request->type, header->rcode));
(*request->query.callback)(request->query.vptr, 0);
rem_request(request);
}
Index: ircd-ircdev/ircd/m_burst.c
diff -u ircd-ircdev/ircd/m_burst.c:1.8 ircd-ircdev/ircd/m_burst.c:1.9
--- ircd-ircdev/ircd/m_burst.c:1.8 Mon Mar 21 10:39:08 2005
+++ ircd-ircdev/ircd/m_burst.c Sat Apr 2 11:47:35 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: m_burst.c,v 1.8 2005/03/21 18:39:08 zolty Exp $
+ * $Id: m_burst.c,v 1.9 2005/04/02 19:47:35 zolty Exp $
*
*/
@@ -300,6 +300,26 @@
modebuf_mode(mbuf, MODE_DEL | chptr->mode.mode); /* wipeout modes */
chptr->mode.mode &= MODE_BURSTADDED | MODE_WASDELJOINS;
+ /* wipe out modes not represented in chptr->mode.mode */
+ if (chptr->mode.limit) {
+ modebuf_mode_uint(mbuf, MODE_DEL | MODE_LIMIT, chptr->mode.limit);
+ chptr->mode.limit = 0;
+ }
+ if (chptr->mode.key[0]) {
+ modebuf_mode_string(mbuf, MODE_DEL | MODE_KEY, chptr->mode.key, 0);
+ chptr->mode.key[0] = '\0';
+ }
+#if defined(UNDERNET)
+ if (chptr->mode.upass[0]) {
+ modebuf_mode_string(mbuf, MODE_DEL | MODE_UPASS, chptr->mode.upass, 0);
+ chptr->mode.upass[0] = '\0';
+ }
+ if (chptr->mode.apass[0]) {
+ modebuf_mode_string(mbuf, MODE_DEL | MODE_APASS, chptr->mode.apass, 0);
+ chptr->mode.apass[0] = '\0';
+ }
+#endif
+
parse_flags |= (MODE_PARSE_SET | MODE_PARSE_WIPEOUT); /* wipeout keys */
/* mark bans for wipeout */
@@ -489,7 +509,12 @@
if (current_mode & CHFL_VOICE)
nickstr[nickpos++] = 'v';
if (current_mode & CHFL_CHANOP)
- nickpos += ircd_snprintf(0, nickstr + nickpos, sizeof(nickstr) - nickpos, "%u", oplevel);
+ {
+ if (chptr->mode.apass[0])
+ nickpos += ircd_snprintf(0, nickstr + nickpos, sizeof(nickstr) - nickpos, "%u", oplevel);
+ else
+ nickstr[nickpos++] = 'o';
+ }
} else if (current_mode & CHFL_CHANOP && oplevel != last_oplevel) { /* if just op level changed... */
nickstr[nickpos++] = ':'; /* add a specifier */
nickpos += ircd_snprintf(0, nickstr + nickpos, sizeof(nickstr) - nickpos, "%u", oplevel - last_oplevel);
Index: ircd-ircdev/ircd/m_part.c
diff -u ircd-ircdev/ircd/m_part.c:1.6 ircd-ircdev/ircd/m_part.c:1.7
--- ircd-ircdev/ircd/m_part.c:1.6 Mon Jan 10 04:23:02 2005
+++ ircd-ircdev/ircd/m_part.c Sat Apr 2 11:47:35 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_part.c,v 1.6 2005/01/10 12:23:02 zolty Exp $
+ * $Id: m_part.c,v 1.7 2005/04/02 19:47:35 zolty Exp $
*
*/
@@ -200,14 +200,6 @@
if (IsDelayedJoin(member))
flags |= CHFL_DELAYED;
- /*
- * XXX BUG: If a client /part's with a part notice, on channels where
- * he's banned, local clients will not see the part notice, but remote
- * clients will.
- */
- if (!member_can_send_to_channel(member, 0))
- flags |= CHFL_BANNED;
-
/* part user from channel */
joinbuf_join(&parts, chptr, flags);
}
Index: ircd-ircdev/ircd/m_privs.c
diff -u ircd-ircdev/ircd/m_privs.c:1.4 ircd-ircdev/ircd/m_privs.c:1.5
--- ircd-ircdev/ircd/m_privs.c:1.4 Mon Jan 10 04:23:02 2005
+++ ircd-ircdev/ircd/m_privs.c Sat Apr 2 11:47:35 2005
@@ -18,65 +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: m_privs.c,v 1.4 2005/01/10 12:23:02 zolty Exp $
- *
*/
-
-/*
- * m_functions execute protocol messages on this server:
- *
- * cptr is always NON-NULL, pointing to a *LOCAL* client
- * structure (with an open socket connected!). This
- * identifies the physical socket where the message
- * originated (or which caused the m_function to be
- * executed--some m_functions may call others...).
- *
- * sptr is the source of the message, defined by the
- * prefix part of the message if present. If not
- * or prefix not found, then sptr==cptr.
- *
- * (!IsServer(cptr)) => (cptr == sptr), because
- * prefixes are taken *only* from servers...
- *
- * (IsServer(cptr))
- * (sptr == cptr) => the message didn't
- * have the prefix.
- *
- * (sptr != cptr && IsServer(sptr) means
- * the prefix specified servername. (?)
- *
- * (sptr != cptr && !IsServer(sptr) means
- * that message originated from a remote
- * user (not local).
- *
- * combining
- *
- * (!IsServer(sptr)) means that, sptr can safely
- * taken as defining the target structure of the
- * message in this server.
- *
- * *Always* true (if 'parse' and others are working correct):
- *
- * 1) sptr->from == cptr (note: cptr->from == cptr)
- *
- * 2) MyConnect(sptr) <=> sptr == cptr (e.g. sptr
- * *cannot* be a local connection, unless it's
- * actually cptr!). [MyConnect(x) should probably
- * be defined as (x == x->from) --msa ]
- *
- * parc number of variable parameter strings (if zero,
- * parv is allowed to be NULL)
- *
- * parv a NULL terminated list of parameter pointers,
- *
- * parv[0], sender (prefix string), if not present
- * this points to an empty string.
- * parv[1]...parv[parc-1]
- * pointers to additional parameters
- * parv[parc] == NULL, *always*
- *
- * note: it is guaranteed that parv[0]..parv[parc-1] are all
- * non-NULL pointers.
+/** @file
+ * @brief Report operators' privileges to others
+ * @version $Id: m_privs.c,v 1.5 2005/04/02 19:47:35 zolty Exp $
*/
#include "config.h"
@@ -86,14 +31,19 @@
#include "ircd_log.h"
#include "ircd_reply.h"
#include "ircd_string.h"
+#include "msg.h"
#include "numeric.h"
#include "numnicks.h"
#include "send.h"
/* #include <assert.h> -- Now using assert in ircd_log.h */
-/*
- * mo_privs - report operator privileges
+/** Handle a local operator's privilege query.
+ * @param[in] cptr Client that sent us the message.
+ * @param[in] sptr Original source of message.
+ * @param[in] parc Number of arguments.
+ * @param[in] parv Argument vector.
+ * @see \ref m_functions
*/
int mo_privs(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
{
@@ -108,10 +58,46 @@
for (i = 1; i < parc; i++) {
for (name = ircd_strtok(&p, parv[i], " "); name;
name = ircd_strtok(&p, 0, " ")) {
- if ((acptr = FindUser(name)))
+ if (!(acptr = FindUser(name)))
+ continue;
+ else if (MyUser(acptr))
client_report_privs(sptr, acptr);
+ else
+ sendcmdto_one(cptr, CMD_PRIVS, acptr, "%s%s", NumNick(acptr));
}
}
return 0;
}
+
+/** Handle a remote user's privilege query.
+ * @param[in] cptr Client that sent us the message.
+ * @param[in] sptr Original source of message.
+ * @param[in] parc Number of arguments.
+ * @param[in] parv Argument vector.
+ * @see \ref m_functions
+ */
+int ms_privs(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
+{
+ struct Client *acptr;
+ char *numnick, *p = 0;
+ int i;
+
+ if (parc < 2)
+ return protocol_violation(cptr, "PRIVS with no arguments");
+
+ for (i = 1; i < parc; i++) {
+ for (numnick = ircd_strtok(&p, parv[i], " "); numnick;
+ numnick = ircd_strtok(&p, 0, " ")) {
+ if (!(acptr = findNUser(numnick)))
+ continue;
+ else if (MyUser(acptr))
+ client_report_privs(sptr, acptr);
+ else
+ sendcmdto_one(cptr, CMD_PRIVS, acptr, "%s%s", NumNick(acptr));
+ }
+ }
+
+ return 0;
+}
+
Index: ircd-ircdev/ircd/m_server.c
diff -u ircd-ircdev/ircd/m_server.c:1.7 ircd-ircdev/ircd/m_server.c:1.8
--- ircd-ircdev/ircd/m_server.c:1.7 Mon Mar 21 10:39:08 2005
+++ ircd-ircdev/ircd/m_server.c Sat Apr 2 11:47:35 2005
@@ -21,7 +21,7 @@
*/
/** @file
* @brief Handlers for the SERVER command.
- * @version $Id: m_server.c,v 1.7 2005/03/21 18:39:08 zolty Exp $
+ * @version $Id: m_server.c,v 1.8 2005/04/02 19:47:35 zolty Exp $
*/
#include "config.h"
@@ -477,6 +477,20 @@
}
}
+/** Interpret a server's flags.
+ *
+ * @param[in] cptr New server structure.
+ * @param[in] flags String listing server's P10 flags.
+ */
+void set_server_flags(struct Client *cptr, const char *flags)
+{
+ while (*flags) switch (*flags++) {
+ case 'h': SetHub(cptr); break;
+ case 's': SetService(cptr); break;
+ case '6': SetIPv6(cptr); break;
+ }
+}
+
/** Handle a SERVER message from an unregistered connection.
*
* \a parv has the following elements:
@@ -497,7 +511,6 @@
*/
int mr_server(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
{
- char* ch;
char* host;
struct ConfItem* aconf;
struct Jupe* ajupe;
@@ -615,17 +628,8 @@
/* Attach any necessary UWorld config items. */
attach_confs_byhost(cptr, host, CONF_UWORLD);
- if (*parv[7] == '+') {
- for (ch = parv[7] + 1; *ch; ch++)
- switch (*ch) {
- case 'h':
- SetHub(cptr);
- break;
- case 's':
- SetService(cptr);
- break;
- }
- }
+ if (*parv[7] == '+')
+ set_server_flags(cptr, parv[7] + 1);
recv_time = TStime();
check_start_timestamp(cptr, timestamp, start_timestamp, recv_time);
@@ -664,7 +668,6 @@
*/
int ms_server(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
{
- char* ch;
int i;
char* host;
struct Client* acptr;
@@ -739,17 +742,8 @@
/* Attach any necessary UWorld config items. */
attach_confs_byhost(cptr, host, CONF_UWORLD);
- if (*parv[7] == '+') {
- for (ch = parv[7] + 1; *ch; ch++)
- switch (*ch) {
- case 'h':
- SetHub(acptr);
- break;
- case 's':
- SetService(acptr);
- break;
- }
- }
+ if (*parv[7] == '+')
+ set_server_flags(acptr, parv[7] + 1);
Count_newremoteserver(UserStats);
if (Protocol(acptr) < 10)
@@ -759,9 +753,13 @@
if (*parv[5] == 'J')
{
SetBurst(acptr);
- sendto_opmask_butone(0, SNO_NETWORK, "Net junction: %s %s",
- cli_name(sptr), cli_name(acptr));
SetJunction(acptr);
+ for (bcptr = cli_serv(acptr)->up; !IsMe(bcptr); bcptr = cli_serv(bcptr)->up)
+ if (IsBurstOrBurstAck(bcptr))
+ break;
+ if (IsMe(bcptr))
+ sendto_opmask_butone(0, SNO_NETWORK, "Net junction: %s %s",
+ cli_name(sptr), cli_name(acptr));
}
/*
* Old sendto_serv_but_one() call removed because we now need to send
@@ -774,10 +772,11 @@
continue;
if (0 == match(cli_name(&me), cli_name(acptr)))
continue;
- sendcmdto_one(sptr, CMD_SERVER, bcptr, "%s %d 0 %s %s %s%s +%s%s :%s",
+ sendcmdto_one(sptr, CMD_SERVER, bcptr, "%s %d 0 %s %s %s%s +%s%s%s :%s",
cli_name(acptr), hop + 1, parv[4], parv[5],
NumServCap(acptr), IsHub(acptr) ? "h" : "",
- IsService(acptr) ? "s" : "", cli_info(acptr));
+ IsService(acptr) ? "s" : "", IsIPv6(acptr) ? "6" : "",
+ cli_info(acptr));
}
return 0;
}
Index: ircd-ircdev/ircd/parse.c
diff -u ircd-ircdev/ircd/parse.c:1.14 ircd-ircdev/ircd/parse.c:1.15
--- ircd-ircdev/ircd/parse.c:1.14 Thu Mar 31 04:58:04 2005
+++ ircd-ircdev/ircd/parse.c Sat Apr 2 11:47:35 2005
@@ -21,7 +21,7 @@
*/
/** @file
* @brief Parse input from IRC clients and other servers.
- * @version $Id: parse.c,v 1.14 2005/03/31 12:58:04 zolty Exp $
+ * @version $Id: parse.c,v 1.15 2005/04/02 19:47:35 zolty Exp $
*/
#include "config.h"
@@ -609,7 +609,7 @@
TOK_PRIVS,
0, MAXPARA, MFLG_SLOW, 0, NULL,
/* UNREG, CLIENT, SERVER, OPER, SERVICE */
- { m_unregistered, m_not_oper, m_ignore, mo_privs, m_ignore }
+ { m_unregistered, m_not_oper, ms_privs, mo_privs, m_ignore }
},
#if defined(UNDERNET)
{
@@ -792,18 +792,18 @@
msg->tok = map->command;
msg->count = 0;
msg->parameters = 2;
- msg->flags = MFLG_SLOW | MFLG_EXTRA;
+ msg->flags = MFLG_EXTRA;
+ if (!(map->flags & SMAP_FAST))
+ msg->flags |= MFLG_SLOW;
msg->bytes = 0;
msg->extra = map;
msg->handlers[UNREGISTERED_HANDLER] = m_ignore;
msg->handlers[CLIENT_HANDLER] = m_pseudo;
msg->handlers[SERVER_HANDLER] = m_ignore;
- msg->handlers[OPER_HANDLER] = m_pseudo;
+ msg->handlers[OPER_HANDLER] = m_pseudo;
msg->handlers[SERVICE_HANDLER] = m_ignore;
- /* Service mappings are only applicable to clients; insert the
- pseudocommand into the command tree only. */
add_msg_element(&msg_tree, msg, msg->cmd);
map->msg = msg;
@@ -907,7 +907,7 @@
paramcount = mptr->parameters;
i = bufend - ((s) ? s : ch);
mptr->bytes += i;
- if ((mptr->flags & MFLG_SLOW))
+ if ((mptr->flags & MFLG_SLOW) || !IsAnOper(cptr))
cli_since(cptr) += (2 + i / 120);
/*
* Allow only 1 msg per 2 seconds
Index: ircd-ircdev/ircd/s_bsd.c
diff -u ircd-ircdev/ircd/s_bsd.c:1.12 ircd-ircdev/ircd/s_bsd.c:1.13
--- ircd-ircdev/ircd/s_bsd.c:1.12 Wed Mar 23 10:34:52 2005
+++ ircd-ircdev/ircd/s_bsd.c Sat Apr 2 11:47:35 2005
@@ -21,7 +21,7 @@
*/
/** @file
* @brief Functions that now (or in the past) relied on BSD APIs.
- * @version $Id: s_bsd.c,v 1.12 2005/03/23 18:34:52 zolty Exp $
+ * @version $Id: s_bsd.c,v 1.13 2005/04/02 19:47:35 zolty Exp $
*/
#include "config.h"
@@ -907,6 +907,11 @@
cli_error(cptr) = ev_data(ev);
if (s_state(&(con_socket(con))) == SS_CONNECTING) {
completed_connection(cptr);
+ /* for some reason, the os_get_sockerr() in completed_connect()
+ * can return 0 even when ev_data(ev) indicates a real error, so
+ * re-assign the client error here.
+ */
+ cli_error(cptr) = ev_data(ev);
break;
}
/*FALLTHROUGH*/
Index: ircd-ircdev/ircd/s_err.c
diff -u ircd-ircdev/ircd/s_err.c:1.14 ircd-ircdev/ircd/s_err.c:1.15
--- ircd-ircdev/ircd/s_err.c:1.14 Thu Mar 31 04:58:04 2005
+++ ircd-ircdev/ircd/s_err.c Sat Apr 2 11:47:35 2005
@@ -21,7 +21,7 @@
*/
/** @file
* @brief Error handling support.
- * @version $Id: s_err.c,v 1.14 2005/03/31 12:58:04 zolty Exp $
+ * @version $Id: s_err.c,v 1.15 2005/04/02 19:47:35 zolty Exp $
*/
#include "config.h"
@@ -483,7 +483,7 @@
/* 221 */
{ RPL_UMODEIS, "%s", "221" },
/* 222 */
- { 0 },
+ { RPL_STATSJLINE, "J %s", "222" },
/* 223 */
{ 0 },
/* 224 */
Index: ircd-ircdev/ircd/s_misc.c
diff -u ircd-ircdev/ircd/s_misc.c:1.8 ircd-ircdev/ircd/s_misc.c:1.9
--- ircd-ircdev/ircd/s_misc.c:1.8 Mon Mar 21 10:39:12 2005
+++ ircd-ircdev/ircd/s_misc.c Sat Apr 2 11:47:35 2005
@@ -21,7 +21,7 @@
*/
/** @file
* @brief Miscellaneous support functions.
- * @version $Id: s_misc.c,v 1.8 2005/03/21 18:39:12 zolty Exp $
+ * @version $Id: s_misc.c,v 1.9 2005/04/02 19:47:35 zolty Exp $
*/
#include "config.h"
@@ -164,16 +164,12 @@
{
static char nbuf[HOSTLEN * 2 + USERLEN + 5];
- if (MyConnect(sptr)) {
- if (showip)
- ircd_snprintf(0, nbuf, sizeof(nbuf), "%s[%s@%s]", cli_name(sptr),
- IsIdented(sptr) ? cli_username(sptr) : "unknown",
- cli_sock_ip(sptr));
- else
- return cli_name(sptr);
- return nbuf;
- }
- return cli_name(sptr);
+ if (!MyConnect(sptr) || !showip)
+ return cli_name(sptr);
+ ircd_snprintf(0, nbuf, sizeof(nbuf), "%s[%s@%s]", cli_name(sptr),
+ IsIdented(sptr) ? cli_username(sptr) : "",
+ cli_sock_ip(sptr));
+ return nbuf;
}
/** Set cli_sockhost(cptr) from \a host.
Index: ircd-ircdev/ircd/s_serv.c
diff -u ircd-ircdev/ircd/s_serv.c:1.9 ircd-ircdev/ircd/s_serv.c:1.10
--- ircd-ircdev/ircd/s_serv.c:1.9 Wed Mar 23 10:34:52 2005
+++ ircd-ircdev/ircd/s_serv.c Sat Apr 2 11:47:35 2005
@@ -21,7 +21,7 @@
*/
/** @file
* @brief Miscellaneous server support functions.
- * @version $Id: s_serv.c,v 1.9 2005/03/23 18:34:52 zolty Exp $
+ * @version $Id: s_serv.c,v 1.10 2005/04/02 19:47:35 zolty Exp $
*/
#include "config.h"
@@ -203,10 +203,10 @@
if (!match(cli_name(&me), cli_name(cptr)))
continue;
sendcmdto_one(&me, CMD_SERVER, acptr,
- "%s 2 0 %Tu J%02u %s%s +%s%s :%s", cli_name(cptr),
+ "%s 2 0 %Tu J%02u %s%s +%s%s%s :%s", cli_name(cptr),
cli_serv(cptr)->timestamp, Protocol(cptr), NumServCap(cptr),
IsHub(cptr) ? "h" : "", IsService(cptr) ? "s" : "",
- cli_info(cptr));
+ IsIPv6(cptr) ? "6" : "", cli_info(cptr));
}
/* Send these as early as possible so that glined users/juped servers can
@@ -246,11 +246,11 @@
if (0 == match(cli_name(&me), cli_name(acptr)))
continue;
sendcmdto_one(cli_serv(acptr)->up, CMD_SERVER, cptr,
- "%s %d 0 %Tu %s%u %s%s +%s%s :%s", cli_name(acptr),
+ "%s %d 0 %Tu %s%u %s%s +%s%s%s :%s", cli_name(acptr),
cli_hopcount(acptr) + 1, cli_serv(acptr)->timestamp,
protocol_str, Protocol(acptr), NumServCap(acptr),
IsHub(acptr) ? "h" : "", IsService(acptr) ? "s" : "",
- cli_info(acptr));
+ IsIPv6(acptr) ? "6" : "", cli_info(acptr));
}
}
Index: ircd-ircdev/ircd/s_stats.c
diff -u ircd-ircdev/ircd/s_stats.c:1.10 ircd-ircdev/ircd/s_stats.c:1.11
--- ircd-ircdev/ircd/s_stats.c:1.10 Wed Mar 23 10:34:52 2005
+++ ircd-ircdev/ircd/s_stats.c Sat Apr 2 11:47:35 2005
@@ -22,7 +22,7 @@
/** @file
* @brief Report configuration lines and other statistics from this
* server.
- * @version $Id: s_stats.c,v 1.10 2005/03/23 18:34:52 zolty Exp $
+ * @version $Id: s_stats.c,v 1.11 2005/04/02 19:47:35 zolty Exp $
*
* Note: The info is reported in the order the server uses
* it--not reversed as in ircd.conf!
@@ -34,6 +34,7 @@
#include "client.h"
#include "ddb.h"
#include "gline.h"
+#include "hash.h"
#include "ircd.h"
#include "ircd_chattr.h"
#include "ircd_crypt.h"
@@ -532,9 +533,12 @@
{ 'i', "access", (STAT_FLAG_OPERFEAT | STAT_FLAG_VARPARAM), FEAT_HIS_STATS_i,
stats_access, CONF_CLIENT,
"Connection authorization lines." },
- { 'j', "histogram", STAT_FLAG_OPERFEAT, FEAT_HIS_STATS_j,
+ { 'j', "histogram", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS), FEAT_HIS_STATS_j,
msgq_histogram, 0,
"Message length histogram." },
+ { 'J', "jupes", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS), FEAT_HIS_STATS_J,
+ stats_nickjupes, 0,
+ "Nickname jupes." },
{ 'k', "klines", (STAT_FLAG_OPERFEAT | STAT_FLAG_VARPARAM), FEAT_HIS_STATS_k,
stats_klines, 0,
"Local bans (K-Lines)." },
@@ -574,7 +578,7 @@
"Local connection statistics (Total SND/RCV, etc)." },
{ 'U', "uworld", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS), FEAT_HIS_STATS_U,
stats_configured_links, CONF_UWORLD,
- "Service server & nick jupes information." },
+ "Service server information." },
{ 'u', "uptime", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS), FEAT_HIS_STATS_u,
stats_uptime, 0,
"Current uptime & highest connection count." },
----------------------- End of diff -----------------------
|
|
From: Toni G. <zo...@us...> - 2005-03-31 13:12:33
|
CVSROOT : /cvsroot/irc-dev
Module : ircd-ircdev
Commit time: 2005-03-31 13:12:12 UTC
Modified files:
TODO.es
Log message:
Actualizacion TODO
---------------------- diff included ----------------------
Index: ircd-ircdev/TODO.es
diff -u ircd-ircdev/TODO.es:1.14 ircd-ircdev/TODO.es:1.15
--- ircd-ircdev/TODO.es:1.14 Mon Mar 28 04:35:55 2005
+++ ircd-ircdev/TODO.es Thu Mar 31 05:12:02 2005
@@ -1,7 +1,7 @@
#
# TODO para ircd-ircdev
#
-# $Id: TODO.es,v 1.14 2005/03/28 12:35:55 zolty Exp $
+# $Id: TODO.es,v 1.15 2005/03/31 13:12:02 zolty Exp $
#
# Insertar las nuevas entradas al principio de la lista TODO.
#
@@ -9,8 +9,10 @@
URGENTE
--------------------------------------------------------------------------------------
- [D] Implementar el protocolo DDB.
- - [D] Nicks registrados y protegidos.
-
+ - [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
--------------------------------------------------------------------------------------
@@ -21,10 +23,8 @@
- [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] Comando GHOST.
- [D] Virtualhost personalizado a traves de la DDB.
- [D] U-lines a traves de la DDB.
- - [D] F-lines (features) a traves de la DDB.
PRIORIDAD MEDIA
@@ -39,7 +39,6 @@
- [G] Si un global lo manda un ircop, que salga el prefijo de Mensaje global con la
mascara o avisar mediante wallops global.
- [S] Buscar una forma para cifrar IPs con un cambio de clave de cifrado incluido.
- - [S] Comando SVSNICK.
- [S] Comando SVSMODE.
- [S] Comando SVSVHOST para cambiar la virtualhost. Estudiar alguna forma de propagarse
en el burst.
@@ -66,9 +65,12 @@
BUGS CONOCIDOS
--------------------------------------------------------------------------------------
-1/Nov/2003
+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.
+ - [D] Dejan quitar modos -R y -S cuando los tienes.
Leyenda:
[G] General
----------------------- End of diff -----------------------
|
|
From: Toni G. <zo...@us...> - 2005-03-31 12:58:23
|
CVSROOT : /cvsroot/irc-dev
Module : ircd-ircdev
Commit time: 2005-03-31 12:58:15 UTC
Modified files:
ChangeLog ChangeLog.es include/client.h include/ddb.h
include/handlers.h include/ircd_features.h include/msg.h
include/numeric.h include/patchlevel.h include/s_user.h
include/send.h ircd/Makefile.in ircd/ircd_features.c
ircd/m_nick.c ircd/m_whois.c ircd/parse.c ircd/s_err.c
ircd/s_user.c ircd/send.c ircd/whocmds.c
Added files:
ircd/m_ghost.c ircd/m_svsnick.c
Log message:
Author: zoltan <zo...@ir...>
Log message:
2005-03-30 Toni García <zo...@ir...> 1.0.alpha23
* Soporte de tabla n (NICKDB)
* Modo de usuario +r
* Modo de usuario +S
* Modificaciones en comando NICK
* Comando GHOST
* Comando SVSNICK
---------------------- diff included ----------------------
Index: ircd-ircdev/ChangeLog
diff -u ircd-ircdev/ChangeLog:1.24 ircd-ircdev/ChangeLog:1.25
--- ircd-ircdev/ChangeLog:1.24 Wed Mar 23 10:34:15 2005
+++ ircd-ircdev/ChangeLog Thu Mar 31 04:58:01 2005
@@ -1,10 +1,18 @@
#
# ChangeLog for ircd-ircdev
#
-# $Id: ChangeLog,v 1.24 2005/03/23 18:34:15 zolty Exp $
+# $Id: ChangeLog,v 1.25 2005/03/31 12:58:01 zolty Exp $
#
# Insert new changes at beginning of the change list.
#
+2005-03-30 Toni García <zo...@ir...> 1.0.alpha23
+ * Table n (NICKDB) support
+ * Usermode +r
+ * Usermode +S
+ * NICK command modifies
+ * GHOST command
+ * SVSNICK command
+
2005-03-23 Toni García <zo...@ir...> 1.0.alpha22
* Distributed DataBase support in memory
* DB command
Index: ircd-ircdev/ChangeLog.es
diff -u ircd-ircdev/ChangeLog.es:1.24 ircd-ircdev/ChangeLog.es:1.25
--- ircd-ircdev/ChangeLog.es:1.24 Wed Mar 23 10:34:15 2005
+++ ircd-ircdev/ChangeLog.es Thu Mar 31 04:58:01 2005
@@ -1,10 +1,18 @@
#
# Log de Cambios para ircd-ircdev
#
-# $Id: ChangeLog.es,v 1.24 2005/03/23 18:34:15 zolty Exp $
+# $Id: ChangeLog.es,v 1.25 2005/03/31 12:58:01 zolty Exp $
#
# Insertar los nuevos cambios al principio de esta lista de cambios.
#
+2005-03-30 Toni García <zo...@ir...> 1.0.alpha23
+ * Soporte de tabla n (NICKDB)
+ * Modo de usuario +r
+ * Modo de usuario +S
+ * Modificaciones en comando NICK
+ * Comando GHOST
+ * Comando SVSNICK
+
2005-03-23 Toni García <zo...@ir...> 1.0.alpha22
* Soporte de Bases de Datos Distribuidas en memoria
* Comando DB
Index: ircd-ircdev/include/client.h
diff -u ircd-ircdev/include/client.h:1.12 ircd-ircdev/include/client.h:1.13
--- ircd-ircdev/include/client.h:1.12 Wed Mar 23 10:34:24 2005
+++ ircd-ircdev/include/client.h Thu Mar 31 04:58:02 2005
@@ -21,7 +21,7 @@
*/
/** @file
* @brief Structures and functions for handling local clients.
- * @version $Id: client.h,v 1.12 2005/03/23 18:34:24 zolty Exp $
+ * @version $Id: client.h,v 1.13 2005/03/31 12:58:02 zolty Exp $
*/
#ifndef INCLUDED_client_h
#define INCLUDED_client_h
@@ -93,7 +93,11 @@
#define FlagClr(set,flag) ((set)->bits[FLAGSET_INDEX(flag)] &= ~FLAGSET_MASK(flag))
/** String containing valid user modes, in no particular order. */
+#if defined(DDB) || defined(SERVICES)
+#define infousermodes "dioswkgxrS"
+#else
#define infousermodes "dioswkgx"
+#endif
/** Operator privileges. */
enum Priv
@@ -173,6 +177,9 @@
FLAG_DEBUG, /**< send global debug/anti-hack info */
#if defined(UNDERNET)
FLAG_ACCOUNT, /**< account name has been set */
+#elif defined(DDB) || defined(SERVICES)
+ FLAG_NICKREG, /**< nick registered */
+ FLAG_NICKSUSPEND, /**< nick suspended */
#endif
FLAG_HIDDENHOST, /**< user's host is hidden */
FLAG_LAST_FLAG, /**< number of flags */
@@ -614,12 +621,20 @@
#define IsIPv6(x) HasFlag(x, FLAG_IPV6)
/** Return non-zero if the client claims to be a services server. */
#define IsService(x) HasFlag(x, FLAG_SERVICE)
+#if defined(UNDERNET)
/** Return non-zero if the client has an account stamp. */
#define IsAccount(x) HasFlag(x, FLAG_ACCOUNT)
+#endif
/** Return non-zero if the client has set mode +x (hidden host). */
#define IsHiddenHost(x) HasFlag(x, FLAG_HIDDENHOST)
/** Return non-zero if the client has an active PING request. */
#define IsPingSent(x) HasFlag(x, FLAG_PINGSENT)
+#if defined(DDB) || defined(SERVICES)
+/** Return non-zero if the client has set mode +r (nick registered) */
+#define IsNickRegistered(x) HasFlag(x, FLAG_NICKREG)
+/** Return non-zero if the client has set mode +S (nick suspended) */
+#define IsNickSuspended(x) HasFlag(x, FLAG_NICKSUSPEND)
+#endif
/** Return non-zero if the client has operator or server privileges. */
#define IsPrivileged(x) (IsAnOper(x) || IsServer(x))
@@ -666,12 +681,20 @@
#define SetIPv6(x) SetFlag(x, FLAG_IPV6)
/** Mark a client as being a services server. */
#define SetService(x) SetFlag(x, FLAG_SERVICE)
+#if defined(UNDERNET)
/** Mark a client as having an account stamp. */
#define SetAccount(x) SetFlag(x, FLAG_ACCOUNT)
+#endif
/** Mark a client as having mode +x (hidden host). */
#define SetHiddenHost(x) SetFlag(x, FLAG_HIDDENHOST)
/** Mark a client as having a pending PING. */
#define SetPingSent(x) SetFlag(x, FLAG_PINGSENT)
+#if defined(DDB) || defined(SERVICES)
+/** Mark a client as having mode +r (nick registered) */
+#define SetNickRegistered(x) SetFlag(x, FLAG_NICKREG)
+/** Mark a client as having mode +S (nick suspended) */
+#define SetNickSuspended(x) SetFlag(x, FLAG_NICKSUSPEND)
+#endif
/** Return non-zero if \a sptr sees \a acptr as an operator. */
#define SeeOper(sptr,acptr) (IsAnOper(acptr) && (HasPriv(acptr, PRIV_DISPLAY) \
@@ -705,6 +728,12 @@
#define ClearHiddenHost(x) ClrFlag(x, FLAG_HIDDENHOST)
/** Clear the client's pending PING flag. */
#define ClearPingSent(x) ClrFlag(x, FLAG_PINGSENT)
+#if defined(DDB) || defined(SERVICES)
+/** Remove mode +r (nick registered) from the client */
+#define ClearNickRegistered(x) ClrFlag(x, FLAG_NICKREG)
+/** Remode mode +S (nick suspended) from the client */
+#define ClearNickSuspended(x) ClrFlag(x, FLAG_NICKSUSPEND)
+#endif
/* free flags */
#define FREEFLAG_SOCKET 0x0001 /**< socket needs to be freed */
Index: ircd-ircdev/include/ddb.h
diff -u ircd-ircdev/include/ddb.h:1.3 ircd-ircdev/include/ddb.h:1.4
--- ircd-ircdev/include/ddb.h:1.3 Wed Mar 23 10:34:25 2005
+++ ircd-ircdev/include/ddb.h Thu Mar 31 04:58:02 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.3 2005/03/23 18:34:25 zolty Exp $
+ * $Id: ddb.h,v 1.4 2005/03/31 12:58:02 zolty Exp $
*
*/
#ifndef INCLUDED_ddb_h
@@ -51,6 +51,12 @@
/*
+ * PseudoBots
+ */
+#define DDB_NICKSERV "NickServ"
+
+
+/*
* Structures
*/
struct Ddb {
@@ -136,7 +142,7 @@
extern struct Ddb *ddb_iterator_first(unsigned char table);
extern struct Ddb *ddb_iterator_next(void);
extern struct Ddb *ddb_find_key(unsigned char table, char *key);
-extern char *ddb_get_botname(char *bot);
+extern char *ddb_get_botname(char *botname);
extern void ddb_splithubs_butone(struct Client *cptr, char *exitmsg);
extern void ddb_reload(void);
Index: ircd-ircdev/include/handlers.h
diff -u ircd-ircdev/include/handlers.h:1.10 ircd-ircdev/include/handlers.h:1.11
--- ircd-ircdev/include/handlers.h:1.10 Mon Jan 10 04:21:59 2005
+++ ircd-ircdev/include/handlers.h Thu Mar 31 04:58:02 2005
@@ -21,7 +21,7 @@
*/
/** @file
* @brief Declarations for all protocol message handler functions.
- * @version $Id: handlers.h,v 1.10 2005/01/10 12:21:59 zolty Exp $
+ * @version $Id: handlers.h,v 1.11 2005/03/31 12:58:02 zolty Exp $
*/
#ifndef INCLUDED_handlers_h
#define INCLUDED_handlers_h
@@ -96,6 +96,7 @@
extern int m_cap(struct Client*, struct Client*, int, char*[]);
extern int m_cnotice(struct Client*, struct Client*, int, char*[]);
extern int m_cprivmsg(struct Client*, struct Client*, int, char*[]);
+extern int m_ghost(struct Client*, struct Client*, int, char*[]);
extern int m_gline(struct Client*, struct Client*, int, char*[]);
extern int m_help(struct Client*, struct Client*, int, char*[]);
extern int m_ignore(struct Client*, struct Client*, int, char*[]);
@@ -236,6 +237,7 @@
extern int ms_silence(struct Client*, struct Client*, int, char*[]);
extern int ms_squit(struct Client*, struct Client*, int, char*[]);
extern int ms_stats(struct Client*, struct Client*, int, char*[]);
+extern int ms_svsnick(struct Client*, struct Client*, int, char*[]);
extern int ms_topic(struct Client*, struct Client*, int, char*[]);
extern int ms_trace(struct Client*, struct Client*, int, char*[]);
extern int ms_uping(struct Client*, struct Client*, int, char*[]);
Index: ircd-ircdev/include/ircd_features.h
diff -u ircd-ircdev/include/ircd_features.h:1.10 ircd-ircdev/include/ircd_features.h:1.11
--- ircd-ircdev/include/ircd_features.h:1.10 Wed Mar 23 10:34:25 2005
+++ ircd-ircdev/include/ircd_features.h Thu Mar 31 04:58:02 2005
@@ -21,7 +21,7 @@
*/
/** @file
* @brief Public interfaces and declarations for dealing with configurable features.
- * @version $Id: ircd_features.h,v 1.10 2005/03/23 18:34:25 zolty Exp $
+ * @version $Id: ircd_features.h,v 1.11 2005/03/31 12:58:02 zolty Exp $
*/
#ifndef INCLUDED_features_h
#define INCLUDED_features_h
@@ -88,6 +88,9 @@
FEAT_MPATH,
FEAT_RPATH,
FEAT_PPATH,
+#if defined(DDB)
+ FEAT_DDBPATH,
+#endif
/* Networking features */
FEAT_TOS_SERVER,
Index: ircd-ircdev/include/msg.h
diff -u ircd-ircdev/include/msg.h:1.10 ircd-ircdev/include/msg.h:1.11
--- ircd-ircdev/include/msg.h:1.10 Wed Mar 23 10:34:26 2005
+++ ircd-ircdev/include/msg.h Thu Mar 31 04:58:02 2005
@@ -21,7 +21,7 @@
*/
/** @file
* @brief Command and token declarations and structures.
- * @version $Id: msg.h,v 1.10 2005/03/23 18:34:26 zolty Exp $
+ * @version $Id: msg.h,v 1.11 2005/03/31 12:58:02 zolty Exp $
*/
#ifndef INCLUDED_msg_h
#define INCLUDED_msg_h
@@ -377,6 +377,15 @@
#define TOK_DBQ "DBQ"
#define CMD_DBQ MSG_DBQ, TOK_DBQ
+#define MSG_GHOST "GHOST" /* GHOST */
+#define TOK_GHOST "GHOST"
+#define CMD_GHOST MSG_GHOST, TOK_GHOST
+
+#define MSG_SVSNICK "SVSNICK" /* SVSN */
+#define TOK_SVSNICK "SN"
+#define CMD_SVSNICK MSG_SVSNICK, TOK_SVSNICK
+
+
/*
* Constants
Index: ircd-ircdev/include/numeric.h
diff -u ircd-ircdev/include/numeric.h:1.9 ircd-ircdev/include/numeric.h:1.10
--- ircd-ircdev/include/numeric.h:1.9 Mon Jan 10 04:22:00 2005
+++ ircd-ircdev/include/numeric.h Thu Mar 31 04:58:02 2005
@@ -21,7 +21,7 @@
*/
/** @file
* @brief Declarations of numeric replies and supporting functions.
- * @version $Id: numeric.h,v 1.9 2005/01/10 12:22:00 zolty Exp $
+ * @version $Id: numeric.h,v 1.10 2005/03/31 12:58:02 zolty Exp $
*/
#ifndef INCLUDED_numeric_h
#define INCLUDED_numeric_h
@@ -213,7 +213,7 @@
#define RPL_UNAWAY 305
#define RPL_NOWAWAY 306
/* NotAway, aircd */
-/* RPL_WHOISREGNICK 307 Numeric List: Dalnet */
+#define RPL_WHOISREGNICK 307 /* IRC-Dev, Dalnet, Unreal extension */
/* RPL_SUSERHOST 307 austnet */
/* RPL_NOTIFYACTION 308 aircd */
/* RPL_WHOISADMIN 308 Numeric List: Dalnet */
@@ -296,6 +296,7 @@
/* RPL_SPAM 377 austnet */
/* RPL_BANEXPIRED 378 aircd */
/* RPL_KICKLINKED 379 aircd */
+#define RPL_WHOISMODES 379 /* IRC-Dev, Unreal extension */
/* RPL_BANLINKED 380 aircd */
#define RPL_YOUREOPER 381
@@ -307,7 +308,8 @@
/* RPL_ENDOFQLIST 387 unreal */
/* RPL_ALIST 388 unreal */
/* RPL_ENDOFALIST 389 unreal */
-
+
+#define RPL_WHOISSUSPEND 390 /* IRC-Dev extension */
#define RPL_TIME 391
/* RPL_START_USERS 392 Dalnet/EFnet/IRCnet */
/* RPL_USERS 393 Dalnet/EFnet/IRCnet */
Index: ircd-ircdev/include/patchlevel.h
diff -u ircd-ircdev/include/patchlevel.h:1.24 ircd-ircdev/include/patchlevel.h:1.25
--- ircd-ircdev/include/patchlevel.h:1.24 Wed Mar 23 10:34:26 2005
+++ ircd-ircdev/include/patchlevel.h Thu Mar 31 04:58:03 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.24 2005/03/23 18:34:26 zolty Exp $
+ * $Id: patchlevel.h,v 1.25 2005/03/31 12:58:03 zolty Exp $
*
*/
-#define PATCHLEVEL ".alpha22"
+#define PATCHLEVEL ".alpha23"
#define RELEASE "1.0"
Index: ircd-ircdev/include/s_user.h
diff -u ircd-ircdev/include/s_user.h:1.6 ircd-ircdev/include/s_user.h:1.7
--- ircd-ircdev/include/s_user.h:1.6 Mon Jan 10 04:22:00 2005
+++ ircd-ircdev/include/s_user.h Thu Mar 31 04:58:03 2005
@@ -21,7 +21,7 @@
*/
/** @file s_user.h
* @brief Miscellaneous user-related helper functions.
- * @version $Id: s_user.h,v 1.6 2005/01/10 12:22:00 zolty Exp $
+ * @version $Id: s_user.h,v 1.7 2005/03/31 12:58:03 zolty Exp $
*/
#ifndef INCLUDED_s_user_h
#define INCLUDED_s_user_h
@@ -74,6 +74,25 @@
#define COOKIE_VERIFIED 0xffffffff /**< value for cli_cookie() to show completion */
+/* used in set_nick_name */
+#define NICK_EQUIVALENT 0x01 /** < Equivalent */
+#define NICK_RENAMED 0x02 /** < Rename */
+#if defined(DDB)
+#define NICK_GHOST 0x04 /** < Ghost */
+#define NICK_IDENTIFY 0x08 /** < Identify */
+#endif /* defined(DDB) */
+
+#define SetNickEquivalent(x) ((x) |= NICK_EQUIVALENT)
+#define IsNickEquivalent(x) ((x) & NICK_EQUIVALENT)
+#define SetRenamed(x) ((x) |= NICK_RENAMED)
+#define IsRenamed(x) ((x) & NICK_RENAMED)
+#if defined(DDB)
+#define SetGhost(x) ((x) |= NICK_GHOST)
+#define IsGhost(x) ((x) & NICK_GHOST)
+#define SetIdentify(x) ((x) |= NICK_IDENTIFY)
+#define IsIdentify(x) ((x) & NICK_IDENTIFY)
+#endif /* defined(DDB) */
+
/** Formatter function for send_user_info().
* @param who Client being displayed.
* @param sptr Client requesting information.
@@ -91,8 +110,12 @@
extern void user_count_memory(size_t* count_out, size_t* bytes_out);
+#if defined(DDB)
+extern int verify_pass_nick(char *nick, char *cryptpass, char *pass);
+#endif
+extern int do_nick_name(char* nick);
extern int set_nick_name(struct Client* cptr, struct Client* sptr,
- const char* nick, int parc, char* parv[]);
+ const char* nick, int parc, char* parv[], int flags);
extern void send_umode_out(struct Client* cptr, struct Client* sptr,
struct Flags* old, int prop);
extern int whisper(struct Client* source, const char* nick,
Index: ircd-ircdev/include/send.h
diff -u ircd-ircdev/include/send.h:1.6 ircd-ircdev/include/send.h:1.7
--- ircd-ircdev/include/send.h:1.6 Mon Jan 10 04:22:00 2005
+++ ircd-ircdev/include/send.h Thu Mar 31 04:58:03 2005
@@ -21,7 +21,7 @@
*/
/** @file send.h
* @brief Send messages to certain targets.
- * @version $Id: send.h,v 1.6 2005/01/10 12:22:00 zolty Exp $
+ * @version $Id: send.h,v 1.7 2005/03/31 12:58:03 zolty Exp $
*/
#ifndef INCLUDED_send_h
#define INCLUDED_send_h
@@ -56,6 +56,11 @@
*/
extern void sendrawto_one(struct Client *to, const char *pattern, ...);
+/* Send a bot command to one client */
+extern void sendcmdbotto_one(char *botname, const char *cmd,
+ const char *tok, struct Client *to,
+ const char *pattern, ...);
+
/* Send a command to one client */
extern void sendcmdto_one(struct Client *from, const char *cmd,
const char *tok, struct Client *to,
Index: ircd-ircdev/ircd/Makefile.in
diff -u ircd-ircdev/ircd/Makefile.in:1.20 ircd-ircdev/ircd/Makefile.in:1.21
--- ircd-ircdev/ircd/Makefile.in:1.20 Wed Mar 23 10:34:27 2005
+++ ircd-ircdev/ircd/Makefile.in Thu Mar 31 04:58:03 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.20 2005/03/23 18:34:27 zolty Exp $
+# $Id: Makefile.in,v 1.21 2005/03/31 12:58:03 zolty Exp $
#### Start of system configuration section. ####
@@ -94,7 +94,12 @@
ddb.c \
ddb_db_template.c \
m_db.c \
- m_dbq.c
+ m_dbq.c \
+ m_ghost.c \
+ m_svsnick.c
+
+SERVICES_SRC = \
+ m_svsnick.c
IRCD_SRC = \
IPcheck.c \
@@ -229,15 +234,19 @@
whowas.c \
y.tab.c
-#SRC = ${IRCD_SRC} ${ENGINE_C} ${CRYPTO_SRC}
+#TODO Arreglar esto
+#Para undernet
#SRC = ${IRCD_SRC} ${UNDERNET_SRC} ${ENGINE_C} ${CRYPTO_SRC}
+#Para DDb
SRC = ${IRCD_SRC} ${DDB_SRC} ${ENGINE_C} ${CRYPTO_SRC}
+#Para Services
+#SRC = ${IRCD_SRC} ${SERVICES_SRC} ${ENGINE_C} ${CRYPTO_SRC}
OBJS = ${SRC:%.c=%.o}
UMKPASSWD_OBJS = ${UMKPASSWD_SRC:%.c=%.o}
-DEP_SRC = ${IRCD_SRC} ${UNDERNET_SRC} ${DDB} ${ENGINE_SRC} ${CRYPTO_SRC}
+DEP_SRC = ${IRCD_SRC} ${UNDERNET_SRC} ${DDB_SRC} ${SERVICES_SRC} ${ENGINE_SRC} ${CRYPTO_SRC}
all:
( cd ..; make -f Makefile )
Index: ircd-ircdev/ircd/ircd_features.c
diff -u ircd-ircdev/ircd/ircd_features.c:1.12 ircd-ircdev/ircd/ircd_features.c:1.13
--- ircd-ircdev/ircd/ircd_features.c:1.12 Wed Mar 23 10:34:48 2005
+++ ircd-ircdev/ircd/ircd_features.c Thu Mar 31 04:58:04 2005
@@ -21,7 +21,7 @@
*/
/** @file
* @brief Implementation of configurable feature support.
- * @version $Id: ircd_features.c,v 1.12 2005/03/23 18:34:48 zolty Exp $
+ * @version $Id: ircd_features.c,v 1.13 2005/03/31 12:58:04 zolty Exp $
*/
#include "config.h"
@@ -328,6 +328,9 @@
F_S(MPATH, FEAT_CASE | FEAT_MYOPER, "ircd.motd", motd_init),
F_S(RPATH, FEAT_CASE | FEAT_MYOPER, "remote.motd", motd_init),
F_S(PPATH, FEAT_CASE | FEAT_MYOPER | FEAT_READ, "ircd.pid", 0),
+#if defined(DDB)
+ F_S(DDBPATH, FEAT_CASE | FEAT_MYOPER, "database", 0),
+#endif
/* Networking features */
F_I(TOS_SERVER, 0, 0x08, 0),
Index: ircd-ircdev/ircd/m_ghost.c
diff -u /dev/null ircd-ircdev/ircd/m_ghost.c:1.1
--- /dev/null Thu Mar 31 04:58:15 2005
+++ ircd-ircdev/ircd/m_ghost.c Thu Mar 31 04:58:04 2005
@@ -0,0 +1,125 @@
+/*
+ * IRC-Dev IRCD - An advanced and innovative IRC Daemon, ircd/m_ghost.c
+ *
+ * Copyright (C) 2002-2005 IRC-Dev Development Team <de...@ir...>
+ * Copyright (C) 2004 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 Handlers for GHOST command.
+ * @version $Id: m_ghost.c,v 1.1 2005/03/31 12:58:04 zolty Exp $
+ */
+#include "config.h"
+
+#include "client.h"
+#include "ddb.h"
+#include "hash.h"
+#include "ircd.h"
+#include "ircd_log.h"
+#include "ircd_reply.h"
+#include "msg.h"
+#include "numnicks.h"
+#include "s_misc.h"
+#include "s_user.h"
+#include "send.h"
+
+/* #include <assert.h> -- Now using assert in ircd_log.h */
+#include <string.h>
+
+
+/** Handle a GHOST command from a client.
+ * See @ref m_functions for general discussion of parameters.
+ *
+ * \a parv[1] is a nick
+ * \a parv[2] is a password (optional)
+ *
+ * @param[in] cptr Client that sent us the message.
+ * @param[in] sptr Original source of message.
+ * @param[in] parc Number of arguments.
+ * @param[in] parv Argument vector.
+ */
+int m_ghost(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
+{
+ struct Client *acptr;
+ struct Ddb *ddb;
+ char *botname;
+ char *passwd;
+
+ assert(0 != cptr);
+ assert(sptr == cptr);
+
+ botname = ddb_get_botname(DDB_NICKSERV);
+
+ if (parc < 2)
+ {
+ sendcmdbotto_one(botname, CMD_NOTICE, cptr,
+ "%C :*** Sintaxis: /GHOST <nick> [password]", cptr);
+ return need_more_params(cptr, "GHOST");
+ }
+
+ if (parc < 3)
+ {
+ passwd = strchr(parv[1], ':');
+ if (passwd)
+ *passwd++ = '\0';
+ else
+ passwd = cli_passwd(cptr);
+ }
+ else
+ passwd = parv[2];
+
+ if (!(acptr = FindUser(parv[1])))
+ {
+ sendcmdbotto_one(botname, CMD_NOTICE, cptr,
+ "%C :*** The nick %s is not in use.", cptr, parv[1]);
+ return 0;
+ }
+
+ if (!(ddb = ddb_find_key(DDB_NICKDB, parv[1])))
+ {
+ sendcmdbotto_one(botname, CMD_NOTICE, cptr,
+ "%C :*** The nick %s is not registered", cptr, parv[1]);
+ return 0;
+ }
+
+ if (!(verify_pass_nick(ddb->key, ddb->content, passwd)))
+ {
+ sendcmdbotto_one(botname, CMD_NOTICE, cptr,
+ "%C :*** Password incorrect", cptr);
+ return 0;
+ }
+
+ sendto_opmask_butone(0, SNO_SERVKILL,
+ "Received KILL message for %C. From %C, Reason: GHOST kill", acptr, cptr);
+
+ sendcmdto_serv_butone(&me, CMD_KILL, acptr, "%C :GHOST session released by %C",
+ acptr, cptr);
+
+ if (MyConnect(acptr))
+ {
+ sendcmdto_one(acptr, CMD_QUIT, cptr, ":Killed (GHOST session "
+ "released by %C)", cptr);
+ sendcmdto_one(&me, CMD_KILL, acptr, "%C :GHOST session released by %C",
+ acptr, cptr);
+ }
+ sendcmdbotto_one(botname, CMD_NOTICE, cptr, "%C :*** %C GHOST session has been "
+ "released", acptr, cptr);
+ exit_client_msg(cptr, acptr, &me, "Killed (GHOST session released by %C)",
+ cptr);
+ return 0;
+
+}
Index: ircd-ircdev/ircd/m_nick.c
diff -u ircd-ircdev/ircd/m_nick.c:1.8 ircd-ircdev/ircd/m_nick.c:1.9
--- ircd-ircdev/ircd/m_nick.c:1.8 Mon Mar 21 10:39:08 2005
+++ ircd-ircdev/ircd/m_nick.c Thu Mar 31 04:58:04 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_nick.c,v 1.8 2005/03/21 18:39:08 zolty Exp $
+ * $Id: m_nick.c,v 1.9 2005/03/31 12:58:04 zolty Exp $
*
*/
@@ -82,6 +82,7 @@
#include "IPcheck.h"
#include "client.h"
+#include "ddb.h"
#include "hash.h"
#include "ircd.h"
#include "ircd_chattr.h"
@@ -116,7 +117,7 @@
* The '~'-character should be allowed, but a change should be global,
* some confusion would result if only few servers allowed it...
*/
-static int do_nick_name(char* nick)
+int do_nick_name(char* nick)
{
char* ch = nick;
char* end = ch + NICKLEN;
@@ -148,6 +149,11 @@
char* arg;
char* s;
const char* client_name;
+ int flags = 0;
+#if defined(DDB)
+ struct Ddb *ddb;
+ char *p;
+#endif
assert(0 != cptr);
assert(cptr == sptr);
@@ -157,10 +163,48 @@
*/
client_name = (*(cli_name(sptr))) ? cli_name(sptr) : "*";
+#if 0
+ /*
+ * Not change nick several times BEFORE to have completed your entrance
+ * in the network.
+ */
+ if (MyConnect(sptr) && (!IsRegistered(sptr)) && (sptr->cookie != 0) &&
+ (sptr->cookie != COOKIE_VERIFIED))
+ return 0;
+#endif
+
if (parc < 2) {
send_reply(sptr, ERR_NONICKNAMEGIVEN);
return 0;
}
+
+#if defined(DDB)
+ p = strchr(parv[1], ':');
+ if (p)
+ {
+ *p++ = '\0';
+ parc = 3;
+ parv[2] = p;
+ }
+ else if ((p = strchr(parv[1], '!')))
+ {
+ /* GHOST nick !password Support */
+ SetGhost(flags);
+ if (strlen(p) > 1)
+ {
+ *p++ = '\0';
+ parc = 3;
+ parv[2] = p;
+ }
+ }
+ else if (parc > 2 && (*parv[2] == '!'))
+ {
+ /* GHOST nick !password Support */
+ SetGhost(flags);
+ *parv[2]++ = '\0';
+ }
+#endif /* defined(DDB) */
+
/*
* Don't let them send make us send back a really long string of
* garbage
@@ -169,8 +213,11 @@
if (strlen(arg) > IRCD_MIN(NICKLEN, feature_int(FEAT_NICKLEN)))
arg[IRCD_MIN(NICKLEN, feature_int(FEAT_NICKLEN))] = '\0';
+#if 1
+ /* Soporte de nicks ~ */
if ((s = strchr(arg, '~')))
*s = '\0';
+#endif
strcpy(nick, arg);
@@ -182,6 +229,20 @@
return 0;
}
+#if defined(DDB)
+ if (strlen(nick) == 11)
+ {
+ if ((strcmp(nick, "Guest000000") >= 0) && (strcmp(nick, "Guest999999") <= 0))
+ {
+ if (FindClient(nick))
+ send_reply(sptr, ERR_NICKNAMEINUSE, nick);
+ else
+ send_reply(sptr, ERR_ERRONEUSNICKNAME, nick);
+ return 0; /* NICK message ignored */
+ }
+ }
+#endif /* defined(DDB) */
+
/*
* Check if this is a LOCAL user trying to use a reserved (Juped)
* nick, if so tell him that it's a nick in use...
@@ -195,7 +256,7 @@
/*
* No collisions, all clear...
*/
- return set_nick_name(cptr, sptr, nick, parc, parv);
+ return set_nick_name(cptr, sptr, nick, parc, parv, flags);
}
if (IsServer(acptr)) {
@@ -216,11 +277,16 @@
* is concerned (user is changing the case of his/her
* nickname or somesuch)
*/
+#if defined(DDB)
+ if (IsNickRegistered(sptr) || IsNickSuspended(sptr))
+#endif
+ SetNickEquivalent(flags);
+
if (0 != strcmp(cli_name(acptr), nick)) {
/*
* Allows change of case in his/her nick
*/
- return set_nick_name(cptr, sptr, nick, parc, parv);
+ return set_nick_name(cptr, sptr, nick, parc, parv, flags);
}
/*
* This is just ':old NICK old' type thing.
@@ -253,8 +319,69 @@
ServerStats->is_ref++;
IPcheck_connect_fail(acptr);
exit_client(cptr, acptr, &me, "Overridden by other sign on");
- return set_nick_name(cptr, sptr, nick, parc, parv);
+ return set_nick_name(cptr, sptr, nick, parc, parv, flags);
+ }
+
+#if defined(DDB)
+ /*
+ * GHOST through NICK nick!password Support
+ * Verify if nick is registered, if a local user, do not flooding
+ * and put a !
+ *
+ * If puts the correct password, kill to the user with ghost session and
+ * propagates the KILL by the network, and put the nick; in opposite case,
+ * follows and leave the nick not available message.
+ * --zoltan
+ */
+ ddb = ddb_find_key(DDB_NICKDB, parv[1]);
+ if (IsGhost(flags) && (ddb) && (CurrentTime >= cli_nextnick(cptr)))
+ {
+ if (verify_pass_nick(ddb->key, ddb->content,
+ (parc >= 3 ? parv[2] : cli_passwd(cptr))))
+ {
+ char *botname = ddb_get_botname(DDB_NICKSERV);
+ char nickwho[NICKLEN + 2];
+
+ SetIdentify(flags);
+
+ if (cli_name(cptr)[0] == '\0')
+ {
+ /* Ghost during the establishment of the connection
+ * do not have old nick information, it is added ! to the nick
+ */
+ strncpy(nickwho, nick, sizeof(nickwho));
+ nickwho[strlen(nickwho)] = '!';
+ }
+ else
+ {
+ /* Ponemos su antiguo nick */
+ strncpy(nickwho, cli_name(cptr), sizeof(nickwho));
+ }
+
+ /* Matamos al usuario con un kill */
+ sendto_opmask_butone(0, SNO_SERVKILL,
+ "Received KILL message for %C. From %s, Reason: GHOST kill", acptr, nickwho);
+
+ sendcmdto_serv_butone(&me, CMD_KILL, acptr, "%C :GHOST session released by %s",
+ acptr, nickwho);
+
+ if (MyConnect(acptr))
+ {
+ sendcmdto_one(acptr, CMD_QUIT, cptr, ":Killed (GHOST session "
+ "released by %s)", nickwho);
+ sendcmdto_one(&me, CMD_KILL, acptr, "%C :GHOST session released by %s",
+ acptr, nickwho);
+ }
+ sendcmdbotto_one(botname, CMD_NOTICE, cptr, "%C :*** %C GHOST session has been "
+ "released", acptr, cptr);
+ exit_client_msg(cptr, acptr, &me, "Killed (GHOST session released by %s)",
+ nickwho);
+
+ return set_nick_name(cptr, sptr, nick, parc, parv, flags);
+ }
}
+#endif /* defined(DDB) */
+
/*
* NICK is coming from local client connection. Just
* send error reply and ignore the command.
@@ -349,7 +476,7 @@
/* Check against nick name collisions. */
if ((acptr = FindClient(nick)) == NULL)
/* No collisions, all clear... */
- return set_nick_name(cptr, sptr, nick, parc, parv);
+ return set_nick_name(cptr, sptr, nick, parc, parv, 0);
/*
* If acptr == sptr, then we have a client doing a nick
@@ -361,7 +488,7 @@
{
if (strcmp(cli_name(acptr), nick) != 0)
/* Allows change of case in his/her nick */
- return set_nick_name(cptr, sptr, nick, parc, parv);
+ return set_nick_name(cptr, sptr, nick, parc, parv, 0);
else
/* Setting their nick to what it already is? Ignore it. */
return 0;
@@ -383,7 +510,7 @@
ServerStats->is_ref++;
IPcheck_connect_fail(acptr);
exit_client(cptr, acptr, &me, "Overridden by other sign on");
- return set_nick_name(cptr, sptr, nick, parc, parv);
+ return set_nick_name(cptr, sptr, nick, parc, parv, 0);
}
/*
* Decide, we really have a nick collision and deal with it
@@ -504,5 +631,5 @@
return 0;
if (sptr == NULL)
return 0;
- return set_nick_name(cptr, sptr, nick, parc, parv);
+ return set_nick_name(cptr, sptr, nick, parc, parv, 0);
}
Index: ircd-ircdev/ircd/m_svsnick.c
diff -u /dev/null ircd-ircdev/ircd/m_svsnick.c:1.1
--- /dev/null Thu Mar 31 04:58:15 2005
+++ ircd-ircdev/ircd/m_svsnick.c Thu Mar 31 04:58:04 2005
@@ -0,0 +1,150 @@
+/*
+ * IRC-Dev IRCD - An advanced and innovative IRC Daemon, ircd/m_svsnick.c
+ *
+ * Copyright (C) 2002-2005 IRC-Dev Development Team <de...@ir...>
+ * Copyright (C) 2004 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 Handlers for SVSNICK command.
+ * @version $Id: m_svsnick.c,v 1.1 2005/03/31 12:58:04 zolty Exp $
+ */
+#include "config.h"
+
+#include "client.h"
+#include "ddb.h"
+#include "hash.h"
+#include "ircd.h"
+#include "ircd_features.h"
+#include "ircd_log.h"
+#include "ircd_string.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 <assert.h> -- Now using assert in ircd_log.h */
+#include <stdio.h>
+#include <string.h>
+
+
+/** Handle a SVSNICK command from a server.
+ * See @ref m_functions for general discussion of parameters.
+ *
+ * \a parv[1] is a nick
+ * \a parv[2] is a new nick (* random nick)
+ *
+ * @param[in] cptr Client that sent us the message.
+ * @param[in] sptr Original source of message.
+ * @param[in] parc Number of arguments.
+ * @param[in] parv Argument vector.
+ */
+int ms_svsnick(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
+{
+ struct Client *acptr;
+ struct Client *bcptr;
+ char newnick[NICKLEN + 2];
+ char *arg;
+ int flags = 0;
+
+ assert(0 != IsServer(cptr));
+
+ if (parc < 2)
+ return 0;
+
+ if (!find_conf_byhost(cli_confs(cptr), cli_name(sptr), CONF_UWORLD))
+ {
+ sendcmdto_serv_butone(&me, CMD_DESYNCH, 0,
+ ":HACK(2): Fail SVSNICK for %s. From %C", parv[1], sptr);
+ sendto_opmask_butone(0, SNO_HACK2,
+ "Fail SVSNICK for %s. From %C", parv[1], sptr);
+ return 0;
+ }
+
+ sendcmdto_serv_butone(sptr, CMD_SVSNICK, cptr, "%s :%s", parv[1], parv[2]);
+
+ acptr = findNUser(parv[1]);
+
+ if (!acptr || !MyUser(acptr))
+ return 0;
+
+ if (ircd_strcmp(parv[2], "*"))
+ {
+ /*
+ * Don't let them send make us send back a really long string of
+ * garbage
+ */
+ arg = parv[2];
+ if (strlen(arg) > IRCD_MIN(NICKLEN, feature_int(FEAT_NICKLEN)))
+ arg[IRCD_MIN(NICKLEN, feature_int(FEAT_NICKLEN))] = '\0';
+
+ strcpy(newnick, arg);
+
+ if (0 == do_nick_name(newnick))
+ return 0;
+
+ if (FindUser(newnick))
+ return 0;
+ }
+ else
+ {
+ unsigned int v[2], k[2], x[2];
+
+ k[0] = k[1] = x[0] = x[1] = 0;
+
+ v[0] = base64toint(cli_yxx(acptr));
+ v[1] = base64toint(cli_yxx(&me));
+
+ bcptr = acptr;
+
+ do
+ {
+ ircd_tea(v, k, x);
+ v[1] += 4096;
+
+ if (x[0] >= 4294000000ul)
+ continue;
+
+ sprintf(newnick, "Guest%.6d", (int)(x[0] % 1000000));
+ bcptr = FindUser(newnick);
+ }
+ while (bcptr);
+ }
+
+ sendto_opmask_butone(0, SNO_HACK4,
+ "SVSNICK for %C, new nick %s. From %C", acptr, newnick, sptr);
+
+ SetRenamed(flags);
+#if defined(DDB)
+ if (ddb_find_key(DDB_NICKDB, newnick))
+ SetIdentify(flags);
+#endif
+
+ parv[0] = cli_name(acptr);
+ parv[1] = newnick;
+ {
+ char tmp[100];
+ sprintf(tmp, "%lu", TStime());
+ parv[2] = tmp;
+ }
+
+ return set_nick_name(acptr, acptr, newnick, parc , parv, flags);
+
+}
Index: ircd-ircdev/ircd/m_whois.c
diff -u ircd-ircdev/ircd/m_whois.c:1.12 ircd-ircdev/ircd/m_whois.c:1.13
--- ircd-ircdev/ircd/m_whois.c:1.12 Mon Mar 21 10:39:10 2005
+++ ircd-ircdev/ircd/m_whois.c Thu Mar 31 04:58:04 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_whois.c,v 1.12 2005/03/21 18:39:10 zolty Exp $
+ * $Id: m_whois.c,v 1.13 2005/03/31 12:58:04 zolty Exp $
*/
/*
@@ -210,6 +210,13 @@
if (user->away)
send_reply(sptr, RPL_AWAY, name, user->away);
+#if defined(DDB) || defined(SERVICES)
+ if (IsNickRegistered(acptr))
+ send_reply(sptr, RPL_WHOISREGNICK, name);
+ else if (IsNickSuspended(acptr))
+ send_reply(sptr, RPL_WHOISSUSPEND, name);
+#endif /* defined(DDB) || defined(SERVICES) */
+
if (SeeOper(sptr,acptr))
send_reply(sptr, RPL_WHOISOPERATOR, name);
@@ -218,9 +225,15 @@
send_reply(sptr, RPL_WHOISACCOUNT, name, user->account);
#endif
- if (HasHiddenHost(acptr) && (IsAnOper(sptr) || acptr == sptr))
- send_reply(sptr, RPL_WHOISACTUALLY, name, user->username,
- user->realhost, ircd_ntoa(&cli_ip(acptr)));
+ if (IsAnOper(sptr) || (acptr == sptr))
+ {
+ char *modes = umode_str(acptr);
+
+ if (HasHiddenHost(acptr))
+ send_reply(sptr, RPL_WHOISACTUALLY, name, user->username,
+ user->realhost, ircd_ntoa(&cli_ip(acptr)));
+ send_reply(sptr, RPL_WHOISMODES, name, *modes ? modes : "");
+ }
/* Hint: if your looking to add more flags to a user, eg +h, here's
* probably a good place to add them :)
Index: ircd-ircdev/ircd/parse.c
diff -u ircd-ircdev/ircd/parse.c:1.13 ircd-ircdev/ircd/parse.c:1.14
--- ircd-ircdev/ircd/parse.c:1.13 Wed Mar 23 10:34:51 2005
+++ ircd-ircdev/ircd/parse.c Thu Mar 31 04:58:04 2005
@@ -21,7 +21,7 @@
*/
/** @file
* @brief Parse input from IRC clients and other servers.
- * @version $Id: parse.c,v 1.13 2005/03/23 18:34:51 zolty Exp $
+ * @version $Id: parse.c,v 1.14 2005/03/31 12:58:04 zolty Exp $
*/
#include "config.h"
@@ -656,6 +656,22 @@
/* UNREG, CLIENT, SERVER, OPER, SERVICE */
{ m_unregistered, m_not_oper, ms_dbq, mo_dbq, m_ignore }
},
+ {
+ MSG_GHOST,
+ TOK_GHOST,
+ 0, MAXPARA, MFLG_SLOW, 0, NULL,
+ /* UNREG, CLIENT, SERVER, OPER, SERVICE */
+ { m_unregistered, m_ghost, m_ignore, m_ignore, m_ignore }
+ },
+#endif
+#if defined(DDB) || defined(SERVICES)
+ {
+ MSG_SVSNICK,
+ TOK_SVSNICK,
+ 0, MAXPARA, MFLG_SLOW, 0, NULL,
+ /* UNREG, CLIENT, SERVER, OPER, SERVICE */
+ { m_ignore, m_ignore, ms_svsnick, m_ignore, m_ignore }
+ },
#endif
/* This command is an alias for QUIT during the unregistered part of
Index: ircd-ircdev/ircd/s_err.c
diff -u ircd-ircdev/ircd/s_err.c:1.13 ircd-ircdev/ircd/s_err.c:1.14
--- ircd-ircdev/ircd/s_err.c:1.13 Mon Mar 21 10:39:12 2005
+++ ircd-ircdev/ircd/s_err.c Thu Mar 31 04:58:04 2005
@@ -21,7 +21,7 @@
*/
/** @file
* @brief Error handling support.
- * @version $Id: s_err.c,v 1.13 2005/03/21 18:39:12 zolty Exp $
+ * @version $Id: s_err.c,v 1.14 2005/03/31 12:58:04 zolty Exp $
*/
#include "config.h"
@@ -653,7 +653,7 @@
/* 306 */
{ RPL_NOWAWAY, ":You have been marked as being away", "306" },
/* 307 */
- { 0 },
+ { RPL_WHOISREGNICK, "%s :is a registered and protected nick", "307" },
/* 308 */
{ 0 },
/* 309 */
@@ -801,7 +801,7 @@
/* 378 */
{ 0 },
/* 379 */
- { 0 },
+ { RPL_WHOISMODES, "%s :is using modes %s", "379" },
/* 380 */
{ 0 },
/* 381 */
@@ -823,7 +823,7 @@
/* 389 */
{ 0 },
/* 390 */
- { 0 },
+ { RPL_WHOISSUSPEND, "%s :is a suspended nick", "390" },
/* 391 */
{ RPL_TIME, "%s %Tu %ld :%s", "391" },
/* 392 */
Index: ircd-ircdev/ircd/s_user.c
diff -u ircd-ircdev/ircd/s_user.c:1.12 ircd-ircdev/ircd/s_user.c:1.13
--- ircd-ircdev/ircd/s_user.c:1.12 Mon Mar 21 10:39:12 2005
+++ ircd-ircdev/ircd/s_user.c Thu Mar 31 04:58:04 2005
@@ -21,7 +21,7 @@
*/
/** @file
* @brief Miscellaneous user-related helper functions.
- * @version $Id: s_user.c,v 1.12 2005/03/21 18:39:12 zolty Exp $
+ * @version $Id: s_user.c,v 1.13 2005/03/31 12:58:04 zolty Exp $
*/
#include "config.h"
@@ -30,6 +30,7 @@
#include "channel.h"
#include "class.h"
#include "client.h"
+#include "ddb.h"
#include "hash.h"
#include "ircd.h"
#include "ircd_alloc.h"
@@ -40,6 +41,7 @@
#include "ircd_reply.h"
#include "ircd_snprintf.h"
#include "ircd_string.h"
+#include "ircd_tea.h"
#include "list.h"
#include "match.h"
#include "motd.h"
@@ -702,6 +704,9 @@
{ FLAG_DEBUG, 'g' },
#if defined(UNDERNET)
{ FLAG_ACCOUNT, 'r' },
+#elif defined(DDB) || defined(SERVICES)
+ { FLAG_NICKREG, 'r' },
+ { FLAG_NICKSUSPEND, 'S' },
#endif
{ FLAG_HIDDENHOST, 'x' }
};
@@ -715,6 +720,59 @@
/** Nasty global buffer used for communications with umode_str() and others. */
static char umodeBuf[BUFSIZE];
+#if defined(DDB)
+/** Verify the passwords
+ * @param[in] nick Nickname
+ * @param[in] cryptpass Crypt password
+ * @param[in] password Password
+ * @return 1 if a correct password, else 0.
+ */
+int verify_pass_nick(char *nick, char *cryptpass, char *pass)
+{
+ unsigned int v[2], k[2], x[2];
+ int cont = (NICKLEN + 8) / 8;
+ char tmpnick[8 * ((NICKLEN + 8) / 8) + 1];
+ char tmppass[12 + 1];
+ unsigned int *p = (unsigned int *)tmpnick; /* int == 32bits */
+ unsigned int numpass[2];
+
+ memset(tmpnick, 0, sizeof(tmpnick));
+ strncpy(tmpnick, nick, sizeof(tmpnick) - 1);
+
+ memset(tmppass, 0, sizeof(tmppass));
+ strncpy(tmppass, cryptpass, sizeof(tmppass) - 1);
+
+ numpass[1] = base64toint(tmppass + 6);
+ tmppass[6] = '\0';
+ numpass[0] = base64toint(tmppass);
+
+ memset(tmppass, 0, sizeof(tmppass));
+
+ strncpy(tmppass, pass, sizeof(tmppass) - 1);
+
+ /* relleno -> 123456789012 */
+ strncat(tmppass, "AAAAAAAAAAAA", sizeof(tmppass) - strlen(tmppass) - 1);
+
+ x[0] = x[1] = 0;
+
+ k[1] = base64toint(tmppass + 6);
+ tmppass[6] = '\0';
+ k[0] = base64toint(tmppass);
+
+ while (cont--)
+ {
+ v[0] = ntohl(*p++); /* 32 bits */
+ v[1] = ntohl(*p++); /* 32 bits */
+ ircd_tea(v, k, x);
+ }
+
+ if ((x[0] == numpass[0]) && (x[1] == numpass[1]))
+ return 1;
+
+ return 0;
+}
+#endif /* defined(DDB) */
+
/** Try to set a user's nickname.
* If \a sptr is a server, the client is being introduced for the first time.
* @param[in] cptr Client to set nickname.
@@ -722,11 +780,116 @@
* @param[in] nick New nickname.
* @param[in] parc Number of arguments to NICK.
* @param[in] parv Argument list to NICK.
+ * @param[in] flags
* @return CPTR_KILLED if \a cptr was killed, else 0.
*/
int set_nick_name(struct Client* cptr, struct Client* sptr,
- const char* nick, int parc, char* parv[])
+ const char* nick, int parc, char* parv[], int flags)
{
+#if defined(DDB)
+ struct Ddb *ddb;
+ int nick_suspend = 0;
+ char *botname = 0;
+
+ /*
+ * Comprueba si el nick esta registrado, y
+ * si lo esta que se ponga la clave correcta
+ *
+ * Esta comprobacion solo se va a hacer si
+ * el usuario es local y no esta haciendo nick flood.
+ */
+ if (MyConnect(sptr) && !IsIdentify(flags) && (ddb = ddb_find_key(DDB_NICKDB, (char *)nick))
+ && (CurrentTime >= cli_nextnick(cptr)))
+ {
+ const char *name;
+ int nick_forbid = 0;
+ char c;
+
+ botname = ddb_get_botname(DDB_NICKSERV);
+ /*
+ * Si el ultimo caracter de la clave (bdd->content) contiene:
+ * '+' El nick esta suspendido.
+ * '*' El nick esta prohibido (forbid).
+ * Cualquier otro caracter, el nick esta activo.
+ */
+ c = ddb->content[strlen(ddb->content) - 1];
+ if (c == '+')
+ nick_suspend = 1;
+ else if (c == '*')
+ nick_forbid = 1;
+
+ /*
+ * Si el usuario ha hecho ghost, no se necesita
+ * verificar la clave de nuevo ya que se ha hecho
+ * antes al hacer el ghost. En un nick prohibido
+ * tampoco.
+ */
+ if (!(IsGhost(flags) && !IsIdentify(flags) && !nick_forbid))
+ {
+ if ((IsNickRegistered(sptr) || IsNickSuspended(sptr))
+ && (0 == ircd_strcmp(parv[0], nick)))
+ {
+ SetNickEquivalent(flags);
+ SetIdentify(flags);
+ }
+ else if (verify_pass_nick(ddb->key, ddb->content,
+ (parc >= 3 ? parv[2] : cli_passwd(cptr))))
+ SetIdentify(flags);
+ }
+
+ if (*parv[0])
+ name = parv[0];
+ else
+ name = nick;
+
+ if (IsIdentify(flags))
+ {
+ /*
+ * Si no tiene nick anterior (acaba de conectarse)
+ * mandar este notice.
+ * El notice de autentificacion de cuando cambia nick
+ * esta mas abajo.
+ */
+ if (!cli_name(cptr)[0] && !IsNickEquivalent(flags))
+ {
+ sendcmdbotto_one(botname, CMD_NOTICE, cptr,
+ "%s :*** Password accepted. Welcome to %s",
+ nick, feature_str(FEAT_NETWORK));
+ if (nick_suspend)
+ sendcmdbotto_one(botname, CMD_NOTICE, cptr,
+ "%s :*** Your nick %s is suspended",
+ nick, nick);
+ }
+ }
+ else if (nick_forbid)
+ {
+ sendcmdbotto_one(botname, CMD_NOTICE, cptr,
+ "%s :*** The nick %s is forbided, cannot be used",
+ name, nick);
+ send_reply(cptr, ERR_NICKNAMEINUSE, nick);
+ return 0;
+ }
+ else
+ {
+ if (parc < 3)
+ sendcmdbotto_one(botname, CMD_NOTICE, cptr,
+ "%s :*** The nick %s is Registered, you need password",
+ name, nick);
+ else
+ sendcmdbotto_one(botname, CMD_NOTICE, cptr,
+ "%s :*** Incorrect password for nick %s",
+ name, nick);
+
+ sendcmdbotto_one(botname, CMD_NOTICE, cptr,
+ "%s :*** It uses \002/NICK %s%spassword\002 for identify",
+ name, nick, IsGhost(flags) ? "!" : ":");
+
+ send_reply(cptr, ERR_NICKNAMEINUSE, nick);
+ return 0;
+ }
+ }
+#endif /* defined(DDB) */
+
if (IsServer(sptr)) {
int i;
#if defined(UNDERNET)
@@ -811,7 +974,8 @@
* if client is on any channels where it is currently
* banned. If so, do not allow the nick change to occur.
*/
- if (MyUser(sptr)) {
+ if (MyUser(sptr) && !IsRenamed(flags))
+ {
const char* channel_name;
struct Membership *member;
if ((channel_name = find_no_nickchange_channel(sptr))) {
@@ -847,6 +1011,20 @@
member = member->next_channel)
ClearBanValid(member);
}
+
+#if defined(DDB)
+ if (IsIdentify(flags) && !IsNickEquivalent(flags))
+ {
+ sendcmdbotto_one(botname, CMD_NOTICE, cptr,
+ "%C :*** Password accepted. Welcome to %s",
+ cptr, feature_str(FEAT_NETWORK));
+
+ if (nick_suspend)
+ sendcmdbotto_one(botname, CMD_NOTICE, cptr,
+ "%C :*** Your nick %s is suspended", cptr, nick);
+ }
+#endif
+
/*
* Also set 'lastnick' to current time, if changed.
*/
@@ -859,6 +1037,23 @@
* on that channel. Propagate notice to other servers.
*/
if (IsUser(sptr)) {
+ if (!IsNickEquivalent(flags))
+ {
+#if defined(DDB)
+ struct Flags oldflags;
+#endif
+
+ /* Notify exit user */
+ check_status_watch(sptr, RPL_LOGOFF);
+
+#if defined(DDB)
+ oldflags = cli_flags(sptr);
+ ClearNickRegistered(sptr);
+ ClearNickSuspended(sptr);
+
+ send_umode_out(cptr, sptr, &oldflags, IsRegistered(sptr));
+#endif
+ }
sendcmdto_common_channels_butone(sptr, CMD_NICK, NULL, ":%s", nick);
add_history(sptr, 1);
sendcmdto_serv_butone(sptr, CMD_NICK, cptr, "%s %Tu", nick,
@@ -871,6 +1066,7 @@
hRemClient(sptr);
strcpy(cli_name(sptr), nick);
hAddClient(sptr);
+
}
else {
/* Local client setting NICK the first time */
@@ -906,8 +1102,30 @@
}
}
- /* Notify change nick local/remote user */
- check_status_watch(sptr, RPL_LOGON);
+ if (!IsNickEquivalent(flags))
+ {
+#if defined(DDB)
+ if (MyConnect(sptr))
+ {
+ struct Flags oldflags;
+
+ if (IsIdentify(flags))
+ {
+ oldflags = cli_flags(sptr);
+
+ if (nick_suspend)
+ SetNickSuspended(sptr);
+ else
+ SetNickRegistered(sptr);
+
+ send_umode_out(cptr, sptr, &oldflags, IsRegistered(sptr));
+ }
+ }
+#endif /* defined(DDB) */
+
+ /* Notify change nick local/remote user */
+ check_status_watch(sptr, RPL_LOGON);
+ }
return 0;
}
@@ -1146,9 +1364,7 @@
int
hide_hostmask(struct Client *cptr, unsigned int flag)
{
-#if defined(UNDERNET)
struct Membership *chan;
-#endif
switch (flag) {
case FLAG_HIDDENHOST:
@@ -1168,14 +1384,21 @@
return 0;
}
-#if defined(UNDERNET)
SetFlag(cptr, flag);
+#if defined(UNDERNET)
if (!HasFlag(cptr, FLAG_HIDDENHOST) || !HasFlag(cptr, FLAG_ACCOUNT))
+#else
+ if (!HasFlag(cptr, FLAG_HIDDENHOST))
+#endif
return 0;
sendcmdto_common_channels_butone(cptr, CMD_QUIT, cptr, ":Registered");
ircd_snprintf(0, cli_user(cptr)->host, HOSTLEN, "%s.%s",
+#if defined(UNDERNET)
cli_user(cptr)->account, feature_str(FEAT_HIDDEN_HOST));
+#else
+ cli_yxx(cptr), feature_str(FEAT_HIDDEN_HOST));
+#endif
/* ok, the client is now fully hidden, so let them know -- hikari */
if (MyConnect(cptr))
@@ -1201,7 +1424,6 @@
sendcmdto_channel_butserv_butone(&me, CMD_MODE, chan->channel, cptr, 0,
"%H +%c %C", chan->channel, IsChanOp(chan) ? 'o' : 'v', cptr);
}
-#endif
return 0;
}
@@ -1371,6 +1593,20 @@
if (what == MODE_ADD)
do_host_hiding = 1;
break;
+#if defined(DDB) || defined(SERVICES)
+ case 'r':
+ if (what == MODE_ADD)
+ SetNickRegistered(sptr);
+ else
+ ClearNickRegistered(sptr);
+ break;
+ case 'S':
+ if (what == MODE_ADD)
+ SetNickSuspended(sptr);
+ else
+ ClearNickSuspended(sptr);
+ break;
+#endif /* defined(DDB) || defined(SERVICES) */
/* if none of the given case is valid then compain by
* sending raw 501 ( ERR_UMODEUNKNOWNFLAG )
*/
@@ -1413,6 +1649,12 @@
if (feature_bool(FEAT_HIS_DEBUG_OPER_ONLY) &&
!IsAnOper(sptr) && !FlagHas(&setflags, FLAG_DEBUG))
ClearDebug(sptr);
+#if defined(DDB) || defined(SERVICES)
+ if (!FlagHas(&setflags, FLAG_NICKREG) && IsNickRegistered(sptr))
+ ClearNickRegistered(sptr);
+ if (!FlagHas(&setflags, FLAG_NICKSUSPEND) && IsNickSuspended(sptr))
+ ClearNickSuspended(sptr);
+#endif /* defined(DDB) || defined(SERVICES) */
}
if (MyConnect(sptr))
Index: ircd-ircdev/ircd/send.c
diff -u ircd-ircdev/ircd/send.c:1.6 ircd-ircdev/ircd/send.c:1.7
--- ircd-ircdev/ircd/send.c:1.6 Mon Jan 10 04:23:04 2005
+++ ircd-ircdev/ircd/send.c Thu Mar 31 04:58:04 2005
@@ -21,7 +21,7 @@
*/
/** @file
* @brief Send messages to certain targets.
- * @version $Id: send.c,v 1.6 2005/01/10 12:23:04 zolty Exp $
+ * @version $Id: send.c,v 1.7 2005/03/31 12:58:04 zolty Exp $
*/
#include "config.h"
@@ -308,6 +308,34 @@
msgq_clean(mb);
}
+/** Send a bot command to a single client.
+ * @param[in] botname Bot sending the command.
+ * @param[in] cmd Long name of command (used if \a to is a user).
+ * @param[in] tok Short name of command (used if \a to is a server).
+ * @param[in] to Destination of command.
+ * @param[in] pattern Format string for command arguments.
+ */
+void sendcmdbotto_one(char *botname, const char *cmd, const char *tok,
+ struct Client *to, const char *pattern, ...)
+{
+ struct VarData vd;
+ struct MsgBuf *mb;
+
+ to = cli_from(to);
+
+ vd.vd_format = pattern; /* set up the struct VarData for %v */
+ va_start(vd.vd_args, pattern);
+
+ mb = msgq_make(to, ":%s %s %v", botname, cmd, &vd);
+
+ va_end(vd.vd_args);
+
+ send_buffer(to, mb, 0);
+
+ msgq_clean(mb);
+
+}
+
/** Send a (prefixed) command to a single client.
* @param[in] from Client sending the command.
* @param[in] cmd Long name of command (used if \a to is a user).
Index: ircd-ircdev/ircd/whocmds.c
diff -u ircd-ircdev/ircd/whocmds.c:1.7 ircd-ircdev/ircd/whocmds.c:1.8
--- ircd-ircdev/ircd/whocmds.c:1.7 Mon Jan 10 04:23:04 2005
+++ ircd-ircdev/ircd/whocmds.c Thu Mar 31 04:58:04 2005
@@ -21,7 +21,7 @@
*/
/** @file
* @brief Support functions for /WHO-like commands.
- * @version $Id: whocmds.c,v 1.7 2005/01/10 12:23:04 zolty Exp $
+ * @version $Id: whocmds.c,v 1.8 2005/03/31 12:58:04 zolty Exp $
*/
#include "config.h"
@@ -198,6 +198,12 @@
if (SendDebug(acptr))
*(p1++) = 'g';
}
+#if defined(DDB) || defined(SERVICES)
+ if (IsNickRegistered(acptr))
+ *(p1++) = 'r';
+ if (IsNickSuspended(acptr))
+ *(p1++) = 'S';
+#endif
if (HasHiddenHost(acptr))
*(p1++) = 'x';
}
----------------------- End of diff -----------------------
|
|
From: Toni G. <zo...@us...> - 2005-03-28 12:36:15
|
CVSROOT : /cvsroot/irc-dev
Module : ircd-ircdev
Commit time: 2005-03-28 12:36:05 UTC
Modified files:
TODO.es
Log message:
Actualizacion TODO
---------------------- diff included ----------------------
Index: ircd-ircdev/TODO.es
diff -u ircd-ircdev/TODO.es:1.13 ircd-ircdev/TODO.es:1.14
--- ircd-ircdev/TODO.es:1.13 Wed Mar 23 10:36:06 2005
+++ ircd-ircdev/TODO.es Mon Mar 28 04:35:55 2005
@@ -1,7 +1,7 @@
#
# TODO para ircd-ircdev
#
-# $Id: TODO.es,v 1.13 2005/03/23 18:36:06 zolty Exp $
+# $Id: TODO.es,v 1.14 2005/03/28 12:35:55 zolty Exp $
#
# Insertar las nuevas entradas al principio de la lista TODO.
#
@@ -38,7 +38,6 @@
la mascara.
- [G] Si un global lo manda un ircop, que salga el prefijo de Mensaje global con la
mascara o avisar mediante wallops global.
- - [G] Modo de canal +D para conferencias. Mirar Asuka o Universal ircu de Run.
- [S] Buscar una forma para cifrar IPs con un cambio de clave de cifrado incluido.
- [S] Comando SVSNICK.
- [S] Comando SVSMODE.
@@ -58,17 +57,150 @@
- [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] STATS J para listar nicks en jupe
+ - [G] Modo de canal +u de esconder mensajes de quit y part (evitar
+ publicidad)
+ - [G] Sistema de modulos dinámicos
+ - [G] Bloque Logging en el .conf
BUGS CONOCIDOS
--------------------------------------------------------------------------------------
1/Nov/2003
- - [G] Bug en nicks Jupeados en el ircd.conf.
- [G] Bajo en ciertas circunstancias desconocidas del ircd.conf no pueden
entrar clientes al IRCD. Investigar eso.
-
Leyenda:
[G] General
[U] Undernet
[D] DDB
[S] Services
+
+RESERVA DE MODOS:
+Se muestran aqui modos para evitar incompatibilidades
+Canal:
+a hace admin de canal (Unreal)
+A solo Admins (Unreal)
+A APASS (Undernet)
+c No ansi y mirc colores (Quakenet, Unreal, Bahamut)
+C No CTCP (Quakenet, Unreal)
+D Conferencias (Undernet, Quakenet)
+e Excepciones (Unreal)
+f Modo para controlar flood (Unreal)
+G censura con badword (Unreal)
+h da halfop (Unreal)
+I exceptions de invite (Unreal)
+j join throttling (Unreal)
+K No knock (Unreal)
+L envia a otro canal si ta lleno (Unreal)
+M Solo +r pueden hablar (Unreal, Bahamut)
+N No notices (Quakenet)
+N No cambios de nick (Unreal)
+O solo IRcops pueden entrar (Unreal)
+q Founder de canal (Unreal)
+Q solo uline pueden kickear (Unreal)
+r Canal registrado (Dalnet)
+R No entrada sin +r (Quakenet, Undernet)
+S quita los colores (Unreal)
+T No notices (Unreal)
+u Esconder razon QUIT/PART (Quakenet)
+u Auditorium (Unreal)
+U UPASS (Undernet)
+V No se permite /invite (Unreal)
+z Solo pueden entrar +z SSL (Unreal)
+
+Incompatibilidades de modos de canales:
+N QuakeNet con T de Unreal
+D Undernet, QuakeNet con u de Unreal
+
+
+
+Usuarios:
+A Server Admin (Unreal, Bahamut)
+a Services Admin (Unreal, Bahamut)
+B Bot (Unreal)
+C Co-Admin (Unreal)
+d dead no recibe msg canales (Undernet, Unreal)
+g send y recv globops (Unreal, Bahamut)
+G No badwords (Unreal)
+h (sethost) (Quakenet)
+h HelpOp (Unreal, Bahamut)
+H Hide IRCOP status (Unreal)
+I solo ops, esconder idle (Quakenet)
+I Invisible oper (Bahamut)
+n esconder canales whois/who (Quakenet)
+N Network Admin (Unreal)
+p esconder canales whois (Unreal)
+q Solo pueden kickearle ulines (Unreal)
+R Solo hablan +r (Quakenet, Unreal)
+S proteccion de Services (Unreal)
+t usar /vhost (Unreal)
+T No recibir ctcps (Unreal)
+v Notices sobre rechazos de DCC por virus (Unreal)
+V WebTv User (Unreal)
+W ver quien te hace whois (Unreal)
+X solo ops, equivalente a JOIN #canal OPER (Quakenet)
+z SSL client (Unreal)
+
+Incompatibilidades de modos de usuarios:
+n QuakeNet con p de Unreal
+h QuakeNet con t de Unreal
+
+
+CURIOSIDADES:
+Quakenet
+ * Command /check
+ Allows opers to see information about a channel, user or server.
+ Syntax: Check Channel: /check <#channel> [-i|-o|-u]
+ Check Server: /check <server>
+ Check User: /check <nick|hostmask|CIDR> [-c]
+
+ Performing a /check on a server returns its status:
+ * bursting
+ ! awaiting burst acknowledgement
+ = network service
+ + network hub
+
+F:HIS_GLINE
+ * Type: boolean
+ * Default: TRUE
+
+ As per QuakeNet Security, this removes the reason for GLINE from quit
+messages.
+
+F:USER_HIDECHANS
+ * Type: boolean
+ * Default: FALSE
+
+ This allows normal users to set the +n usermode (hide channels from
+whois/who),
+ this is only recommended in special circumstances.
+
+F:AUTOINVISIBLE
+ * Type: boolean
+ * Default: TRUE
+
+ As per QuakeNet Security, this option sets user mode +i on all
+connecting clients
+ automatically.
+
+F:HIS_USERIP
+ * Type: boolean
+ * Default: TRUE
+
+ As per QuakeNet Security, add the ability to disable the /USERIP
+command for users.
+
+F:AUTOCHANMODES
+ * Type: boolean
+ * Default: TRUE
+
+ Enable or disable auto (default) channel modes for new channels.
+
+F:AUTOCHANMODES_LIST
+ * Type: string
+ * Default: "ntCN"
+
+ AUTOCHANMODES_LIST should contain the default channelmodes (e.g.
+"ntCN") which will
+ be set by default on new channels.
----------------------- End of diff -----------------------
|
|
From: Toni G. <zo...@us...> - 2005-03-23 18:37:07
|
CVSROOT : /cvsroot/irc-dev
Module : ircd-ircdev
Commit time: 2005-03-23 18:35:03 UTC
Modified files:
ChangeLog ChangeLog.es config.h.in configure configure.in
include/client.h include/ddb.h include/hash.h
include/ircd_features.h include/ircd_log.h include/msg.h
include/patchlevel.h include/struct.h ircd/Makefile.in ircd/ddb.c
ircd/hash.c ircd/ircd.c ircd/ircd_features.c ircd/ircd_log.c
ircd/m_account.c ircd/m_db.c ircd/m_dbq.c ircd/parse.c
ircd/s_bsd.c ircd/s_debug.c ircd/s_serv.c ircd/s_stats.c
Added files:
ircd/ddb_db_template.c
Log message:
Author: zoltan <zo...@ir...>
Log message:
2005-03-23 Toni García <zo...@ir...> 1.0.alpha22
* Soporte de Bases de Datos Distribuidas en memoria
* Comando DB
* Comando DBQ
* STATS B
---------------------- diff included ----------------------
Index: ircd-ircdev/ChangeLog
diff -u ircd-ircdev/ChangeLog:1.23 ircd-ircdev/ChangeLog:1.24
--- ircd-ircdev/ChangeLog:1.23 Mon Mar 21 10:38:47 2005
+++ ircd-ircdev/ChangeLog Wed Mar 23 10:34:15 2005
@@ -1,10 +1,16 @@
#
# ChangeLog for ircd-ircdev
#
-# $Id: ChangeLog,v 1.23 2005/03/21 18:38:47 zolty Exp $
+# $Id: ChangeLog,v 1.24 2005/03/23 18:34:15 zolty Exp $
#
# Insert new changes at beginning of the change list.
#
+2005-03-23 Toni García <zo...@ir...> 1.0.alpha22
+ * Distributed DataBase support in memory
+ * DB command
+ * DBQ command
+ * STATS B
+
2005-03-21 Toni García <zo...@ir...> 1.0.alpha21
* Spelling correction in commentaries
* Undernet synchronization
Index: ircd-ircdev/ChangeLog.es
diff -u ircd-ircdev/ChangeLog.es:1.23 ircd-ircdev/ChangeLog.es:1.24
--- ircd-ircdev/ChangeLog.es:1.23 Mon Mar 21 10:38:47 2005
+++ ircd-ircdev/ChangeLog.es Wed Mar 23 10:34:15 2005
@@ -1,10 +1,16 @@
#
# Log de Cambios para ircd-ircdev
#
-# $Id: ChangeLog.es,v 1.23 2005/03/21 18:38:47 zolty Exp $
+# $Id: ChangeLog.es,v 1.24 2005/03/23 18:34:15 zolty Exp $
#
# Insertar los nuevos cambios al principio de esta lista de cambios.
#
+2005-03-23 Toni García <zo...@ir...> 1.0.alpha22
+ * Soporte de Bases de Datos Distribuidas en memoria
+ * Comando DB
+ * Comando DBQ
+ * STATS B
+
2005-03-21 Toni García <zo...@ir...> 1.0.alpha21
* Corrección de ortografía en comentarios
* Sincronización Undernet
Index: ircd-ircdev/config.h.in
diff -u ircd-ircdev/config.h.in:1.6 ircd-ircdev/config.h.in:1.7
--- ircd-ircdev/config.h.in:1.6 Mon Jan 10 04:32:42 2005
+++ ircd-ircdev/config.h.in Wed Mar 23 10:34:16 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.6 2005/01/10 12:32:42 zolty Exp $
+ * $Id: config.h.in,v 1.7 2005/03/23 18:34:16 zolty Exp $
*
*/
#ifndef INCLUDED_config_h
@@ -93,6 +93,9 @@
/* Configuration file name */
#undef CPATH
+/* DDB Environment (Distributed DataBase) */
+#undef DDB
+
/* Enable debugging code */
#undef DEBUGMODE
@@ -229,6 +232,9 @@
/* 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
@@ -262,6 +268,9 @@
/* 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.13 ircd-ircdev/configure:1.14
--- ircd-ircdev/configure:1.13 Wed Mar 9 10:12:30 2005
+++ ircd-ircdev/configure Wed Mar 23 10:34:18 2005
@@ -1326,6 +1326,7 @@
+
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
@@ -10193,8 +10194,21 @@
_ACEOF
+
+
+
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define DDB
+_ACEOF
+
+
ac_config_files="$ac_config_files Makefile ircd/Makefile ircd/test/Makefile doc/Makefile"
+
ac_config_commands="$ac_config_commands default"
+
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
# tests run on this system so they can be shared between configure
@@ -10714,9 +10728,16 @@
_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+#
+# INIT-COMMANDS section.
+#
+_ACEOF
+
+
cat >>$CONFIG_STATUS <<\_ACEOF
for ac_config_target in $ac_config_targets
@@ -11502,10 +11523,17 @@
echo ""
echo " Maximum connections: $unet_cv_with_maxcon"
echo " Domain: $unet_cv_with_domain"
-#echo " IRC Environment: DDB (Distributed DataBase)"
-#echo " IRC Environment: Services (Ex TerraIRCU)"
-#echo " IRC Environment: Undernet"
-#echo " IRC Environment: None (BUG, mail to zo...@ir...)"
echo ""
+if test x"$ircdev_cv_environment_ddb" = xyes; then
+echo " IRC Environment: DDB (Distributed DataBase)"
+elif test x"$ircdev_cv_environment_services" = xyes; then
+echo " IRC Environment: Services (Ex TerraIRCU)"
+elif test x"$ircdev_cv_environment_unet" = xyes; then
+echo " IRC Environment: Undernet"
+else
+echo " IRC Environment: None (BUG, mail to zo...@ir...)"
+fi
+echo ""
+echo "Type \"make\" to compile IRC-Dev IRCD"
Index: ircd-ircdev/configure.in
diff -u ircd-ircdev/configure.in:1.13 ircd-ircdev/configure.in:1.14
--- ircd-ircdev/configure.in:1.13 Wed Mar 9 10:12:30 2005
+++ ircd-ircdev/configure.in Wed Mar 23 10:34:23 2005
@@ -22,12 +22,13 @@
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.13 2005/03/09 18:12:30 zolty Exp $
+dnl $Id: configure.in,v 1.14 2005/03/23 18:34:23 zolty Exp $
dnl
dnl Make sure we are in the correct directory (someone could have run
dnl 'configure' with a wrong '--srcdir').
-AC_INIT(ircd/ircd.c)
+AC_INIT
+AC_CONFIG_SRCDIR([ircd/ircd.c])
dnl Set the default prefix
AC_PREFIX_DEFAULT([$HOME])
@@ -46,7 +47,7 @@
AC_CONFIG_HEADER([config.h])
dnl Demand at least version 2.50 of autoconf
-AC_PREREQ(2.50)
+AC_PREREQ(2.59)
dnl Find out what type of system we are
AC_CANONICAL_HOST
@@ -756,8 +757,51 @@
AC_DEFINE_UNQUOTED(MAXCONNECTIONS, $unet_cv_with_maxcon,
[Maximum number of network connections])
+
+dnl IRC Network environment
+dnl Default DDB
+dnl 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])
+
+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])
+
+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])
+
+dnl 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
+
dnl Finally really generate all output files:
-AC_OUTPUT(Makefile ircd/Makefile ircd/test/Makefile doc/Makefile, [echo timestamp > stamp-h])
+AC_CONFIG_FILES([Makefile ircd/Makefile ircd/test/Makefile doc/Makefile])
+AC_CONFIG_COMMANDS([default],[[echo timestamp > stamp-h]],[[]])
+AC_OUTPUT
dnl Report configuration
echo "IRC-Dev ircd is now hopefully configured for your system."
@@ -799,10 +843,17 @@
echo ""
echo " Maximum connections: $unet_cv_with_maxcon"
echo " Domain: $unet_cv_with_domain"
-#echo " IRC Environment: DDB (Distributed DataBase)"
-#echo " IRC Environment: Services (Ex TerraIRCU)"
-#echo " IRC Environment: Undernet"
-#echo " IRC Environment: None (BUG, mail to zo...@ir...)"
echo ""
+if test x"$ircdev_cv_environment_ddb" = xyes; then
+echo " IRC Environment: DDB (Distributed DataBase)"
+elif test x"$ircdev_cv_environment_services" = xyes; then
+echo " IRC Environment: Services (Ex TerraIRCU)"
+elif test x"$ircdev_cv_environment_unet" = xyes; then
+echo " IRC Environment: Undernet"
+else
+echo " IRC Environment: None (BUG, mail to zo...@ir...)"
+fi
+echo ""
+echo "Type \"make\" to compile IRC-Dev IRCD"
Index: ircd-ircdev/include/client.h
diff -u ircd-ircdev/include/client.h:1.11 ircd-ircdev/include/client.h:1.12
--- ircd-ircdev/include/client.h:1.11 Wed Mar 9 10:12:33 2005
+++ ircd-ircdev/include/client.h Wed Mar 23 10:34:24 2005
@@ -21,7 +21,7 @@
*/
/** @file
* @brief Structures and functions for handling local clients.
- * @version $Id: client.h,v 1.11 2005/03/09 18:12:33 zolty Exp $
+ * @version $Id: client.h,v 1.12 2005/03/23 18:34:24 zolty Exp $
*/
#ifndef INCLUDED_client_h
#define INCLUDED_client_h
@@ -128,6 +128,9 @@
PRIV_LIST_CHAN, /**< oper can list secret channels */
PRIV_FORCE_OPMODE, /**< can hack modes on quarantined channels */
PRIV_FORCE_LOCAL_OPMODE, /**< can hack modes on quarantined local channels */
+#if defined(DDB)
+ PRIV_DBQ, /**< oper can use DBQ (DataBase Query) */
+#endif
PRIV_APASS_OPMODE, /**< can hack modes +A/-A/+U/-U */
PRIV_LAST_PRIV /**< number of privileges */
};
Index: ircd-ircdev/include/ddb.h
diff -u ircd-ircdev/include/ddb.h:1.2 ircd-ircdev/include/ddb.h:1.3
--- ircd-ircdev/include/ddb.h:1.2 Mon Jan 10 04:21:59 2005
+++ ircd-ircdev/include/ddb.h Wed Mar 23 10:34:25 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.2 2005/01/10 12:21:59 zolty Exp $
+ * $Id: ddb.h,v 1.3 2005/03/23 18:34:25 zolty Exp $
*
*/
#ifndef INCLUDED_ddb_h
@@ -27,13 +27,17 @@
#include "config.h"
#include "client.h"
+#include <sys/stat.h>
+
#if defined(DDB)
/*
* General defines
*/
-
+/* Las tablas con los registros, serie, version */
#define DDB_TABLE_MAX 256
+/*Numero de peticiones de registros antes de que haya que empezar a reciclar */
+#define DDB_BUF_CACHE 32
/*
* Distributed DataBase Tables
@@ -55,48 +59,98 @@
struct Ddb *next;
};
+#if 0
+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
+
+
struct ddb_memory_table {
- char *position;
- unsigned int len;
- char *point_r;
- char *point_w;
+ struct stat status;
+ char *position; /* Posicion */
+ char *point_r; /* Lectura */
+#if 0
+ char *point_w; /* Escritura */
+#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)
/*
* Prototypes
*/
extern struct Ddb **ddb_data_table[DDB_TABLE_MAX];
-extern int ddb_resident_table[DDB_TABLE_MAX];
-extern unsigned long int ddb_count_table[DDB_TABLE_MAX];
-extern unsigned long int ddb_id_table[DDB_TABLE_MAX];
-extern unsigned long int ddb_hashtable_hi[DDB_TABLE_MAX];
-extern unsigned long int ddb_hashtable_lo[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];
+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);
extern int ddb_table_is_resident(unsigned char table);
-extern unsigned long int ddb_id_in_table(unsigned char table);
-extern unsigned long int ddb_count_in_table(unsigned char table);
+extern unsigned int ddb_id_in_table(unsigned char table);
+extern unsigned int ddb_count_in_table(unsigned char table);
extern void ddb_init(void);
-extern int ddb_open(unsigned int registry, char *buf, unsigned char table,
- struct ddb_memory_table *dump);
+
+
+/*
extern int ddb_read(struct ddb_memory_table *dump, char *buf);
-extern void ddb_add(char *registry, unsigned char table, int save_disk);
-extern void ddb_del(char *registry, unsigned char table);
+*/
+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_close(struct ddb_memory_table *dump);
-extern void ddb_hash_write(unsigned char table);
-extern struct Ddb *ddb_find_reg(unsigned char table, char *key);
-extern int ddb_is_member(unsigned char table, char *key, char *subcadena);
-extern char *ddb_get_botname(char *bot);
+extern void ddb_drop_memory(unsigned char table, int events);
+extern void ddb_burst(struct Client *cptr);
+extern int ddb_table_burst(struct Client *cptr, unsigned char table, unsigned int id);
-extern struct Ddb *ddb_iterator_init(unsigned char table);
-extern struct Ddb *ddb_iterator_next(void);
+extern struct Ddb *ddb_iterator_first(unsigned char table);
+extern struct Ddb *ddb_iterator_next(void);
+extern struct Ddb *ddb_find_key(unsigned char table, char *key);
+extern char *ddb_get_botname(char *bot);
+extern void ddb_splithubs_butone(struct Client *cptr, char *exitmsg);
extern void ddb_reload(void);
-extern void ddb_die(char *msg, unsigned char table);
-extern void ddb_burst(struct Client *cptr);
-extern void report_ddb(struct Client *cptr);
+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 */
+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_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);
#endif /* defined(DDB) */
Index: ircd-ircdev/include/hash.h
diff -u ircd-ircdev/include/hash.h:1.5 ircd-ircdev/include/hash.h:1.6
--- ircd-ircdev/include/hash.h:1.5 Mon Jan 10 04:21:59 2005
+++ ircd-ircdev/include/hash.h Wed Mar 23 10:34:25 2005
@@ -22,7 +22,7 @@
*/
/** @file
* @brief Hash table management APIs.
- * @version $Id: hash.h,v 1.5 2005/01/10 12:21:59 zolty Exp $
+ * @version $Id: hash.h,v 1.6 2005/03/23 18:34:25 zolty Exp $
*/
#ifndef INCLUDED_hash_h
#define INCLUDED_hash_h
@@ -38,7 +38,7 @@
/** Size of client and channel hash tables.
* Both must be of the same size.
*/
-#define HASHSIZE 32000
+#define HASHSIZE 32768
/*
* Structures
Index: ircd-ircdev/include/ircd_features.h
diff -u ircd-ircdev/include/ircd_features.h:1.9 ircd-ircdev/include/ircd_features.h:1.10
--- ircd-ircdev/include/ircd_features.h:1.9 Mon Jan 10 04:21:59 2005
+++ ircd-ircdev/include/ircd_features.h Wed Mar 23 10:34:25 2005
@@ -21,7 +21,7 @@
*/
/** @file
* @brief Public interfaces and declarations for dealing with configurable features.
- * @version $Id: ircd_features.h,v 1.9 2005/01/10 12:21:59 zolty Exp $
+ * @version $Id: ircd_features.h,v 1.10 2005/03/23 18:34:25 zolty Exp $
*/
#ifndef INCLUDED_features_h
#define INCLUDED_features_h
@@ -112,6 +112,9 @@
FEAT_HIS_STATS_l,
FEAT_HIS_STATS_L,
FEAT_HIS_STATS_a,
+#if defined(DDB)
+ FEAT_HIS_STATS_b,
+#endif
FEAT_HIS_STATS_c,
FEAT_HIS_STATS_g,
FEAT_HIS_STATS_h,
Index: ircd-ircdev/include/ircd_log.h
diff -u ircd-ircdev/include/ircd_log.h:1.5 ircd-ircdev/include/ircd_log.h:1.6
--- ircd-ircdev/include/ircd_log.h:1.5 Mon Jan 10 04:22:00 2005
+++ ircd-ircdev/include/ircd_log.h Wed Mar 23 10:34:25 2005
@@ -21,7 +21,7 @@
*/
/** @file
* @brief IRC logging interface.
- * @version $Id: ircd_log.h,v 1.5 2005/01/10 12:22:00 zolty Exp $
+ * @version $Id: ircd_log.h,v 1.6 2005/03/23 18:34:25 zolty Exp $
*/
#ifndef INCLUDED_ircd_log_h
#define INCLUDED_ircd_log_h
@@ -61,6 +61,9 @@
LS_JUPE, /**< Adding, (de-)activating or removing JUPEs. */
LS_WHO, /**< Use of extended WHO privileges. */
LS_NETWORK, /**< New server connections. */
+#ifdef DDB
+ LS_DDB, /**< Distributed DataBase errors and warnings */
+#endif
LS_OPERKILL, /**< Kills by IRC operators. */
LS_SERVKILL, /**< Kills by servers. */
LS_USER, /**< User exits. */
Index: ircd-ircdev/include/msg.h
diff -u ircd-ircdev/include/msg.h:1.9 ircd-ircdev/include/msg.h:1.10
--- ircd-ircdev/include/msg.h:1.9 Mon Jan 10 04:22:00 2005
+++ ircd-ircdev/include/msg.h Wed Mar 23 10:34:26 2005
@@ -21,7 +21,7 @@
*/
/** @file
* @brief Command and token declarations and structures.
- * @version $Id: msg.h,v 1.9 2005/01/10 12:22:00 zolty Exp $
+ * @version $Id: msg.h,v 1.10 2005/03/23 18:34:26 zolty Exp $
*/
#ifndef INCLUDED_msg_h
#define INCLUDED_msg_h
@@ -371,9 +371,11 @@
#define MSG_DB "DB" /* DB */
#define TOK_DB "DB"
+#define CMD_DB MSG_DB, TOK_DB
#define MSG_DBQ "DBQ" /* DBQ */
#define TOK_DBQ "DBQ"
+#define CMD_DBQ MSG_DBQ, TOK_DBQ
/*
Index: ircd-ircdev/include/patchlevel.h
diff -u ircd-ircdev/include/patchlevel.h:1.23 ircd-ircdev/include/patchlevel.h:1.24
--- ircd-ircdev/include/patchlevel.h:1.23 Mon Mar 21 10:39:04 2005
+++ ircd-ircdev/include/patchlevel.h Wed Mar 23 10:34: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.23 2005/03/21 18:39:04 zolty Exp $
+ * $Id: patchlevel.h,v 1.24 2005/03/23 18:34:26 zolty Exp $
*
*/
-#define PATCHLEVEL ".alpha21"
+#define PATCHLEVEL ".alpha22"
#define RELEASE "1.0"
Index: ircd-ircdev/include/struct.h
diff -u ircd-ircdev/include/struct.h:1.7 ircd-ircdev/include/struct.h:1.8
--- ircd-ircdev/include/struct.h:1.7 Mon Jan 10 04:22:00 2005
+++ ircd-ircdev/include/struct.h Wed Mar 23 10:34:27 2005
@@ -22,7 +22,7 @@
*/
/** @file
* @brief Structure definitions for users and servers.
- * @version $Id: struct.h,v 1.7 2005/01/10 12:22:00 zolty Exp $
+ * @version $Id: struct.h,v 1.8 2005/03/23 18:34:27 zolty Exp $
*/
#ifndef INCLUDED_struct_h
#define INCLUDED_struct_h
@@ -61,6 +61,10 @@
int asll_to; /**< AsLL upstream lag */
int asll_from; /**< AsLL downstream lag */
+#if defined(DDB)
+ unsigned long ddb_open; /**< DDB database open */
+#endif
+
char *last_error_msg; /**< Allocated memory with last message receive with an ERROR */
char by[NICKLEN + 1]; /**< Numnick of client who requested the link */
};
Index: ircd-ircdev/ircd/Makefile.in
diff -u ircd-ircdev/ircd/Makefile.in:1.19 ircd-ircdev/ircd/Makefile.in:1.20
--- ircd-ircdev/ircd/Makefile.in:1.19 Mon Mar 21 10:39:05 2005
+++ ircd-ircdev/ircd/Makefile.in Wed Mar 23 10:34:27 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.19 2005/03/21 18:39:05 zolty Exp $
+# $Id: Makefile.in,v 1.20 2005/03/23 18:34:27 zolty Exp $
#### Start of system configuration section. ####
@@ -57,6 +57,7 @@
MPATH = ${DPATH}/ircd.motd
RPATH = ${DPATH}/remote.motd
+
CC = @CC@
CFLAGS = @CFLAGS@
CPPFLAGS = -I. -I.. -I${top_srcdir}/include @CPPFLAGS@
@@ -86,6 +87,15 @@
memdebug.c \
umkpasswd.c
+UNDERNET_SRC = \
+ m_account.c \
+
+DDB_SRC = \
+ ddb.c \
+ ddb_db_template.c \
+ m_db.c \
+ m_dbq.c
+
IRCD_SRC = \
IPcheck.c \
channel.c \
@@ -93,7 +103,6 @@
client.c \
crule.c \
dbuf.c \
- ddb.c \
destruct_event.c \
fileio.c \
gline.c \
@@ -117,7 +126,6 @@
lex.yy.c \
list.c \
listener.c \
- m_account.c \
m_admin.c \
m_asll.c \
m_away.c \
@@ -128,8 +136,6 @@
m_connect.c \
m_cprivmsg.c \
m_create.c \
- m_db.c \
- m_dbq.c \
m_defaults.c \
m_destruct.c \
m_desynch.c \
@@ -223,13 +229,15 @@
whowas.c \
y.tab.c
-SRC = ${IRCD_SRC} ${ENGINE_C} ${CRYPTO_SRC}
+#SRC = ${IRCD_SRC} ${ENGINE_C} ${CRYPTO_SRC}
+#SRC = ${IRCD_SRC} ${UNDERNET_SRC} ${ENGINE_C} ${CRYPTO_SRC}
+SRC = ${IRCD_SRC} ${DDB_SRC} ${ENGINE_C} ${CRYPTO_SRC}
OBJS = ${SRC:%.c=%.o}
UMKPASSWD_OBJS = ${UMKPASSWD_SRC:%.c=%.o}
-DEP_SRC = ${IRCD_SRC} ${ENGINE_SRC} ${CRYPTO_SRC}
+DEP_SRC = ${IRCD_SRC} ${UNDERNET_SRC} ${DDB} ${ENGINE_SRC} ${CRYPTO_SRC}
all:
( cd ..; make -f Makefile )
Index: ircd-ircdev/ircd/ddb.c
diff -u ircd-ircdev/ircd/ddb.c:1.3 ircd-ircdev/ircd/ddb.c:1.4
--- ircd-ircdev/ircd/ddb.c:1.3 Mon Jan 10 04:22:58 2005
+++ ircd-ircdev/ircd/ddb.c Wed Mar 23 10:34:46 2005
@@ -18,7 +18,634 @@
* 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.c,v 1.3 2005/01/10 12:22:58 zolty Exp $
- *
+ */
+/** @file
+ * @brief Implementation of Distributed DataBase.
+ * @version $Id: ddb.c,v 1.4 2005/03/23 18:34:46 zolty Exp $
*/
#include "config.h"
+
+#include "ddb.h"
+#include "ircd.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 <assert.h> -- Now using assert in ircd_log.h */
+#include <stdarg.h>
+#include <stdio.h>
+/*#include <stdlib.h> */
+#include <string.h>
+#include <time.h>
+
+static struct Ddb ddb_buf_cache[DDB_BUF_CACHE];
+static int ddb_buf_cache_i = 0;
+
+struct Ddb **ddb_data_table[DDB_TABLE_MAX];
+short ddb_corrupt_table[DDB_TABLE_MAX];
+unsigned int ddb_resident_table[DDB_TABLE_MAX];
+unsigned int ddb_count_table[DDB_TABLE_MAX];
+unsigned int ddb_id_table[DDB_TABLE_MAX];
+unsigned int ddb_hashtable_hi[DDB_TABLE_MAX];
+unsigned int ddb_hashtable_lo[DDB_TABLE_MAX];
+struct ddb_memory_table ddb_memorytable[DDB_TABLE_MAX];
+
+static struct Ddb *ddb_iterator_key = NULL;
+static struct Ddb **ddb_iterator_content = NULL;
+static int ddb_iterator_hash_pos = 0;
+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);
+
+
+int ddb_table_is_resident(unsigned char table)
+{
+ return ddb_resident_table[table] ? 1 : 0;
+}
+
+/*
+unsigned int ddb_id_in_table(unsigned char table)
+{
+ return ddb_id_in_table[table];
+}
+
+unsigned int ddb_count_in_table(unsigned char table)
+{
+ return ddb_count_in_table[table];
+}
+*/
+
+static void DdbCopyMalloc(char *buf, int len, char **p)
+{
+ char *p2;
+
+ p2 = *p;
+ if ((p2) && (strlen(p2) < len))
+ {
+ MyFree(p2);
+ p2 = NULL;
+ }
+ if (!p2)
+ {
+ p2 = MyMalloc(len + 1); /* El '\0' final */
+ *p = p2;
+ }
+ memcpy(p2, buf, len);
+ p2[len] = '\0';
+}
+
+static void ddb_hash_calculate(unsigned char table, unsigned int id, char *mask, char *key, char *content)
+{
+ unsigned int buffer[129 * sizeof(unsigned int)];
+ unsigned int *p = buffer;
+ unsigned int x[2], v[2], k[2];
+ char *p2;
+ char buf[1024];
+
+ /* ID Mask Key Content */
+ if (content)
+ sprintf(buf, "%u %s %s %s", id, mask, key, content);
+ else
+ sprintf(buf, "%u %s %s", id, mask, key);
+ memset(buffer, 0, sizeof(buffer));
+ strncpy((char *)buffer, buf, sizeof(buffer) - 1);
+
+
+ /* Parece que no es necesario, comprobarlo */
+ while ((p2 = strchr((char *)buffer, '\n')))
+ *p2 = '\0';
+ while ((p2 = strchr((char *)buffer, '\r')))
+ *p2 = '\0';
+
+ k[0] = k[1] = 0;
+ x[0] = ddb_hashtable_hi[table];
+ x[1] = ddb_hashtable_lo[table] = x[1];
+
+ while (*p)
+ {
+ v[0] = ntohl(*p++);
+ v[1] = ntohl(*p++);
+ ircd_tea(v, k, x);
+ }
+ ddb_hashtable_hi[table] = x[0];
+ ddb_hashtable_lo[table] = x[1];
+}
+
+
+/** initialize Distributed DataBase
+ */
+void
+ddb_init(void)
+{
+ unsigned char table;
+
+ /* ddb_events_init(); */
+
+ 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.
+ */
+ ddb_resident_table[DDB_NICKDB] = 32768;
+
+ for (table = DDB_INIT; table <= DDB_END; table++)
+ ddb_table_init(table);
+
+ /*
+ * La operacion anterior puede ser una operacion larga.
+ * Resincronizamos tiempo.
+ */
+ CurrentTime = time(NULL);
+}
+
+static void ddb_table_init(unsigned char table)
+{
+
+ ddb_drop_memory(table, 0);
+ /* Leer Datos */
+
+ /* Leer Hash */
+
+}
+
+void
+ddb_new_register(struct Client *cptr, unsigned char table, char *mask, unsigned int id, char *key, char *content)
+{
+ static char *keytemp = NULL;
+ static int key_len = 0;
+
+ assert(0 != table);
+ assert(0 != key);
+
+ ddb_hash_calculate(table, id, mask, key, content);
+
+ /* Al iniciar, cptr no existe y por lo tanto no se escribe */
+ if (cptr)
+ {
+ ddb_db_write(table, mask, id, key, content);
+ ddb_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 (!ddb_resident_table[table])
+ return;
+
+ /* Usamos collapse+match por un bug en lastNNServer del find_match_server */
+ collapse(mask);
+ if (!match(mask, cli_name(&me)))
+ {
+ int i = 0;
+
+ /* pasamos el key en minusculas */
+ if ((strlen(key) + 1 > key_len) || (!keytemp))
+ {
+ key_len = strlen(key) + 1;
+ if (keytemp)
+ MyFree(keytemp);
+ keytemp = MyMalloc(key_len);
+
+ assert(0 != keytemp);
+ }
+ strcpy(keytemp, key);
+ while (keytemp[i])
+ {
+/* keytemp[i] = toLower(keytemp[i]); */
+ i++;
+ }
+
+ if (content)
+ 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
+ }
+
+}
+
+static void
+ddb_add_key(unsigned char table, char *key, char *content)
+{
+ struct Ddb *ddb;
+ char *k, *c;
+ int hashi;
+
+ ddb_iterator_key = NULL;
+
+ ddb_del_key(table, key);
+
+ ddb = DdbMalloc(sizeof(struct Ddb) + strlen(key) + strlen(content) + 2);
+ assert(0 != ddb);
+
+ k = (char *)ddb + sizeof(struct Ddb);
+ c = k + strlen(key) + 1;
+
+ strcpy(k, key);
+ strcpy(c, content);
+
+ /* paso a minusculas */
+/*
+ while (c[i] != 0)
+ {
+ k[i] = toLower(c[i]);
+ i++;
+ }
+*/
+
+ 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]);
+
+ Debug((DEBUG_INFO, "Inserto T='%c' K='%s' C='%s' H=%u",table, ddb->key, ddb->content, hashi));
+
+ ddb->next = ddb_data_table[table][hashi];
+ ddb_data_table[table][hashi] = ddb;
+ ddb_count_table[table]++;
+
+ /* EVENTOS DE ALTA */
+}
+
+static void
+ddb_del_key(unsigned char table, char *key)
+{
+ struct Ddb *ddb, *ddb2, **ddb3;
+ int hashi;
+
+ ddb_iterator_key = NULL;
+
+ hashi = ddb_hash_register(key, ddb_resident_table[table]);
+ ddb3 = &ddb_data_table[table][hashi];
+
+ for (ddb = *ddb3; ddb; ddb = ddb2)
+ {
+ ddb2 = ddb->next;
+ if (!strcmp(ddb->key, key))
+ {
+ *ddb3 = ddb2;
+ /* EVENTOS de BAJA */
+ DdbFree(ddb);
+ ddb_count_table[table]--;
+ break;
+ }
+ ddb3 = &(ddb->next);
+ }
+}
+
+
+void
+ddb_drop(unsigned char table)
+{
+
+ /* Borramos el fichero de la tabla */
+ /* TODO-ZOLTAN: Comento, para only-read */
+/* ddb_db_drop(table); */
+
+ /* Borramos la tabla en la memoria */
+ ddb_drop_memory(table, 0);
+
+/* TODO-ZOLTAN: Comento, para only-read */
+/* ddb_hash_write(table); */
+ ddb_corrupt_table[table] = 0;
+/*
+ tabla_modificado[tabla] = time(NULL);
+*/
+}
+
+void ddb_drop_memory(unsigned char table, int events)
+{
+ struct Ddb *ddb, *ddb2;
+ int i;
+
+ if (!ddb_resident_table[table])
+ return;
+
+ if (ddb_data_table[table])
+ {
+ for (i = 0; i < ddb_resident_table[table]; i++)
+ {
+ 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
+ DdbFree(ddb);
+ }
+ }
+ }
+ else
+ {
+ ddb_data_table[table] = DdbMalloc(ddb_resident_table[table] * sizeof(struct Ddb *));
+ assert(ddb_data_table[table]);
+ }
+
+ for (i = 0; i < ddb_resident_table[table]; i++)
+ {
+ ddb_data_table[table][i] = NULL;
+ }
+
+ ddb_count_table[table] = 0;
+ ddb_id_table[table] = 0;
+ ddb_hashtable_hi[table] = 0;
+ ddb_hashtable_lo[table] = 0;
+/*
+ tabla_corrupta[tabla] = 0;
+ tabla_modificado[tabla] = time(NULL);
+*/
+}
+
+
+void
+ddb_burst(struct Client *cptr)
+{
+ int i;
+
+ for (i = DDB_INIT; i <= DDB_END; i++)
+ sendcmdto_one(&me, CMD_DB, cptr, "* 0 J %u %c",
+ ddb_id_table[i], i);
+}
+
+int
+ddb_table_burst(struct Client *cptr, unsigned char table, unsigned int id)
+{
+ return 1;
+
+#if 0
+ int cont = 1000;
+ /* Leer Datos */
+
+ do
+ {
+
+ if (content)
+ sendcmdto_one(&me, CMD_DB, cptr, "%s %u %s %s :%s", mask, id, table, key, content);
+ else
+ sendcmdto_one(&me, CMD_DB, cptr, "%s %u %s %s", mask, id, table, key);
+
+ if (!(--cont))
+ break;
+ } while (leer)
+
+ if (cont)
+ {
+ cli_serv(cptr)->ddb_open |= ((unsigned int)1) << (table - DDB_INIT);
+ return 1;
+ }
+ else
+ sendcmdto_one(&me, CMD_DB, cptr, "%s 0 B %u %c", mask, ddb_id_table[table], table);
+
+ return 0;
+#endif
+}
+
+
+static struct Ddb *
+ddb_iterator_init(void)
+{
+ struct Ddb *ddb;
+
+ if (ddb_iterator_key)
+ {
+ ddb_iterator_key = ddb_iterator_key->next;
+ 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++];
+ if (ddb) {
+ ddb_iterator_key = ddb;
+ return ddb;
+ }
+ }
+
+ ddb_iterator_key = NULL;
+ ddb_iterator_content = NULL;
+ ddb_iterator_hash_pos = 0;
+ ddb_iterator_hash_len = 0;
+
+ return NULL;
+}
+
+struct Ddb *
+ddb_iterator_first(unsigned char table)
+{
+ assert((table >= DDB_INIT) && (table <= DDB_END));
+
+ ddb_iterator_hash_len = ddb_resident_table[table];
+ assert(ddb_iterator_hash_len);
+
+ ddb_iterator_hash_pos = 0;
+ ddb_iterator_content = ddb_data_table[table];
+ ddb_iterator_key = NULL;
+
+ return ddb_iterator_init();
+}
+
+struct Ddb *
+ddb_iterator_next(void)
+{
+ assert(ddb_iterator_key);
+ assert(ddb_iterator_content);
+ assert(ddb_iterator_hash_len);
+
+ return ddb_iterator_init();
+}
+
+
+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;
+
+ if ((strlen(key) + 1 > k_len) || (!k))
+ {
+ k_len = strlen(key) + 1;
+ if (k)
+ MyFree(k);
+ k = MyMalloc(k_len);
+ if (!k)
+ return 0;
+ }
+ strcpy(k, key);
+ /* paso a minusculas */
+ i = 0;
+ while (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)
+ {
+/* if (!strcmp(ddb->key, k)) */
+ if (!ircd_strcmp(ddb->key, k))
+ return ddb;
+ }
+ return NULL;
+}
+
+struct Ddb *ddb_find_key(unsigned char table, char *key)
+{
+ struct Ddb *ddb;
+ char *key_init;
+ char *key_end;
+ char *content_init;
+ char *content_end;
+
+ if (!ddb_resident_table[table])
+ return NULL;
+
+ ddb = ddb_find_registry_table(table, key);
+ if (!ddb)
+ return NULL;
+
+ /* Lo que sigue lo sustituye */
+ key_init = ddb->key;
+ key_end = key_init + strlen(key_init);
+ content_init = ddb->content;
+ content_end = content_init + strlen(content_init);
+
+ DdbCopyMalloc(key_init, key_end - key_init,
+ &ddb_buf_cache[ddb_buf_cache_i].key);
+ DdbCopyMalloc(content_init, content_end - content_init,
+ &ddb_buf_cache[ddb_buf_cache_i].content);
+ if (++ddb_buf_cache_i >= DDB_BUF_CACHE)
+ ddb_buf_cache_i = 0;
+
+ return ddb;
+}
+
+char *
+ddb_get_botname(char *bot)
+{
+ return cli_name(&me);
+}
+
+
+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();
+}
+
+
+/** Split all Hubs but one.
+ * @param[in] cptr Client that is not closed.
+ * @param[in] exitmsg SQUIT message.
+ */
+void
+ddb_splithubs_butone(struct Client *cptr, char *exitmsg)
+{
+ struct DLink *lp, *lp2;
+ struct Client *acptr;
+
+ for (lp = cli_serv(&me)->down; lp; lp = lp2)
+ {
+ lp2 = lp->next;
+
+ acptr = lp->value.cptr;
+ if ((acptr != cptr) && (IsHub(acptr)))
+ exit_client(acptr, acptr, &me, exitmsg);
+ }
+}
+
+/** Die the server with an DDB error.
+ * @param[in] pattern Format string of message.
+ */
+void
+ddb_die(const char *pattern, ...)
+{
+ struct Client *acptr;
+ char exitmsg[1024], exitmsg2[1024];
+ va_list vl;
+ int i;
+
+ va_start(vl, pattern);
+ vsprintf(exitmsg2, pattern, vl);
+ va_end(vl);
+
+ sprintf(exitmsg, "DDB Error: %s", exitmsg2);
+
+ for (i = 0; i <= HighestFd; i++)
+ {
+ if (!(acptr = LocalClientArray[i]))
+ continue;
+ if (IsUser(acptr))
+ sendcmdto_one(&me, CMD_NOTICE, acptr, "%C :Server Terminating. %s",
+ acptr, exitmsg);
+ else if (IsServer(acptr))
+ sendcmdto_one(&me, CMD_ERROR, acptr, ":Terminated by %s", exitmsg);
+ }
+ server_die(exitmsg);
+}
+
+
+/** Report all F-lines to a user.
+ * @param[in] to Client requesting statistics.
+ * @param[in] sd Stats descriptor for request (ignored).
+ * @param[in] param Extra parameter from user (ignored).
+ */
+void
+ddb_report_stats(struct Client* to, const struct StatDesc* sd, char* param)
+{
+ unsigned char table;
+
+ for (table = DDB_INIT; table <= DDB_END; table++)
+ {
+ if (ddb_table_is_resident(table))
+ send_reply(to, SND_EXPLICIT | RPL_STATSDEBUG,
+ "b :Table '%c' S=%lu R=%lu", table,
+ (unsigned long)ddb_id_table[table],
+ (unsigned long)ddb_count_table[table]);
+ else
+ {
+ if (ddb_id_table[table])
+ send_reply(to, SND_EXPLICIT | RPL_STATSDEBUG,
+ "b :Table '%c' S=%lu NoResident", table,
+ (unsigned long)ddb_id_table[table]);
+ }
+ }
+}
Index: ircd-ircdev/ircd/ddb_db_template.c
diff -u /dev/null ircd-ircdev/ircd/ddb_db_template.c:1.1
--- /dev/null Wed Mar 23 10:36:27 2005
+++ ircd-ircdev/ircd/ddb_db_template.c Wed Mar 23 10:34:47 2005
@@ -0,0 +1,79 @@
+/*
+ * IRC-Dev IRCD - An advanced and innovative IRC Daemon, ircd/ddb_db_example.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 Implementation of Distributed DataBase.
+ * @version $Id: ddb_db_template.c,v 1.1 2005/03/23 18:34:47 zolty Exp $
+ */
+#include "config.h"
+
+#include "ddb.h"
+#include "numnicks.h"
+
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/mman.h>
+#include <sys/stat.h>
+#include <unistd.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)
+{
+}
+
+void ddb_hash_write(unsigned char table)
+{
+}
+
Index: ircd-ircdev/ircd/hash.c
diff -u ircd-ircdev/ircd/hash.c:1.7 ircd-ircdev/ircd/hash.c:1.8
--- ircd-ircdev/ircd/hash.c:1.7 Mon Mar 21 10:39:07 2005
+++ ircd-ircdev/ircd/hash.c Wed Mar 23 10:34:47 2005
@@ -22,7 +22,7 @@
*/
/** @file
* @brief Hash table management.
- * @version $Id: hash.c,v 1.7 2005/03/21 18:39:07 zolty Exp $
+ * @version $Id: hash.c,v 1.8 2005/03/23 18:34:47 zolty Exp $
*
* This file used to use some very complicated hash function. Now it
* uses CRC-32, but effectively remaps each input byte according to a
@@ -33,6 +33,7 @@
#include "hash.h"
#include "client.h"
#include "channel.h"
+#include "ddb.h"
#include "ircd_alloc.h"
#include "ircd_chattr.h"
#include "ircd_log.h"
@@ -520,3 +521,14 @@
send_reply(cptr, RPL_LISTEND);
}
}
+
+#if defined(DDB)
+
+/** Calculates a hash of one key.
+ */
+int ddb_hash_register(char *key, int hash_size)
+{
+ return (unsigned int)(strhash(key) & (hash_size - 1));
+}
+
+#endif /* DDB */
Index: ircd-ircdev/ircd/ircd.c
diff -u ircd-ircdev/ircd/ircd.c:1.13 ircd-ircdev/ircd/ircd.c:1.14
--- ircd-ircdev/ircd/ircd.c:1.13 Mon Mar 21 10:39:07 2005
+++ ircd-ircdev/ircd/ircd.c Wed Mar 23 10:34:47 2005
@@ -21,7 +21,7 @@
*/
/** @file
* @brief Entry point and other initialization functions for the daemon.
- * @version $Id: ircd.c,v 1.13 2005/03/21 18:39:07 zolty Exp $
+ * @version $Id: ircd.c,v 1.14 2005/03/23 18:34:47 zolty Exp $
*/
#include "config.h"
@@ -30,6 +30,7 @@
#include "class.h"
#include "client.h"
#include "crule.h"
+#include "ddb.h"
#include "destruct_event.h"
#include "hash.h"
#include "ircd_alloc.h"
@@ -723,6 +724,10 @@
Debug((DEBUG_NOTICE, "Server ready..."));
log_write(LS_SYSTEM, L_NOTICE, 0, "Server Ready");
+#if defined(DDB)
+ ddb_init();
+#endif
+
event_loop();
return 0;
Index: ircd-ircdev/ircd/ircd_features.c
diff -u ircd-ircdev/ircd/ircd_features.c:1.11 ircd-ircdev/ircd/ircd_features.c:1.12
--- ircd-ircdev/ircd/ircd_features.c:1.11 Mon Mar 21 10:39:07 2005
+++ ircd-ircdev/ircd/ircd_features.c Wed Mar 23 10:34:48 2005
@@ -21,7 +21,7 @@
*/
/** @file
* @brief Implementation of configurable feature support.
- * @version $Id: ircd_features.c,v 1.11 2005/03/21 18:39:07 zolty Exp $
+ * @version $Id: ircd_features.c,v 1.12 2005/03/23 18:34:48 zolty Exp $
*/
#include "config.h"
@@ -352,6 +352,9 @@
F_B(HIS_STATS_l, 0, 1, 0),
F_B(HIS_STATS_L, 0, 1, 0),
F_B(HIS_STATS_a, 0, 1, 0),
+#if defined(DDB)
+ F_B(HIS_STATS_b, 0, 1, 0),
+#endif
F_B(HIS_STATS_c, 0, 1, 0),
F_B(HIS_STATS_g, 0, 1, 0),
F_B(HIS_STATS_h, 0, 1, 0),
Index: ircd-ircdev/ircd/ircd_log.c
diff -u ircd-ircdev/ircd/ircd_log.c:1.8 ircd-ircdev/ircd/ircd_log.c:1.9
--- ircd-ircdev/ircd/ircd_log.c:1.8 Mon Mar 21 10:39:07 2005
+++ ircd-ircdev/ircd/ircd_log.c Wed Mar 23 10:34:48 2005
@@ -22,7 +22,7 @@
*/
/** @file
* @brief IRC logging implementation.
- * @version $Id: ircd_log.c,v 1.8 2005/03/21 18:39:07 zolty Exp $
+ * @version $Id: ircd_log.c,v 1.9 2005/03/23 18:34:48 zolty Exp $
*/
#include "config.h"
@@ -156,6 +156,9 @@
S(JUPE, -1, SNO_NETWORK),
S(WHO, -1, 0),
S(NETWORK, -1, SNO_NETWORK),
+#ifdef DDB
+ S(DDB, -1, 0),
+#endif
S(OPERKILL, -1, 0),
S(SERVKILL, -1, 0),
S(USER, -1, 0),
Index: ircd-ircdev/ircd/m_account.c
diff -u ircd-ircdev/ircd/m_account.c:1.8 ircd-ircdev/ircd/m_account.c:1.9
--- ircd-ircdev/ircd/m_account.c:1.8 Mon Mar 21 10:39:08 2005
+++ ircd-ircdev/ircd/m_account.c Wed Mar 23 10:34:49 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_account.c,v 1.8 2005/03/21 18:39:08 zolty Exp $
+ * $Id: m_account.c,v 1.9 2005/03/23 18:34:49 zolty Exp $
*
*/
@@ -105,7 +105,6 @@
int ms_account(struct Client* cptr, struct Client* sptr, int parc,
char* parv[])
{
-#if defined(UNDERNET)
struct Client *acptr;
if (parc < 3)
@@ -146,10 +145,4 @@
cli_user(acptr)->acc_create);
return 0;
-
-#else /* !defined(UNDERNET) */
-
- return protocol_violation(cptr, "ACCOUNT command is disabled (NO Undernet Environment)");
-
-#endif /* defined(UNDERNET) */
}
Index: ircd-ircdev/ircd/m_db.c
diff -u ircd-ircdev/ircd/m_db.c:1.2 ircd-ircdev/ircd/m_db.c:1.3
--- ircd-ircdev/ircd/m_db.c:1.2 Mon Jan 10 04:23:01 2005
+++ ircd-ircdev/ircd/m_db.c Wed Mar 23 10:34:50 2005
@@ -2,7 +2,8 @@
* IRC-Dev IRCD - An advanced and innovative IRC Daemon, ircd/m_db.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...>
*
* 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
@@ -18,111 +19,366 @@
* 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_db.c,v 1.2 2005/01/10 12:23:01 zolty Exp $
*/
-
-/*
- * m_functions execute protocol messages on this server:
- *
- * cptr is always NON-NULL, pointing to a *LOCAL* client
- * structure (with an open socket connected!). This
- * identifies the physical socket where the message
- * originated (or which caused the m_function to be
- * executed--some m_functions may call others...).
- *
- * sptr is the source of the message, defined by the
- * prefix part of the message if present. If not
- * or prefix not found, then sptr==cptr.
- *
- * (!IsServer(cptr)) => (cptr == sptr), because
- * prefixes are taken *only* from servers...
- *
- * (IsServer(cptr))
- * (sptr == cptr) => the message didn't
- * have the prefix.
- *
- * (sptr != cptr && IsServer(sptr) means
- * the prefix specified servername. (?)
- *
- * (sptr != cptr && !IsServer(sptr) means
- * that message originated from a remote
- * user (not local).
- *
- * combining
- *
- * (!IsServer(sptr)) means that, sptr can safely
- * taken as defining the target structure of the
- * message in this server.
- *
- * *Always* true (if 'parse' and others are working correct):
- *
- * 1) sptr->from == cptr (note: cptr->from == cptr)
- *
- * 2) MyConnect(sptr) <=> sptr == cptr (e.g. sptr
- * *cannot* be a local connection, unless it's
- * actually cptr!). [MyConnect(x) should probably
- * be defined as (x == x->from) --msa ]
- *
- * parc number of variable parameter strings (if zero,
- * parv is allowed to be NULL)
- *
- * parv a NULL terminated list of parameter pointers,
- *
- * parv[0], sender (prefix string), if not present
- * this points to an empty string.
- * parv[1]...parv[parc-1]
- * pointers to additional parameters
- * parv[parc] == NULL, *always*
- *
- * note: it is guaranteed that parv[0]..parv[parc-1] are all
- * non-NULL pointers.
+/** @file
+ * @brief Handlers for DB command.
+ * @version $Id: m_db.c,v 1.3 2005/03/23 18:34:50 zolty Exp $
*/
+/* TODO-ZOLTAN
+ * Traducidr los comentarios al ingles */
#include "config.h"
-#if defined(DDB)
#include "ddb.h"
#include "client.h"
-/*#include "ircd_log.h" */
-#include "ircd_reply.h"
-#include "msg.h"
-
-/*
#include "ircd.h"
-#include "ircd_string.h"
+#include "ircd_log.h"
+#include "ircd_reply.h"
#include "list.h"
#include "match.h"
#include "msg.h"
#include "numnicks.h"
-#include "s_bdd.h"
-#include "s_conf.h"
#include "send.h"
+#include "s_debug.h"
-#include <fcntl.h>
+/* #include <assert.h> -- Now using assert in ircd_log.h */
+#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <sys/stat.h>
-#include <unistd.h>
-*/
-/*
- * ms_db - server message handler
+/** Handle a DB command from a server.
*
- * parv[0] = sender
- * parv[1] = ignored
- * parv[2] = server to query
+ * \a parv has the following elements:
+ * \a parv[1] is the destin server o servermask
+ * \li If a command parv has the following elements
+ * \li \a parv[2] is not used
+ * \li \a parv[3] is the command (B, D, E, H, J, Q, R)
+ * \li \a parv[4] is the id or token
+ * \li \a parv[5] is the table of DDB
+ * \li If not a command, it is a new register
+ * \li \a parv[2] is the id
+ * \li \a parv[3] is the table of DDB
+ * \li \a parv[4] is a key of register
+ * \li \a parv[5] is a content of register (optional)
+ *
+ * See @ref m_functions for general discussion of parameters.
+ * @param[in] cptr Client that sent us the message.
+ * @param[in] sptr Original source of message.
+ * @param[in] parc Number of arguments.
+ * @param[in] parv Argument vector.
*/
int ms_db(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
{
- if (parc > 5)
+ struct Client *acptr;
+ struct DLink *lp;
+ char ddb_buf[1024];
+ unsigned char table = 0;
+ unsigned int id, ddb_mask = 0;
+
+ assert(0 != cptr);
+ assert(0 != sptr);
+ assert(IsServer(cptr));
+
+ if ((parc < 5) || (*(parv[3] + 1) != '\0'))
+ {
+ protocol_violation(sptr, "Too few parameters for DB");
+ return 0;
+ }
+
+ id = atoi(parv[2]);
+ if (!id)
{
- protocol_violation(sptr,"DDB, too many parameters");
- return 0;
+ /* No es un registro */
+ 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 */
+ if ((table == '*') && ((*parv[3] == 'Q') || (*parv[3] == 'R')))
+ table = '*';
+#if 1
+ /* COMPATIBILIDAD IRC-HISPANO */
+ else if (table == '2')
+ table = DDB_NICKDB;
+#endif
+ else
+ return protocol_violation(sptr, "Incorrect table parameter for DB");
+ }
+ }
}
+ if ((table >= DDB_INIT) && (table <= DDB_END))
+ ddb_mask = ((unsigned int)1) << (table - DDB_INIT);
+
+ switch (*parv[3])
+ {
+ /* Peticion de Burst (quedan registros) */
+ case 'B':
+ if (IsHub(cptr))
+ sendcmdto_one(&me, CMD_DB, cptr, "%s 0 J %u %c", parv[0], ddb_id_table[table], table);
+ break;
+
+ /* Drop */
+ case 'D':
+ {
+ if (!IsHub(cptr))
+ break;
+
+ /* Enviamos el mensaje al resto de servidores */
+ 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) */
+ /* cli_serv(lp->value.cptr)->ddb_open &= ~ddb_mask); */
+ }
+ }
+
+ /* Usamos collapse+match por un bug en lastNNServer del find_match_server() */
+ collapse(parv[1]);
+ /* Si no es para nosotros, lo ignoramos */
+ if (match(parv[1], cli_name(&me)))
+ break;
+
+ /* Borramos la tabla en memoria y en disco */
+ 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);
+ sprintf(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 */
+ 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 */
+ case 'E':
+ /* Si no es para nosotros, lo pasamos a otros */
+ 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 */
+ case 'H':
+ {
+ char *hash;
+ unsigned int hash_lo, hash_hi;
+
+ if (IsHub(&me))
+ return protocol_violation(cptr, "Don't HASH check to HUBs, table %c from %#C", table, cptr);
+
+ hash = parv[4];
+ if (strlen(hash) != 12)
+ return protocol_violation(cptr, "HASH check, erroneus parameters");
+
+ hash[6] = '\0';
+ hash_lo = base64toint(hash);
+ hash[6] = parv[4][6];
+ hash_hi = base64toint(hash + 6);
+
+ 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);
+ log_write(LS_DDB, L_INFO, 0, "DB HASH Check failed, droping table %c", table);
+
+ /* Borramos la tabla en memoria y en disco*/
+ 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);
+ }
+ break;
+ }
+
+ /* Join */
+ case 'J':
+ {
+ if (id >= ddb_id_table[table])
+ {
+ /* Registros individuales */
+ 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
+ */
+ (cli_serv(cptr)->ddb_open) &= ~ddb_mask;
+
+ /* Borramos su DDB para curarnos en salud */
+ 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.
+ */
+ if (ddb_table_burst(cptr, table, id))
+ {
+ if (IsHub(cptr))
+ break;
+
+ inttobase64(ddb_buf, ddb_hashtable_hi[table], 6);
+ inttobase64(ddb_buf + 6, ddb_hashtable_lo[table], 6);
+
+ sendcmdto_one(&me, CMD_DB, cptr, "%s 0 H %s %c", cli_name(cptr), ddb_buf, table);
+ }
+ break;
+ }
+
+ /* Query de hash para comprobaciones desde un service */
+ case 'Q':
+ {
+ if (!IsHub(cptr))
+ break;
+
+ /* Usamos collapse+match por un bug en lastNNServer del find_match_server() */
+ collapse(parv[1]);
+ /* Solo si es para nosotros si lo ignoramos */
+ if (!match(parv[1], cli_name(&me)))
+ {
+ if (table == '*')
+ {
+ /* HASH de todas las tablas */
+ unsigned int hashes_hi = 0;
+ unsigned int hashes_lo = 0;
+ unsigned int id_tables = 1;
+ unsigned int count_tables = 1;
+ int i;
+
+ for (i = DDB_INIT; i <= DDB_END; i++)
+ {
+ hashes_hi ^= ddb_hashtable_hi[i];
+ hashes_lo ^= ddb_hashtable_lo[i];
+
+ id_tables = (id_tables * (ddb_id_table[i] + 1)) & 0xfffffffful;
+ count_tables = (count_tables * (ddb_count_table[i] + 1)) & 0xfffffffful;
+ }
+ inttobase64(ddb_buf, hashes_hi, 6);
+ inttobase64(ddb_buf + 6, hashes_lo, 6);
+
+ sendcmdto_one(&me, CMD_DB, cptr, "%s 0 R %u-%u-%s-%s %c",
+ cli_name(cptr), id_tables, count_tables,
+ ddb_buf, parv[4], table);
+ }
+ else
+ {
+ /* Una tabla */
+ inttobase64(ddb_buf, ddb_hashtable_hi[table], 6);
+ inttobase64(ddb_buf + 6, ddb_hashtable_lo[table], 6);
+
+ sendcmdto_one(&me, CMD_DB, cptr, "%s 0 R %u-%u-%s-%s %c",
+ cli_name(cptr), ddb_id_table[table], ddb_count_table[table],
+ ddb_buf, parv[4], table);
+ }
+ }
+
+ /* Enviamos la petición a los demas */
+ 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 Q %s %c",
+ parv[1], parv[4], table);
+ }
+ break;
+ }
+
+ /* Respuesta de hash */
+ case 'R':
+ /* Si no es para nosotros, lo pasamos a otros */
+ 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 */
+ default:
+ {
+ int delete;
+
+ /* Solo se aceptan registros procedentes de un HUB */
+/* Hablitarlo
+ 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 */
+ if (id <= ddb_id_table[table])
+ return 0;
+
+ if (parc == 5)
+ /* Borrado del registro */
+ delete = 1;
+ else if (parc > 5)
+ /* Insertado del registro */
+ 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 */
+ for (lp = cli_serv(&me)->down; lp; lp = lp->next)
+ {
+ if ((lp->value.cptr != cptr) &&
+ (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",
+ parv[1], id, table, parv[4], parv[5]);
+ else
+ sendcmdto_one(&me, CMD_DB, lp->value.cptr, "%s %u %c %s %s",
+ parv[1], id, table, parv[4]);
+ }
+ }
+
+ if (strcmp(parv[4], "*"))
+ ddb_new_register(cptr, table, parv[1], id, parv[4], (!delete ? parv[5] : NULL));
+/*
+ else
+ ddb_compact(table, parv[1], id, parv[5]);
+*/
+
+ break;
+ }
+ }
return 0;
}
-
-#endif /* defined(DDB) */
Index: ircd-ircdev/ircd/m_dbq.c
diff -u ircd-ircdev/ircd/m_dbq.c:1.2 ircd-ircdev/ircd/m_dbq.c:1.3
--- ircd-ircdev/ircd/m_dbq.c:1.2 Mon Jan 10 04:23:02 2005
+++ ircd-ircdev/ircd/m_dbq.c Wed Mar 23 10:34:51 2005
@@ -18,125 +18,207 @@
* 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_dbq.c,v 1.2 2005/01/10 12:23:02 zolty Exp $
*/
-
-/*
- * m_functions execute protocol messages on this server:
- *
- * cptr is always NON-NULL, pointing to a *LOCAL* client
- * structure (with an open socket connected!). This
- * identifies the physical socket where the message
- * originated (or which caused the m_function to be
- * executed--some m_functions may call others...).
- *
- * sptr is the source of the message, defined by the
- * prefix part of the message if present. If not
- * or prefix not found, then sptr==cptr.
- *
- * (!IsServer(cptr)) => (cptr == sptr), because
- * prefixes are taken *only* from servers...
- *
- * (IsServer(cptr))
- * (sptr == cptr) => the message didn't
- * have the prefix.
- *
- * (sptr != cptr && IsServer(sptr) means
- * the prefix specified servername. (?)
- *
- * (sptr != cptr && !IsServer(sptr) means
- * that message originated from a remote
- * user (not local).
- *
- * combining
- *
- * (!IsServer(sptr)) means that, sptr can safely
- * taken as defining the target structure of the
- * message in this server.
- *
- * *Always* true (if 'parse' and others are working correct):
- *
- * 1) sptr->from == cptr (note: cptr->from == cptr)
- *
- * 2) MyConnect(sptr) <=> sptr == cptr (e.g. sptr
- * *cannot* be a local connection, unless it's
- * actually cptr!). [MyConnect(x) should probably
- * be defined as (x == x->from) --msa ]
- *
- * parc number of variable parameter strings (if zero,
- * parv is allowed to be NULL)
- *
- * parv a NULL terminated list of parameter pointers,
- *
- * parv[0], sender (prefix string), if not present
- * this points to an empty string.
- * parv[1]...parv[parc-1]
- * pointers to additional parameters
- * parv[parc] == NULL, *always*
-...
[truncated message content] |
|
From: Toni G. <zo...@us...> - 2005-03-23 18:36:31
|
CVSROOT : /cvsroot/irc-dev
Module : ircd-ircdev
Commit time: 2005-03-23 18:36:18 UTC
Modified files:
TODO.es
Log message:
Actualizacion TODO
---------------------- diff included ----------------------
Index: ircd-ircdev/TODO.es
diff -u ircd-ircdev/TODO.es:1.12 ircd-ircdev/TODO.es:1.13
--- ircd-ircdev/TODO.es:1.12 Wed Mar 23 06:20:07 2005
+++ ircd-ircdev/TODO.es Wed Mar 23 10:36:06 2005
@@ -1,7 +1,7 @@
#
# TODO para ircd-ircdev
#
-# $Id: TODO.es,v 1.12 2005/03/23 14:20:07 zolty Exp $
+# $Id: TODO.es,v 1.13 2005/03/23 18:36:06 zolty Exp $
#
# Insertar las nuevas entradas al principio de la lista TODO.
#
@@ -9,7 +9,6 @@
URGENTE
--------------------------------------------------------------------------------------
- [D] Implementar el protocolo DDB.
- - [D] Comando de consulta de DDB.
- [D] Nicks registrados y protegidos.
----------------------- End of diff -----------------------
|