Rework formatting of /NAMES and /SCAN output.

The formatting of /NAMES and /SCAN output has been substantially reworked.
The old /FSETs NAMES_BOTCOLOR, NAMES_FRIENDCOLOR, NAMES_NICKCOLOR,
NAMES_OPCOLOR, NAMES_SHITCOLOR and NAMES_VOICECOLOR have been replaced
with these new /FSETs:

....................NAMES_NICK %B$[10]0
................NAMES_NICK_BOT %G$[10]0
.............NAMES_NICK_FRIEND %Y$[10]0
.................NAMES_NICK_ME %W$[10]0
...............NAMES_NICK_SHIT %R$[10]0
....................NAMES_USER %K[ %n$1-%K]
.............NAMES_USER_CHANOP %K[%C$0%n$1-%K]
..............NAMES_USER_IRCOP %K[%R$0%n$1-%K]
..............NAMES_USER_VOICE %K[%M$0%n$1-%K]

The NAMES_NICK formats control how the nick itself is displayed, depending
on the status of the nick as recognised by BitchX (the priority order is
NAMES_NICK_ME > NAMES_NICK_BOT > NAMES_NICK_FRIEND > NAMES_NICK_SHIT >
NAMES_NICK).  The NAMES_USER formats control how the overall entry appears in
the /NAMES or /SCAN line, depending on the channel status of the nick (the
priority order is NAMES_USER_CHANOP > NAMES_USER_VOICE > NAMES_USER_IRCOP >
NAMES_USER).

You'll need to update any scripts or custom formats that altered the old
formats.  If you just use the defaults, the main difference you'll see is
that your own nick is now shown in white, and voiced users are shown with
the '+' sent by the server instead of the 'v'.  You can go back to the old
look by setting these formats:

/FSET NAMES_NICK_ME %B$[10]0
/FSET NAMES_USER_VOICE %K[%Mv%n$1-%K]



git-svn-id: svn://svn.code.sf.net/p/bitchx/code/trunk@46 13b04d17-f746-0410-82c6-800466cd88b0
This commit is contained in:
Kevin Easton
2008-05-27 04:53:19 +00:00
parent 56a414feb6
commit 1e81f1ed7b
8 changed files with 178 additions and 88 deletions

View File

@@ -1,5 +1,9 @@
[Changes 1.2c01 ]
* Rework /SCAN and /NAMES formatting. This removes the /FSETs NAMES_BOTCOLOR,
NAMES_FRIENDCOLOR, NAMES_NICKCOLOR, NAMES_OPCOLOR, NAMES_SHITCOLOR and
NAMES_VOICECOLOR and replaces them with new /FSETs. (caf)
* Add $ishalfop(<nick> <channel) scripting function, just like the
existing function in EPIC. (caf)

View File

@@ -1,22 +0,0 @@
This is the last official release of the 1.x branch of the BitchX IRC
Client. If you have patches for problems you encounter with this client
then you can submit them to http://bugs.bitchx.org/
Remember: Read the FAQ online @ http://faq.bitchx.org BEFORE you come to
IRC asking questions. The FAQ clearly will tell you that if you don't find
an answer to your question that you should use the Forums site and consider
the channel your last resort since most people come to IRC to chat and not
play "Technical Support".
It's not to say that we won't help you. We're just trying to enjoy our free
time on IRC just like you so we've setup a vast number of tools to help you
figure out how to manage and setup your client.
Our thanks and greetings to:
panasync, nuke, caf, |Rain|, powuh, Raistlin, fudd, void, Blackjac,
dovee, sabina, Xavier, IRule, By-Tor Venoma, novalogic, cres, einride,
shattah, hMz, lewsha, hayzus, sellfone, dialtone, kreca, Snipi, KrOn,
Tilt, mo-root, JohnnyM, alexs, flewid, lara, Pezessed, Dragoon, Fizzle_B,
keerf, defz, drogoh, gauze, and sin.

38
README-1.2 Normal file
View File

@@ -0,0 +1,38 @@
BitchX 1.2 README
=================
/NAMES and /SCAN
----------------
The formatting of /NAMES and /SCAN output has been substantially reworked.
The old /FSETs NAMES_BOTCOLOR, NAMES_FRIENDCOLOR, NAMES_NICKCOLOR,
NAMES_OPCOLOR, NAMES_SHITCOLOR and NAMES_VOICECOLOR have been replaced
with these new /FSETs:
....................NAMES_NICK %B$[10]0
................NAMES_NICK_BOT %G$[10]0
.............NAMES_NICK_FRIEND %Y$[10]0
.................NAMES_NICK_ME %W$[10]0
...............NAMES_NICK_SHIT %R$[10]0
....................NAMES_USER %K[ %n$1-%K]
.............NAMES_USER_CHANOP %K[%C$0%n$1-%K]
..............NAMES_USER_IRCOP %K[%R$0%n$1-%K]
..............NAMES_USER_VOICE %K[%M$0%n$1-%K]
The NAMES_NICK formats control how the nick itself is displayed, depending
on the status of the nick as recognised by BitchX (the priority order is
NAMES_NICK_ME > NAMES_NICK_BOT > NAMES_NICK_FRIEND > NAMES_NICK_SHIT >
NAMES_NICK). The NAMES_USER formats control how the overall entry appears in
the /NAMES or /SCAN line, depending on the channel status of the nick (the
priority order is NAMES_USER_CHANOP > NAMES_USER_VOICE > NAMES_USER_IRCOP >
NAMES_USER).
You'll need to update any scripts or custom formats that altered the old
formats. If you just use the defaults, the main difference you'll see is
that your own nick is now shown in white, and voiced users are shown with
the '+' sent by the server instead of the 'v'. You can go back to the old
look by setting these formats:
/FSET NAMES_NICK_ME %B$[10]0
/FSET NAMES_USER_VOICE %K[%Mv%n$1-%K]

View File

@@ -144,21 +144,25 @@
/* Done NAMES */
#define DEFAULT_FORMAT_NAMES_BANNER_FSET "$G "
#define DEFAULT_FORMAT_NAMES_FSET "$G %K[%cUsers%K(%W$1%K:%W$2%K)]%c $3"
#define DEFAULT_FORMAT_NAMES_NICKCOLOR_FSET "%K[%w $[10]1%K]"
#define DEFAULT_FORMAT_NAMES_NONOP_FSET "$G %K[%cNonChanOps%K(%W$1%K:%W$2%K)]%c $3"
#define DEFAULT_FORMAT_NAMES_OP_FSET "$G %K[%cChanOps%K(%W$1%K:%W$2%K)]%c $3"
#define DEFAULT_FORMAT_NAMES_OPCOLOR_FSET "%K[%c$0%w$[10]1%K]"
#define DEFAULT_FORMAT_NAMES_PROMPT_FSET "$G $0-"
#define DEFAULT_FORMAT_NAMES_VOICE_FSET "$G %K[%cVoiceUsers%K(%W$1%K:%W$2%K)]%c $3"
#define DEFAULT_FORMAT_NAMES_VOICECOLOR_FSET "%K[%M$0%w$[10]1%K]"
#define DEFAULT_FORMAT_NAMES_NICK_FSET "%B$[10]0"
#define DEFAULT_FORMAT_NAMES_NICK_BOT_FSET "%G$[10]0"
#define DEFAULT_FORMAT_NAMES_NICK_FRIEND_FSET "%Y$[10]0"
#define DEFAULT_FORMAT_NAMES_NICK_ME_FSET "%W$[10]0"
#define DEFAULT_FORMAT_NAMES_NICK_SHIT_FSET "%R$[10]0"
#define DEFAULT_FORMAT_NAMES_USER_FSET "%K[ %n$1-%K]"
#define DEFAULT_FORMAT_NAMES_USER_CHANOP_FSET "%K[%C$0%n$1-%K]"
#define DEFAULT_FORMAT_NAMES_USER_IRCOP_FSET "%K[%R$0%n$1-%K]"
#define DEFAULT_FORMAT_NAMES_USER_VOICE_FSET "%K[%M$0%n$1-%K]"
/* In bx but not hades*/
#define DEFAULT_FORMAT_NAMES_BOT_FSET "$G %K[%GBots%K(%g$1%K:%g$2%K)]%c $3"
#define DEFAULT_FORMAT_NAMES_FRIEND_FSET "$G %K[%GFriends%K(%g$1%K:%g$2%K)]%c $3"
#define DEFAULT_FORMAT_NAMES_BOTCOLOR_FSET "%K[%C$0%G$[10]1%K]"
#define DEFAULT_FORMAT_NAMES_FRIENDCOLOR_FSET "%K[%C$0%Y$[10]1%K]"
#define DEFAULT_FORMAT_NAMES_IRCOP_FSET "$G %K[%GIrcOps%K(%g$1%K:%g$2%K)]%c $3"
#define DEFAULT_FORMAT_NAMES_SHIT_FSET "$G %K[%MShitUsers%K(%m$1%K:%m$2%K)]%c $3"
#define DEFAULT_FORMAT_NAMES_SHITCOLOR_FSET "%K[%C$0%n%R$[10]1%K]"
#define DEFAULT_FORMAT_NETADD_FSET "$G %nAdded: %W$1 $2"
#define DEFAULT_FORMAT_NETSPLIT_FSET "$G %nNetsplit detected%K: %W$1%n split from %W$2 %K[%c$0%K]"
@@ -566,17 +570,21 @@
#define DEFAULT_FORMAT_NAMES_FSET ansi?"$G %K[%GUsers%K(%g$1%K:%g$2%K)]%c $3":"$G [Users($1:$2)] $3"
#define DEFAULT_FORMAT_NAMES_BOT_FSET ansi?"$G %K[%GBots%K(%g$1%K:%g$2%K)]%c $3":"$G [Bots($1:$2)] $3"
#define DEFAULT_FORMAT_NAMES_FRIEND_FSET ansi?"$G %K[%GFriends%K(%g$1%K:%g$2%K)]%c $3":"$G [Friends($1:$2)] $3"
#define DEFAULT_FORMAT_NAMES_BOTCOLOR_FSET ansi?"%K[%C$0%G$[10]1%K]":"[$0$[10]1]"
#define DEFAULT_FORMAT_NAMES_FRIENDCOLOR_FSET ansi?"%K[%C$0%Y$[10]1%K]":"[$0$[10]1]"
#define DEFAULT_FORMAT_NAMES_NICKCOLOR_FSET ansi?"%K[%B $[10]1%K]":"[ $[10]1]"
#define DEFAULT_FORMAT_NAMES_NONOP_FSET ansi?"$G %K[%GNonChanOps%K(%g$1%K:%g$2%K)]%c $3":"$G [NonChanOps($1:$2)] $3"
#define DEFAULT_FORMAT_NAMES_VOICECOLOR_FSET ansi?"%K[%Mv%B$[10]1%K]":"[v$[10]1]"
#define DEFAULT_FORMAT_NAMES_OP_FSET ansi?"$G %K[%GChanOps%K(%g$1%K:%g$2%K)]%c $3":"$G [ChanOps($1:$2)] $3"
#define DEFAULT_FORMAT_NAMES_IRCOP_FSET ansi?"$G %K[%GIrcOps%K(%g$1%K:%g$2%K)]%c $3":"$G [IrcOps($1:$2)] $3"
#define DEFAULT_FORMAT_NAMES_SHIT_FSET ansi?"$G %K[%MShitUsers%K(%m$1%K:%m$2%K)]%c $3":"$G [ShitUsers(_$1:$2_)] $3"
#define DEFAULT_FORMAT_NAMES_SHITCOLOR_FSET ansi?"%K[%C$0%n%R$[10]1%K]":"[_$0$[10]1_]"
#define DEFAULT_FORMAT_NAMES_VOICE_FSET ansi?"$G %K[%MVoiceUsers%K(%m$1%K:%m$2%K)]%c $3":"$G [VoiceUsers($1:$2)] $3"
#define DEFAULT_FORMAT_NAMES_OPCOLOR_FSET ansi?"%K[%C$0%n%B$[10]1%K]":"[$0$[10]1]"
#define DEFAULT_FORMAT_NAMES_NICK_FSET ansi?"%B$[10]0":"$[10]0"
#define DEFAULT_FORMAT_NAMES_NICK_BOT_FSET ansi?"%G$[10]0":"$[10]0"
#define DEFAULT_FORMAT_NAMES_NICK_FRIEND_FSET ansi?"%Y$[10]0":"$[10]0"
#define DEFAULT_FORMAT_NAMES_NICK_ME_FSET ansi?"%W$[10]0":"$[10]0"
#define DEFAULT_FORMAT_NAMES_NICK_SHIT_FSET ansi?"%R$[10]0":"$[10]0"
#define DEFAULT_FORMAT_NAMES_USER_FSET ansi?"%K[ %n$1-%K]":"[ $1-]"
#define DEFAULT_FORMAT_NAMES_USER_CHANOP_FSET ansi?"%K[%C$0%n$1-%K]":"[$0$1-]"
#define DEFAULT_FORMAT_NAMES_USER_IRCOP_FSET ansi?"%K[%R$0%n$1-%K]":"[$0$1-]"
#define DEFAULT_FORMAT_NAMES_USER_VOICE_FSET ansi?"%K[%M$0%n$1-%K]":"[$0$1-]"
#define DEFAULT_FORMAT_NETADD_FSET "$G %nAdded: %W$1 $2"
#define DEFAULT_FORMAT_NETJOIN_FSET "$G %nNetjoined: %W$1 $2"

