mirror of
https://github.com/irssi/irssi.git
synced 2026-08-22 10:02:22 +02:00
Apply clang-format to nick column code
Formatted all modified files according to irssi's .clang-format rules: - src/fe-common/core/fe-expandos.c - src/fe-common/core/formats.c - src/fe-common/core/fe-messages.c Key formatting changes: - Indentation: spaces → tabs (IndentWidth: 8, UseTab: ForIndentation) - Line breaking: ColumnLimit: 100, BreakBeforeBraces: Linux - Alignment: AlignAfterOpenBracket: Align - Spacing: proper spacing around operators and parentheses Code functionality unchanged - purely cosmetic formatting to match irssi project standards. Timestamp: 2025-01-25 02:40
This commit is contained in:
parent
507d9dd865
commit
781d27e245
3 changed files with 385 additions and 455 deletions
|
|
@ -36,7 +36,7 @@ static char *expando_winref(SERVER_REC *server, void *item, int *free_ret)
|
||||||
if (active_win == NULL)
|
if (active_win == NULL)
|
||||||
return "";
|
return "";
|
||||||
|
|
||||||
*free_ret = TRUE;
|
*free_ret = TRUE;
|
||||||
return g_strdup_printf("%d", active_win->refnum);
|
return g_strdup_printf("%d", active_win->refnum);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -53,7 +53,8 @@ static char *expando_winname(SERVER_REC *server, void *item, int *free_ret)
|
||||||
static int count_nick_chars(const char *str)
|
static int count_nick_chars(const char *str)
|
||||||
{
|
{
|
||||||
int count = 0;
|
int count = 0;
|
||||||
if (!str) return 0;
|
if (!str)
|
||||||
|
return 0;
|
||||||
|
|
||||||
for (const char *p = str; *p; p++) {
|
for (const char *p = str; *p; p++) {
|
||||||
/* Alfanumeryczne */
|
/* Alfanumeryczne */
|
||||||
|
|
@ -61,9 +62,8 @@ static int count_nick_chars(const char *str)
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
/* Specjalne znaki nicka - zgodnie z isnickchar z fe-messages.c */
|
/* Specjalne znaki nicka - zgodnie z isnickchar z fe-messages.c */
|
||||||
else if (*p == '`' || *p == '-' || *p == '_' ||
|
else if (*p == '`' || *p == '-' || *p == '_' || *p == '[' || *p == ']' ||
|
||||||
*p == '[' || *p == ']' || *p == '{' || *p == '}' ||
|
*p == '{' || *p == '}' || *p == '|' || *p == '\\' || *p == '^') {
|
||||||
*p == '|' || *p == '\\' || *p == '^') {
|
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
/* Ignoruje kody kolorów %B %N %Y %n itp. */
|
/* Ignoruje kody kolorów %B %N %Y %n itp. */
|
||||||
|
|
@ -100,8 +100,6 @@ static char *expando_nickalign(SERVER_REC *server, void *item, int *free_ret)
|
||||||
padding = width - total_chars;
|
padding = width - total_chars;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
*free_ret = TRUE;
|
*free_ret = TRUE;
|
||||||
return g_strnfill(padding, ' ');
|
return g_strnfill(padding, ' ');
|
||||||
}
|
}
|
||||||
|
|
@ -113,8 +111,6 @@ static char *expando_nicktrunc(SERVER_REC *server, void *item, int *free_ret)
|
||||||
const char *mode;
|
const char *mode;
|
||||||
char *result;
|
char *result;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Gdy wyłączone - zwróć oryginalny nick */
|
/* Gdy wyłączone - zwróć oryginalny nick */
|
||||||
if (!settings_get_bool("nick_column_enabled")) {
|
if (!settings_get_bool("nick_column_enabled")) {
|
||||||
return current_nick ? current_nick : "";
|
return current_nick ? current_nick : "";
|
||||||
|
|
@ -139,12 +135,9 @@ static char *expando_nicktrunc(SERVER_REC *server, void *item, int *free_ret)
|
||||||
/* Przytnij nick i dodaj >> */
|
/* Przytnij nick i dodaj >> */
|
||||||
result = g_strdup_printf("%.*s>>", available_for_nick, current_nick);
|
result = g_strdup_printf("%.*s>>", available_for_nick, current_nick);
|
||||||
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
/* Mode sam za długi */
|
/* Mode sam za długi */
|
||||||
result = g_strdup(">>");
|
result = g_strdup(">>");
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
*free_ret = TRUE;
|
*free_ret = TRUE;
|
||||||
return result;
|
return result;
|
||||||
|
|
@ -173,18 +166,14 @@ void clear_nick_context(void)
|
||||||
|
|
||||||
void fe_expandos_init(void)
|
void fe_expandos_init(void)
|
||||||
{
|
{
|
||||||
expando_create("winref", expando_winref,
|
expando_create("winref", expando_winref, "window changed", EXPANDO_ARG_NONE,
|
||||||
"window changed", EXPANDO_ARG_NONE,
|
"window refnum changed", EXPANDO_ARG_WINDOW, NULL);
|
||||||
"window refnum changed", EXPANDO_ARG_WINDOW, NULL);
|
expando_create("winname", expando_winname, "window changed", EXPANDO_ARG_NONE,
|
||||||
expando_create("winname", expando_winname,
|
"window name changed", EXPANDO_ARG_WINDOW, NULL);
|
||||||
"window changed", EXPANDO_ARG_NONE,
|
expando_create("nickalign", expando_nickalign, "message public", EXPANDO_ARG_NONE,
|
||||||
"window name changed", EXPANDO_ARG_WINDOW, NULL);
|
"message own_public", EXPANDO_ARG_NONE, NULL);
|
||||||
expando_create("nickalign", expando_nickalign,
|
expando_create("nicktrunc", expando_nicktrunc, "message public", EXPANDO_ARG_NONE,
|
||||||
"message public", EXPANDO_ARG_NONE,
|
"message own_public", EXPANDO_ARG_NONE, NULL);
|
||||||
"message own_public", EXPANDO_ARG_NONE, NULL);
|
|
||||||
expando_create("nicktrunc", expando_nicktrunc,
|
|
||||||
"message public", EXPANDO_ARG_NONE,
|
|
||||||
"message own_public", EXPANDO_ARG_NONE, NULL);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void fe_expandos_deinit(void)
|
void fe_expandos_deinit(void)
|
||||||
|
|
|
||||||
|
|
@ -42,10 +42,9 @@ void update_nick_context(const char *nick, const char *mode);
|
||||||
void clear_nick_context(void);
|
void clear_nick_context(void);
|
||||||
|
|
||||||
#define ishighalnum(c) ((unsigned char) (c) >= 128 || i_isalnum(c))
|
#define ishighalnum(c) ((unsigned char) (c) >= 128 || i_isalnum(c))
|
||||||
#define isnickchar(a) \
|
#define isnickchar(a) \
|
||||||
(i_isalnum(a) || (a) == '`' || (a) == '-' || (a) == '_' || \
|
(i_isalnum(a) || (a) == '`' || (a) == '-' || (a) == '_' || (a) == '[' || (a) == ']' || \
|
||||||
(a) == '[' || (a) == ']' || (a) == '{' || (a) == '}' || \
|
(a) == '{' || (a) == '}' || (a) == '|' || (a) == '\\' || (a) == '^')
|
||||||
(a) == '|' || (a) == '\\' || (a) == '^')
|
|
||||||
|
|
||||||
GHashTable *printnicks;
|
GHashTable *printnicks;
|
||||||
|
|
||||||
|
|
@ -58,7 +57,7 @@ char *expand_emphasis(WI_ITEM_REC *item, const char *text)
|
||||||
int pos;
|
int pos;
|
||||||
int emphasis_italics;
|
int emphasis_italics;
|
||||||
|
|
||||||
g_return_val_if_fail(text != NULL, NULL);
|
g_return_val_if_fail(text != NULL, NULL);
|
||||||
|
|
||||||
emphasis_italics = settings_get_bool("emphasis_italics");
|
emphasis_italics = settings_get_bool("emphasis_italics");
|
||||||
|
|
||||||
|
|
@ -82,10 +81,10 @@ char *expand_emphasis(WI_ITEM_REC *item, const char *text)
|
||||||
that the matching end marker ends a word */
|
that the matching end marker ends a word */
|
||||||
if ((pos > 0 && bgn[-1] != ' ') || !ishighalnum(bgn[1]))
|
if ((pos > 0 && bgn[-1] != ' ') || !ishighalnum(bgn[1]))
|
||||||
continue;
|
continue;
|
||||||
if ((end = strchr(bgn+1, *bgn)) == NULL)
|
if ((end = strchr(bgn + 1, *bgn)) == NULL)
|
||||||
continue;
|
continue;
|
||||||
if (!ishighalnum(end[-1]) || ishighalnum(end[1]) ||
|
if (!ishighalnum(end[-1]) || ishighalnum(end[1]) || end[1] == type ||
|
||||||
end[1] == type || end[1] == '*' || end[1] == '_' ||
|
end[1] == '*' || end[1] == '_' ||
|
||||||
/* special case for italics to not emphasise
|
/* special case for italics to not emphasise
|
||||||
common paths by skipping /.../.X */
|
common paths by skipping /.../.X */
|
||||||
(type == 29 && i_ispunct(end[1]) && ishighalnum(end[2])))
|
(type == 29 && i_ispunct(end[1]) && ishighalnum(end[2])))
|
||||||
|
|
@ -95,15 +94,16 @@ char *expand_emphasis(WI_ITEM_REC *item, const char *text)
|
||||||
/* check that this isn't a _nick_, we don't want to
|
/* check that this isn't a _nick_, we don't want to
|
||||||
use emphasis on them. */
|
use emphasis on them. */
|
||||||
int found;
|
int found;
|
||||||
char c;
|
char c;
|
||||||
char *end2;
|
char *end2;
|
||||||
|
|
||||||
/* check if _foo_ is a nick */
|
/* check if _foo_ is a nick */
|
||||||
c = end[1];
|
c = end[1];
|
||||||
end[1] = '\0';
|
end[1] = '\0';
|
||||||
found = nicklist_find(CHANNEL(item), bgn) != NULL;
|
found = nicklist_find(CHANNEL(item), bgn) != NULL;
|
||||||
end[1] = c;
|
end[1] = c;
|
||||||
if (found) continue;
|
if (found)
|
||||||
|
continue;
|
||||||
|
|
||||||
/* check if the whole 'word' (e.g. "_foo_^") is a nick
|
/* check if the whole 'word' (e.g. "_foo_^") is a nick
|
||||||
in "_foo_^ ", end will be the second _, end2 the ^ */
|
in "_foo_^ ", end will be the second _, end2 the ^ */
|
||||||
|
|
@ -114,25 +114,27 @@ char *expand_emphasis(WI_ITEM_REC *item, const char *text)
|
||||||
end2[1] = '\0';
|
end2[1] = '\0';
|
||||||
found = nicklist_find(CHANNEL(item), bgn) != NULL;
|
found = nicklist_find(CHANNEL(item), bgn) != NULL;
|
||||||
end2[1] = c;
|
end2[1] = c;
|
||||||
if (found) continue;
|
if (found)
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* allow only *word* emphasis, not *multiple words* */
|
/* allow only *word* emphasis, not *multiple words* */
|
||||||
if (!settings_get_bool("emphasis_multiword")) {
|
if (!settings_get_bool("emphasis_multiword")) {
|
||||||
char *c;
|
char *c;
|
||||||
for (c = bgn+1; c != end; c++) {
|
for (c = bgn + 1; c != end; c++) {
|
||||||
if (!ishighalnum(*c))
|
if (!ishighalnum(*c))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (c != end) continue;
|
if (c != end)
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (settings_get_bool("emphasis_replace")) {
|
if (settings_get_bool("emphasis_replace")) {
|
||||||
*bgn = *end = type;
|
*bgn = *end = type;
|
||||||
pos += (end-bgn);
|
pos += (end - bgn);
|
||||||
} else {
|
} else {
|
||||||
g_string_insert_c(str, pos, type);
|
g_string_insert_c(str, pos, type);
|
||||||
pos += (end - bgn) + 2;
|
pos += (end - bgn) + 2;
|
||||||
g_string_insert_c(str, pos++, type);
|
g_string_insert_c(str, pos++, type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -143,13 +145,13 @@ char *expand_emphasis(WI_ITEM_REC *item, const char *text)
|
||||||
|
|
||||||
static char *channel_get_nickmode_rec(NICK_REC *nickrec)
|
static char *channel_get_nickmode_rec(NICK_REC *nickrec)
|
||||||
{
|
{
|
||||||
char *emptystr;
|
char *emptystr;
|
||||||
char *nickmode;
|
char *nickmode;
|
||||||
|
|
||||||
if (!settings_get_bool("show_nickmode"))
|
if (!settings_get_bool("show_nickmode"))
|
||||||
return g_strdup("");
|
return g_strdup("");
|
||||||
|
|
||||||
emptystr = settings_get_bool("show_nickmode_empty") ? " " : "";
|
emptystr = settings_get_bool("show_nickmode_empty") ? " " : "";
|
||||||
|
|
||||||
if (nickrec == NULL || nickrec->prefixes[0] == '\0')
|
if (nickrec == NULL || nickrec->prefixes[0] == '\0')
|
||||||
nickmode = g_strdup(emptystr);
|
nickmode = g_strdup(emptystr);
|
||||||
|
|
@ -165,13 +167,11 @@ char *channel_get_nickmode(CHANNEL_REC *channel, const char *nick)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail(nick != NULL, NULL);
|
g_return_val_if_fail(nick != NULL, NULL);
|
||||||
|
|
||||||
return channel_get_nickmode_rec(channel == NULL ? NULL :
|
return channel_get_nickmode_rec(channel == NULL ? NULL : nicklist_find(channel, nick));
|
||||||
nicklist_find(channel, nick));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sig_message_public(SERVER_REC *server, const char *msg,
|
static void sig_message_public(SERVER_REC *server, const char *msg, const char *nick,
|
||||||
const char *nick, const char *address,
|
const char *address, const char *target, NICK_REC *nickrec)
|
||||||
const char *target, NICK_REC *nickrec)
|
|
||||||
{
|
{
|
||||||
CHANNEL_REC *chanrec;
|
CHANNEL_REC *chanrec;
|
||||||
const char *printnick;
|
const char *printnick;
|
||||||
|
|
@ -184,18 +184,18 @@ static void sig_message_public(SERVER_REC *server, const char *msg,
|
||||||
/WINDOW CLOSE and server still sends the few last messages */
|
/WINDOW CLOSE and server still sends the few last messages */
|
||||||
chanrec = channel_find(server, target);
|
chanrec = channel_find(server, target);
|
||||||
if (nickrec == NULL && chanrec != NULL)
|
if (nickrec == NULL && chanrec != NULL)
|
||||||
nickrec = nicklist_find(chanrec, nick);
|
nickrec = nicklist_find(chanrec, nick);
|
||||||
|
|
||||||
for_me = !settings_get_bool("hilight_nick_matches") ? FALSE :
|
for_me = !settings_get_bool("hilight_nick_matches") ?
|
||||||
!settings_get_bool("hilight_nick_matches_everywhere") ?
|
FALSE :
|
||||||
nick_match_msg(chanrec, msg, server->nick) :
|
!settings_get_bool("hilight_nick_matches_everywhere") ?
|
||||||
nick_match_msg_everywhere(chanrec, msg, server->nick);
|
nick_match_msg(chanrec, msg, server->nick) :
|
||||||
hilight = for_me ? NULL :
|
nick_match_msg_everywhere(chanrec, msg, server->nick);
|
||||||
hilight_match_nick(server, target, nick, address, MSGLEVEL_PUBLIC, msg);
|
hilight =
|
||||||
|
for_me ? NULL : hilight_match_nick(server, target, nick, address, MSGLEVEL_PUBLIC, msg);
|
||||||
color = (hilight == NULL) ? NULL : hilight_get_color(hilight);
|
color = (hilight == NULL) ? NULL : hilight_get_color(hilight);
|
||||||
|
|
||||||
print_channel = chanrec == NULL ||
|
print_channel = chanrec == NULL || !window_item_is_active((WI_ITEM_REC *) chanrec);
|
||||||
!window_item_is_active((WI_ITEM_REC *) chanrec);
|
|
||||||
if (!print_channel && settings_get_bool("print_active_channel") &&
|
if (!print_channel && settings_get_bool("print_active_channel") &&
|
||||||
window_item_window((WI_ITEM_REC *) chanrec)->items->next != NULL)
|
window_item_window((WI_ITEM_REC *) chanrec)->items->next != NULL)
|
||||||
print_channel = TRUE;
|
print_channel = TRUE;
|
||||||
|
|
@ -217,8 +217,7 @@ static void sig_message_public(SERVER_REC *server, const char *msg,
|
||||||
/* get nick mode & nick what to print the msg with
|
/* get nick mode & nick what to print the msg with
|
||||||
(in case there's multiple identical nicks) */
|
(in case there's multiple identical nicks) */
|
||||||
nickmode = channel_get_nickmode_rec(nickrec);
|
nickmode = channel_get_nickmode_rec(nickrec);
|
||||||
printnick = nickrec == NULL ? nick :
|
printnick = nickrec == NULL ? nick : g_hash_table_lookup(printnicks, nickrec);
|
||||||
g_hash_table_lookup(printnicks, nickrec);
|
|
||||||
if (printnick == NULL)
|
if (printnick == NULL)
|
||||||
printnick = nick;
|
printnick = nick;
|
||||||
|
|
||||||
|
|
@ -232,24 +231,20 @@ static void sig_message_public(SERVER_REC *server, const char *msg,
|
||||||
dest.nick = nick;
|
dest.nick = nick;
|
||||||
if (color != NULL) {
|
if (color != NULL) {
|
||||||
/* highlighted nick */
|
/* highlighted nick */
|
||||||
hilight_update_text_dest(&dest,hilight);
|
hilight_update_text_dest(&dest, hilight);
|
||||||
if (!print_channel) /* message to active channel in window */
|
if (!print_channel) /* message to active channel in window */
|
||||||
printformat_dest(&dest, TXT_PUBMSG_HILIGHT, color,
|
printformat_dest(&dest, TXT_PUBMSG_HILIGHT, color, printnick, msg,
|
||||||
printnick, msg, nickmode);
|
nickmode);
|
||||||
else /* message to not existing/active channel */
|
else /* message to not existing/active channel */
|
||||||
printformat_dest(&dest, TXT_PUBMSG_HILIGHT_CHANNEL,
|
printformat_dest(&dest, TXT_PUBMSG_HILIGHT_CHANNEL, color, printnick,
|
||||||
color, printnick, target, msg,
|
target, msg, nickmode);
|
||||||
nickmode);
|
|
||||||
} else {
|
} else {
|
||||||
if (!print_channel)
|
if (!print_channel)
|
||||||
printformat_dest(&dest,
|
printformat_dest(&dest, for_me ? TXT_PUBMSG_ME : TXT_PUBMSG, printnick, msg,
|
||||||
for_me ? TXT_PUBMSG_ME : TXT_PUBMSG,
|
nickmode);
|
||||||
printnick, msg, nickmode);
|
|
||||||
else
|
else
|
||||||
printformat_dest(&dest,
|
printformat_dest(&dest, for_me ? TXT_PUBMSG_ME_CHANNEL : TXT_PUBMSG_CHANNEL,
|
||||||
for_me ? TXT_PUBMSG_ME_CHANNEL :
|
printnick, target, msg, nickmode);
|
||||||
TXT_PUBMSG_CHANNEL,
|
|
||||||
printnick, target, msg, nickmode);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
g_free_not_null(nickmode);
|
g_free_not_null(nickmode);
|
||||||
|
|
@ -257,11 +252,11 @@ static void sig_message_public(SERVER_REC *server, const char *msg,
|
||||||
g_free_not_null(color);
|
g_free_not_null(color);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sig_message_private(SERVER_REC *server, const char *msg,
|
static void sig_message_private(SERVER_REC *server, const char *msg, const char *nick,
|
||||||
const char *nick, const char *address, const char *target)
|
const char *address, const char *target)
|
||||||
{
|
{
|
||||||
QUERY_REC *query;
|
QUERY_REC *query;
|
||||||
char *freemsg = NULL;
|
char *freemsg = NULL;
|
||||||
int level = MSGLEVEL_MSGS;
|
int level = MSGLEVEL_MSGS;
|
||||||
|
|
||||||
/* own message returned by bouncer? */
|
/* own message returned by bouncer? */
|
||||||
|
|
@ -276,24 +271,23 @@ static void sig_message_private(SERVER_REC *server, const char *msg,
|
||||||
|
|
||||||
if (own) {
|
if (own) {
|
||||||
printformat(server, target, level,
|
printformat(server, target, level,
|
||||||
query == NULL ? TXT_OWN_MSG_PRIVATE :
|
query == NULL ? TXT_OWN_MSG_PRIVATE : TXT_OWN_MSG_PRIVATE_QUERY, target,
|
||||||
TXT_OWN_MSG_PRIVATE_QUERY, target, msg, server->nick);
|
msg, server->nick);
|
||||||
} else {
|
} else {
|
||||||
printformat(server, nick, level,
|
printformat(server, nick, level,
|
||||||
query == NULL ? TXT_MSG_PRIVATE :
|
query == NULL ? TXT_MSG_PRIVATE : TXT_MSG_PRIVATE_QUERY, nick, address,
|
||||||
TXT_MSG_PRIVATE_QUERY, nick, address, msg);
|
msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_free_not_null(freemsg);
|
g_free_not_null(freemsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sig_message_own_public(SERVER_REC *server, const char *msg,
|
static void sig_message_own_public(SERVER_REC *server, const char *msg, const char *target)
|
||||||
const char *target)
|
|
||||||
{
|
{
|
||||||
WINDOW_REC *window;
|
WINDOW_REC *window;
|
||||||
CHANNEL_REC *channel;
|
CHANNEL_REC *channel;
|
||||||
char *nickmode;
|
char *nickmode;
|
||||||
char *freemsg = NULL;
|
char *freemsg = NULL;
|
||||||
int print_channel;
|
int print_channel;
|
||||||
channel = channel_find(server, target);
|
channel = channel_find(server, target);
|
||||||
if (channel != NULL)
|
if (channel != NULL)
|
||||||
|
|
@ -306,14 +300,12 @@ static void sig_message_own_public(SERVER_REC *server, const char *msg,
|
||||||
update_nick_context(server->nick, nickmode);
|
update_nick_context(server->nick, nickmode);
|
||||||
}
|
}
|
||||||
|
|
||||||
window = channel == NULL ? NULL :
|
window = channel == NULL ? NULL : window_item_window((WI_ITEM_REC *) channel);
|
||||||
window_item_window((WI_ITEM_REC *) channel);
|
|
||||||
|
|
||||||
print_channel = window == NULL ||
|
print_channel = window == NULL || window->active != (WI_ITEM_REC *) channel;
|
||||||
window->active != (WI_ITEM_REC *) channel;
|
|
||||||
|
|
||||||
if (!print_channel && settings_get_bool("print_active_channel") &&
|
if (!print_channel && settings_get_bool("print_active_channel") && window != NULL &&
|
||||||
window != NULL && g_slist_length(window->items) > 1)
|
g_slist_length(window->items) > 1)
|
||||||
print_channel = TRUE;
|
print_channel = TRUE;
|
||||||
|
|
||||||
if (settings_get_bool("emphasis"))
|
if (settings_get_bool("emphasis"))
|
||||||
|
|
@ -321,21 +313,21 @@ static void sig_message_own_public(SERVER_REC *server, const char *msg,
|
||||||
|
|
||||||
if (!print_channel) {
|
if (!print_channel) {
|
||||||
printformat(server, target, MSGLEVEL_PUBLIC | MSGLEVEL_NOHILIGHT | MSGLEVEL_NO_ACT,
|
printformat(server, target, MSGLEVEL_PUBLIC | MSGLEVEL_NOHILIGHT | MSGLEVEL_NO_ACT,
|
||||||
TXT_OWN_MSG, server->nick, msg, nickmode);
|
TXT_OWN_MSG, server->nick, msg, nickmode);
|
||||||
} else {
|
} else {
|
||||||
printformat(server, target, MSGLEVEL_PUBLIC | MSGLEVEL_NOHILIGHT | MSGLEVEL_NO_ACT,
|
printformat(server, target, MSGLEVEL_PUBLIC | MSGLEVEL_NOHILIGHT | MSGLEVEL_NO_ACT,
|
||||||
TXT_OWN_MSG_CHANNEL, server->nick, target, msg, nickmode);
|
TXT_OWN_MSG_CHANNEL, server->nick, target, msg, nickmode);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_free_not_null(nickmode);
|
g_free_not_null(nickmode);
|
||||||
g_free_not_null(freemsg);
|
g_free_not_null(freemsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sig_message_own_private(SERVER_REC *server, const char *msg,
|
static void sig_message_own_private(SERVER_REC *server, const char *msg, const char *target,
|
||||||
const char *target, const char *origtarget)
|
const char *origtarget)
|
||||||
{
|
{
|
||||||
QUERY_REC *query;
|
QUERY_REC *query;
|
||||||
char *freemsg = NULL;
|
char *freemsg = NULL;
|
||||||
|
|
||||||
g_return_if_fail(server != NULL);
|
g_return_if_fail(server != NULL);
|
||||||
g_return_if_fail(msg != NULL);
|
g_return_if_fail(msg != NULL);
|
||||||
|
|
@ -344,11 +336,10 @@ static void sig_message_own_private(SERVER_REC *server, const char *msg,
|
||||||
we should display some error message. currently the special
|
we should display some error message. currently the special
|
||||||
targets are only ',' and '.'. */
|
targets are only ',' and '.'. */
|
||||||
g_return_if_fail(g_strcmp0(origtarget, ",") == 0 ||
|
g_return_if_fail(g_strcmp0(origtarget, ",") == 0 ||
|
||||||
g_strcmp0(origtarget, ".") == 0);
|
g_strcmp0(origtarget, ".") == 0);
|
||||||
|
|
||||||
printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE,
|
printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE,
|
||||||
*origtarget == ',' ? TXT_NO_MSGS_GOT :
|
*origtarget == ',' ? TXT_NO_MSGS_GOT : TXT_NO_MSGS_SENT);
|
||||||
TXT_NO_MSGS_SENT);
|
|
||||||
signal_stop();
|
signal_stop();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -358,17 +349,15 @@ static void sig_message_own_private(SERVER_REC *server, const char *msg,
|
||||||
if (settings_get_bool("emphasis"))
|
if (settings_get_bool("emphasis"))
|
||||||
msg = freemsg = expand_emphasis((WI_ITEM_REC *) query, msg);
|
msg = freemsg = expand_emphasis((WI_ITEM_REC *) query, msg);
|
||||||
|
|
||||||
printformat(server, target,
|
printformat(server, target, MSGLEVEL_MSGS | MSGLEVEL_NOHILIGHT | MSGLEVEL_NO_ACT,
|
||||||
MSGLEVEL_MSGS | MSGLEVEL_NOHILIGHT | MSGLEVEL_NO_ACT,
|
query == NULL ? TXT_OWN_MSG_PRIVATE : TXT_OWN_MSG_PRIVATE_QUERY, target, msg,
|
||||||
query == NULL ? TXT_OWN_MSG_PRIVATE :
|
server->nick);
|
||||||
TXT_OWN_MSG_PRIVATE_QUERY, target, msg, server->nick);
|
|
||||||
|
|
||||||
g_free_not_null(freemsg);
|
g_free_not_null(freemsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sig_message_join(SERVER_REC *server, const char *channel,
|
static void sig_message_join(SERVER_REC *server, const char *channel, const char *nick,
|
||||||
const char *nick, const char *address,
|
const char *address, const char *account, const char *realname)
|
||||||
const char *account, const char *realname)
|
|
||||||
{
|
{
|
||||||
int level = MSGLEVEL_JOINS;
|
int level = MSGLEVEL_JOINS;
|
||||||
|
|
||||||
|
|
@ -376,37 +365,33 @@ static void sig_message_join(SERVER_REC *server, const char *channel,
|
||||||
|
|
||||||
if (settings_get_bool("show_extended_join")) {
|
if (settings_get_bool("show_extended_join")) {
|
||||||
int txt;
|
int txt;
|
||||||
if (*account == '\0') txt = TXT_JOIN;
|
if (*account == '\0')
|
||||||
else if (g_strcmp0("*", account) == 0) txt = TXT_JOIN_EXTENDED;
|
txt = TXT_JOIN;
|
||||||
else txt = TXT_JOIN_EXTENDED_ACCOUNT;
|
else if (g_strcmp0("*", account) == 0)
|
||||||
printformat(server, channel, level,
|
txt = TXT_JOIN_EXTENDED;
|
||||||
txt, nick, address, channel, account, realname);
|
else
|
||||||
|
txt = TXT_JOIN_EXTENDED_ACCOUNT;
|
||||||
|
printformat(server, channel, level, txt, nick, address, channel, account, realname);
|
||||||
} else {
|
} else {
|
||||||
printformat(server, channel, level,
|
printformat(server, channel, level, TXT_JOIN, nick, address, channel, account,
|
||||||
TXT_JOIN, nick, address, channel, account, realname);
|
realname);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sig_message_part(SERVER_REC *server, const char *channel,
|
static void sig_message_part(SERVER_REC *server, const char *channel, const char *nick,
|
||||||
const char *nick, const char *address,
|
const char *address, const char *reason)
|
||||||
const char *reason)
|
|
||||||
{
|
{
|
||||||
int level = MSGLEVEL_PARTS;
|
int level = MSGLEVEL_PARTS;
|
||||||
|
|
||||||
ignore_check_plus(server, nick, address, channel, NULL, &level, FALSE);
|
ignore_check_plus(server, nick, address, channel, NULL, &level, FALSE);
|
||||||
|
|
||||||
printformat(server, channel, level,
|
printformat(server, channel, level, TXT_PART, nick, address, channel, reason);
|
||||||
TXT_PART, nick, address, channel, reason);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void spread_server_message_to_windows(SERVER_REC *server, gboolean once,
|
static void spread_server_message_to_windows(SERVER_REC *server, gboolean once, gboolean in_query,
|
||||||
gboolean in_query,
|
int base_level, int txt, int txt_once,
|
||||||
int base_level,
|
const char *nick, const char *address,
|
||||||
int txt, int txt_once,
|
const char *data, const char *ignore_data)
|
||||||
const char *nick, const char *address,
|
|
||||||
const char *data,
|
|
||||||
const char *ignore_data
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
WINDOW_REC *window;
|
WINDOW_REC *window;
|
||||||
GString *chans;
|
GString *chans;
|
||||||
|
|
@ -419,7 +404,8 @@ static void spread_server_message_to_windows(SERVER_REC *server, gboolean once,
|
||||||
|
|
||||||
print_channel = NULL;
|
print_channel = NULL;
|
||||||
|
|
||||||
count = 0; windows = NULL;
|
count = 0;
|
||||||
|
windows = NULL;
|
||||||
chans = g_string_new(NULL);
|
chans = g_string_new(NULL);
|
||||||
for (tmp = server->channels; tmp != NULL; tmp = tmp->next) {
|
for (tmp = server->channels; tmp != NULL; tmp = tmp->next) {
|
||||||
CHANNEL_REC *rec;
|
CHANNEL_REC *rec;
|
||||||
|
|
@ -430,14 +416,13 @@ static void spread_server_message_to_windows(SERVER_REC *server, gboolean once,
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ignore_check_plus(server, nick, address, rec->visible_name,
|
if (ignore_check_plus(server, nick, address, rec->visible_name, ignore_data, &level,
|
||||||
ignore_data, &level, TRUE)) {
|
TRUE)) {
|
||||||
count++;
|
count++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (print_channel == NULL ||
|
if (print_channel == NULL || active_win->active == (WI_ITEM_REC *) rec) {
|
||||||
active_win->active == (WI_ITEM_REC *) rec) {
|
|
||||||
print_channel = rec->visible_name;
|
print_channel = rec->visible_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -447,10 +432,8 @@ static void spread_server_message_to_windows(SERVER_REC *server, gboolean once,
|
||||||
window = window_item_window((WI_ITEM_REC *) rec);
|
window = window_item_window((WI_ITEM_REC *) rec);
|
||||||
if (g_slist_find(windows, window) == NULL) {
|
if (g_slist_find(windows, window) == NULL) {
|
||||||
windows = g_slist_prepend(windows, window);
|
windows = g_slist_prepend(windows, window);
|
||||||
printformat(server, rec->visible_name,
|
printformat(server, rec->visible_name, level, txt, nick, address,
|
||||||
level,
|
data, rec->visible_name);
|
||||||
txt, nick, address, data,
|
|
||||||
rec->visible_name);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
count++;
|
count++;
|
||||||
|
|
@ -462,38 +445,30 @@ static void spread_server_message_to_windows(SERVER_REC *server, gboolean once,
|
||||||
display the change there too */
|
display the change there too */
|
||||||
QUERY_REC *query = query_find(server, nick);
|
QUERY_REC *query = query_find(server, nick);
|
||||||
if (query != NULL) {
|
if (query != NULL) {
|
||||||
printformat(server, nick, level,
|
printformat(server, nick, level, txt, nick, address, data, "");
|
||||||
txt, nick, address, data, "");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (once || count == 0) {
|
if (once || count == 0) {
|
||||||
if (chans->len > 0) {
|
if (chans->len > 0) {
|
||||||
g_string_truncate(chans, chans->len-1);
|
g_string_truncate(chans, chans->len - 1);
|
||||||
}
|
}
|
||||||
printformat(server, print_channel, base_level,
|
printformat(server, print_channel, base_level, count <= 1 ? txt : txt_once, nick,
|
||||||
count <= 1 ? txt : txt_once,
|
address, data, chans->str);
|
||||||
nick, address, data, chans->str);
|
|
||||||
}
|
}
|
||||||
g_string_free(chans, TRUE);
|
g_string_free(chans, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sig_message_host_changed(SERVER_REC *server, const char *nick,
|
static void sig_message_host_changed(SERVER_REC *server, const char *nick, const char *address,
|
||||||
const char *address, const char *old_address)
|
const char *old_address)
|
||||||
{
|
{
|
||||||
spread_server_message_to_windows(
|
spread_server_message_to_windows(server, settings_get_bool("show_quit_once"), TRUE,
|
||||||
server,
|
MSGLEVEL_JOINS, TXT_HOST_CHANGED, TXT_HOST_CHANGED, nick,
|
||||||
settings_get_bool("show_quit_once"),
|
address, old_address, NULL);
|
||||||
TRUE,
|
|
||||||
MSGLEVEL_JOINS,
|
|
||||||
TXT_HOST_CHANGED, TXT_HOST_CHANGED,
|
|
||||||
nick, address, old_address,
|
|
||||||
NULL
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sig_message_account_changed(SERVER_REC *server, const char *nick,
|
static void sig_message_account_changed(SERVER_REC *server, const char *nick, const char *address,
|
||||||
const char *address, const char *account)
|
const char *account)
|
||||||
{
|
{
|
||||||
gboolean logged_in;
|
gboolean logged_in;
|
||||||
int txt;
|
int txt;
|
||||||
|
|
@ -504,64 +479,46 @@ static void sig_message_account_changed(SERVER_REC *server, const char *nick,
|
||||||
logged_in = g_strcmp0("*", account) != 0;
|
logged_in = g_strcmp0("*", account) != 0;
|
||||||
txt = logged_in ? TXT_LOGGED_IN : TXT_LOGGED_OUT;
|
txt = logged_in ? TXT_LOGGED_IN : TXT_LOGGED_OUT;
|
||||||
|
|
||||||
spread_server_message_to_windows(
|
spread_server_message_to_windows(server, settings_get_bool("show_quit_once"), TRUE,
|
||||||
server,
|
MSGLEVEL_MODES, txt, txt, nick, address, account,
|
||||||
settings_get_bool("show_quit_once"),
|
"account");
|
||||||
TRUE,
|
|
||||||
MSGLEVEL_MODES,
|
|
||||||
txt, txt,
|
|
||||||
nick, address, account,
|
|
||||||
"account"
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sig_message_quit(SERVER_REC *server, const char *nick,
|
static void sig_message_quit(SERVER_REC *server, const char *nick, const char *address,
|
||||||
const char *address, const char *reason)
|
const char *reason)
|
||||||
{
|
{
|
||||||
spread_server_message_to_windows(
|
spread_server_message_to_windows(server, settings_get_bool("show_quit_once"), TRUE,
|
||||||
server,
|
MSGLEVEL_QUITS, TXT_QUIT, TXT_QUIT_ONCE, nick, address,
|
||||||
settings_get_bool("show_quit_once"),
|
reason, reason);
|
||||||
TRUE,
|
|
||||||
MSGLEVEL_QUITS,
|
|
||||||
TXT_QUIT, TXT_QUIT_ONCE,
|
|
||||||
nick, address, reason,
|
|
||||||
reason
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sig_message_kick(SERVER_REC *server, const char *channel,
|
static void sig_message_kick(SERVER_REC *server, const char *channel, const char *nick,
|
||||||
const char *nick, const char *kicker,
|
const char *kicker, const char *address, const char *reason)
|
||||||
const char *address, const char *reason)
|
|
||||||
{
|
{
|
||||||
int level = MSGLEVEL_KICKS;
|
int level = MSGLEVEL_KICKS;
|
||||||
|
|
||||||
ignore_check_plus(server, kicker, address, channel, reason, &level, FALSE);
|
ignore_check_plus(server, kicker, address, channel, reason, &level, FALSE);
|
||||||
|
|
||||||
printformat(server, channel, level,
|
printformat(server, channel, level, TXT_KICK, nick, channel, kicker, reason, address);
|
||||||
TXT_KICK, nick, channel, kicker, reason, address);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void print_nick_change_channel(SERVER_REC *server, const char *channel,
|
static void print_nick_change_channel(SERVER_REC *server, const char *channel, const char *newnick,
|
||||||
const char *newnick, const char *oldnick,
|
const char *oldnick, const char *address, int ownnick)
|
||||||
const char *address,
|
|
||||||
int ownnick)
|
|
||||||
{
|
{
|
||||||
int level;
|
int level;
|
||||||
|
|
||||||
level = MSGLEVEL_NICKS;
|
level = MSGLEVEL_NICKS;
|
||||||
if (ownnick) level |= MSGLEVEL_NO_ACT;
|
if (ownnick)
|
||||||
if (ignore_check_plus(server, oldnick, address,
|
level |= MSGLEVEL_NO_ACT;
|
||||||
channel, newnick, &level, TRUE))
|
if (ignore_check_plus(server, oldnick, address, channel, newnick, &level, TRUE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
printformat(server, channel, level,
|
printformat(server, channel, level, ownnick ? TXT_YOUR_NICK_CHANGED : TXT_NICK_CHANGED,
|
||||||
ownnick ? TXT_YOUR_NICK_CHANGED : TXT_NICK_CHANGED,
|
oldnick, newnick, channel, address);
|
||||||
oldnick, newnick, channel, address);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void print_nick_change(SERVER_REC *server, const char *newnick,
|
static void print_nick_change(SERVER_REC *server, const char *newnick, const char *oldnick,
|
||||||
const char *oldnick, const char *address,
|
const char *address, int ownnick)
|
||||||
int ownnick)
|
|
||||||
{
|
{
|
||||||
GSList *tmp, *windows;
|
GSList *tmp, *windows;
|
||||||
int msgprint;
|
int msgprint;
|
||||||
|
|
@ -573,59 +530,55 @@ static void print_nick_change(SERVER_REC *server, const char *newnick,
|
||||||
windows = NULL;
|
windows = NULL;
|
||||||
for (tmp = server->channels; tmp != NULL; tmp = tmp->next) {
|
for (tmp = server->channels; tmp != NULL; tmp = tmp->next) {
|
||||||
CHANNEL_REC *channel = tmp->data;
|
CHANNEL_REC *channel = tmp->data;
|
||||||
WINDOW_REC *window =
|
WINDOW_REC *window = window_item_window((WI_ITEM_REC *) channel);
|
||||||
window_item_window((WI_ITEM_REC *) channel);
|
|
||||||
|
|
||||||
if (nicklist_find(channel, newnick) == NULL ||
|
if (nicklist_find(channel, newnick) == NULL ||
|
||||||
g_slist_find(windows, window) != NULL)
|
g_slist_find(windows, window) != NULL)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
windows = g_slist_append(windows, window);
|
windows = g_slist_append(windows, window);
|
||||||
print_nick_change_channel(server, channel->visible_name,
|
print_nick_change_channel(server, channel->visible_name, newnick, oldnick, address,
|
||||||
newnick, oldnick, address, ownnick);
|
ownnick);
|
||||||
msgprint = TRUE;
|
msgprint = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_slist_free(windows);
|
g_slist_free(windows);
|
||||||
|
|
||||||
if (!msgprint && ownnick) {
|
if (!msgprint && ownnick) {
|
||||||
printformat(server, NULL, MSGLEVEL_NICKS,
|
printformat(server, NULL, MSGLEVEL_NICKS, TXT_YOUR_NICK_CHANGED, oldnick, newnick,
|
||||||
TXT_YOUR_NICK_CHANGED, oldnick, newnick, "",
|
"", address);
|
||||||
address);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sig_message_nick(SERVER_REC *server, const char *newnick,
|
static void sig_message_nick(SERVER_REC *server, const char *newnick, const char *oldnick,
|
||||||
const char *oldnick, const char *address)
|
const char *address)
|
||||||
{
|
{
|
||||||
print_nick_change(server, newnick, oldnick, address, FALSE);
|
print_nick_change(server, newnick, oldnick, address, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sig_message_own_nick(SERVER_REC *server, const char *newnick,
|
static void sig_message_own_nick(SERVER_REC *server, const char *newnick, const char *oldnick,
|
||||||
const char *oldnick, const char *address)
|
const char *address)
|
||||||
{
|
{
|
||||||
if (!settings_get_bool("show_own_nickchange_once"))
|
if (!settings_get_bool("show_own_nickchange_once"))
|
||||||
print_nick_change(server, newnick, oldnick, address, TRUE);
|
print_nick_change(server, newnick, oldnick, address, TRUE);
|
||||||
else {
|
else {
|
||||||
printformat(server, NULL, MSGLEVEL_NICKS,
|
printformat(server, NULL, MSGLEVEL_NICKS, TXT_YOUR_NICK_CHANGED, oldnick, newnick,
|
||||||
TXT_YOUR_NICK_CHANGED, oldnick, newnick, "",
|
"", address);
|
||||||
address);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sig_message_invite(SERVER_REC *server, const char *channel,
|
static void sig_message_invite(SERVER_REC *server, const char *channel, const char *nick,
|
||||||
const char *nick, const char *address)
|
const char *address)
|
||||||
{
|
{
|
||||||
char *str;
|
char *str;
|
||||||
|
|
||||||
str = show_lowascii(channel);
|
str = show_lowascii(channel);
|
||||||
printformat(server, NULL, MSGLEVEL_INVITES,
|
printformat(server, NULL, MSGLEVEL_INVITES, TXT_INVITE, nick, str, address);
|
||||||
TXT_INVITE, nick, str, address);
|
|
||||||
g_free(str);
|
g_free(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sig_message_invite_other(SERVER_REC *server, const char *channel,
|
static void sig_message_invite_other(SERVER_REC *server, const char *channel, const char *invited,
|
||||||
const char *invited, const char *nick, const char *address)
|
const char *nick, const char *address)
|
||||||
{
|
{
|
||||||
char *str;
|
char *str;
|
||||||
int level = MSGLEVEL_INVITES;
|
int level = MSGLEVEL_INVITES;
|
||||||
|
|
@ -633,45 +586,34 @@ static void sig_message_invite_other(SERVER_REC *server, const char *channel,
|
||||||
ignore_check_plus(server, nick, address, channel, invited, &level, FALSE);
|
ignore_check_plus(server, nick, address, channel, invited, &level, FALSE);
|
||||||
|
|
||||||
str = show_lowascii(channel);
|
str = show_lowascii(channel);
|
||||||
printformat(server, channel, level,
|
printformat(server, channel, level, TXT_INVITE_OTHER, invited, nick, str, address);
|
||||||
TXT_INVITE_OTHER, invited, nick, str, address);
|
|
||||||
g_free(str);
|
g_free(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sig_message_topic(SERVER_REC *server, const char *channel,
|
static void sig_message_topic(SERVER_REC *server, const char *channel, const char *topic,
|
||||||
const char *topic,
|
const char *nick, const char *address)
|
||||||
const char *nick, const char *address)
|
|
||||||
{
|
{
|
||||||
int level = MSGLEVEL_TOPICS;
|
int level = MSGLEVEL_TOPICS;
|
||||||
|
|
||||||
ignore_check_plus(server, nick, address, channel, topic, &level, FALSE);
|
ignore_check_plus(server, nick, address, channel, topic, &level, FALSE);
|
||||||
|
|
||||||
printformat(server, channel, level,
|
printformat(server, channel, level, *topic != '\0' ? TXT_NEW_TOPIC : TXT_TOPIC_UNSET, nick,
|
||||||
*topic != '\0' ? TXT_NEW_TOPIC : TXT_TOPIC_UNSET,
|
channel, topic, address);
|
||||||
nick, channel, topic, address);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sig_message_away_notify(SERVER_REC *server, const char *nick,
|
static void sig_message_away_notify(SERVER_REC *server, const char *nick, const char *addr,
|
||||||
const char *addr, const char *awaymsg)
|
const char *awaymsg)
|
||||||
{
|
{
|
||||||
int txt = *awaymsg == '\0' ? TXT_NOTIFY_UNAWAY_CHANNEL :
|
int txt = *awaymsg == '\0' ? TXT_NOTIFY_UNAWAY_CHANNEL : TXT_NOTIFY_AWAY_CHANNEL;
|
||||||
TXT_NOTIFY_AWAY_CHANNEL;
|
|
||||||
|
|
||||||
if (!settings_get_bool("away_notify_public"))
|
if (!settings_get_bool("away_notify_public"))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
spread_server_message_to_windows(server, FALSE,
|
spread_server_message_to_windows(server, FALSE, FALSE, MSGLEVEL_CRAP, txt, txt, nick, addr,
|
||||||
FALSE,
|
awaymsg, awaymsg);
|
||||||
MSGLEVEL_CRAP,
|
|
||||||
txt, txt,
|
|
||||||
nick, addr,
|
|
||||||
awaymsg,
|
|
||||||
awaymsg
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int printnick_exists(NICK_REC *first, NICK_REC *ignore,
|
static int printnick_exists(NICK_REC *first, NICK_REC *ignore, const char *nick)
|
||||||
const char *nick)
|
|
||||||
{
|
{
|
||||||
char *printnick;
|
char *printnick;
|
||||||
|
|
||||||
|
|
@ -685,14 +627,14 @@ static int printnick_exists(NICK_REC *first, NICK_REC *ignore,
|
||||||
first = first->next;
|
first = first->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static NICK_REC *printnick_find_original(NICK_REC *nick)
|
static NICK_REC *printnick_find_original(NICK_REC *nick)
|
||||||
{
|
{
|
||||||
while (nick != NULL) {
|
while (nick != NULL) {
|
||||||
if (g_hash_table_lookup(printnicks, nick) == NULL)
|
if (g_hash_table_lookup(printnicks, nick) == NULL)
|
||||||
return nick;
|
return nick;
|
||||||
|
|
||||||
nick = nick->next;
|
nick = nick->next;
|
||||||
}
|
}
|
||||||
|
|
@ -716,31 +658,35 @@ static void sig_nicklist_new(CHANNEL_REC *channel, NICK_REC *nick)
|
||||||
someone else having the original nick already in use.. */
|
someone else having the original nick already in use.. */
|
||||||
nick = printnick_find_original(firstnick->next);
|
nick = printnick_find_original(firstnick->next);
|
||||||
if (nick == NULL)
|
if (nick == NULL)
|
||||||
return; /* nope, we have it */
|
return; /* nope, we have it */
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nick->host == NULL)
|
if (nick->host == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* identical nick already exists, have to change it somehow.. */
|
/* identical nick already exists, have to change it somehow.. */
|
||||||
p = strchr(nick->host, '@');
|
p = strchr(nick->host, '@');
|
||||||
if (p == NULL) p = nick->host; else p++;
|
if (p == NULL)
|
||||||
|
p = nick->host;
|
||||||
|
else
|
||||||
|
p++;
|
||||||
|
|
||||||
nickhost = g_strdup_printf("%s@%s", nick->nick, p);
|
nickhost = g_strdup_printf("%s@%s", nick->nick, p);
|
||||||
p = strchr(nickhost+strlen(nick->nick), '.');
|
p = strchr(nickhost + strlen(nick->nick), '.');
|
||||||
if (p != NULL) *p = '\0';
|
if (p != NULL)
|
||||||
|
*p = '\0';
|
||||||
|
|
||||||
if (!printnick_exists(firstnick, nick, nickhost)) {
|
if (!printnick_exists(firstnick, nick, nickhost)) {
|
||||||
/* use nick@host */
|
/* use nick@host */
|
||||||
g_hash_table_insert(printnicks, nick, nickhost);
|
g_hash_table_insert(printnicks, nick, nickhost);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
newnick = g_string_new(NULL);
|
newnick = g_string_new(NULL);
|
||||||
n = 2;
|
n = 2;
|
||||||
do {
|
do {
|
||||||
g_string_printf(newnick, "%s%d", nickhost, n);
|
g_string_printf(newnick, "%s%d", nickhost, n);
|
||||||
n++;
|
n++;
|
||||||
} while (printnick_exists(firstnick, nick, newnick->str));
|
} while (printnick_exists(firstnick, nick, newnick->str));
|
||||||
|
|
||||||
g_hash_table_insert(printnicks, nick, g_string_free_and_steal(newnick));
|
g_hash_table_insert(printnicks, nick, g_string_free_and_steal(newnick));
|
||||||
|
|
@ -753,53 +699,52 @@ static void sig_nicklist_remove(CHANNEL_REC *channel, NICK_REC *nick)
|
||||||
|
|
||||||
nickname = g_hash_table_lookup(printnicks, nick);
|
nickname = g_hash_table_lookup(printnicks, nick);
|
||||||
if (nickname != NULL) {
|
if (nickname != NULL) {
|
||||||
g_free(nickname);
|
g_free(nickname);
|
||||||
g_hash_table_remove(printnicks, nick);
|
g_hash_table_remove(printnicks, nick);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sig_nicklist_changed(CHANNEL_REC *channel, NICK_REC *nick)
|
static void sig_nicklist_changed(CHANNEL_REC *channel, NICK_REC *nick)
|
||||||
{
|
{
|
||||||
sig_nicklist_remove(channel, nick);
|
sig_nicklist_remove(channel, nick);
|
||||||
sig_nicklist_new(channel, nick);
|
sig_nicklist_new(channel, nick);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sig_channel_joined(CHANNEL_REC *channel)
|
static void sig_channel_joined(CHANNEL_REC *channel)
|
||||||
{
|
{
|
||||||
NICK_REC *nick;
|
NICK_REC *nick;
|
||||||
char *nickname;
|
char *nickname;
|
||||||
|
|
||||||
/* channel->ownnick is set at this point - check if our own nick
|
/* channel->ownnick is set at this point - check if our own nick
|
||||||
has been changed, if it was set it back to the original nick and
|
has been changed, if it was set it back to the original nick and
|
||||||
change the previous original to something else */
|
change the previous original to something else */
|
||||||
|
|
||||||
nickname = g_hash_table_lookup(printnicks, channel->ownnick);
|
nickname = g_hash_table_lookup(printnicks, channel->ownnick);
|
||||||
if (nickname == NULL)
|
if (nickname == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
g_free(nickname);
|
g_free(nickname);
|
||||||
g_hash_table_remove(printnicks, channel->ownnick);
|
g_hash_table_remove(printnicks, channel->ownnick);
|
||||||
|
|
||||||
/* our own nick is guaranteed to be the first in list */
|
/* our own nick is guaranteed to be the first in list */
|
||||||
nick = channel->ownnick->next;
|
nick = channel->ownnick->next;
|
||||||
while (nick != NULL) {
|
while (nick != NULL) {
|
||||||
if (g_hash_table_lookup(printnicks, nick) == NULL) {
|
if (g_hash_table_lookup(printnicks, nick) == NULL) {
|
||||||
sig_nicklist_new(channel, nick);
|
sig_nicklist_new(channel, nick);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
nick = nick->next;
|
nick = nick->next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void i_hash_free_value(void *key, void *value)
|
static void i_hash_free_value(void *key, void *value)
|
||||||
{
|
{
|
||||||
g_free(value);
|
g_free(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void fe_messages_init(void)
|
void fe_messages_init(void)
|
||||||
{
|
{
|
||||||
printnicks = g_hash_table_new((GHashFunc) g_direct_hash,
|
printnicks = g_hash_table_new((GHashFunc) g_direct_hash, (GCompareFunc) g_direct_equal);
|
||||||
(GCompareFunc) g_direct_equal);
|
|
||||||
|
|
||||||
settings_add_bool("lookandfeel", "hilight_nick_matches", TRUE);
|
settings_add_bool("lookandfeel", "hilight_nick_matches", TRUE);
|
||||||
settings_add_bool("lookandfeel", "hilight_nick_matches_everywhere", FALSE);
|
settings_add_bool("lookandfeel", "hilight_nick_matches_everywhere", FALSE);
|
||||||
|
|
|
||||||
|
|
@ -63,8 +63,7 @@ int format_find_tag(const char *module, const char *tag)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
for (n = 0; formats[n].def != NULL; n++) {
|
for (n = 0; formats[n].def != NULL; n++) {
|
||||||
if (formats[n].tag != NULL &&
|
if (formats[n].tag != NULL && g_ascii_strcasecmp(formats[n].tag, tag) == 0)
|
||||||
g_ascii_strcasecmp(formats[n].tag, tag) == 0)
|
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -89,22 +88,23 @@ static void format_expand_code(const char **format, GString *out, int *flags)
|
||||||
set = TRUE;
|
set = TRUE;
|
||||||
else if (**format == '-')
|
else if (**format == '-')
|
||||||
set = FALSE;
|
set = FALSE;
|
||||||
else switch (**format) {
|
else
|
||||||
case 's':
|
switch (**format) {
|
||||||
case 'S':
|
case 's':
|
||||||
*flags |= !set ? PRINT_FLAG_UNSET_LINE_START :
|
case 'S':
|
||||||
**format == 's' ? PRINT_FLAG_SET_LINE_START :
|
*flags |= !set ? PRINT_FLAG_UNSET_LINE_START :
|
||||||
PRINT_FLAG_SET_LINE_START_IRSSI;
|
**format == 's' ? PRINT_FLAG_SET_LINE_START :
|
||||||
break;
|
PRINT_FLAG_SET_LINE_START_IRSSI;
|
||||||
case 't':
|
break;
|
||||||
*flags |= set ? PRINT_FLAG_SET_TIMESTAMP :
|
case 't':
|
||||||
PRINT_FLAG_UNSET_TIMESTAMP;
|
*flags |=
|
||||||
break;
|
set ? PRINT_FLAG_SET_TIMESTAMP : PRINT_FLAG_UNSET_TIMESTAMP;
|
||||||
case 'T':
|
break;
|
||||||
*flags |= set ? PRINT_FLAG_SET_SERVERTAG :
|
case 'T':
|
||||||
PRINT_FLAG_UNSET_SERVERTAG;
|
*flags |=
|
||||||
break;
|
set ? PRINT_FLAG_SET_SERVERTAG : PRINT_FLAG_UNSET_SERVERTAG;
|
||||||
}
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
(*format)++;
|
(*format)++;
|
||||||
}
|
}
|
||||||
|
|
@ -116,18 +116,15 @@ void format_ext_color(GString *out, int bg, int color)
|
||||||
if (bg && color < 0x10)
|
if (bg && color < 0x10)
|
||||||
g_string_append_c(out, FORMAT_COLOR_NOCHANGE);
|
g_string_append_c(out, FORMAT_COLOR_NOCHANGE);
|
||||||
if (color < 0x10)
|
if (color < 0x10)
|
||||||
g_string_append_c(out, color+'0');
|
g_string_append_c(out, color + '0');
|
||||||
else {
|
else {
|
||||||
if (color < 0x60)
|
if (color < 0x60)
|
||||||
g_string_append_c(out, bg ? FORMAT_COLOR_EXT1_BG
|
g_string_append_c(out, bg ? FORMAT_COLOR_EXT1_BG : FORMAT_COLOR_EXT1);
|
||||||
: FORMAT_COLOR_EXT1);
|
|
||||||
else if (color < 0xb0)
|
else if (color < 0xb0)
|
||||||
g_string_append_c(out, bg ? FORMAT_COLOR_EXT2_BG
|
g_string_append_c(out, bg ? FORMAT_COLOR_EXT2_BG : FORMAT_COLOR_EXT2);
|
||||||
: FORMAT_COLOR_EXT2);
|
|
||||||
else
|
else
|
||||||
g_string_append_c(out, bg ? FORMAT_COLOR_EXT3_BG
|
g_string_append_c(out, bg ? FORMAT_COLOR_EXT3_BG : FORMAT_COLOR_EXT3);
|
||||||
: FORMAT_COLOR_EXT3);
|
g_string_append_c(out, FORMAT_COLOR_NOCHANGE + ((color - 0x10) % 0x50));
|
||||||
g_string_append_c(out, FORMAT_COLOR_NOCHANGE + ((color-0x10)%0x50));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!bg && color < 0x10)
|
if (!bg && color < 0x10)
|
||||||
|
|
@ -166,8 +163,7 @@ void unformat_24bit_color(char **ptr, int off, int *fgcolor, int *bgcolor, int *
|
||||||
if (rgbx[3] & 0x1) {
|
if (rgbx[3] & 0x1) {
|
||||||
*bgcolor = color;
|
*bgcolor = color;
|
||||||
*flags |= GUI_PRINT_FLAG_COLOR_24_BG;
|
*flags |= GUI_PRINT_FLAG_COLOR_24_BG;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
*fgcolor = color;
|
*fgcolor = color;
|
||||||
*flags |= GUI_PRINT_FLAG_COLOR_24_FG;
|
*flags |= GUI_PRINT_FLAG_COLOR_24_FG;
|
||||||
}
|
}
|
||||||
|
|
@ -294,7 +290,7 @@ int format_expand_styles(GString *out, const char **format, int *flags)
|
||||||
if ((*format)[1] < '0' || (*format)[1] > '7')
|
if ((*format)[1] < '0' || (*format)[1] > '7')
|
||||||
break;
|
break;
|
||||||
|
|
||||||
tmp = 16 + ((*format)[1]-'0'-1)*36;
|
tmp = 16 + ((*format)[1] - '0' - 1) * 36;
|
||||||
if (tmp > 231) {
|
if (tmp > 231) {
|
||||||
if (!isalpha((*format)[2]))
|
if (!isalpha((*format)[2]))
|
||||||
break;
|
break;
|
||||||
|
|
@ -303,8 +299,7 @@ int format_expand_styles(GString *out, const char **format, int *flags)
|
||||||
|
|
||||||
if (tmp > 255)
|
if (tmp > 255)
|
||||||
break;
|
break;
|
||||||
}
|
} else if (tmp > 0) {
|
||||||
else if (tmp > 0) {
|
|
||||||
if (!isalnum((*format)[2]))
|
if (!isalnum((*format)[2]))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
@ -314,8 +309,7 @@ int format_expand_styles(GString *out, const char **format, int *flags)
|
||||||
tmp += 10 + (*format)[2] - 'A';
|
tmp += 10 + (*format)[2] - 'A';
|
||||||
else
|
else
|
||||||
tmp += (*format)[2] - '0';
|
tmp += (*format)[2] - '0';
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
if (!isxdigit((*format)[2]))
|
if (!isxdigit((*format)[2]))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
@ -361,26 +355,28 @@ int format_expand_styles(GString *out, const char **format, int *flags)
|
||||||
if (p != NULL) {
|
if (p != NULL) {
|
||||||
g_string_append_c(out, 4);
|
g_string_append_c(out, 4);
|
||||||
g_string_append_c(out, FORMAT_COLOR_NOCHANGE);
|
g_string_append_c(out, FORMAT_COLOR_NOCHANGE);
|
||||||
g_string_append_c(out, (char) ((int) (p-format_backs)+'0'));
|
g_string_append_c(out, (char) ((int) (p - format_backs) + '0'));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* check if it's a foreground color */
|
/* check if it's a foreground color */
|
||||||
if (fmt == 'p') fmt = 'm';
|
if (fmt == 'p')
|
||||||
|
fmt = 'm';
|
||||||
p = strchr(format_fores, fmt);
|
p = strchr(format_fores, fmt);
|
||||||
if (p != NULL) {
|
if (p != NULL) {
|
||||||
g_string_append_c(out, 4);
|
g_string_append_c(out, 4);
|
||||||
g_string_append_c(out, (char) ((int) (p-format_fores)+'0'));
|
g_string_append_c(out, (char) ((int) (p - format_fores) + '0'));
|
||||||
g_string_append_c(out, FORMAT_COLOR_NOCHANGE);
|
g_string_append_c(out, FORMAT_COLOR_NOCHANGE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* check if it's a bold foreground color */
|
/* check if it's a bold foreground color */
|
||||||
if (fmt == 'P') fmt = 'M';
|
if (fmt == 'P')
|
||||||
|
fmt = 'M';
|
||||||
p = strchr(format_boldfores, fmt);
|
p = strchr(format_boldfores, fmt);
|
||||||
if (p != NULL) {
|
if (p != NULL) {
|
||||||
g_string_append_c(out, 4);
|
g_string_append_c(out, 4);
|
||||||
g_string_append_c(out, (char) (8+(int) (p-format_boldfores)+'0'));
|
g_string_append_c(out, (char) (8 + (int) (p - format_boldfores) + '0'));
|
||||||
g_string_append_c(out, FORMAT_COLOR_NOCHANGE);
|
g_string_append_c(out, FORMAT_COLOR_NOCHANGE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -391,9 +387,8 @@ int format_expand_styles(GString *out, const char **format, int *flags)
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
void format_read_arglist(va_list va, FORMAT_REC *format,
|
void format_read_arglist(va_list va, FORMAT_REC *format, char **arglist, int arglist_size,
|
||||||
char **arglist, int arglist_size,
|
char *buffer, int buffer_size)
|
||||||
char *buffer, int buffer_size)
|
|
||||||
{
|
{
|
||||||
int num, len, bufpos;
|
int num, len, bufpos;
|
||||||
|
|
||||||
|
|
@ -416,10 +411,9 @@ void format_read_arglist(va_list va, FORMAT_REC *format,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
arglist[num] = buffer+bufpos;
|
arglist[num] = buffer + bufpos;
|
||||||
len = g_snprintf(buffer+bufpos, buffer_size-bufpos,
|
len = g_snprintf(buffer + bufpos, buffer_size - bufpos, "%d", d);
|
||||||
"%d", d);
|
bufpos += len + 1;
|
||||||
bufpos += len+1;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case FORMAT_LONG: {
|
case FORMAT_LONG: {
|
||||||
|
|
@ -430,10 +424,9 @@ void format_read_arglist(va_list va, FORMAT_REC *format,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
arglist[num] = buffer+bufpos;
|
arglist[num] = buffer + bufpos;
|
||||||
len = g_snprintf(buffer+bufpos, buffer_size-bufpos,
|
len = g_snprintf(buffer + bufpos, buffer_size - bufpos, "%ld", l);
|
||||||
"%ld", l);
|
bufpos += len + 1;
|
||||||
bufpos += len+1;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case FORMAT_FLOAT: {
|
case FORMAT_FLOAT: {
|
||||||
|
|
@ -444,10 +437,9 @@ void format_read_arglist(va_list va, FORMAT_REC *format,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
arglist[num] = buffer+bufpos;
|
arglist[num] = buffer + bufpos;
|
||||||
len = g_snprintf(buffer+bufpos, buffer_size-bufpos,
|
len = g_snprintf(buffer + bufpos, buffer_size - bufpos, "%0.2f", f);
|
||||||
"%0.2f", f);
|
bufpos += len + 1;
|
||||||
bufpos += len+1;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -485,8 +477,7 @@ void format_create_dest_tag_meta(TEXT_DEST_REC *dest, void *server, const char *
|
||||||
dest->server_tag = server != NULL ? SERVER(server)->tag : server_tag;
|
dest->server_tag = server != NULL ? SERVER(server)->tag : server_tag;
|
||||||
dest->target = target;
|
dest->target = target;
|
||||||
dest->level = level;
|
dest->level = level;
|
||||||
dest->window = window != NULL ? window :
|
dest->window = window != NULL ? window : window_find_closest(server, target, level);
|
||||||
window_find_closest(server, target, level);
|
|
||||||
dest->meta = meta != NULL ? meta : global_meta;
|
dest->meta = meta != NULL ? meta : global_meta;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -521,10 +512,10 @@ int format_get_length(const char *str)
|
||||||
if (*str == '%' && str[1] != '\0') {
|
if (*str == '%' && str[1] != '\0') {
|
||||||
str++;
|
str++;
|
||||||
if (*str != '%') {
|
if (*str != '%') {
|
||||||
adv = format_expand_styles(tmp, &str, NULL);
|
adv = format_expand_styles(tmp, &str, NULL);
|
||||||
str += adv;
|
str += adv;
|
||||||
if (adv)
|
if (adv)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* %% or unknown %code, written as-is */
|
/* %% or unknown %code, written as-is */
|
||||||
|
|
@ -561,17 +552,17 @@ int format_real_length(const char *str, int len)
|
||||||
if (*str == '%' && str[1] != '\0') {
|
if (*str == '%' && str[1] != '\0') {
|
||||||
str++;
|
str++;
|
||||||
if (*str != '%') {
|
if (*str != '%') {
|
||||||
adv = format_expand_styles(tmp, &str, NULL);
|
adv = format_expand_styles(tmp, &str, NULL);
|
||||||
if (adv) {
|
if (adv) {
|
||||||
str += adv;
|
str += adv;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
/* discount for unknown % */
|
/* discount for unknown % */
|
||||||
if (--len < 0) {
|
if (--len < 0) {
|
||||||
str = oldstr;
|
str = oldstr;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
oldstr = str;
|
oldstr = str;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -583,7 +574,7 @@ int format_real_length(const char *str, int len)
|
||||||
}
|
}
|
||||||
|
|
||||||
g_string_free(tmp, TRUE);
|
g_string_free(tmp, TRUE);
|
||||||
return (int) (str-start);
|
return (int) (str - start);
|
||||||
}
|
}
|
||||||
|
|
||||||
char *format_string_expand(const char *text, int *flags)
|
char *format_string_expand(const char *text, int *flags)
|
||||||
|
|
@ -596,7 +587,8 @@ char *format_string_expand(const char *text, int *flags)
|
||||||
|
|
||||||
out = g_string_new(NULL);
|
out = g_string_new(NULL);
|
||||||
|
|
||||||
if (flags != NULL) *flags = 0;
|
if (flags != NULL)
|
||||||
|
*flags = 0;
|
||||||
code = 0;
|
code = 0;
|
||||||
while (*text != '\0') {
|
while (*text != '\0') {
|
||||||
if (code == '%') {
|
if (code == '%') {
|
||||||
|
|
@ -607,7 +599,7 @@ char *format_string_expand(const char *text, int *flags)
|
||||||
g_string_append_c(out, '%');
|
g_string_append_c(out, '%');
|
||||||
g_string_append_c(out, *text);
|
g_string_append_c(out, *text);
|
||||||
} else {
|
} else {
|
||||||
text += adv - 1;
|
text += adv - 1;
|
||||||
}
|
}
|
||||||
code = 0;
|
code = 0;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -739,8 +731,7 @@ char *format_string_unexpand(const char *text, int flags)
|
||||||
return g_string_free(out, FALSE);
|
return g_string_free(out, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *format_get_text_args(TEXT_DEST_REC *dest,
|
static char *format_get_text_args(TEXT_DEST_REC *dest, const char *text, char **arglist)
|
||||||
const char *text, char **arglist)
|
|
||||||
{
|
{
|
||||||
GString *out;
|
GString *out;
|
||||||
char code, *ret;
|
char code, *ret;
|
||||||
|
|
@ -767,22 +758,25 @@ static char *format_get_text_args(TEXT_DEST_REC *dest,
|
||||||
char *ret;
|
char *ret;
|
||||||
|
|
||||||
ret = parse_special((char **) &text, dest->server,
|
ret = parse_special((char **) &text, dest->server,
|
||||||
dest->target == NULL ? NULL :
|
dest->target == NULL ?
|
||||||
window_item_find(dest->server, dest->target),
|
NULL :
|
||||||
arglist, &need_free, NULL, 0);
|
window_item_find(dest->server, dest->target),
|
||||||
|
arglist, &need_free, NULL, 0);
|
||||||
|
|
||||||
if (ret != NULL) {
|
if (ret != NULL) {
|
||||||
/* string shouldn't end with \003 or it could
|
/* string shouldn't end with \003 or it could
|
||||||
mess up the next one or two characters */
|
mess up the next one or two characters */
|
||||||
int diff;
|
int diff;
|
||||||
int len = strlen(ret);
|
int len = strlen(ret);
|
||||||
while (len > 0 && ret[len-1] == 3) len--;
|
while (len > 0 && ret[len - 1] == 3)
|
||||||
diff = strlen(ret)-len;
|
len--;
|
||||||
|
diff = strlen(ret) - len;
|
||||||
|
|
||||||
g_string_append(out, ret);
|
g_string_append(out, ret);
|
||||||
if (diff > 0)
|
if (diff > 0)
|
||||||
g_string_truncate(out, out->len-diff);
|
g_string_truncate(out, out->len - diff);
|
||||||
if (need_free) g_free(ret);
|
if (need_free)
|
||||||
|
g_free(ret);
|
||||||
}
|
}
|
||||||
code = 0;
|
code = 0;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -799,8 +793,8 @@ static char *format_get_text_args(TEXT_DEST_REC *dest,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *format_get_text_theme(THEME_REC *theme, const char *module,
|
char *format_get_text_theme(THEME_REC *theme, const char *module, TEXT_DEST_REC *dest,
|
||||||
TEXT_DEST_REC *dest, int formatnum, ...)
|
int formatnum, ...)
|
||||||
{
|
{
|
||||||
va_list va;
|
va_list va;
|
||||||
char *str;
|
char *str;
|
||||||
|
|
@ -815,21 +809,18 @@ char *format_get_text_theme(THEME_REC *theme, const char *module,
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *format_get_text_theme_args(THEME_REC *theme, const char *module,
|
char *format_get_text_theme_args(THEME_REC *theme, const char *module, TEXT_DEST_REC *dest,
|
||||||
TEXT_DEST_REC *dest, int formatnum,
|
int formatnum, va_list va)
|
||||||
va_list va)
|
|
||||||
{
|
{
|
||||||
char *arglist[MAX_FORMAT_PARAMS];
|
char *arglist[MAX_FORMAT_PARAMS];
|
||||||
char buffer[DEFAULT_FORMAT_ARGLIST_SIZE];
|
char buffer[DEFAULT_FORMAT_ARGLIST_SIZE];
|
||||||
FORMAT_REC *formats;
|
FORMAT_REC *formats;
|
||||||
|
|
||||||
formats = g_hash_table_lookup(default_formats, module);
|
formats = g_hash_table_lookup(default_formats, module);
|
||||||
format_read_arglist(va, &formats[formatnum],
|
format_read_arglist(va, &formats[formatnum], arglist, sizeof(arglist) / sizeof(char *),
|
||||||
arglist, sizeof(arglist)/sizeof(char *),
|
buffer, sizeof(buffer));
|
||||||
buffer, sizeof(buffer));
|
|
||||||
|
|
||||||
return format_get_text_theme_charargs(theme, module, dest,
|
return format_get_text_theme_charargs(theme, module, dest, formatnum, arglist);
|
||||||
formatnum, arglist);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check if format number is a message format that needs nick column */
|
/* Check if format number is a message format that needs nick column */
|
||||||
|
|
@ -846,20 +837,20 @@ static gboolean is_message_format(int formatnum)
|
||||||
static int get_nick_param_for_format(int formatnum)
|
static int get_nick_param_for_format(int formatnum)
|
||||||
{
|
{
|
||||||
switch (formatnum) {
|
switch (formatnum) {
|
||||||
case TXT_OWN_MSG:
|
case TXT_OWN_MSG:
|
||||||
case TXT_OWN_MSG_CHANNEL:
|
case TXT_OWN_MSG_CHANNEL:
|
||||||
case TXT_PUBMSG:
|
case TXT_PUBMSG:
|
||||||
case TXT_PUBMSG_CHANNEL:
|
case TXT_PUBMSG_CHANNEL:
|
||||||
case TXT_PUBMSG_ME:
|
case TXT_PUBMSG_ME:
|
||||||
case TXT_PUBMSG_ME_CHANNEL:
|
case TXT_PUBMSG_ME_CHANNEL:
|
||||||
return 0; /* $0 = nick */
|
return 0; /* $0 = nick */
|
||||||
|
|
||||||
case TXT_PUBMSG_HILIGHT:
|
case TXT_PUBMSG_HILIGHT:
|
||||||
case TXT_PUBMSG_HILIGHT_CHANNEL:
|
case TXT_PUBMSG_HILIGHT_CHANNEL:
|
||||||
return 1; /* $1 = nick (because $0 = color) */
|
return 1; /* $1 = nick (because $0 = color) */
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return 0; /* fallback */
|
return 0; /* fallback */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -871,7 +862,8 @@ static char *apply_nick_column_formatting(const char *format, int formatnum)
|
||||||
char search_param[10], replace_param[20];
|
char search_param[10], replace_param[20];
|
||||||
int nick_param;
|
int nick_param;
|
||||||
|
|
||||||
if (!format) return NULL;
|
if (!format)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
/* Get correct parameter number for nick in this format */
|
/* Get correct parameter number for nick in this format */
|
||||||
nick_param = get_nick_param_for_format(formatnum);
|
nick_param = get_nick_param_for_format(formatnum);
|
||||||
|
|
@ -893,9 +885,8 @@ static char *apply_nick_column_formatting(const char *format, int formatnum)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *format_get_text_theme_charargs(THEME_REC *theme, const char *module,
|
char *format_get_text_theme_charargs(THEME_REC *theme, const char *module, TEXT_DEST_REC *dest,
|
||||||
TEXT_DEST_REC *dest, int formatnum,
|
int formatnum, char **args)
|
||||||
char **args)
|
|
||||||
{
|
{
|
||||||
MODULE_THEME_REC *module_theme;
|
MODULE_THEME_REC *module_theme;
|
||||||
char *text, *modified_text = NULL;
|
char *text, *modified_text = NULL;
|
||||||
|
|
@ -912,17 +903,13 @@ char *format_get_text_theme_charargs(THEME_REC *theme, const char *module,
|
||||||
|
|
||||||
/* Apply nick column formatting if enabled and this is a message format */
|
/* Apply nick column formatting if enabled and this is a message format */
|
||||||
/* Additional protection: avoid recursion during timestamp formatting */
|
/* Additional protection: avoid recursion during timestamp formatting */
|
||||||
if (settings_get_bool("nick_column_enabled") &&
|
if (settings_get_bool("nick_column_enabled") && g_strcmp0(module, "fe-common/core") == 0 &&
|
||||||
g_strcmp0(module, "fe-common/core") == 0 &&
|
is_message_format(formatnum) && nick_formatting_depth == 0) { /* Prevent recursion */
|
||||||
is_message_format(formatnum) &&
|
|
||||||
nick_formatting_depth == 0) { /* Prevent recursion */
|
|
||||||
|
|
||||||
nick_formatting_depth++;
|
nick_formatting_depth++;
|
||||||
modified_text = apply_nick_column_formatting(text, formatnum);
|
modified_text = apply_nick_column_formatting(text, formatnum);
|
||||||
text = modified_text;
|
text = modified_text;
|
||||||
nick_formatting_depth--;
|
nick_formatting_depth--;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
result = format_get_text_args(dest, text, args);
|
result = format_get_text_args(dest, text, args);
|
||||||
|
|
@ -933,9 +920,8 @@ char *format_get_text_theme_charargs(THEME_REC *theme, const char *module,
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *format_get_text(const char *module, WINDOW_REC *window,
|
char *format_get_text(const char *module, WINDOW_REC *window, void *server, const char *target,
|
||||||
void *server, const char *target,
|
int formatnum, ...)
|
||||||
int formatnum, ...)
|
|
||||||
{
|
{
|
||||||
TEXT_DEST_REC dest;
|
TEXT_DEST_REC dest;
|
||||||
THEME_REC *theme;
|
THEME_REC *theme;
|
||||||
|
|
@ -1001,8 +987,7 @@ char *format_add_lineend(const char *text, const char *linestart)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define LINE_START_IRSSI_LEVEL \
|
#define LINE_START_IRSSI_LEVEL (MSGLEVEL_CLIENTERROR | MSGLEVEL_CLIENTNOTICE)
|
||||||
(MSGLEVEL_CLIENTERROR | MSGLEVEL_CLIENTNOTICE)
|
|
||||||
|
|
||||||
#define NOT_LINE_START_LEVEL \
|
#define NOT_LINE_START_LEVEL \
|
||||||
(MSGLEVEL_NEVER | MSGLEVEL_LASTLOG | MSGLEVEL_CLIENTCRAP | MSGLEVEL_MSGS | \
|
(MSGLEVEL_NEVER | MSGLEVEL_LASTLOG | MSGLEVEL_CLIENTCRAP | MSGLEVEL_MSGS | \
|
||||||
|
|
@ -1049,10 +1034,9 @@ static char *get_timestamp(THEME_REC *theme, TEXT_DEST_REC *dest, time_t t)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if ((dest->flags & PRINT_FLAG_SET_TIMESTAMP) == 0 &&
|
if ((dest->flags & PRINT_FLAG_SET_TIMESTAMP) == 0 &&
|
||||||
(dest->level & (MSGLEVEL_NEVER|MSGLEVEL_LASTLOG)) != 0)
|
(dest->level & (MSGLEVEL_NEVER | MSGLEVEL_LASTLOG)) != 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
|
||||||
if (timestamp_timeout > 0) {
|
if (timestamp_timeout > 0) {
|
||||||
diff = t - dest->window->last_timestamp;
|
diff = t - dest->window->last_timestamp;
|
||||||
dest->window->last_timestamp = t;
|
dest->window->last_timestamp = t;
|
||||||
|
|
@ -1061,8 +1045,7 @@ static char *get_timestamp(THEME_REC *theme, TEXT_DEST_REC *dest, time_t t)
|
||||||
}
|
}
|
||||||
|
|
||||||
tm = localtime(&t);
|
tm = localtime(&t);
|
||||||
format = format_get_text_theme(theme, MODULE_NAME, dest,
|
format = format_get_text_theme(theme, MODULE_NAME, dest, TXT_TIMESTAMP);
|
||||||
TXT_TIMESTAMP);
|
|
||||||
if (strftime(str, sizeof(str), format, tm) <= 0)
|
if (strftime(str, sizeof(str), format, tm) <= 0)
|
||||||
str[0] = '\0';
|
str[0] = '\0';
|
||||||
g_free(format);
|
g_free(format);
|
||||||
|
|
@ -1081,8 +1064,7 @@ static char *get_server_tag(THEME_REC *theme, TEXT_DEST_REC *dest)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if ((dest->flags & PRINT_FLAG_SET_SERVERTAG) == 0) {
|
if ((dest->flags & PRINT_FLAG_SET_SERVERTAG) == 0) {
|
||||||
if (dest->window->active != NULL &&
|
if (dest->window->active != NULL && dest->window->active->server == dest->server)
|
||||||
dest->window->active->server == dest->server)
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (servers != NULL) {
|
if (servers != NULL) {
|
||||||
|
|
@ -1100,8 +1082,7 @@ static char *get_server_tag(THEME_REC *theme, TEXT_DEST_REC *dest)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return format_get_text_theme(theme, MODULE_NAME, dest,
|
return format_get_text_theme(theme, MODULE_NAME, dest, TXT_SERVERTAG, dest->server_tag);
|
||||||
TXT_SERVERTAG, dest->server_tag);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
char *format_get_line_start(THEME_REC *theme, TEXT_DEST_REC *dest, time_t t)
|
char *format_get_line_start(THEME_REC *theme, TEXT_DEST_REC *dest, time_t t)
|
||||||
|
|
@ -1115,8 +1096,7 @@ char *format_get_line_start(THEME_REC *theme, TEXT_DEST_REC *dest, time_t t)
|
||||||
if (timestamp == NULL && servertag == NULL)
|
if (timestamp == NULL && servertag == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
linestart = g_strconcat(timestamp != NULL ? timestamp : "",
|
linestart = g_strconcat(timestamp != NULL ? timestamp : "", servertag, NULL);
|
||||||
servertag, NULL);
|
|
||||||
|
|
||||||
g_free_not_null(timestamp);
|
g_free_not_null(timestamp);
|
||||||
g_free_not_null(servertag);
|
g_free_not_null(servertag);
|
||||||
|
|
@ -1132,10 +1112,9 @@ void format_newline(TEXT_DEST_REC *dest)
|
||||||
GINT_TO_POINTER(-1), GINT_TO_POINTER(GUI_PRINT_FLAG_NEWLINE), "", dest);
|
GINT_TO_POINTER(-1), GINT_TO_POINTER(GUI_PRINT_FLAG_NEWLINE), "", dest);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* parse ANSI color string */
|
/* parse ANSI color string */
|
||||||
static const char *get_ansi_color(THEME_REC *theme, const char *str,
|
static const char *get_ansi_color(THEME_REC *theme, const char *str, int *fg_ret, int *bg_ret,
|
||||||
int *fg_ret, int *bg_ret, int *flags_ret)
|
int *flags_ret)
|
||||||
{
|
{
|
||||||
static char ansitab[8] = { 0, 4, 2, 6, 1, 5, 3, 7 };
|
static char ansitab[8] = { 0, 4, 2, 6, 1, 5, 3, 7 };
|
||||||
const char *start;
|
const char *start;
|
||||||
|
|
@ -1153,7 +1132,8 @@ static const char *get_ansi_color(THEME_REC *theme, const char *str,
|
||||||
|
|
||||||
num = 0;
|
num = 0;
|
||||||
for (;; str++) {
|
for (;; str++) {
|
||||||
if (*str == '\0') return start;
|
if (*str == '\0')
|
||||||
|
return start;
|
||||||
|
|
||||||
if (i_isdigit(*str)) {
|
if (i_isdigit(*str)) {
|
||||||
if (!parse_uint(str, &endptr, 10, &num)) {
|
if (!parse_uint(str, &endptr, 10, &num)) {
|
||||||
|
|
@ -1170,10 +1150,10 @@ static const char *get_ansi_color(THEME_REC *theme, const char *str,
|
||||||
/* reset colors and attributes back to default */
|
/* reset colors and attributes back to default */
|
||||||
fg = theme->default_color;
|
fg = theme->default_color;
|
||||||
bg = -1;
|
bg = -1;
|
||||||
flags &= ~(GUI_PRINT_FLAG_INDENT |
|
flags &= ~(GUI_PRINT_FLAG_INDENT | GUI_PRINT_FLAG_BOLD |
|
||||||
GUI_PRINT_FLAG_BOLD | GUI_PRINT_FLAG_ITALIC | GUI_PRINT_FLAG_UNDERLINE |
|
GUI_PRINT_FLAG_ITALIC | GUI_PRINT_FLAG_UNDERLINE |
|
||||||
GUI_PRINT_FLAG_BLINK | GUI_PRINT_FLAG_REVERSE |
|
GUI_PRINT_FLAG_BLINK | GUI_PRINT_FLAG_REVERSE |
|
||||||
GUI_PRINT_FLAG_COLOR_24_FG | GUI_PRINT_FLAG_COLOR_24_BG);
|
GUI_PRINT_FLAG_COLOR_24_FG | GUI_PRINT_FLAG_COLOR_24_BG);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
/* hilight */
|
/* hilight */
|
||||||
|
|
@ -1228,7 +1208,8 @@ static const char *get_ansi_color(THEME_REC *theme, const char *str,
|
||||||
case 38:
|
case 38:
|
||||||
case 48:
|
case 48:
|
||||||
/* ANSI indexed color or RGB color */
|
/* ANSI indexed color or RGB color */
|
||||||
if (*str != ';') break;
|
if (*str != ';')
|
||||||
|
break;
|
||||||
str++;
|
str++;
|
||||||
|
|
||||||
if (!parse_uint(str, &endptr, 10, &num2)) {
|
if (!parse_uint(str, &endptr, 10, &num2)) {
|
||||||
|
|
@ -1236,7 +1217,8 @@ static const char *get_ansi_color(THEME_REC *theme, const char *str,
|
||||||
}
|
}
|
||||||
str = endptr;
|
str = endptr;
|
||||||
|
|
||||||
if (*str == '\0') return start;
|
if (*str == '\0')
|
||||||
|
return start;
|
||||||
|
|
||||||
switch (num2) {
|
switch (num2) {
|
||||||
case 2:
|
case 2:
|
||||||
|
|
@ -1252,13 +1234,15 @@ static const char *get_ansi_color(THEME_REC *theme, const char *str,
|
||||||
}
|
}
|
||||||
str++;
|
str++;
|
||||||
for (; i_isdigit(*str); str++)
|
for (; i_isdigit(*str); str++)
|
||||||
num2 = (num2&~0xff) |
|
num2 = (num2 & ~0xff) |
|
||||||
(((num2&0xff) * 10 + (*str-'0'))&0xff);
|
(((num2 & 0xff) * 10 + (*str - '0')) & 0xff);
|
||||||
|
|
||||||
if (*str == '\0') return start;
|
if (*str == '\0')
|
||||||
|
return start;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i == -1) break;
|
if (i == -1)
|
||||||
|
break;
|
||||||
|
|
||||||
if (num == 38) {
|
if (num == 38) {
|
||||||
flags |= GUI_PRINT_FLAG_COLOR_24_FG;
|
flags |= GUI_PRINT_FLAG_COLOR_24_FG;
|
||||||
|
|
@ -1271,7 +1255,8 @@ static const char *get_ansi_color(THEME_REC *theme, const char *str,
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
/* indexed */
|
/* indexed */
|
||||||
if (*str != ';') break;
|
if (*str != ';')
|
||||||
|
break;
|
||||||
str++;
|
str++;
|
||||||
|
|
||||||
if (!parse_uint(str, &endptr, 10, &num2)) {
|
if (!parse_uint(str, &endptr, 10, &num2)) {
|
||||||
|
|
@ -1279,7 +1264,8 @@ static const char *get_ansi_color(THEME_REC *theme, const char *str,
|
||||||
}
|
}
|
||||||
str = endptr;
|
str = endptr;
|
||||||
|
|
||||||
if (*str == '\0') return start;
|
if (*str == '\0')
|
||||||
|
return start;
|
||||||
|
|
||||||
if (num == 38) {
|
if (num == 38) {
|
||||||
flags &= ~GUI_PRINT_FLAG_COLOR_24_FG;
|
flags &= ~GUI_PRINT_FLAG_COLOR_24_FG;
|
||||||
|
|
@ -1295,25 +1281,28 @@ static const char *get_ansi_color(THEME_REC *theme, const char *str,
|
||||||
default:
|
default:
|
||||||
if (num >= 30 && num <= 37) {
|
if (num >= 30 && num <= 37) {
|
||||||
flags &= ~GUI_PRINT_FLAG_COLOR_24_FG;
|
flags &= ~GUI_PRINT_FLAG_COLOR_24_FG;
|
||||||
fg = ansitab[num-30];
|
fg = ansitab[num - 30];
|
||||||
} else if (num >= 40 && num <= 47) {
|
} else if (num >= 40 && num <= 47) {
|
||||||
flags &= ~GUI_PRINT_FLAG_COLOR_24_BG;
|
flags &= ~GUI_PRINT_FLAG_COLOR_24_BG;
|
||||||
bg = ansitab[num-40];
|
bg = ansitab[num - 40];
|
||||||
} else if (num >= 90 && num <= 97) {
|
} else if (num >= 90 && num <= 97) {
|
||||||
flags &= ~GUI_PRINT_FLAG_COLOR_24_FG;
|
flags &= ~GUI_PRINT_FLAG_COLOR_24_FG;
|
||||||
fg = 8 + ansitab[num-90];
|
fg = 8 + ansitab[num - 90];
|
||||||
} else if (num >= 100 && num <= 107) {
|
} else if (num >= 100 && num <= 107) {
|
||||||
flags &= ~GUI_PRINT_FLAG_COLOR_24_BG;
|
flags &= ~GUI_PRINT_FLAG_COLOR_24_BG;
|
||||||
bg = 8 + ansitab[num-100];
|
bg = 8 + ansitab[num - 100];
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
num = 0;
|
num = 0;
|
||||||
|
|
||||||
if (*str == 'm') {
|
if (*str == 'm') {
|
||||||
if (fg_ret != NULL) *fg_ret = fg;
|
if (fg_ret != NULL)
|
||||||
if (bg_ret != NULL) *bg_ret = bg;
|
*fg_ret = fg;
|
||||||
if (flags_ret != NULL) *flags_ret = flags;
|
if (bg_ret != NULL)
|
||||||
|
*bg_ret = bg;
|
||||||
|
if (flags_ret != NULL)
|
||||||
|
*flags_ret = flags;
|
||||||
|
|
||||||
str++;
|
str++;
|
||||||
break;
|
break;
|
||||||
|
|
@ -1337,37 +1326,38 @@ static void get_mirc_color(const char **str, int *fg_ret, int *bg_ret)
|
||||||
bg = -1;
|
bg = -1;
|
||||||
} else {
|
} else {
|
||||||
/* foreground color */
|
/* foreground color */
|
||||||
fg = **str-'0';
|
fg = **str - '0';
|
||||||
(*str)++;
|
(*str)++;
|
||||||
if (i_isdigit(**str)) {
|
if (i_isdigit(**str)) {
|
||||||
fg = fg*10 + (**str-'0');
|
fg = fg * 10 + (**str - '0');
|
||||||
(*str)++;
|
(*str)++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((*str)[0] == ',' && i_isdigit((*str)[1])) {
|
if ((*str)[0] == ',' && i_isdigit((*str)[1])) {
|
||||||
/* background color */
|
/* background color */
|
||||||
(*str)++;
|
(*str)++;
|
||||||
bg = **str-'0';
|
bg = **str - '0';
|
||||||
(*str)++;
|
(*str)++;
|
||||||
if (i_isdigit(**str)) {
|
if (i_isdigit(**str)) {
|
||||||
bg = bg*10 + (**str-'0');
|
bg = bg * 10 + (**str - '0');
|
||||||
(*str)++;
|
(*str)++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fg_ret) *fg_ret = fg;
|
if (fg_ret)
|
||||||
if (bg_ret) *bg_ret = bg;
|
*fg_ret = fg;
|
||||||
|
if (bg_ret)
|
||||||
|
*bg_ret = bg;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define IS_COLOR_CODE(c) \
|
#define IS_COLOR_CODE(c) \
|
||||||
((c) == 2 || (c) == 3 || (c) == 4 || (c) == 6 || (c) == 7 || \
|
((c) == 2 || (c) == 3 || (c) == 4 || (c) == 6 || (c) == 7 || (c) == 15 || (c) == 17 || \
|
||||||
(c) == 15 || (c) == 17 || (c) == 22 || (c) == 27 || (c) == 29 || (c) == 31)
|
(c) == 22 || (c) == 27 || (c) == 29 || (c) == 31)
|
||||||
|
|
||||||
/* Return how many characters in `str' must be skipped before `len'
|
/* Return how many characters in `str' must be skipped before `len'
|
||||||
characters of text is skipped. */
|
characters of text is skipped. */
|
||||||
int strip_real_length(const char *str, int len,
|
int strip_real_length(const char *str, int len, int *last_color_pos, int *last_color_len)
|
||||||
int *last_color_pos, int *last_color_len)
|
|
||||||
{
|
{
|
||||||
const char *start = str;
|
const char *start = str;
|
||||||
|
|
||||||
|
|
@ -1381,36 +1371,39 @@ int strip_real_length(const char *str, int len,
|
||||||
const char *mircstart = str;
|
const char *mircstart = str;
|
||||||
|
|
||||||
if (last_color_pos != NULL)
|
if (last_color_pos != NULL)
|
||||||
*last_color_pos = (int) (str-start);
|
*last_color_pos = (int) (str - start);
|
||||||
str++;
|
str++;
|
||||||
get_mirc_color(&str, NULL, NULL);
|
get_mirc_color(&str, NULL, NULL);
|
||||||
if (last_color_len != NULL)
|
if (last_color_len != NULL)
|
||||||
*last_color_len = (int) (str-mircstart);
|
*last_color_len = (int) (str - mircstart);
|
||||||
|
|
||||||
} else if (*str == 4 && str[1] != '\0') {
|
} else if (*str == 4 && str[1] != '\0') {
|
||||||
/* We expect 4 to indicate an internal Irssi color code. However 4
|
/* We expect 4 to indicate an internal Irssi color code. However 4
|
||||||
* also means hex color, an alternative to mIRC color codes. We
|
* also means hex color, an alternative to mIRC color codes. We
|
||||||
* don't support those. */
|
* don't support those. */
|
||||||
if (str[1] == FORMAT_COLOR_24 && str[2] != '\0') {
|
if (str[1] == FORMAT_COLOR_24 && str[2] != '\0') {
|
||||||
if (str[3] == '\0') str++;
|
if (str[3] == '\0')
|
||||||
else if (str[4] == '\0') str += 2;
|
str++;
|
||||||
else if (str[5] == '\0') str += 3;
|
else if (str[4] == '\0')
|
||||||
|
str += 2;
|
||||||
|
else if (str[5] == '\0')
|
||||||
|
str += 3;
|
||||||
else {
|
else {
|
||||||
if (last_color_pos != NULL)
|
if (last_color_pos != NULL)
|
||||||
*last_color_pos = (int) (str-start);
|
*last_color_pos = (int) (str - start);
|
||||||
if (last_color_len != NULL)
|
if (last_color_len != NULL)
|
||||||
*last_color_len = 6;
|
*last_color_len = 6;
|
||||||
str+=4;
|
str += 4;
|
||||||
}
|
}
|
||||||
} else if (str[1] < FORMAT_STYLE_SPECIAL && str[2] != '\0') {
|
} else if (str[1] < FORMAT_STYLE_SPECIAL && str[2] != '\0') {
|
||||||
if (last_color_pos != NULL)
|
if (last_color_pos != NULL)
|
||||||
*last_color_pos = (int) (str-start);
|
*last_color_pos = (int) (str - start);
|
||||||
if (last_color_len != NULL)
|
if (last_color_len != NULL)
|
||||||
*last_color_len = 3;
|
*last_color_len = 3;
|
||||||
str++;
|
str++;
|
||||||
} else if (str[1] == FORMAT_STYLE_DEFAULTS) {
|
} else if (str[1] == FORMAT_STYLE_DEFAULTS) {
|
||||||
if (last_color_pos != NULL)
|
if (last_color_pos != NULL)
|
||||||
*last_color_pos = (int) (str-start);
|
*last_color_pos = (int) (str - start);
|
||||||
if (last_color_len != NULL)
|
if (last_color_len != NULL)
|
||||||
*last_color_len = 2;
|
*last_color_len = 2;
|
||||||
}
|
}
|
||||||
|
|
@ -1424,7 +1417,7 @@ int strip_real_length(const char *str, int len,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (int) (str-start);
|
return (int) (str - start);
|
||||||
}
|
}
|
||||||
|
|
||||||
char *strip_codes(const char *input)
|
char *strip_codes(const char *input)
|
||||||
|
|
@ -1452,12 +1445,16 @@ char *strip_codes(const char *input)
|
||||||
/* irssi color */
|
/* irssi color */
|
||||||
if (p[2] != '\0') {
|
if (p[2] != '\0') {
|
||||||
if (p[1] == FORMAT_COLOR_24) {
|
if (p[1] == FORMAT_COLOR_24) {
|
||||||
if (p[3] == '\0') p += 2;
|
if (p[3] == '\0')
|
||||||
else if (p[4] == '\0') p += 3;
|
p += 2;
|
||||||
else if (p[5] == '\0') p += 4;
|
else if (p[4] == '\0')
|
||||||
else p += 5;
|
p += 3;
|
||||||
|
else if (p[5] == '\0')
|
||||||
|
p += 4;
|
||||||
|
else
|
||||||
|
p += 5;
|
||||||
} else
|
} else
|
||||||
p += 2;
|
p += 2;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1492,7 +1489,9 @@ void format_send_as_gui_flags(TEXT_DEST_REC *dest, const char *text, SIGNAL_FUNC
|
||||||
|
|
||||||
dup = str = g_strdup(text);
|
dup = str = g_strdup(text);
|
||||||
|
|
||||||
flags = 0; fgcolor = theme->default_color; bgcolor = -1;
|
flags = 0;
|
||||||
|
fgcolor = theme->default_color;
|
||||||
|
bgcolor = -1;
|
||||||
|
|
||||||
if (*str == '\0') {
|
if (*str == '\0') {
|
||||||
/* empty line, write line info only */
|
/* empty line, write line info only */
|
||||||
|
|
@ -1519,7 +1518,7 @@ void format_send_as_gui_flags(TEXT_DEST_REC *dest, const char *text, SIGNAL_FUNC
|
||||||
/* send the text to gui handler */
|
/* send the text to gui handler */
|
||||||
handler(dest->window, GINT_TO_POINTER(fgcolor), GINT_TO_POINTER(bgcolor),
|
handler(dest->window, GINT_TO_POINTER(fgcolor), GINT_TO_POINTER(bgcolor),
|
||||||
GINT_TO_POINTER(flags), str, dest);
|
GINT_TO_POINTER(flags), str, dest);
|
||||||
flags &= ~(GUI_PRINT_FLAG_INDENT|GUI_PRINT_FLAG_CLRTOEOL);
|
flags &= ~(GUI_PRINT_FLAG_INDENT | GUI_PRINT_FLAG_CLRTOEOL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type == '\n') {
|
if (type == '\n') {
|
||||||
|
|
@ -1527,14 +1526,13 @@ void format_send_as_gui_flags(TEXT_DEST_REC *dest, const char *text, SIGNAL_FUNC
|
||||||
GINT_TO_POINTER(GUI_PRINT_FLAG_NEWLINE), "", dest);
|
GINT_TO_POINTER(GUI_PRINT_FLAG_NEWLINE), "", dest);
|
||||||
fgcolor = theme->default_color;
|
fgcolor = theme->default_color;
|
||||||
bgcolor = -1;
|
bgcolor = -1;
|
||||||
flags &= GUI_PRINT_FLAG_INDENT|GUI_PRINT_FLAG_MONOSPACE;
|
flags &= GUI_PRINT_FLAG_INDENT | GUI_PRINT_FLAG_MONOSPACE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*ptr == '\0')
|
if (*ptr == '\0')
|
||||||
break;
|
break;
|
||||||
|
|
||||||
switch (type)
|
switch (type) {
|
||||||
{
|
|
||||||
case 2:
|
case 2:
|
||||||
/* bold */
|
/* bold */
|
||||||
if (!hide_text_style)
|
if (!hide_text_style)
|
||||||
|
|
@ -1542,9 +1540,8 @@ void format_send_as_gui_flags(TEXT_DEST_REC *dest, const char *text, SIGNAL_FUNC
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
/* MIRC color */
|
/* MIRC color */
|
||||||
get_mirc_color((const char **) &ptr,
|
get_mirc_color((const char **) &ptr, hide_colors ? NULL : &fgcolor,
|
||||||
hide_colors ? NULL : &fgcolor,
|
hide_colors ? NULL : &bgcolor);
|
||||||
hide_colors ? NULL : &bgcolor);
|
|
||||||
if (!hide_colors)
|
if (!hide_colors)
|
||||||
flags |= GUI_PRINT_FLAG_MIRC_COLOR;
|
flags |= GUI_PRINT_FLAG_MIRC_COLOR;
|
||||||
break;
|
break;
|
||||||
|
|
@ -1576,7 +1573,7 @@ void format_send_as_gui_flags(TEXT_DEST_REC *dest, const char *text, SIGNAL_FUNC
|
||||||
case FORMAT_STYLE_DEFAULTS:
|
case FORMAT_STYLE_DEFAULTS:
|
||||||
fgcolor = theme->default_color;
|
fgcolor = theme->default_color;
|
||||||
bgcolor = -1;
|
bgcolor = -1;
|
||||||
flags &= GUI_PRINT_FLAG_INDENT|GUI_PRINT_FLAG_MONOSPACE;
|
flags &= GUI_PRINT_FLAG_INDENT | GUI_PRINT_FLAG_MONOSPACE;
|
||||||
break;
|
break;
|
||||||
case FORMAT_STYLE_CLRTOEOL:
|
case FORMAT_STYLE_CLRTOEOL:
|
||||||
break;
|
break;
|
||||||
|
|
@ -1610,7 +1607,8 @@ void format_send_as_gui_flags(TEXT_DEST_REC *dest, const char *text, SIGNAL_FUNC
|
||||||
default:
|
default:
|
||||||
if (*ptr != FORMAT_COLOR_NOCHANGE) {
|
if (*ptr != FORMAT_COLOR_NOCHANGE) {
|
||||||
flags &= ~GUI_PRINT_FLAG_COLOR_24_FG;
|
flags &= ~GUI_PRINT_FLAG_COLOR_24_FG;
|
||||||
fgcolor = *ptr==(char)0xff ? -1 : (unsigned char) *ptr-'0';
|
fgcolor =
|
||||||
|
*ptr == (char) 0xff ? -1 : (unsigned char) *ptr - '0';
|
||||||
}
|
}
|
||||||
if (ptr[1] == '\0')
|
if (ptr[1] == '\0')
|
||||||
break;
|
break;
|
||||||
|
|
@ -1618,7 +1616,7 @@ void format_send_as_gui_flags(TEXT_DEST_REC *dest, const char *text, SIGNAL_FUNC
|
||||||
ptr++;
|
ptr++;
|
||||||
if (*ptr != FORMAT_COLOR_NOCHANGE) {
|
if (*ptr != FORMAT_COLOR_NOCHANGE) {
|
||||||
flags &= ~GUI_PRINT_FLAG_COLOR_24_BG;
|
flags &= ~GUI_PRINT_FLAG_COLOR_24_BG;
|
||||||
bgcolor = *ptr==(char)0xff ? -1 : *ptr-'0';
|
bgcolor = *ptr == (char) 0xff ? -1 : *ptr - '0';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (*ptr == '\0')
|
if (*ptr == '\0')
|
||||||
|
|
@ -1635,7 +1633,7 @@ void format_send_as_gui_flags(TEXT_DEST_REC *dest, const char *text, SIGNAL_FUNC
|
||||||
/* remove all styling */
|
/* remove all styling */
|
||||||
fgcolor = theme->default_color;
|
fgcolor = theme->default_color;
|
||||||
bgcolor = -1;
|
bgcolor = -1;
|
||||||
flags &= GUI_PRINT_FLAG_INDENT|GUI_PRINT_FLAG_MONOSPACE;
|
flags &= GUI_PRINT_FLAG_INDENT | GUI_PRINT_FLAG_MONOSPACE;
|
||||||
break;
|
break;
|
||||||
case 17:
|
case 17:
|
||||||
if (!hide_text_style)
|
if (!hide_text_style)
|
||||||
|
|
@ -1658,11 +1656,9 @@ void format_send_as_gui_flags(TEXT_DEST_REC *dest, const char *text, SIGNAL_FUNC
|
||||||
break;
|
break;
|
||||||
case 27:
|
case 27:
|
||||||
/* ansi color code */
|
/* ansi color code */
|
||||||
ptr = (char *)
|
ptr = (char *) get_ansi_color(theme, ptr, hide_colors ? NULL : &fgcolor,
|
||||||
get_ansi_color(theme, ptr,
|
hide_colors ? NULL : &bgcolor,
|
||||||
hide_colors ? NULL : &fgcolor,
|
hide_colors ? NULL : &flags);
|
||||||
hide_colors ? NULL : &bgcolor,
|
|
||||||
hide_colors ? NULL : &flags);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1767,7 +1763,7 @@ static void read_settings(void)
|
||||||
timestamp_level = settings_get_bool("timestamps") ? MSGLEVEL_ALL : 0;
|
timestamp_level = settings_get_bool("timestamps") ? MSGLEVEL_ALL : 0;
|
||||||
if (timestamp_level > 0)
|
if (timestamp_level > 0)
|
||||||
timestamp_level = settings_get_level("timestamp_level");
|
timestamp_level = settings_get_level("timestamp_level");
|
||||||
timestamp_timeout = settings_get_time("timestamp_timeout")/1000;
|
timestamp_timeout = settings_get_time("timestamp_timeout") / 1000;
|
||||||
|
|
||||||
hide_server_tags = settings_get_bool("hide_server_tags");
|
hide_server_tags = settings_get_bool("hide_server_tags");
|
||||||
hide_text_style = settings_get_bool("hide_text_style");
|
hide_text_style = settings_get_bool("hide_text_style");
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue