1
0
mirror of https://github.com/irssi/irssi.git synced 2024-09-29 04:45:57 -04:00

Nicklist updates so that protocol specific xxx_NICK_REC can be used

git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1177 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
Timo Sirainen 2001-02-02 22:10:20 +00:00 committed by cras
parent 7240717198
commit e387516951
8 changed files with 58 additions and 42 deletions

View File

@ -31,30 +31,15 @@
(isalnum(a) || (unsigned char) (a) >= 128) (isalnum(a) || (unsigned char) (a) >= 128)
/* Add new nick to list */ /* Add new nick to list */
NICK_REC *nicklist_insert(CHANNEL_REC *channel, const char *nick, void nicklist_insert(CHANNEL_REC *channel, NICK_REC *nick)
int op, int voice, int send_massjoin)
{ {
NICK_REC *rec; MODULE_DATA_INIT(nick);
g_return_val_if_fail(IS_CHANNEL(channel), NULL); nick->type = module_get_uniq_id("NICK", 0);
g_return_val_if_fail(nick != NULL, NULL); nick->chat_type = channel->chat_type;
rec = g_new0(NICK_REC, 1); g_hash_table_insert(channel->nicks, nick->nick, nick);
signal_emit("nicklist new", 2, channel, nick);
MODULE_DATA_INIT(rec);
rec->type = module_get_uniq_id("NICK", 0);
rec->chat_type = channel->chat_type;
if (op) rec->op = TRUE;
if (voice) rec->voice = TRUE;
rec->send_massjoin = send_massjoin;
rec->nick = g_strdup(nick);
rec->host = NULL;
g_hash_table_insert(channel->nicks, rec->nick, rec);
signal_emit("nicklist new", 2, channel, rec);
return rec;
} }
/* Set host address for nick */ /* Set host address for nick */

View File

@ -13,8 +13,7 @@ struct _NICK_REC {
}; };
/* Add new nick to list */ /* Add new nick to list */
NICK_REC *nicklist_insert(CHANNEL_REC *channel, const char *nick, void nicklist_insert(CHANNEL_REC *channel, NICK_REC *nick);
int op, int voice, int send_massjoin);
/* Set host address for nick */ /* Set host address for nick */
void nicklist_set_host(CHANNEL_REC *channel, NICK_REC *nick, const char *host); void nicklist_set_host(CHANNEL_REC *channel, NICK_REC *nick, const char *host);
/* Remove nick from list */ /* Remove nick from list */

View File

