1
0
mirror of https://github.com/anope/anope.git synced 2026-07-10 10:43:13 +02:00

BUILD : 1.7.3 (185) BUGS : 99 NOTES : User customizable pseudo-client modes.

git-svn-id: svn://svn.anope.org/anope/trunk@185 31f1291d-b8d6-0310-a050-a5561fc1590b


git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@130 5417fbe8-f217-4b02-8779-1006273d7864
This commit is contained in:
dane dane@31f1291d-b8d6-0310-a050-a5561fc1590b
2004-06-10 18:37:28 +00:00
parent 53c1fa0fda
commit 3bba983a61
5 changed files with 236 additions and 133 deletions
+1
View File
@@ -1,6 +1,7 @@
Anope Version S V N
-------------------
Provided by Anope Dev. <dev@anope.org> - 2004
06/10 A User customizable pseudo-client modes. [ #99]
06/10 A Improved handling of /NS INFO for pseudo-clients. [ #98]
06/07 A Added register script in /bin/ for users to register anope. [ #00]
05/27 A Better /OS MODLIST output to include version information. [ #74]
+2 -9
View File
@@ -1381,15 +1381,8 @@ static int do_bot(User * u)
EnforceQlinedNick(nick, s_BotServ);
/* We make the bot online, ready to serve */
#if defined(IRC_UNREAL) || defined (IRC_VIAGRA)
NEWNICK(bi->nick, bi->user, bi->host, bi->real, "+qS", 1);
#elif defined(IRC_ULTIMATE) || defined (IRC_ULTIMATE3)
NEWNICK(bi->nick, bi->user, bi->host, bi->real, "+pS", 1);
#elif defined(IRC_RAGE2)
NEWNICK(bi->nick, bi->user, bi->host, bi->real, "+S", 1);
#else
NEWNICK(bi->nick, bi->user, bi->host, bi->real, "+", 1);
#endif
NEWNICK(bi->nick, bi->user, bi->host, bi->real,
BOTSERV_BOTS_MODE, 1);
notice_lang(s_BotServ, u, BOT_BOT_ADDED, bi->nick, bi->user,
bi->host, bi->real);
+19 -123
View File
@@ -88,200 +88,96 @@ void introduce_user(const char *user)
if (!user || stricmp(user, s_NickServ) == 0) {
EnforceQlinedNick(s_NickServ, NULL);
#if defined(IRC_ULTIMATE) || defined(IRC_ULTIMATE3)
NICK(s_NickServ, desc_NickServ, "+S");
#elif defined(IRC_RAGE2)
NICK(s_NickServ, desc_NickServ, "+dS");
#elif defined(IRC_UNREAL) || defined(IRC_VIAGRA)
NICK(s_NickServ, desc_NickServ, "+oS");
#else
NICK(s_NickServ, desc_NickServ, "+o");
#endif
NICK(s_NickServ, desc_NickServ, NICKSERV_MODE);
}
if (!user || stricmp(user, s_ChanServ) == 0) {
EnforceQlinedNick(s_ChanServ, NULL);
#if defined(IRC_ULTIMATE) || defined(IRC_ULTIMATE3)
NICK(s_ChanServ, desc_ChanServ, "+S");
#elif defined(IRC_RAGE2)
NICK(s_ChanServ, desc_ChanServ, "+dS");
#elif defined(IRC_UNREAL) || defined(IRC_VIAGRA)
NICK(s_ChanServ, desc_ChanServ, "+oS");
#else
NICK(s_ChanServ, desc_ChanServ, "+o");
#endif
NICK(s_ChanServ, desc_ChanServ, CHANSERV_MODE);
}
#ifdef HAS_VHOST
if (s_HostServ && (!user || stricmp(user, s_HostServ) == 0)) {
EnforceQlinedNick(s_HostServ, NULL);
#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_VIAGRA)
NICK(s_HostServ, desc_HostServ, "+oS");
#elif defined(IRC_RAGE2)
NICK(s_HostServ, desc_HostServ, "+dS");
#else
NICK(s_HostServ, desc_HostServ, "+o");
#endif
NICK(s_HostServ, desc_HostServ, HOSTSERV_MODE);
}
#endif
if (!user || stricmp(user, s_MemoServ) == 0) {
EnforceQlinedNick(s_MemoServ, NULL);
#if defined(IRC_ULTIMATE) || defined(IRC_ULTIMATE3)
NICK(s_MemoServ, desc_MemoServ, "+S");
#elif defined(IRC_RAGE2)
NICK(s_MemoServ, desc_MemoServ, "+dS");
#elif defined(IRC_UNREAL) || defined(IRC_VIAGRA)
NICK(s_MemoServ, desc_MemoServ, "+oS");
#else
NICK(s_MemoServ, desc_MemoServ, "+o");
#endif
NICK(s_MemoServ, desc_MemoServ, MEMOSERV_MODE);
}
if (s_BotServ && (!user || stricmp(user, s_BotServ) == 0)) {
EnforceQlinedNick(s_BotServ, NULL);
#if defined(IRC_ULTIMATE) || defined(IRC_ULTIMATE3)
NICK(s_BotServ, desc_BotServ, "+S");
#elif defined(IRC_RAGE2)
NICK(s_BotServ, desc_BotServ, "+dS");
#elif defined(IRC_UNREAL) || defined(IRC_VIAGRA)
NICK(s_BotServ, desc_BotServ, "+oS");
#else
NICK(s_BotServ, desc_BotServ, "+o");
#endif
NICK(s_BotServ, desc_BotServ, BOTSERV_MODE);
}
if (!user || stricmp(user, s_HelpServ) == 0) {
EnforceQlinedNick(s_HelpServ, NULL);
#if defined(IRC_ULTIMATE) || defined(IRC_ULTIMATE3)
NICK(s_HelpServ, desc_HelpServ, "+Sh");
#elif defined(IRC_RAGE2)
NICK(s_HelpServ, desc_HelpServ, "+dSh");
#elif defined(IRC_UNREAL) || defined(IRC_VIAGRA)
NICK(s_HelpServ, desc_HelpServ, "+oS");
#else
NICK(s_HelpServ, desc_HelpServ, "+h");
#endif
NICK(s_HelpServ, desc_HelpServ, HELPSERV_MODE);
}
if (!user || stricmp(user, s_OperServ) == 0) {
EnforceQlinedNick(s_OperServ, NULL);
#if defined(IRC_ULTIMATE) || defined(IRC_ULTIMATE3)
NICK(s_OperServ, desc_OperServ, "+iS");
#elif defined(IRC_RAGE2)
NICK(s_OperServ, desc_OperServ, "+diS");
#elif defined(IRC_UNREAL) || defined(IRC_VIAGRA)
NICK(s_OperServ, desc_OperServ, "+ioS");
#else
NICK(s_OperServ, desc_OperServ, "+io");
#endif
NICK(s_OperServ, desc_OperServ, OPERSERV_MODE);
}
if (s_DevNull && (!user || stricmp(user, s_DevNull) == 0)) {
EnforceQlinedNick(s_DevNull, NULL);
#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_ULTIMATE3)
NICK(s_DevNull, desc_DevNull, "+iS");
#elif defined(IRC_RAGE2)
NICK(s_DevNull, desc_DevNull, "+diS");
#else
NICK(s_DevNull, desc_DevNull, "+i");
#endif
NICK(s_DevNull, desc_DevNull, DEVNULL_MODE);
}
if (!user || stricmp(user, s_GlobalNoticer) == 0) {
EnforceQlinedNick(s_GlobalNoticer, NULL);
#if defined(IRC_ULTIMATE) || defined(IRC_ULTIMATE3)
NICK(s_GlobalNoticer, desc_GlobalNoticer, "+iS");
#elif defined(IRC_RAGE2)
NICK(s_GlobalNoticer, desc_GlobalNoticer, "+diS");
#elif defined(IRC_UNREAL) || defined(IRC_VIAGRA)
NICK(s_GlobalNoticer, desc_GlobalNoticer, "+ioS");
#else
NICK(s_GlobalNoticer, desc_GlobalNoticer, "+io");
#endif
NICK(s_GlobalNoticer, desc_GlobalNoticer, GLOBAL_MODE);
}
/* We make aliases go online */
if (s_NickServAlias && (!user || stricmp(user, s_NickServAlias) == 0)) {
EnforceQlinedNick(s_NickServAlias, NULL);
#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_VIAGRA)
NICK(s_NickServAlias, desc_NickServAlias, "+oS");
#else
NICK(s_NickServAlias, desc_NickServAlias, "+o");
#endif
NICK(s_NickServAlias, desc_NickServAlias, NICKSERV_ALIAS_MODE);
}
if (s_ChanServAlias && (!user || stricmp(user, s_ChanServAlias) == 0)) {
EnforceQlinedNick(s_ChanServAlias, NULL);
#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_VIAGRA)
NICK(s_ChanServAlias, desc_ChanServAlias, "+oS");
#else
NICK(s_ChanServAlias, desc_ChanServAlias, "+o");
#endif
NICK(s_ChanServAlias, desc_ChanServAlias, CHANSERV_ALIAS_MODE);
}
if (s_MemoServAlias && (!user || stricmp(user, s_MemoServAlias) == 0)) {
EnforceQlinedNick(s_MemoServAlias, NULL);
#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_VIAGRA)
NICK(s_MemoServAlias, desc_MemoServAlias, "+oS");
#else
NICK(s_MemoServAlias, desc_MemoServAlias, "+o");
#endif
NICK(s_MemoServAlias, desc_MemoServAlias, MEMOSERV_ALIAS_MODE);
}
if (s_BotServAlias && (!user || stricmp(user, s_BotServAlias) == 0)) {
EnforceQlinedNick(s_BotServAlias, NULL);
#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_VIAGRA)
NICK(s_BotServAlias, desc_BotServAlias, "+oS");
#else
NICK(s_BotServAlias, desc_BotServAlias, "+o");
#endif
NICK(s_BotServAlias, desc_BotServAlias, BOTSERV_ALIAS_MODE);
}
if (s_HelpServAlias && (!user || stricmp(user, s_HelpServAlias) == 0)) {
EnforceQlinedNick(s_HelpServAlias, NULL);
#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_VIAGRA)
NICK(s_HelpServAlias, desc_HelpServAlias, "+oS");
#else
NICK(s_HelpServAlias, desc_HelpServAlias, "+h");
#endif
NICK(s_HelpServAlias, desc_HelpServAlias, HELPSERV_ALIAS_MODE);
}
if (s_OperServAlias && (!user || stricmp(user, s_OperServAlias) == 0)) {
EnforceQlinedNick(s_OperServAlias, NULL);
#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_VIAGRA)
NICK(s_OperServAlias, desc_OperServAlias, "+ioS");
#else
NICK(s_OperServAlias, desc_OperServAlias, "+io");
#endif
NICK(s_OperServAlias, desc_OperServAlias, OPERSERV_ALIAS_MODE);
}
if (s_DevNullAlias && (!user || stricmp(user, s_DevNullAlias) == 0)) {
EnforceQlinedNick(s_DevNullAlias, NULL);
#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_VIAGRA)
NICK(s_DevNullAlias, desc_DevNullAlias, "+iS");
#else
NICK(s_DevNullAlias, desc_DevNullAlias, "+i");
#endif
NICK(s_DevNullAlias, desc_DevNullAlias, DEVNULL_ALIAS_MODE);
}
#ifdef HAS_VHOST
if (s_HostServAlias && (!user || stricmp(user, s_HostServAlias) == 0)) {
EnforceQlinedNick(s_HostServAlias, NULL);
#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_VIAGRA)
NICK(s_HostServAlias, desc_HostServAlias, "+ioS");
#else
NICK(s_HostServAlias, desc_HostServAlias, "+io");
#endif
NICK(s_HostServAlias, desc_HostServAlias, HOSTSERV_ALIAS_MODE);
}
#endif
if (s_GlobalNoticerAlias
&& (!user || stricmp(user, s_GlobalNoticerAlias) == 0)) {
EnforceQlinedNick(s_GlobalNoticerAlias, NULL);
#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL)
NICK(s_GlobalNoticerAlias, desc_GlobalNoticerAlias, "+ioS");
#else
NICK(s_GlobalNoticerAlias, desc_GlobalNoticerAlias, "+io");
#endif
NICK(s_GlobalNoticerAlias, desc_GlobalNoticerAlias,
GLOBAL_ALIAS_MODE);
}
/* We make the bots go online */
+209
View File
@@ -132,9 +132,29 @@ typedef struct channel_ Channel;
/*************************************************************************/
/* Protocol tweaks */
#ifdef IRC_HYBRID
# define HAS_HALFOP
# define HAS_EXCEPT /* Has +e (chan excepts) */
# define NICKSERV_MODE "+o"
# define CHANSERV_MODE "+o"
# define MEMOSERV_MODE "+o"
# define BOTSERV_MODE "+o"
# define HELPSERV_MODE "+h"
# define OPERSERV_MODE "+io"
# define DEVNULL_MODE "+i"
# define GLOBAL_MODE "+io"
# define NICKSERV_ALIAS_MODE "+o"
# define CHANSERV_ALIAS_MODE "+o"
# define MEMOSERV_ALIAS_MODE "+o"
# define BOTSERV_ALIAS_MODE "+o"
# define HELPSERV_ALIAS_MODE "+h"
# define OPERSERV_ALIAS_MODE "+io"
# define DEVNULL_ALIAS_MODE "+i"
# define GLOBAL_ALIAS_MODE "+io"
# define BOTSERV_BOTS_MODE "+"
#endif
#ifdef IRC_VIAGRA
@@ -142,10 +162,46 @@ typedef struct channel_ Channel;
# define HAS_VHOST
# define HAS_VIDENT
# define HAS_EXCEPT
# define NICKSERV_MODE "+oS"
# define CHANSERV_MODE "+oS"
# define HOSTSERV_MODE "+oS"
# define MEMOSERV_MODE "+oS"
# define BOTSERV_MODE "+oS"
# define HELPSERV_MODE "+oS"
# define OPERSERV_MODE "+ioS"
# define DEVNULL_MODE "+i"
# define GLOBAL_MODE "+ioS"
# define NICKSERV_ALIAS_MODE "+oS"
# define CHANSERV_ALIAS_MODE "+oS"
# define MEMOSERV_ALIAS_MODE "+oS"
# define BOTSERV_ALIAS_MODE "+oS"
# define HELPSERV_ALIAS_MODE "+oS"
# define OPERSERV_ALIAS_MODE "+ioS"
# define DEVNULL_ALIAS_MODE "+iS"
# define GLOBAL_ALIAS_MODE "+ioS"
# define HOSTSERV_ALIAS_MODE "+ioS"
# define BOTSERV_BOTS_MODE "+qS"
#endif
#ifdef IRC_BAHAMUT
# define HAS_NICKIP
# define NICKSERV_MODE "+o"
# define CHANSERV_MODE "+o"
# define MEMOSERV_MODE "+o"
# define BOTSERV_MODE "+o"
# define HELPSERV_MODE "+h"
# define OPERSERV_MODE "+io"
# define DEVNULL_MODE "+i"
# define GLOBAL_MODE "+io"
# define NICKSERV_ALIAS_MODE "+o"
# define CHANSERV_ALIAS_MODE "+o"
# define MEMOSERV_ALIAS_MODE "+o"
# define BOTSERV_ALIAS_MODE "+o"
# define HELPSERV_ALIAS_MODE "+h"
# define OPERSERV_ALIAS_MODE "+io"
# define DEVNULL_ALIAS_MODE "+i"
# define GLOBAL_ALIAS_MODE "+io"
# define BOTSERV_BOTS_MODE "+"
#endif
#ifdef IRC_RAGE2
@@ -153,6 +209,25 @@ typedef struct channel_ Channel;
# define HAS_EXCEPT
# define HAS_VHOST
# define HAS_NICKVHOST
# define NICKSERV_MODE "+dS"
# define CHANSERV_MODE "+dS"
# define HOSTSERV_MODE "+dS"
# define MEMOSERV_MODE "+dS"
# define BOTSERV_MODE "+dS"
# define HELPSERV_MODE "+dSh"
# define OPERSERV_MODE "+diS"
# define DEVNULL_MODE "+diS"
# define GLOBAL_MODE "+diS"
# define NICKSERV_ALIAS_MODE "+o"
# define CHANSERV_ALIAS_MODE "+o"
# define MEMOSERV_ALIAS_MODE "+o"
# define BOTSERV_ALIAS_MODE "+o"
# define HELPSERV_ALIAS_MODE "+h"
# define OPERSERV_ALIAS_MODE "+io"
# define DEVNULL_ALIAS_MODE "+i"
# define GLOBAL_ALIAS_MODE "+io"
# define HOSTSERV_ALIAS_MODE "+io"
# define BOTSERV_BOTS_MODE "+S"
#endif
#ifdef IRC_PTLINK
@@ -160,6 +235,25 @@ typedef struct channel_ Channel;
# define HAS_VHOST
# define HAS_FMODE
# define HAS_EXCEPT
# define NICKSERV_MODE "+o"
# define CHANSERV_MODE "+o"
# define HOSTSERV_MODE "+o"
# define MEMOSERV_MODE "+o"
# define BOTSERV_MODE "+o"
# define HELPSERV_MODE "+h"
# define OPERSERV_MODE "+io"
# define DEVNULL_MODE "+i"
# define GLOBAL_MODE "+io"
# define NICKSERV_ALIAS_MODE "+o"
# define CHANSERV_ALIAS_MODE "+o"
# define MEMOSERV_ALIAS_MODE "+o"
# define BOTSERV_ALIAS_MODE "+o"
# define HELPSERV_ALIAS_MODE "+h"
# define OPERSERV_ALIAS_MODE "+io"
# define DEVNULL_ALIAS_MODE "+i"
# define GLOBAL_ALIAS_MODE "+io"
# define HOSTSERV_ALIAS_MODE "+io"
# define BOTSERV_BOTS_MODE "+"
#endif
#ifdef IRC_ULTIMATE
@@ -169,6 +263,25 @@ typedef struct channel_ Channel;
# define HAS_VHOST
# define HAS_VIDENT /* Can the IRCD Change Idents on the fly */
# define HAS_EXCEPT
# define NICKSERV_MODE "+S"
# define CHANSERV_MODE "+S"
# define HOSTSERV_MODE "+oS"
# define MEMOSERV_MODE "+S"
# define BOTSERV_MODE "+S"
# define HELPSERV_MODE "+Sh"
# define OPERSERV_MODE "+iS"
# define DEVNULL_MODE "+iS"
# define GLOBAL_MODE "+iS"
# define NICKSERV_ALIAS_MODE "+oS"
# define CHANSERV_ALIAS_MODE "+oS"
# define MEMOSERV_ALIAS_MODE "+oS"
# define BOTSERV_ALIAS_MODE "+oS"
# define HELPSERV_ALIAS_MODE "+oS"
# define OPERSERV_ALIAS_MODE "+ioS"
# define DEVNULL_ALIAS_MODE "+iS"
# define GLOBAL_ALIAS_MODE "+ioS"
# define HOSTSERV_ALIAS_MODE "+ioS"
# define BOTSERV_BOTS_MODE "+pS"
#endif
#ifdef IRC_UNREAL
@@ -179,6 +292,25 @@ typedef struct channel_ Channel;
# define HAS_VHOST
# define HAS_VIDENT /* Can the IRCD Change Idents on the fly */
# define HAS_EXCEPT
# define NICKSERV_MODE "+oS"
# define CHANSERV_MODE "+oS"
# define HOSTSERV_MODE "+oS"
# define MEMOSERV_MODE "+oS"
# define BOTSERV_MODE "+oS"
# define HELPSERV_MODE "+oS"
# define OPERSERV_MODE "+ioS"
# define DEVNULL_MODE "+iS"
# define GLOBAL_MODE "+ioS"
# define NICKSERV_ALIAS_MODE "+oS"
# define CHANSERV_ALIAS_MODE "+oS"
# define MEMOSERV_ALIAS_MODE "+oS"
# define BOTSERV_ALIAS_MODE "+oS"
# define HELPSERV_ALIAS_MODE "+oS"
# define OPERSERV_ALIAS_MODE "+ioS"
# define DEVNULL_ALIAS_MODE "+iS"
# define GLOBAL_ALIAS_MODE "+ioS"
# define HOSTSERV_ALIAS_MODE "+ioS"
# define BOTSERV_BOTS_MODE "+qS"
#endif
#ifdef IRC_ULTIMATE3
@@ -187,6 +319,83 @@ typedef struct channel_ Channel;
# define HAS_NICKVHOST
# define HAS_VIDENT /* Can the IRCD Change Idents on the fly */
# define HAS_EXCEPT
# define NICKSERV_MODE "+S"
# define CHANSERV_MODE "+S"
# define HOSTSERV_MODE "+o"
# define MEMOSERV_MODE "+S"
# define BOTSERV_MODE "+S"
# define HELPSERV_MODE "+Sh"
# define OPERSERV_MODE "+iS"
# define DEVNULL_MODE "+iS"
# define GLOBAL_MODE "+iS"
# define NICKSERV_ALIAS_MODE "+o"
# define CHANSERV_ALIAS_MODE "+o"
# define MEMOSERV_ALIAS_MODE "+o"
# define BOTSERV_ALIAS_MODE "+o"
# define HELPSERV_ALIAS_MODE "+h"
# define OPERSERV_ALIAS_MODE "+io"
# define DEVNULL_ALIAS_MODE "+i"
# define GLOBAL_ALIAS_MODE "+io"
# define HOSTSERV_ALIAS_MODE "+io"
# define BOTSERV_BOTS_MODE "+S"
#endif
/*
This gets ugly since serval ircds use both DREAMFORCE and their own define
*/
#ifdef IRC_DREAMFORGE
#ifndef NICKSERV_MODE
# define NICKSERV_MODE "+o"
#endif
#ifndef CHANSERV_MODE
# define CHANSERV_MODE "+o"
#endif
#ifndef MEMOSERV_MODE
# define MEMOSERV_MODE "+o"
#endif
#ifndef BOTSERV_MODE
# define BOTSERV_MODE "+o"
#endif
#ifndef HELPSERV_MODE
# define HELPSERV_MODE "+h"
#endif
#ifndef OPERSERV_MODE
# define OPERSERV_MODE "+io"
#endif
#ifndef DEVNULL_MODE
# define DEVNULL_MODE "+i"
#endif
#ifndef GLOBAL_MODE
# define GLOBAL_MODE "+io"
#endif
#ifndef BOTSERV_BOTS_MODE
# define BOTSERV_BOTS_MODE "+"
#endif
#ifndef NICKSERV_ALIAS_MODE
# define NICKSERV_ALIAS_MODE "+o"
#endif
#ifndef CHANSERV_ALIAS_MODE
# define CHANSERV_ALIAS_MODE "+o"
#endif
#ifndef MEMOSERV_ALIAS_MODE
# define MEMOSERV_ALIAS_MODE "+o"
#endif
#ifndef BOTSERV_ALIAS_MODE
# define BOTSERV_ALIAS_MODE "+o"
#endif
#ifndef HELPSERV_ALIAS_MODE
# define HELPSERV_ALIAS_MODE "+h"
#endif
#ifndef OPERSERV_ALIAS_MODE
# define OPERSERV_ALIAS_MODE "+io"
#endif
#ifndef DEVNULL_ALIAS_MODE
# define DEVNULL_ALIAS_MODE "+i"
#endif
#ifndef GLOBAL_ALIAS_MODE
# define GLOBAL_ALIAS_MODE "+io"
#endif
#endif
/*************************************************************************/
+5 -1
View File
@@ -8,10 +8,14 @@
VERSION_MAJOR="1"
VERSION_MINOR="7"
VERSION_PATCH="3"
VERSION_BUILD="184"
VERSION_BUILD="185"
# $Log$
#
# BUILD : 1.7.3 (185)
# BUGS : 99
# NOTES : User customizable pseudo-client modes.
#
# BUILD : 1.7.3 (184)
# BUGS : 98
# NOTES : Improved handling of /NS INFO for pseudo-clients.