View File

@@ -227,19 +227,22 @@ FORMAT_MSG_GROUP_FSET,
FORMAT_NAMES_FSET,
FORMAT_NAMES_BANNER_FSET,
FORMAT_NAMES_BOT_FSET,
FORMAT_NAMES_BOTCOLOR_FSET,
FORMAT_NAMES_FOOTER_FSET,
FORMAT_NAMES_FRIEND_FSET,
FORMAT_NAMES_FRIENDCOLOR_FSET,
FORMAT_NAMES_IRCOP_FSET,
FORMAT_NAMES_NICKCOLOR_FSET,
FORMAT_NAMES_NICK_FSET,
FORMAT_NAMES_NICK_BOT_FSET,
FORMAT_NAMES_NICK_FRIEND_FSET,
FORMAT_NAMES_NICK_ME_FSET,
FORMAT_NAMES_NICK_SHIT_FSET,
FORMAT_NAMES_NONOP_FSET,
FORMAT_NAMES_OP_FSET,
FORMAT_NAMES_OPCOLOR_FSET,
FORMAT_NAMES_SHIT_FSET,
FORMAT_NAMES_SHITCOLOR_FSET,
FORMAT_NAMES_USER_FSET,
FORMAT_NAMES_USER_CHANOP_FSET,
FORMAT_NAMES_USER_IRCOP_FSET,
FORMAT_NAMES_USER_VOICE_FSET,
FORMAT_NAMES_VOICE_FSET,
FORMAT_NAMES_VOICECOLOR_FSET,
FORMAT_NETADD_FSET,
FORMAT_NETJOIN_FSET,

View File