@ -29,6 +29,26 @@
#include "modes.h" #include "modes.h"
#include "servers.h" #include "servers.h"
/* Add new nick to list */
NICK_REC *irc_nicklist_insert(IRC_CHANNEL_REC *channel, const char *nick,
int op, int voice, int send_massjoin)
{
NICK_REC *rec;
g_return_val_if_fail(IS_IRC_CHANNEL(channel), NULL);
g_return_val_if_fail(nick != NULL, NULL);
rec = g_new0(NICK_REC, 1);
rec->nick = g_strdup(nick);
if (op) rec->op = TRUE;
if (voice) rec->voice = TRUE;
rec->send_massjoin = send_massjoin;
nicklist_insert(CHANNEL(channel), rec);
return rec;
}
#define isnickchar(a) \ #define isnickchar(a) \
(isalnum((int) (a)) || (a) == '`' || (a) == '-' || (a) == '_' || \ (isalnum((int) (a)) || (a) == '`' || (a) == '-' || (a) == '_' || \
(a) == '[' || (a) == ']' || (a) == '{' || (a) == '}' || \ (a) == '[' || (a) == ']' || (a) == '{' || (a) == '}' || \
@ -53,16 +73,16 @@ char *irc_nick_strip(const char *nick)
return stripped; return stripped;
} }
static void event_names_list(SERVER_REC *server, const char *data) static void event_names_list(IRC_SERVER_REC *server, const char *data)
{ {
CHANNEL_REC *chanrec; IRC_CHANNEL_REC *chanrec;
char *params, *type, *channel, *names, *ptr; char *params, *type, *channel, *names, *ptr;
g_return_if_fail(data != NULL); g_return_if_fail(data != NULL);
params = event_get_params(data, 4, NULL, &type, &channel, &names); params = event_get_params(data, 4, NULL, &type, &channel, &names);
chanrec = channel_find(server, channel); chanrec = irc_channel_find(server, channel);
if (chanrec == NULL || chanrec->names_got) { if (chanrec == NULL || chanrec->names_got) {
/* unknown channel / names list already read */ /* unknown channel / names list already read */
g_free(params); g_free(params);
@ -85,8 +105,8 @@ static void event_names_list(SERVER_REC *server, const char *data)
while (*names != '\0' && *names != ' ') names++; while (*names != '\0' && *names != ' ') names++;
if (*names != '\0') *names++ = '\0'; if (*names != '\0') *names++ = '\0';
nicklist_insert(chanrec, ptr+isnickflag(*ptr), irc_nicklist_insert(chanrec, ptr+isnickflag(*ptr),
*ptr == '@', *ptr == '+', FALSE); *ptr == '@', *ptr == '+', FALSE);
} }
g_free(params); g_free(params);

View File

@ -3,10 +3,14 @@
#include "nicklist.h" #include "nicklist.h"
void irc_nicklist_init(void); /* Add new nick to list */
void irc_nicklist_deinit(void); NICK_REC *irc_nicklist_insert(IRC_CHANNEL_REC *channel, const char *nick,
int op, int voice, int send_massjoin);
/* Remove all "extra" characters from `nick'. Like _nick_ -> nick */ /* Remove all "extra" characters from `nick'. Like _nick_ -> nick */
char *irc_nick_strip(const char *nick); char *irc_nick_strip(const char *nick);
void irc_nicklist_init(void);
void irc_nicklist_deinit(void);
#endif #endif

View File

@ -25,7 +25,7 @@
#include "irc.h" #include "irc.h"
#include "irc-servers.h" #include "irc-servers.h"
#include "irc-channels.h" #include "irc-channels.h"
#include "nicklist.h" #include "irc-nicklist.h"
static int massjoin_tag; static int massjoin_tag;
static int massjoin_max_joins; static int massjoin_max_joins;
@ -58,7 +58,7 @@ static void event_join(IRC_SERVER_REC *server, const char *data,
if (chanrec == NULL) return; if (chanrec == NULL) return;
/* add user to nicklist */ /* add user to nicklist */
nickrec = nicklist_insert(CHANNEL(chanrec), nick, FALSE, FALSE, TRUE); nickrec = irc_nicklist_insert(chanrec, nick, FALSE, FALSE, TRUE);
nicklist_set_host(CHANNEL(chanrec), nickrec, address); nicklist_set_host(CHANNEL(chanrec), nickrec, address);
if (chanrec->massjoins == 0) { if (chanrec->massjoins == 0) {

View File

@ -83,17 +83,12 @@ void
channel_destroy(channel) channel_destroy(channel)
Irssi::Channel channel Irssi::Channel channel
Irssi::Nick void
nick_insert(channel, nick, op, voice, send_massjoin) nick_insert(channel, nick)
Irssi::Channel channel Irssi::Channel channel
char *nick Irssi::Nick nick
int op
int voice
int send_massjoin
CODE: CODE:
RETVAL = nicklist_insert(channel, nick, op, voice, send_massjoin); nicklist_insert(channel, nick);
OUTPUT:
RETVAL
void void
nick_remove(channel, nick) nick_remove(channel, nick)

View File

@ -1,4 +1,4 @@
MODULE = Irssi::Irc PACKAGE = Irssi::Irc::Channel PREFIX = irc_channel_ MODULE = Irssi::Irc PACKAGE = Irssi::Irc::Channel PREFIX = irc_
void void
bans(channel) bans(channel)
@ -34,6 +34,18 @@ PPCODE:
XPUSHs(new_pv(tmp->data)); XPUSHs(new_pv(tmp->data));
} }
Irssi::Nick
irc_nick_insert(channel, nick, op, voice, send_massjoin)
Irssi::Channel channel
char *nick
int op
int voice
int send_massjoin
CODE:
RETVAL = irc_nicklist_insert(channel, nick, op, voice, send_massjoin);
OUTPUT:
RETVAL
MODULE = Irssi::Irc PACKAGE = Irssi::Irc::Server PREFIX = irc_ MODULE = Irssi::Irc PACKAGE = Irssi::Irc::Server PREFIX = irc_
Irssi::Irc::Channel Irssi::Irc::Channel

View File

@ -4,6 +4,7 @@
#include "irc-servers.h" #include "irc-servers.h"
#include "irc-channels.h" #include "irc-channels.h"
#include "irc-queries.h" #include "irc-queries.h"
#include "irc-nicklist.h"
#include "bans.h" #include "bans.h"
#include "modes.h" #include "modes.h"