mirror of
https://github.com/weechat/weechat.git
synced 2026-07-09 17:45:41 +02:00
irc: add variable "nick_host" in server structure
This commit is contained in:
@@ -30,6 +30,7 @@ New features::
|
||||
* api: replace argument "keep_eol" by "flags" in function string_split (issue #1322)
|
||||
* api: add function command_options (issue #928)
|
||||
* api: add function string_match_list
|
||||
* irc: add variable "nick_host" in server structure
|
||||
* relay: add option relay.weechat.commands (issue #928)
|
||||
* script: use SHA-512 instead of MD5 for script checksum
|
||||
* spell: rename aspell plugin to spell (issue #1299)
|
||||
|
||||
@@ -243,6 +243,7 @@ _nick_first_tried_ (integer) +
|
||||
_nick_alternate_number_ (integer) +
|
||||
_nick_ (string) +
|
||||
_nick_modes_ (string) +
|
||||
_nick_host_ (string) +
|
||||
_checking_cap_ls_ (integer) +
|
||||
_cap_ls_ (hashtable) +
|
||||
_checking_cap_list_ (integer) +
|
||||
|
||||
@@ -243,6 +243,7 @@ _nick_first_tried_ (integer) +
|
||||
_nick_alternate_number_ (integer) +
|
||||
_nick_ (string) +
|
||||
_nick_modes_ (string) +
|
||||
_nick_host_ (string) +
|
||||
_checking_cap_ls_ (integer) +
|
||||
_cap_ls_ (hashtable) +
|
||||
_checking_cap_list_ (integer) +
|
||||
|
||||
@@ -243,6 +243,7 @@ _nick_first_tried_ (integer) +
|
||||
_nick_alternate_number_ (integer) +
|
||||
_nick_ (string) +
|
||||
_nick_modes_ (string) +
|
||||
_nick_host_ (string) +
|
||||
_checking_cap_ls_ (integer) +
|
||||
_cap_ls_ (hashtable) +
|
||||
_checking_cap_list_ (integer) +
|
||||
|
||||
@@ -243,6 +243,7 @@ _nick_first_tried_ (integer) +
|
||||
_nick_alternate_number_ (integer) +
|
||||
_nick_ (string) +
|
||||
_nick_modes_ (string) +
|
||||
_nick_host_ (string) +
|
||||
_checking_cap_ls_ (integer) +
|
||||
_cap_ls_ (hashtable) +
|
||||
_checking_cap_list_ (integer) +
|
||||
|
||||
@@ -243,6 +243,7 @@ _nick_first_tried_ (integer) +
|
||||
_nick_alternate_number_ (integer) +
|
||||
_nick_ (string) +
|
||||
_nick_modes_ (string) +
|
||||
_nick_host_ (string) +
|
||||
_checking_cap_ls_ (integer) +
|
||||
_cap_ls_ (hashtable) +
|
||||
_checking_cap_list_ (integer) +
|
||||
|
||||
@@ -243,6 +243,7 @@ _nick_first_tried_ (integer) +
|
||||
_nick_alternate_number_ (integer) +
|
||||
_nick_ (string) +
|
||||
_nick_modes_ (string) +
|
||||
_nick_host_ (string) +
|
||||
_checking_cap_ls_ (integer) +
|
||||
_cap_ls_ (hashtable) +
|
||||
_checking_cap_list_ (integer) +
|
||||
|
||||
@@ -183,6 +183,26 @@ irc_nick_set_prefixes (struct t_irc_server *server, struct t_irc_nick *nick,
|
||||
irc_nick_set_current_prefix (nick);
|
||||
}
|
||||
|
||||
/*
|
||||
* Sets host for nick.
|
||||
*/
|
||||
|
||||
void
|
||||
irc_nick_set_host (struct t_irc_nick *nick, const char *host)
|
||||
{
|
||||
/* if host is the same, just return */
|
||||
if ((!nick->host && !host)
|
||||
|| (nick->host && host && strcmp (nick->host, host) == 0))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/* update the host in nick */
|
||||
if (nick->host)
|
||||
free (nick->host);
|
||||
nick->host = (host) ? strdup (host) : NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Checks if nick is "op" (or better than "op", for example channel admin or
|
||||
* channel owner).
|
||||
|
||||
@@ -50,6 +50,7 @@ extern int irc_nick_valid (struct t_irc_channel *channel,
|
||||
extern int irc_nick_is_nick (const char *string);
|
||||
extern char *irc_nick_find_color (const char *nickname);
|
||||
extern char *irc_nick_find_color_name (const char *nickname);
|
||||
extern void irc_nick_set_host (struct t_irc_nick *nick, const char *host);
|
||||
extern int irc_nick_is_op (struct t_irc_server *server,
|
||||
struct t_irc_nick *nick);
|
||||
extern int irc_nick_has_prefix_mode (struct t_irc_server *server,
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -735,6 +735,14 @@ irc_server_set_nick (struct t_irc_server *server, const char *nick)
|
||||
{
|
||||
struct t_irc_channel *ptr_channel;
|
||||
|
||||
/* if nick is the same, just return */
|
||||
if ((!server->nick && !nick)
|
||||
|| (server->nick && nick && strcmp (server->nick, nick) == 0))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/* update the nick in server */
|
||||
if (server->nick)
|
||||
free (server->nick);
|
||||
server->nick = (nick) ? strdup (nick) : NULL;
|
||||
@@ -750,6 +758,37 @@ irc_server_set_nick (struct t_irc_server *server, const char *nick)
|
||||
weechat_bar_item_update ("input_prompt");
|
||||
}
|
||||
|
||||
/*
|
||||
* Sets nick host for server.
|
||||
*/
|
||||
|
||||
void
|
||||
irc_server_set_nick_host (struct t_irc_server *server, const char *host)
|
||||
{
|
||||
struct t_irc_channel *ptr_channel;
|
||||
|
||||
/* if host is the same, just return */
|
||||
if ((!server->nick_host && !host)
|
||||
|| (server->nick_host && host && strcmp (server->nick_host, host) == 0))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/* update the nick host in server */
|
||||
if (server->nick_host)
|
||||
free (server->nick_host);
|
||||
server->nick_host = (host) ? strdup (host) : NULL;
|
||||
|
||||
/* set local variable "nick_host" for server and all channels/pv */
|
||||
weechat_buffer_set (server->buffer, "localvar_set_nick_host", host);
|
||||
for (ptr_channel = server->channels; ptr_channel;
|
||||
ptr_channel = ptr_channel->next_channel)
|
||||
{
|
||||
weechat_buffer_set (ptr_channel->buffer,
|
||||
"localvar_set_nick_host", host);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Gets index of nick in array "nicks_array".
|
||||
*
|
||||
@@ -1335,6 +1374,7 @@ irc_server_alloc (const char *name)
|
||||
new_server->nick_alternate_number = -1;
|
||||
new_server->nick = NULL;
|
||||
new_server->nick_modes = NULL;
|
||||
new_server->nick_host = NULL;
|
||||
new_server->checking_cap_ls = 0;
|
||||
new_server->cap_ls = weechat_hashtable_new (32,
|
||||
WEECHAT_HASHTABLE_STRING,
|
||||
@@ -1862,6 +1902,8 @@ irc_server_free_data (struct t_irc_server *server)
|
||||
free (server->nick);
|
||||
if (server->nick_modes)
|
||||
free (server->nick_modes);
|
||||
if (server->nick_host)
|
||||
free (server->nick_host);
|
||||
if (server->isupport)
|
||||
free (server->isupport);
|
||||
if (server->prefix_modes)
|
||||
@@ -5069,6 +5111,11 @@ irc_server_disconnect (struct t_irc_server *server, int switch_address,
|
||||
weechat_bar_item_update ("input_prompt");
|
||||
weechat_bar_item_update ("irc_nick_modes");
|
||||
}
|
||||
if (server->nick_host)
|
||||
{
|
||||
free (server->nick_host);
|
||||
server->nick_host = NULL;
|
||||
}
|
||||
server->checking_cap_ls = 0;
|
||||
weechat_hashtable_remove_all (server->cap_ls);
|
||||
server->checking_cap_list = 0;
|
||||
@@ -5627,6 +5674,7 @@ irc_server_hdata_server_cb (const void *pointer, void *data,
|
||||
WEECHAT_HDATA_VAR(struct t_irc_server, nick_alternate_number, INTEGER, 0, NULL, NULL);
|
||||
WEECHAT_HDATA_VAR(struct t_irc_server, nick, STRING, 0, NULL, NULL);
|
||||
WEECHAT_HDATA_VAR(struct t_irc_server, nick_modes, STRING, 0, NULL, NULL);
|
||||
WEECHAT_HDATA_VAR(struct t_irc_server, nick_host, STRING, 0, NULL, NULL);
|
||||
WEECHAT_HDATA_VAR(struct t_irc_server, checking_cap_ls, INTEGER, 0, NULL, NULL);
|
||||
WEECHAT_HDATA_VAR(struct t_irc_server, cap_ls, HASHTABLE, 0, NULL, NULL);
|
||||
WEECHAT_HDATA_VAR(struct t_irc_server, checking_cap_list, INTEGER, 0, NULL, NULL);
|
||||
@@ -5852,6 +5900,8 @@ irc_server_add_to_infolist (struct t_infolist *infolist,
|
||||
return 0;
|
||||
if (!weechat_infolist_new_var_string (ptr_item, "nick_modes", server->nick_modes))
|
||||
return 0;
|
||||
if (!weechat_infolist_new_var_string (ptr_item, "nick_host", server->nick_host))
|
||||
return 0;
|
||||
if (!weechat_infolist_new_var_integer (ptr_item, "checking_cap_ls", server->checking_cap_ls))
|
||||
return 0;
|
||||
if (!weechat_hashtable_add_to_infolist (server->cap_ls, ptr_item, "cap_ls"))
|
||||
@@ -6238,6 +6288,7 @@ irc_server_print_log ()
|
||||
weechat_log_printf (" nick_alternate_number: %d", ptr_server->nick_alternate_number);
|
||||
weechat_log_printf (" nick . . . . . . . . : '%s'", ptr_server->nick);
|
||||
weechat_log_printf (" nick_modes . . . . . : '%s'", ptr_server->nick_modes);
|
||||
weechat_log_printf (" nick_host. . . . . . : '%s'", ptr_server->nick_host);
|
||||
weechat_log_printf (" checking_cap_ls. . . : %d", ptr_server->checking_cap_ls);
|
||||
weechat_log_printf (" cap_ls . . . . . . . : 0x%lx (hashtable: '%s')",
|
||||
ptr_server->cap_ls,
|
||||
|
||||
@@ -192,6 +192,7 @@ struct t_irc_server
|
||||
/* (nick____1, nick____2, ...) */
|
||||
char *nick; /* current nickname */
|
||||
char *nick_modes; /* nick modes */
|
||||
char *nick_host; /* nick host (set if known) */
|
||||
int checking_cap_ls; /* 1 if checking supported capabilities */
|
||||
struct t_hashtable *cap_ls; /* list of supported capabilities */
|
||||
int checking_cap_list; /* 1 if checking enabled capabilities */
|
||||
@@ -290,8 +291,12 @@ extern int irc_server_sasl_enabled (struct t_irc_server *server);
|
||||
extern char *irc_server_get_name_without_port (const char *name);
|
||||
extern int irc_server_set_addresses (struct t_irc_server *server,
|
||||
const char *addresses);
|
||||
extern void irc_server_set_nicks (struct t_irc_server *server, const char *nicks);
|
||||
extern void irc_server_set_nick (struct t_irc_server *server, const char *nick);
|
||||
extern void irc_server_set_nicks (struct t_irc_server *server,
|
||||
const char *nicks);
|
||||
extern void irc_server_set_nick (struct t_irc_server *server,
|
||||
const char *nick);
|
||||
extern void irc_server_set_nick_host (struct t_irc_server *server,
|
||||
const char *nick_host);
|
||||
extern const char *irc_server_get_alternate_nick (struct t_irc_server *server);
|
||||
extern const char *irc_server_get_isupport_value (struct t_irc_server *server,
|
||||
const char *feature);
|
||||
|
||||
@@ -420,6 +420,9 @@ irc_upgrade_read_cb (const void *pointer, void *data,
|
||||
str = weechat_infolist_string (infolist, "nick_modes");
|
||||
if (str)
|
||||
irc_upgrade_current_server->nick_modes = strdup (str);
|
||||
str = weechat_infolist_string (infolist, "nick_host");
|
||||
if (str)
|
||||
irc_upgrade_current_server->nick_host = strdup (str);
|
||||
/*
|
||||
* "cap_ls" and "cap_list" replace "cap_away_notify",
|
||||
* "cap_account_notify" and "cap_extended_join"
|
||||
|
||||
Reference in New Issue
Block a user