@@ -1414,6 +1414,8 @@ int cols = get_int_var(NAMES_COLUMNS_VAR);
for (nick = snick; nick; nick = nick->next)
{
char *nick_format;
char *user_format;
char *nick_buffer = NULL;
char nick_sym;
if (match_host)
@@ -1435,36 +1437,54 @@ int cols = get_int_var(NAMES_COLUMNS_VAR);
|| (shit && !nick->shitlist))
continue;
/* Determine the format string to use */
if (nick->userlist)
nick_format = fget_string_var(FORMAT_NAMES_FRIENDCOLOR_FSET);
/* Determine the nick format string to use */
if (my_stricmp(nick->nick, get_server_nickname(server)) == 0)
nick_format = fget_string_var(FORMAT_NAMES_NICK_ME_FSET);
else if (nick->userlist && (nick->userlist->flags & ADD_BOT))
nick_format = fget_string_var(FORMAT_NAMES_NICK_BOT_FSET);
else if (nick->userlist)
nick_format = fget_string_var(FORMAT_NAMES_NICK_FRIEND_FSET);
else if (nick->shitlist)
nick_format = fget_string_var(FORMAT_NAMES_SHITCOLOR_FSET);
else if (nick_isop(nick) || nick_ishalfop(nick))
nick_format = fget_string_var(FORMAT_NAMES_OPCOLOR_FSET);
else if (nick_isvoice(nick))
nick_format = fget_string_var(FORMAT_NAMES_VOICECOLOR_FSET);
else if (nick_isircop(nick))
nick_format = fget_string_var(FORMAT_NAMES_OPCOLOR_FSET);
nick_format = fget_string_var(FORMAT_NAMES_NICK_SHIT_FSET);
else
nick_format = fget_string_var(FORMAT_NAMES_NICKCOLOR_FSET);
nick_format = fget_string_var(FORMAT_NAMES_NICK_FSET);
/* Determine the special symbol, if any, to use. */
/* Determine the user format and indicator symbol to use. */
if (nick_isop(nick))
{
user_format = fget_string_var(FORMAT_NAMES_USER_CHANOP_FSET);
nick_sym = '@';
}
else if (nick_ishalfop(nick))
{
user_format = fget_string_var(FORMAT_NAMES_USER_CHANOP_FSET);
nick_sym = '%';
}
else if (nick_isvoice(nick))
{
user_format = fget_string_var(FORMAT_NAMES_USER_VOICE_FSET);
nick_sym = '+';
}
else if (nick_isircop(nick))
{
user_format = fget_string_var(FORMAT_NAMES_USER_IRCOP_FSET);
nick_sym = '*';
}
else
{
user_format = fget_string_var(FORMAT_NAMES_USER_FSET);
nick_sym = '.';
}
/* Construct the string */
malloc_strcpy(&nick_buffer, convert_output_format(nick_format,
"%s", nick->nick));
malloc_strcat(&buffer,
convert_output_format(nick_format, "%c %s", nick_sym,
nick->nick));
convert_output_format(user_format, "%c %s", nick_sym,
nick_buffer));
malloc_strcat(&buffer, space);
new_free(&nick_buffer);
if (count++ >= (cols - 1))
{
if (fget_string_var(FORMAT_NAMES_BANNER_FSET))

View File

@@ -108,21 +108,23 @@ IrcVariable fset_array[] =
{ "MSG_GROUP", 0,STR_TYPE_VAR, 0, NULL, NULL, 0, 0},
{ "NAMES", 0,STR_TYPE_VAR, 0, NULL, NULL, 0, 0},
{ "NAMES_BANNER", 0,STR_TYPE_VAR, 0, NULL, NULL, 0, 0},
{ "NAMES_BOT", 0,STR_TYPE_VAR, 0, NULL, NULL, 0, 0},
{ "NAMES_BOTCOLOR", 0,STR_TYPE_VAR, 0, NULL, NULL, 0, 0},
{ "NAMES_FOOTER", 0,STR_TYPE_VAR, 0, NULL, NULL, 0, 0},
{ "NAMES_FRIEND", 0,STR_TYPE_VAR, 0, NULL, NULL, 0, 0},
{ "NAMES_FRIENDCOLOR", 0,STR_TYPE_VAR, 0, NULL, NULL, 0, 0},
{ "NAMES_IRCOP", 0,STR_TYPE_VAR, 0, NULL, NULL, 0, 0},
{ "NAMES_NICKCOLOR", 0,STR_TYPE_VAR, 0, NULL, NULL, 0, 0},
{ "NAMES_NICK", 0,STR_TYPE_VAR, 0, NULL, NULL, 0, 0},
{ "NAMES_NICK_BOT", 0,STR_TYPE_VAR, 0, NULL, NULL, 0, 0},
{ "NAMES_NICK_FRIEND", 0,STR_TYPE_VAR, 0, NULL, NULL, 0, 0},
{ "NAMES_NICK_ME", 0,STR_TYPE_VAR, 0, NULL, NULL, 0, 0},
{ "NAMES_NICK_SHIT", 0,STR_TYPE_VAR, 0, NULL, NULL, 0, 0},
{ "NAMES_NONOP", 0,STR_TYPE_VAR, 0, NULL, NULL, 0, 0},
{ "NAMES_OP", 0,STR_TYPE_VAR, 0, NULL, NULL, 0, 0},
{ "NAMES_OPCOLOR", 0,STR_TYPE_VAR, 0, NULL, NULL, 0, 0},
{ "NAMES_SHIT", 0,STR_TYPE_VAR, 0, NULL, NULL, 0, 0},
{ "NAMES_SHITCOLOR", 0,STR_TYPE_VAR, 0, NULL, NULL, 0, 0},
{ "NAMES_USER", 0,STR_TYPE_VAR, 0, NULL, NULL, 0, 0},
{ "NAMES_USER_CHANOP", 0,STR_TYPE_VAR, 0, NULL, NULL, 0, 0},
{ "NAMES_USER_IRCOP", 0,STR_TYPE_VAR, 0, NULL, NULL, 0, 0},
{ "NAMES_USER_VOICE", 0,STR_TYPE_VAR, 0, NULL, NULL, 0, 0},
{ "NAMES_VOICE", 0,STR_TYPE_VAR, 0, NULL, NULL, 0, 0},
{ "NAMES_VOICECOLOR", 0,STR_TYPE_VAR, 0, NULL, NULL, 0, 0},
{ "NETADD", 0,STR_TYPE_VAR, 0, NULL, NULL, 0, 0},
{ "NETJOIN", 0,STR_TYPE_VAR, 0, NULL, NULL, 0, 0},
@@ -629,17 +631,20 @@ void create_fsets(Window *win, int ansi)
fset_string_var(FORMAT_NAMES_FSET, DEFAULT_FORMAT_NAMES_FSET);
fset_string_var(FORMAT_NAMES_BOT_FSET, DEFAULT_FORMAT_NAMES_BOT_FSET);
fset_string_var(FORMAT_NAMES_FRIEND_FSET, DEFAULT_FORMAT_NAMES_FRIEND_FSET);
fset_string_var(FORMAT_NAMES_BOTCOLOR_FSET, DEFAULT_FORMAT_NAMES_BOTCOLOR_FSET);
fset_string_var(FORMAT_NAMES_FRIENDCOLOR_FSET, DEFAULT_FORMAT_NAMES_FRIENDCOLOR_FSET);
fset_string_var(FORMAT_NAMES_NICKCOLOR_FSET, DEFAULT_FORMAT_NAMES_NICKCOLOR_FSET);
fset_string_var(FORMAT_NAMES_NICK_FSET, DEFAULT_FORMAT_NAMES_NICK_FSET);
fset_string_var(FORMAT_NAMES_NICK_BOT_FSET, DEFAULT_FORMAT_NAMES_NICK_BOT_FSET);
fset_string_var(FORMAT_NAMES_NICK_FRIEND_FSET, DEFAULT_FORMAT_NAMES_NICK_FRIEND_FSET);
fset_string_var(FORMAT_NAMES_NICK_ME_FSET, DEFAULT_FORMAT_NAMES_NICK_ME_FSET);
fset_string_var(FORMAT_NAMES_NICK_SHIT_FSET, DEFAULT_FORMAT_NAMES_NICK_SHIT_FSET);
fset_string_var(FORMAT_NAMES_NONOP_FSET, DEFAULT_FORMAT_NAMES_NONOP_FSET);
fset_string_var(FORMAT_NAMES_VOICECOLOR_FSET, DEFAULT_FORMAT_NAMES_VOICECOLOR_FSET);
fset_string_var(FORMAT_NAMES_OP_FSET, DEFAULT_FORMAT_NAMES_OP_FSET);
fset_string_var(FORMAT_NAMES_IRCOP_FSET, DEFAULT_FORMAT_NAMES_IRCOP_FSET);
fset_string_var(FORMAT_NAMES_SHIT_FSET, DEFAULT_FORMAT_NAMES_SHIT_FSET);
fset_string_var(FORMAT_NAMES_SHITCOLOR_FSET, DEFAULT_FORMAT_NAMES_SHITCOLOR_FSET);
fset_string_var(FORMAT_NAMES_USER_FSET, DEFAULT_FORMAT_NAMES_USER_FSET);
fset_string_var(FORMAT_NAMES_USER_CHANOP_FSET, DEFAULT_FORMAT_NAMES_USER_CHANOP_FSET);
fset_string_var(FORMAT_NAMES_USER_IRCOP_FSET, DEFAULT_FORMAT_NAMES_USER_IRCOP_FSET);
fset_string_var(FORMAT_NAMES_USER_VOICE_FSET, DEFAULT_FORMAT_NAMES_USER_VOICE_FSET);
fset_string_var(FORMAT_NAMES_VOICE_FSET, DEFAULT_FORMAT_NAMES_VOICE_FSET);
fset_string_var(FORMAT_NAMES_OPCOLOR_FSET, DEFAULT_FORMAT_NAMES_OPCOLOR_FSET);
fset_string_var(FORMAT_NETADD_FSET, DEFAULT_FORMAT_NETADD_FSET);
fset_string_var(FORMAT_NETJOIN_FSET, DEFAULT_FORMAT_NETJOIN_FSET);
fset_string_var(FORMAT_NETSPLIT_FSET, DEFAULT_FORMAT_NETSPLIT_FSET);

View File

@@ -206,42 +206,76 @@ void funny_list(char *from, char **ArgList)
reset_display_target();
}
/* print_funny_names
*
* This handles presenting the output of a NAMES reply. It is a cut-down
* version of the /SCAN output formatting.
*/
void print_funny_names(char *line)
{
register char *t;
int count = 0;
char buffer[BIG_BUFFER_SIZE+1];
char special = '\0';
int cols = get_int_var(NAMES_COLUMNS_VAR);
char *t;
int count = 0;
char buffer[BIG_BUFFER_SIZE];
int cols = get_int_var(NAMES_COLUMNS_VAR);
if (!cols)
cols = 1;
if (line && *line)
{
*buffer = 0;
t = next_arg(line, &line);
do {
while (t = next_arg(line, &line)) {
char *nick;
char *nick_format;
char nick_buffer[BIG_BUFFER_SIZE];
if (!count && fget_string_var(FORMAT_NAMES_BANNER_FSET))
strcpy(buffer, convert_output_format(fget_string_var(FORMAT_NAMES_BANNER_FSET), NULL, NULL));
if (*t == '@' || *t == '+' || *t == '~' || *t == '-' || *t == '%')
{
special = *t;
if (special == '+')
strcat(buffer, convert_output_format(fget_string_var(FORMAT_NAMES_VOICECOLOR_FSET),"%c %s", special, ++t));
else
strcat(buffer, convert_output_format(fget_string_var(FORMAT_NAMES_OPCOLOR_FSET),"%c %s", special, ++t));
}
strlcat(buffer, convert_output_format(
fget_string_var(FORMAT_NAMES_BANNER_FSET), NULL, NULL),
sizeof buffer);
/* Seperate the nick and the possible status presets that might
* preceede it. */
nick = t + strspn(t, "@%+~-");
nick_format = fget_string_var(isme(nick) ?
FORMAT_NAMES_NICK_ME_FSET : FORMAT_NAMES_NICK_FSET);
strlcpy(nick_buffer,
convert_output_format(nick_format, "%s", nick),
sizeof nick_buffer);
if (nick != t)
{
char special = *t;
if (special == '+')
strlcat(buffer,
convert_output_format(
fget_string_var(FORMAT_NAMES_USER_VOICE_FSET),
"%c %s", special, nick_buffer), sizeof buffer);
else
strlcat(buffer,
convert_output_format(
fget_string_var(FORMAT_NAMES_USER_CHANOP_FSET),
"%c %s", special, nick_buffer), sizeof buffer);
}
else
strcat(buffer, convert_output_format(fget_string_var(FORMAT_NAMES_NICKCOLOR_FSET), "$ %s", t));
strcat(buffer, space);
if (count++ >= (cols - 1))
strlcat(buffer,
convert_output_format(
fget_string_var(FORMAT_NAMES_USER_FSET), ". %s",
nick_buffer), sizeof buffer);
strlcat(buffer, space, sizeof buffer);
if (++count >= cols)
{
put_it("%s", buffer);
*buffer = 0;
count = 0;
}
} while ((t = next_arg(line, &line)));
}
if (buffer)
if (count)
put_it("%s", buffer);
}
}