mirror of
https://github.com/irssi/irssi.git
synced 2026-08-08 19:30:15 +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)
|
||||
return "";
|
||||
|
||||
*free_ret = TRUE;
|
||||
*free_ret = TRUE;
|
||||
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)
|
||||
{
|
||||
int count = 0;
|
||||
if (!str) return 0;
|
||||
if (!str)
|
||||
return 0;
|
||||
|
||||
for (const char *p = str; *p; p++) {
|
||||
/* Alfanumeryczne */
|
||||
|
|
@ -61,9 +62,8 @@ static int count_nick_chars(const char *str)
|
|||
count++;
|
||||
}
|
||||
/* Specjalne znaki nicka - zgodnie z isnickchar z fe-messages.c */
|
||||
else if (*p == '`' || *p == '-' || *p == '_' ||
|
||||
*p == '[' || *p == ']' || *p == '{' || *p == '}' ||
|
||||
*p == '|' || *p == '\\' || *p == '^') {
|
||||
else if (*p == '`' || *p == '-' || *p == '_' || *p == '[' || *p == ']' ||
|
||||
*p == '{' || *p == '}' || *p == '|' || *p == '\\' || *p == '^') {
|
||||
count++;
|
||||
}
|
||||
/* 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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
*free_ret = TRUE;
|
||||
return g_strnfill(padding, ' ');
|
||||
}
|
||||
|
|
@ -113,8 +111,6 @@ static char *expando_nicktrunc(SERVER_REC *server, void *item, int *free_ret)
|
|||
const char *mode;
|
||||
char *result;
|
||||
|
||||
|
||||
|
||||
/* Gdy wyłączone - zwróć oryginalny nick */
|
||||
if (!settings_get_bool("nick_column_enabled")) {
|
||||
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 >> */
|
||||
result = g_strdup_printf("%.*s>>", available_for_nick, current_nick);
|
||||
|
||||
|
||||
} else {
|
||||
/* Mode sam za długi */
|
||||
result = g_strdup(">>");
|
||||
|
||||
|
||||
}
|
||||
*free_ret = TRUE;
|
||||
return result;
|
||||
|
|
@ -173,18 +166,14 @@ void clear_nick_context(void)
|
|||
|
||||
void fe_expandos_init(void)
|
||||
{
|
||||
expando_create("winref", expando_winref,
|
||||
"window changed", EXPANDO_ARG_NONE,
|
||||
"window refnum changed", EXPANDO_ARG_WINDOW, NULL);
|
||||
expando_create("winname", expando_winname,
|
||||
"window changed", EXPANDO_ARG_NONE,
|
||||
"window name changed", EXPANDO_ARG_WINDOW, NULL);
|
||||
expando_create("nickalign", expando_nickalign,
|
||||
"message public", EXPANDO_ARG_NONE,
|
||||
"message own_public", EXPANDO_ARG_NONE, NULL);
|
||||
expando_create("nicktrunc", expando_nicktrunc,
|
||||
"message public", EXPANDO_ARG_NONE,
|
||||
"message own_public", EXPANDO_ARG_NONE, NULL);
|
||||
expando_create("winref", expando_winref, "window changed", EXPANDO_ARG_NONE,
|
||||
"window refnum changed", EXPANDO_ARG_WINDOW, NULL);
|
||||
expando_create("winname", expando_winname, "window changed", EXPANDO_ARG_NONE,
|
||||
"window name changed", EXPANDO_ARG_WINDOW, NULL);
|
||||
expando_create("nickalign", expando_nickalign, "message public", EXPANDO_ARG_NONE,
|
||||
"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)
|
||||
|
|
|
|||
|
|
@ -42,10 +42,9 @@ void update_nick_context(const char *nick, const char *mode);
|
|||
void clear_nick_context(void);
|
||||
|
||||
#define ishighalnum(c) ((unsigned char) (c) >= 128 || i_isalnum(c))
|
||||
#define isnickchar(a) \
|
||||
(i_isalnum(a) || (a) == '`' || (a) == '-' || (a) == '_' || \
|
||||
(a) == '[' || (a) == ']' || (a) == '{' || (a) == '}' || \
|
||||
(a) == '|' || (a) == '\\' || (a) == '^')
|
||||
#define isnickchar(a) \
|
||||
(i_isalnum(a) || (a) == '`' || (a) == '-' || (a) == '_' || (a) == '[' || (a) == ']' || \
|
||||
(a) == '{' || (a) == '}' || (a) == '|' || (a) == '\\' || (a) == '^')
|
||||
|
||||
GHashTable *printnicks;
|
||||
|
||||
|
|
@ -58,7 +57,7 @@ char *expand_emphasis(WI_ITEM_REC *item, const char *text)
|
|||
int pos;
|
||||
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");
|
||||
|
||||
|
|
@ -82,10 +81,10 @@ char *expand_emphasis(WI_ITEM_REC *item, const char *text)
|
|||
that the matching end marker ends a word */
|
||||
if ((pos > 0 && bgn[-1] != ' ') || !ishighalnum(bgn[1]))
|
||||
continue;
|
||||
if ((end = strchr(bgn+1, *bgn)) == NULL)
|
||||
if ((end = strchr(bgn + 1, *bgn)) == NULL)
|
||||
continue;
|
||||
if (!ishighalnum(end[-1]) || ishighalnum(end[1]) ||
|
||||
end[1] == type || end[1] == '*' || end[1] == '_' ||
|
||||
if (!ishighalnum(end[-1]) || ishighalnum(end[1]) || end[1] == type ||
|
||||
end[1] == '*' || end[1] == '_' ||
|
||||
/* special case for italics to not emphasise
|
||||
common paths by skipping /.../.X */
|
||||
(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
|
||||
use emphasis on them. */
|
||||
int found;
|
||||
char c;
|
||||
char c;
|
||||
char *end2;
|
||||
|
||||
/* check if _foo_ is a nick */
|
||||
c = end[1];
|
||||
end[1] = '\0';
|
||||
found = nicklist_find(CHANNEL(item), bgn) != NULL;
|
||||
end[1] = '\0';
|
||||
found = nicklist_find(CHANNEL(item), bgn) != NULL;
|
||||
end[1] = c;
|
||||
if (found) continue;
|
||||
if (found)
|
||||
continue;
|
||||
|
||||
/* check if the whole 'word' (e.g. "_foo_^") is a nick
|
||||
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';
|
||||
found = nicklist_find(CHANNEL(item), bgn) != NULL;
|
||||
end2[1] = c;
|
||||
if (found) continue;
|
||||
if (found)
|
||||
continue;
|
||||
}
|
||||
|
||||
/* allow only *word* emphasis, not *multiple words* */
|
||||
if (!settings_get_bool("emphasis_multiword")) {
|
||||
char *c;
|
||||
for (c = bgn+1; c != end; c++) {
|
||||
for (c = bgn + 1; c != end; c++) {
|
||||
if (!ishighalnum(*c))
|
||||
break;
|
||||
}
|
||||
if (c != end) continue;
|
||||
if (c != end)
|
||||
continue;
|
||||
}
|
||||
|
||||
if (settings_get_bool("emphasis_replace")) {
|
||||
*bgn = *end = type;
|
||||
pos += (end-bgn);
|
||||
pos += (end - bgn);
|
||||
} else {
|
||||
g_string_insert_c(str, pos, type);
|
||||
pos += (end - bgn) + 2;
|
||||
pos += (end - bgn) + 2;
|
||||
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)
|
||||
{
|
||||
char *emptystr;
|
||||
char *emptystr;
|
||||
char *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')
|
||||
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);
|
||||
|
||||
return channel_get_nickmode_rec(channel == NULL ? NULL :
|
||||
nicklist_find(channel, nick));
|
||||
return channel_get_nickmode_rec(channel == NULL ? NULL : nicklist_find(channel, nick));
|
||||
}
|
||||
|
||||
static void sig_message_public(SERVER_REC *server, const char *msg,
|
||||
const char *nick, const char *address,
|
||||
const char *target, NICK_REC *nickrec)
|
||||
static void sig_message_public(SERVER_REC *server, const char *msg, const char *nick,
|
||||
const char *address, const char *target, NICK_REC *nickrec)
|
||||
{
|
||||
CHANNEL_REC *chanrec;
|
||||
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 */
|
||||
chanrec = channel_find(server, target);
|
||||
if (nickrec == NULL && chanrec != NULL)
|
||||
nickrec = nicklist_find(chanrec, nick);
|
||||
nickrec = nicklist_find(chanrec, nick);
|
||||
|
||||
for_me = !settings_get_bool("hilight_nick_matches") ? FALSE :
|
||||
!settings_get_bool("hilight_nick_matches_everywhere") ?
|
||||
nick_match_msg(chanrec, msg, server->nick) :
|
||||
nick_match_msg_everywhere(chanrec, msg, server->nick);
|
||||
hilight = for_me ? NULL :
|
||||
hilight_match_nick(server, target, nick, address, MSGLEVEL_PUBLIC, msg);
|
||||
for_me = !settings_get_bool("hilight_nick_matches") ?
|
||||
FALSE :
|
||||
!settings_get_bool("hilight_nick_matches_everywhere") ?
|
||||
nick_match_msg(chanrec, msg, server->nick) :
|
||||
nick_match_msg_everywhere(chanrec, msg, server->nick);
|
||||
hilight =
|
||||
for_me ? NULL : hilight_match_nick(server, target, nick, address, MSGLEVEL_PUBLIC, msg);
|
||||
color = (hilight == NULL) ? NULL : hilight_get_color(hilight);
|
||||
|
||||
print_channel = chanrec == NULL ||
|
||||
!window_item_is_active((WI_ITEM_REC *) chanrec);
|
||||
print_channel = chanrec == NULL || !window_item_is_active((WI_ITEM_REC *) chanrec);
|
||||
if (!print_channel && settings_get_bool("print_active_channel") &&
|
||||
window_item_window((WI_ITEM_REC *) chanrec)->items->next != NULL)
|
||||
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
|
||||
(in case there's multiple identical nicks) */
|
||||
nickmode = channel_get_nickmode_rec(nickrec);
|
||||
printnick = nickrec == NULL ? nick :
|
||||
g_hash_table_lookup(printnicks, nickrec);
|
||||
printnick = nickrec == NULL ? nick : g_hash_table_lookup(printnicks, nickrec);
|
||||
if (printnick == NULL)
|
||||
printnick = nick;
|
||||
|
||||
|
|
@ -232,24 +231,20 @@ static void sig_message_public(SERVER_REC *server, const char *msg,
|
|||
dest.nick = nick;
|
||||
if (color != NULL) {
|
||||
/* highlighted nick */
|
||||
hilight_update_text_dest(&dest,hilight);
|
||||
hilight_update_text_dest(&dest, hilight);
|
||||
if (!print_channel) /* message to active channel in window */
|
||||
printformat_dest(&dest, TXT_PUBMSG_HILIGHT, color,
|
||||
printnick, msg, nickmode);
|
||||
printformat_dest(&dest, TXT_PUBMSG_HILIGHT, color, printnick, msg,
|
||||
nickmode);
|
||||
else /* message to not existing/active channel */
|
||||
printformat_dest(&dest, TXT_PUBMSG_HILIGHT_CHANNEL,
|
||||
color, printnick, target, msg,
|
||||
nickmode);
|
||||
printformat_dest(&dest, TXT_PUBMSG_HILIGHT_CHANNEL, color, printnick,
|
||||
target, msg, nickmode);
|
||||
} else {
|
||||
if (!print_channel)
|
||||
printformat_dest(&dest,
|
||||
for_me ? TXT_PUBMSG_ME : TXT_PUBMSG,
|
||||
printnick, msg, nickmode);
|
||||
printformat_dest(&dest, for_me ? TXT_PUBMSG_ME : TXT_PUBMSG, printnick, msg,
|
||||
nickmode);
|
||||
else
|
||||
printformat_dest(&dest,
|
||||
for_me ? TXT_PUBMSG_ME_CHANNEL :
|
||||
TXT_PUBMSG_CHANNEL,
|
||||
printnick, target, msg, nickmode);
|
||||
printformat_dest(&dest, for_me ? TXT_PUBMSG_ME_CHANNEL : TXT_PUBMSG_CHANNEL,
|
||||
printnick, target, msg, 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);
|
||||
}
|
||||
|
||||
static void sig_message_private(SERVER_REC *server, const char *msg,
|
||||
const char *nick, const char *address, const char *target)
|
||||
static void sig_message_private(SERVER_REC *server, const char *msg, const char *nick,
|
||||
const char *address, const char *target)
|
||||
{
|
||||
QUERY_REC *query;
|
||||
char *freemsg = NULL;
|
||||
char *freemsg = NULL;
|
||||
int level = MSGLEVEL_MSGS;
|
||||
|
||||
/* own message returned by bouncer? */
|
||||
|
|
@ -276,24 +271,23 @@ static void sig_message_private(SERVER_REC *server, const char *msg,
|
|||
|
||||
if (own) {
|
||||
printformat(server, target, level,
|
||||
query == NULL ? TXT_OWN_MSG_PRIVATE :
|
||||
TXT_OWN_MSG_PRIVATE_QUERY, target, msg, server->nick);
|
||||
query == NULL ? TXT_OWN_MSG_PRIVATE : TXT_OWN_MSG_PRIVATE_QUERY, target,
|
||||
msg, server->nick);
|
||||
} else {
|
||||
printformat(server, nick, level,
|
||||
query == NULL ? TXT_MSG_PRIVATE :
|
||||
TXT_MSG_PRIVATE_QUERY, nick, address, msg);
|
||||
query == NULL ? TXT_MSG_PRIVATE : TXT_MSG_PRIVATE_QUERY, nick, address,
|
||||
msg);
|
||||
}
|
||||
|
||||
g_free_not_null(freemsg);
|
||||
}
|
||||
|
||||
static void sig_message_own_public(SERVER_REC *server, const char *msg,
|
||||
const char *target)
|
||||
static void sig_message_own_public(SERVER_REC *server, const char *msg, const char *target)
|
||||
{
|
||||
WINDOW_REC *window;
|
||||
CHANNEL_REC *channel;
|
||||
char *nickmode;
|
||||
char *freemsg = NULL;
|
||||
char *freemsg = NULL;
|
||||
int print_channel;
|
||||
channel = channel_find(server, target);
|
||||
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);
|
||||
}
|
||||
|
||||
window = channel == NULL ? NULL :
|
||||
window_item_window((WI_ITEM_REC *) channel);
|
||||
window = channel == NULL ? NULL : window_item_window((WI_ITEM_REC *) channel);
|
||||
|
||||
print_channel = window == NULL ||
|
||||
window->active != (WI_ITEM_REC *) channel;
|
||||
print_channel = window == NULL || window->active != (WI_ITEM_REC *) channel;
|
||||
|
||||
if (!print_channel && settings_get_bool("print_active_channel") &&
|
||||
window != NULL && g_slist_length(window->items) > 1)
|
||||
if (!print_channel && settings_get_bool("print_active_channel") && window != NULL &&
|
||||
g_slist_length(window->items) > 1)
|
||||
print_channel = TRUE;
|
||||
|
||||
if (settings_get_bool("emphasis"))
|
||||
|
|
@ -321,21 +313,21 @@ static void sig_message_own_public(SERVER_REC *server, const char *msg,
|
|||
|
||||
if (!print_channel) {
|
||||
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 {
|
||||
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(freemsg);
|
||||
}
|
||||
|
||||
static void sig_message_own_private(SERVER_REC *server, const char *msg,
|
||||
const char *target, const char *origtarget)
|
||||
static void sig_message_own_private(SERVER_REC *server, const char *msg, const char *target,
|
||||
const char *origtarget)
|
||||
{
|
||||
QUERY_REC *query;
|
||||
char *freemsg = NULL;
|
||||
char *freemsg = NULL;
|
||||
|
||||
g_return_if_fail(server != 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
|
||||
targets are only ',' and '.'. */
|
||||
g_return_if_fail(g_strcmp0(origtarget, ",") == 0 ||
|
||||
g_strcmp0(origtarget, ".") == 0);
|
||||
g_strcmp0(origtarget, ".") == 0);
|
||||
|
||||
printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE,
|
||||
*origtarget == ',' ? TXT_NO_MSGS_GOT :
|
||||
TXT_NO_MSGS_SENT);
|
||||
*origtarget == ',' ? TXT_NO_MSGS_GOT : TXT_NO_MSGS_SENT);
|
||||
signal_stop();
|
||||
return;
|
||||
}
|
||||
|
|
@ -358,17 +349,15 @@ static void sig_message_own_private(SERVER_REC *server, const char *msg,
|
|||
if (settings_get_bool("emphasis"))
|
||||
msg = freemsg = expand_emphasis((WI_ITEM_REC *) query, msg);
|
||||
|
||||
printformat(server, target,
|
||||
MSGLEVEL_MSGS | MSGLEVEL_NOHILIGHT | MSGLEVEL_NO_ACT,
|
||||
query == NULL ? TXT_OWN_MSG_PRIVATE :
|
||||
TXT_OWN_MSG_PRIVATE_QUERY, target, msg, server->nick);
|
||||
printformat(server, target, MSGLEVEL_MSGS | MSGLEVEL_NOHILIGHT | MSGLEVEL_NO_ACT,
|
||||
query == NULL ? TXT_OWN_MSG_PRIVATE : TXT_OWN_MSG_PRIVATE_QUERY, target, msg,
|
||||
server->nick);
|
||||
|
||||
g_free_not_null(freemsg);
|
||||
}
|
||||
|
||||
static void sig_message_join(SERVER_REC *server, const char *channel,
|
||||
const char *nick, const char *address,
|
||||
const char *account, const char *realname)
|
||||
static void sig_message_join(SERVER_REC *server, const char *channel, const char *nick,
|
||||
const char *address, const char *account, const char *realname)
|
||||
{
|
||||
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")) {
|
||||
int txt;
|
||||
if (*account == '\0') txt = TXT_JOIN;
|
||||
else if (g_strcmp0("*", account) == 0) txt = TXT_JOIN_EXTENDED;
|
||||
else txt = TXT_JOIN_EXTENDED_ACCOUNT;
|
||||
printformat(server, channel, level,
|
||||
txt, nick, address, channel, account, realname);
|
||||
if (*account == '\0')
|
||||
txt = TXT_JOIN;
|
||||
else if (g_strcmp0("*", account) == 0)
|
||||
txt = TXT_JOIN_EXTENDED;
|
||||
else
|
||||
txt = TXT_JOIN_EXTENDED_ACCOUNT;
|
||||
printformat(server, channel, level, txt, nick, address, channel, account, realname);
|
||||
} else {
|
||||
printformat(server, channel, level,
|
||||
TXT_JOIN, nick, address, channel, account, realname);
|
||||
printformat(server, channel, level, TXT_JOIN, nick, address, channel, account,
|
||||
realname);
|
||||
}
|
||||
}
|
||||
|
||||
static void sig_message_part(SERVER_REC *server, const char *channel,
|
||||
const char *nick, const char *address,
|
||||
const char *reason)
|
||||
static void sig_message_part(SERVER_REC *server, const char *channel, const char *nick,
|
||||
const char *address, const char *reason)
|
||||
{
|
||||
int level = MSGLEVEL_PARTS;
|
||||
|
||||
ignore_check_plus(server, nick, address, channel, NULL, &level, FALSE);
|
||||
|
||||
printformat(server, channel, level,
|
||||
TXT_PART, nick, address, channel, reason);
|
||||
printformat(server, channel, level, TXT_PART, nick, address, channel, reason);
|
||||
}
|
||||
|
||||
static void spread_server_message_to_windows(SERVER_REC *server, gboolean once,
|
||||
gboolean in_query,
|
||||
int base_level,
|
||||
int txt, int txt_once,
|
||||
const char *nick, const char *address,
|
||||
const char *data,
|
||||
const char *ignore_data
|
||||
)
|
||||
static void spread_server_message_to_windows(SERVER_REC *server, gboolean once, gboolean in_query,
|
||||
int base_level, int txt, int txt_once,
|
||||
const char *nick, const char *address,
|
||||
const char *data, const char *ignore_data)
|
||||
{
|
||||
WINDOW_REC *window;
|
||||
GString *chans;
|
||||
|
|
@ -419,7 +404,8 @@ static void spread_server_message_to_windows(SERVER_REC *server, gboolean once,
|
|||
|
||||
print_channel = NULL;
|
||||
|
||||
count = 0; windows = NULL;
|
||||
count = 0;
|
||||
windows = NULL;
|
||||
chans = g_string_new(NULL);
|
||||
for (tmp = server->channels; tmp != NULL; tmp = tmp->next) {
|
||||
CHANNEL_REC *rec;
|
||||
|
|
@ -430,14 +416,13 @@ static void spread_server_message_to_windows(SERVER_REC *server, gboolean once,
|
|||
continue;
|
||||
}
|
||||
|
||||
if (ignore_check_plus(server, nick, address, rec->visible_name,
|
||||
ignore_data, &level, TRUE)) {
|
||||
if (ignore_check_plus(server, nick, address, rec->visible_name, ignore_data, &level,
|
||||
TRUE)) {
|
||||
count++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (print_channel == NULL ||
|
||||
active_win->active == (WI_ITEM_REC *) rec) {
|
||||
if (print_channel == NULL || active_win->active == (WI_ITEM_REC *) rec) {
|
||||
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);
|
||||
if (g_slist_find(windows, window) == NULL) {
|
||||
windows = g_slist_prepend(windows, window);
|
||||
printformat(server, rec->visible_name,
|
||||
level,
|
||||
txt, nick, address, data,
|
||||
rec->visible_name);
|
||||
printformat(server, rec->visible_name, level, txt, nick, address,
|
||||
data, rec->visible_name);
|
||||
}
|
||||
}
|
||||
count++;
|
||||
|
|
@ -462,38 +445,30 @@ static void spread_server_message_to_windows(SERVER_REC *server, gboolean once,
|
|||
display the change there too */
|
||||
QUERY_REC *query = query_find(server, nick);
|
||||
if (query != NULL) {
|
||||
printformat(server, nick, level,
|
||||
txt, nick, address, data, "");
|
||||
printformat(server, nick, level, txt, nick, address, data, "");
|
||||
}
|
||||
}
|
||||
|
||||
if (once || count == 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,
|
||||
count <= 1 ? txt : txt_once,
|
||||
nick, address, data, chans->str);
|
||||
printformat(server, print_channel, base_level, count <= 1 ? txt : txt_once, nick,
|
||||
address, data, chans->str);
|
||||
}
|
||||
g_string_free(chans, TRUE);
|
||||
}
|
||||
|
||||
static void sig_message_host_changed(SERVER_REC *server, const char *nick,
|
||||
const char *address, const char *old_address)
|
||||
static void sig_message_host_changed(SERVER_REC *server, const char *nick, const char *address,
|
||||
const char *old_address)
|
||||
{
|
||||
spread_server_message_to_windows(
|
||||
server,
|
||||
settings_get_bool("show_quit_once"),
|
||||
TRUE,
|
||||
MSGLEVEL_JOINS,
|
||||
TXT_HOST_CHANGED, TXT_HOST_CHANGED,
|
||||
nick, address, old_address,
|
||||
NULL
|
||||
);
|
||||
spread_server_message_to_windows(server, settings_get_bool("show_quit_once"), 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,
|
||||
const char *address, const char *account)
|
||||
static void sig_message_account_changed(SERVER_REC *server, const char *nick, const char *address,
|
||||
const char *account)
|
||||
{
|
||||
gboolean logged_in;
|
||||
int txt;
|
||||
|
|
@ -504,64 +479,46 @@ static void sig_message_account_changed(SERVER_REC *server, const char *nick,
|
|||
logged_in = g_strcmp0("*", account) != 0;
|
||||
txt = logged_in ? TXT_LOGGED_IN : TXT_LOGGED_OUT;
|
||||
|
||||
spread_server_message_to_windows(
|
||||
server,
|
||||
settings_get_bool("show_quit_once"),
|
||||
TRUE,
|
||||
MSGLEVEL_MODES,
|
||||
txt, txt,
|
||||
nick, address, account,
|
||||
"account"
|
||||
);
|
||||
spread_server_message_to_windows(server, settings_get_bool("show_quit_once"), TRUE,
|
||||
MSGLEVEL_MODES, txt, txt, nick, address, account,
|
||||
"account");
|
||||
}
|
||||
|
||||
static void sig_message_quit(SERVER_REC *server, const char *nick,
|
||||
const char *address, const char *reason)
|
||||
static void sig_message_quit(SERVER_REC *server, const char *nick, const char *address,
|
||||
const char *reason)
|
||||
{
|
||||
spread_server_message_to_windows(
|
||||
server,
|
||||
settings_get_bool("show_quit_once"),
|
||||
TRUE,
|
||||
MSGLEVEL_QUITS,
|
||||
TXT_QUIT, TXT_QUIT_ONCE,
|
||||
nick, address, reason,
|
||||
reason
|
||||
);
|
||||
spread_server_message_to_windows(server, settings_get_bool("show_quit_once"), TRUE,
|
||||
MSGLEVEL_QUITS, TXT_QUIT, TXT_QUIT_ONCE, nick, address,
|
||||
reason, reason);
|
||||
}
|
||||
|
||||
static void sig_message_kick(SERVER_REC *server, const char *channel,
|
||||
const char *nick, const char *kicker,
|
||||
const char *address, const char *reason)
|
||||
static void sig_message_kick(SERVER_REC *server, const char *channel, const char *nick,
|
||||
const char *kicker, const char *address, const char *reason)
|
||||
{
|
||||
int level = MSGLEVEL_KICKS;
|
||||
|
||||
ignore_check_plus(server, kicker, address, channel, reason, &level, FALSE);
|
||||
|
||||
printformat(server, channel, level,
|
||||
TXT_KICK, nick, channel, kicker, reason, address);
|
||||
printformat(server, channel, level, TXT_KICK, nick, channel, kicker, reason, address);
|
||||
}
|
||||
|
||||
static void print_nick_change_channel(SERVER_REC *server, const char *channel,
|
||||
const char *newnick, const char *oldnick,
|
||||
const char *address,
|
||||
int ownnick)
|
||||
static void print_nick_change_channel(SERVER_REC *server, const char *channel, const char *newnick,
|
||||
const char *oldnick, const char *address, int ownnick)
|
||||
{
|
||||
int level;
|
||||
|
||||
level = MSGLEVEL_NICKS;
|
||||
if (ownnick) level |= MSGLEVEL_NO_ACT;
|
||||
if (ignore_check_plus(server, oldnick, address,
|
||||
channel, newnick, &level, TRUE))
|
||||
if (ownnick)
|
||||
level |= MSGLEVEL_NO_ACT;
|
||||
if (ignore_check_plus(server, oldnick, address, channel, newnick, &level, TRUE))
|
||||
return;
|
||||
|
||||
printformat(server, channel, level,
|
||||
ownnick ? TXT_YOUR_NICK_CHANGED : TXT_NICK_CHANGED,
|
||||
oldnick, newnick, channel, address);
|
||||
printformat(server, channel, level, ownnick ? TXT_YOUR_NICK_CHANGED : TXT_NICK_CHANGED,
|
||||
oldnick, newnick, channel, address);
|
||||
}
|
||||
|
||||
static void print_nick_change(SERVER_REC *server, const char *newnick,
|
||||
const char *oldnick, const char *address,
|
||||
int ownnick)
|
||||
static void print_nick_change(SERVER_REC *server, const char *newnick, const char *oldnick,
|
||||
const char *address, int ownnick)
|
||||
{
|
||||
GSList *tmp, *windows;
|
||||
int msgprint;
|
||||
|
|
@ -573,59 +530,55 @@ static void print_nick_change(SERVER_REC *server, const char *newnick,
|
|||
windows = NULL;
|
||||
for (tmp = server->channels; tmp != NULL; tmp = tmp->next) {
|
||||
CHANNEL_REC *channel = tmp->data;
|
||||
WINDOW_REC *window =
|
||||
window_item_window((WI_ITEM_REC *) channel);
|
||||
WINDOW_REC *window = window_item_window((WI_ITEM_REC *) channel);
|
||||
|
||||
if (nicklist_find(channel, newnick) == NULL ||
|
||||
g_slist_find(windows, window) != NULL)
|
||||
continue;
|
||||
|
||||
windows = g_slist_append(windows, window);
|
||||
print_nick_change_channel(server, channel->visible_name,
|
||||
newnick, oldnick, address, ownnick);
|
||||
print_nick_change_channel(server, channel->visible_name, newnick, oldnick, address,
|
||||
ownnick);
|
||||
msgprint = TRUE;
|
||||
}
|
||||
|
||||
g_slist_free(windows);
|
||||
|
||||
if (!msgprint && ownnick) {
|
||||
printformat(server, NULL, MSGLEVEL_NICKS,
|
||||
TXT_YOUR_NICK_CHANGED, oldnick, newnick, "",
|
||||
address);
|
||||
printformat(server, NULL, MSGLEVEL_NICKS, TXT_YOUR_NICK_CHANGED, oldnick, newnick,
|
||||
"", address);
|
||||
}
|
||||
}
|
||||
|
||||
static void sig_message_nick(SERVER_REC *server, const char *newnick,
|
||||
const char *oldnick, const char *address)
|
||||
static void sig_message_nick(SERVER_REC *server, const char *newnick, const char *oldnick,
|
||||
const char *address)
|
||||
{
|
||||
print_nick_change(server, newnick, oldnick, address, FALSE);
|
||||
}
|
||||
|
||||
static void sig_message_own_nick(SERVER_REC *server, const char *newnick,
|
||||
const char *oldnick, const char *address)
|
||||
static void sig_message_own_nick(SERVER_REC *server, const char *newnick, const char *oldnick,
|
||||
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);
|
||||
else {
|
||||
printformat(server, NULL, MSGLEVEL_NICKS,
|
||||
TXT_YOUR_NICK_CHANGED, oldnick, newnick, "",
|
||||
address);
|
||||
printformat(server, NULL, MSGLEVEL_NICKS, TXT_YOUR_NICK_CHANGED, oldnick, newnick,
|
||||
"", address);
|
||||
}
|
||||
}
|
||||
|
||||
static void sig_message_invite(SERVER_REC *server, const char *channel,
|
||||
const char *nick, const char *address)
|
||||
static void sig_message_invite(SERVER_REC *server, const char *channel, const char *nick,
|
||||
const char *address)
|
||||
{
|
||||
char *str;
|
||||
|
||||
str = show_lowascii(channel);
|
||||
printformat(server, NULL, MSGLEVEL_INVITES,
|
||||
TXT_INVITE, nick, str, address);
|
||||
printformat(server, NULL, MSGLEVEL_INVITES, TXT_INVITE, nick, str, address);
|
||||
g_free(str);
|
||||
}
|
||||
|
||||
static void sig_message_invite_other(SERVER_REC *server, const char *channel,
|
||||
const char *invited, const char *nick, const char *address)
|
||||
static void sig_message_invite_other(SERVER_REC *server, const char *channel, const char *invited,
|
||||
const char *nick, const char *address)
|
||||
{
|
||||
char *str;
|
||||
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);
|
||||
|
||||
str = show_lowascii(channel);
|
||||
printformat(server, channel, level,
|
||||
TXT_INVITE_OTHER, invited, nick, str, address);
|
||||
printformat(server, channel, level, TXT_INVITE_OTHER, invited, nick, str, address);
|
||||
g_free(str);
|
||||
}
|
||||
|
||||
static void sig_message_topic(SERVER_REC *server, const char *channel,
|
||||
const char *topic,
|
||||
const char *nick, const char *address)
|
||||
static void sig_message_topic(SERVER_REC *server, const char *channel, const char *topic,
|
||||
const char *nick, const char *address)
|
||||
{
|
||||
int level = MSGLEVEL_TOPICS;
|
||||
|
||||
ignore_check_plus(server, nick, address, channel, topic, &level, FALSE);
|
||||
|
||||
printformat(server, channel, level,
|
||||
*topic != '\0' ? TXT_NEW_TOPIC : TXT_TOPIC_UNSET,
|
||||
nick, channel, topic, address);
|
||||
printformat(server, channel, level, *topic != '\0' ? TXT_NEW_TOPIC : TXT_TOPIC_UNSET, nick,
|
||||
channel, topic, address);
|
||||
}
|
||||
|
||||
static void sig_message_away_notify(SERVER_REC *server, const char *nick,
|
||||
const char *addr, const char *awaymsg)
|
||||
static void sig_message_away_notify(SERVER_REC *server, const char *nick, const char *addr,
|
||||
const char *awaymsg)
|
||||
{
|
||||
int txt = *awaymsg == '\0' ? TXT_NOTIFY_UNAWAY_CHANNEL :
|
||||
TXT_NOTIFY_AWAY_CHANNEL;
|
||||
int txt = *awaymsg == '\0' ? TXT_NOTIFY_UNAWAY_CHANNEL : TXT_NOTIFY_AWAY_CHANNEL;
|
||||
|
||||
if (!settings_get_bool("away_notify_public"))
|
||||
return;
|
||||
|
||||
spread_server_message_to_windows(server, FALSE,
|
||||
FALSE,
|
||||
MSGLEVEL_CRAP,
|
||||
txt, txt,
|
||||
nick, addr,
|
||||
awaymsg,
|
||||
awaymsg
|
||||
);
|
||||
spread_server_message_to_windows(server, FALSE, FALSE, MSGLEVEL_CRAP, txt, txt, nick, addr,
|
||||
awaymsg, awaymsg);
|
||||
}
|
||||
|
||||
static int printnick_exists(NICK_REC *first, NICK_REC *ignore,
|
||||
const char *nick)
|
||||
static int printnick_exists(NICK_REC *first, NICK_REC *ignore, const char *nick)
|
||||
{
|
||||
char *printnick;
|
||||
|
||||
|
|
@ -685,14 +627,14 @@ static int printnick_exists(NICK_REC *first, NICK_REC *ignore,
|
|||
first = first->next;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static NICK_REC *printnick_find_original(NICK_REC *nick)
|
||||
{
|
||||
while (nick != NULL) {
|
||||
if (g_hash_table_lookup(printnicks, nick) == NULL)
|
||||
return nick;
|
||||
return nick;
|
||||
|
||||
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.. */
|
||||
nick = printnick_find_original(firstnick->next);
|
||||
if (nick == NULL)
|
||||
return; /* nope, we have it */
|
||||
return; /* nope, we have it */
|
||||
}
|
||||
|
||||
if (nick->host == NULL)
|
||||
return;
|
||||
return;
|
||||
|
||||
/* identical nick already exists, have to change it somehow.. */
|
||||
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);
|
||||
p = strchr(nickhost+strlen(nick->nick), '.');
|
||||
if (p != NULL) *p = '\0';
|
||||
p = strchr(nickhost + strlen(nick->nick), '.');
|
||||
if (p != NULL)
|
||||
*p = '\0';
|
||||
|
||||
if (!printnick_exists(firstnick, nick, nickhost)) {
|
||||
/* use nick@host */
|
||||
/* use nick@host */
|
||||
g_hash_table_insert(printnicks, nick, nickhost);
|
||||
return;
|
||||
return;
|
||||
}
|
||||
|
||||
newnick = g_string_new(NULL);
|
||||
n = 2;
|
||||
n = 2;
|
||||
do {
|
||||
g_string_printf(newnick, "%s%d", nickhost, n);
|
||||
n++;
|
||||
n++;
|
||||
} while (printnick_exists(firstnick, nick, newnick->str));
|
||||
|
||||
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);
|
||||
if (nickname != NULL) {
|
||||
g_free(nickname);
|
||||
g_free(nickname);
|
||||
g_hash_table_remove(printnicks, nick);
|
||||
}
|
||||
}
|
||||
|
||||
static void sig_nicklist_changed(CHANNEL_REC *channel, NICK_REC *nick)
|
||||
{
|
||||
sig_nicklist_remove(channel, nick);
|
||||
sig_nicklist_new(channel, nick);
|
||||
sig_nicklist_remove(channel, nick);
|
||||
sig_nicklist_new(channel, nick);
|
||||
}
|
||||
|
||||
static void sig_channel_joined(CHANNEL_REC *channel)
|
||||
{
|
||||
NICK_REC *nick;
|
||||
NICK_REC *nick;
|
||||
char *nickname;
|
||||
|
||||
/* 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
|
||||
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)
|
||||
return;
|
||||
|
||||
g_free(nickname);
|
||||
g_free(nickname);
|
||||
g_hash_table_remove(printnicks, channel->ownnick);
|
||||
|
||||
/* our own nick is guaranteed to be the first in list */
|
||||
nick = channel->ownnick->next;
|
||||
/* our own nick is guaranteed to be the first in list */
|
||||
nick = channel->ownnick->next;
|
||||
while (nick != NULL) {
|
||||
if (g_hash_table_lookup(printnicks, nick) == NULL) {
|
||||
sig_nicklist_new(channel, nick);
|
||||
break;
|
||||
break;
|
||||
}
|
||||
nick = nick->next;
|
||||
nick = nick->next;
|
||||
}
|
||||
}
|
||||
|
||||
static void i_hash_free_value(void *key, void *value)
|
||||
{
|
||||
g_free(value);
|
||||
g_free(value);
|
||||
}
|
||||
|
||||
void fe_messages_init(void)
|
||||
{
|
||||
printnicks = g_hash_table_new((GHashFunc) g_direct_hash,
|
||||
(GCompareFunc) g_direct_equal);
|
||||
printnicks = g_hash_table_new((GHashFunc) g_direct_hash, (GCompareFunc) g_direct_equal);
|
||||
|
||||
settings_add_bool("lookandfeel", "hilight_nick_matches", TRUE);
|
||||
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;
|
||||
|
||||
for (n = 0; formats[n].def != NULL; n++) {
|
||||
if (formats[n].tag != NULL &&
|
||||
g_ascii_strcasecmp(formats[n].tag, tag) == 0)
|
||||
if (formats[n].tag != NULL && g_ascii_strcasecmp(formats[n].tag, tag) == 0)
|
||||
return n;
|
||||
}
|
||||
|
||||
|
|
@ -89,22 +88,23 @@ static void format_expand_code(const char **format, GString *out, int *flags)
|
|||
set = TRUE;
|
||||
else if (**format == '-')
|
||||
set = FALSE;
|
||||
else switch (**format) {
|
||||
case 's':
|
||||
case 'S':
|
||||
*flags |= !set ? PRINT_FLAG_UNSET_LINE_START :
|
||||
**format == 's' ? PRINT_FLAG_SET_LINE_START :
|
||||
PRINT_FLAG_SET_LINE_START_IRSSI;
|
||||
break;
|
||||
case 't':
|
||||
*flags |= set ? PRINT_FLAG_SET_TIMESTAMP :
|
||||
PRINT_FLAG_UNSET_TIMESTAMP;
|
||||
break;
|
||||
case 'T':
|
||||
*flags |= set ? PRINT_FLAG_SET_SERVERTAG :
|
||||
PRINT_FLAG_UNSET_SERVERTAG;
|
||||
break;
|
||||
}
|
||||
else
|
||||
switch (**format) {
|
||||
case 's':
|
||||
case 'S':
|
||||
*flags |= !set ? PRINT_FLAG_UNSET_LINE_START :
|
||||
**format == 's' ? PRINT_FLAG_SET_LINE_START :
|
||||
PRINT_FLAG_SET_LINE_START_IRSSI;
|
||||
break;
|
||||
case 't':
|
||||
*flags |=
|
||||
set ? PRINT_FLAG_SET_TIMESTAMP : PRINT_FLAG_UNSET_TIMESTAMP;
|
||||
break;
|
||||
case 'T':
|
||||
*flags |=
|
||||
set ? PRINT_FLAG_SET_SERVERTAG : PRINT_FLAG_UNSET_SERVERTAG;
|
||||
break;
|
||||
}
|
||||
|
||||
(*format)++;
|
||||
}
|
||||
|
|
@ -116,18 +116,15 @@ void format_ext_color(GString *out, int bg, int color)
|
|||
if (bg && color < 0x10)
|
||||
g_string_append_c(out, FORMAT_COLOR_NOCHANGE);
|
||||
if (color < 0x10)
|
||||
g_string_append_c(out, color+'0');
|
||||
g_string_append_c(out, color + '0');
|
||||
else {
|
||||
if (color < 0x60)
|
||||
g_string_append_c(out, bg ? FORMAT_COLOR_EXT1_BG
|
||||
: FORMAT_COLOR_EXT1);
|
||||
g_string_append_c(out, bg ? FORMAT_COLOR_EXT1_BG : FORMAT_COLOR_EXT1);
|
||||
else if (color < 0xb0)
|
||||
g_string_append_c(out, bg ? FORMAT_COLOR_EXT2_BG
|
||||
: FORMAT_COLOR_EXT2);
|
||||
g_string_append_c(out, bg ? FORMAT_COLOR_EXT2_BG : FORMAT_COLOR_EXT2);
|
||||
else
|
||||
g_string_append_c(out, bg ? FORMAT_COLOR_EXT3_BG
|
||||
: FORMAT_COLOR_EXT3);
|
||||
g_string_append_c(out, FORMAT_COLOR_NOCHANGE + ((color-0x10)%0x50));
|
||||
g_string_append_c(out, bg ? FORMAT_COLOR_EXT3_BG : FORMAT_COLOR_EXT3);
|
||||
g_string_append_c(out, FORMAT_COLOR_NOCHANGE + ((color - 0x10) % 0x50));
|
||||
}
|
||||
|
||||
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) {
|
||||
*bgcolor = color;
|
||||
*flags |= GUI_PRINT_FLAG_COLOR_24_BG;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
*fgcolor = color;
|
||||
*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')
|
||||
break;
|
||||
|
||||
tmp = 16 + ((*format)[1]-'0'-1)*36;
|
||||
tmp = 16 + ((*format)[1] - '0' - 1) * 36;
|
||||
if (tmp > 231) {
|
||||
if (!isalpha((*format)[2]))
|
||||
break;
|
||||
|
|
@ -303,8 +299,7 @@ int format_expand_styles(GString *out, const char **format, int *flags)
|
|||
|
||||
if (tmp > 255)
|
||||
break;
|
||||
}
|
||||
else if (tmp > 0) {
|
||||
} else if (tmp > 0) {
|
||||
if (!isalnum((*format)[2]))
|
||||
break;
|
||||
|
||||
|
|
@ -314,8 +309,7 @@ int format_expand_styles(GString *out, const char **format, int *flags)
|
|||
tmp += 10 + (*format)[2] - 'A';
|
||||
else
|
||||
tmp += (*format)[2] - '0';
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
if (!isxdigit((*format)[2]))
|
||||
break;
|
||||
|
||||
|
|
@ -361,26 +355,28 @@ int format_expand_styles(GString *out, const char **format, int *flags)
|
|||
if (p != NULL) {
|
||||
g_string_append_c(out, 4);
|
||||
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;
|
||||
}
|
||||
|
||||
/* check if it's a foreground color */
|
||||
if (fmt == 'p') fmt = 'm';
|
||||
if (fmt == 'p')
|
||||
fmt = 'm';
|
||||
p = strchr(format_fores, fmt);
|
||||
if (p != NULL) {
|
||||
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);
|
||||
break;
|
||||
}
|
||||
|
||||
/* check if it's a bold foreground color */
|
||||
if (fmt == 'P') fmt = 'M';
|
||||
if (fmt == 'P')
|
||||
fmt = 'M';
|
||||
p = strchr(format_boldfores, fmt);
|
||||
if (p != NULL) {
|
||||
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);
|
||||
break;
|
||||
}
|
||||
|
|
@ -391,9 +387,8 @@ int format_expand_styles(GString *out, const char **format, int *flags)
|
|||
return retval;
|
||||
}
|
||||
|
||||
void format_read_arglist(va_list va, FORMAT_REC *format,
|
||||
char **arglist, int arglist_size,
|
||||
char *buffer, int buffer_size)
|
||||
void format_read_arglist(va_list va, FORMAT_REC *format, char **arglist, int arglist_size,
|
||||
char *buffer, int buffer_size)
|
||||
{
|
||||
int num, len, bufpos;
|
||||
|
||||
|
|
@ -416,10 +411,9 @@ void format_read_arglist(va_list va, FORMAT_REC *format,
|
|||
break;
|
||||
}
|
||||
|
||||
arglist[num] = buffer+bufpos;
|
||||
len = g_snprintf(buffer+bufpos, buffer_size-bufpos,
|
||||
"%d", d);
|
||||
bufpos += len+1;
|
||||
arglist[num] = buffer + bufpos;
|
||||
len = g_snprintf(buffer + bufpos, buffer_size - bufpos, "%d", d);
|
||||
bufpos += len + 1;
|
||||
break;
|
||||
}
|
||||
case FORMAT_LONG: {
|
||||
|
|
@ -430,10 +424,9 @@ void format_read_arglist(va_list va, FORMAT_REC *format,
|
|||
break;
|
||||
}
|
||||
|
||||
arglist[num] = buffer+bufpos;
|
||||
len = g_snprintf(buffer+bufpos, buffer_size-bufpos,
|
||||
"%ld", l);
|
||||
bufpos += len+1;
|
||||
arglist[num] = buffer + bufpos;
|
||||
len = g_snprintf(buffer + bufpos, buffer_size - bufpos, "%ld", l);
|
||||
bufpos += len + 1;
|
||||
break;
|
||||
}
|
||||
case FORMAT_FLOAT: {
|
||||
|
|
@ -444,10 +437,9 @@ void format_read_arglist(va_list va, FORMAT_REC *format,
|
|||
break;
|
||||
}
|
||||
|
||||
arglist[num] = buffer+bufpos;
|
||||
len = g_snprintf(buffer+bufpos, buffer_size-bufpos,
|
||||
"%0.2f", f);
|
||||
bufpos += len+1;
|
||||
arglist[num] = buffer + bufpos;
|
||||
len = g_snprintf(buffer + bufpos, buffer_size - bufpos, "%0.2f", f);
|
||||
bufpos += len + 1;
|
||||
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->target = target;
|
||||
dest->level = level;
|
||||
dest->window = window != NULL ? window :
|
||||
window_find_closest(server, target, level);
|
||||
dest->window = window != NULL ? window : window_find_closest(server, target, level);
|
||||
dest->meta = meta != NULL ? meta : global_meta;
|
||||
}
|
||||
|
||||
|
|
@ -521,10 +512,10 @@ int format_get_length(const char *str)
|
|||
if (*str == '%' && str[1] != '\0') {
|
||||
str++;
|
||||
if (*str != '%') {
|
||||
adv = format_expand_styles(tmp, &str, NULL);
|
||||
str += adv;
|
||||
if (adv)
|
||||
continue;
|
||||
adv = format_expand_styles(tmp, &str, NULL);
|
||||
str += adv;
|
||||
if (adv)
|
||||
continue;
|
||||
}
|
||||
|
||||
/* %% or unknown %code, written as-is */
|
||||
|
|
@ -561,17 +552,17 @@ int format_real_length(const char *str, int len)
|
|||
if (*str == '%' && str[1] != '\0') {
|
||||
str++;
|
||||
if (*str != '%') {
|
||||
adv = format_expand_styles(tmp, &str, NULL);
|
||||
if (adv) {
|
||||
str += adv;
|
||||
continue;
|
||||
}
|
||||
/* discount for unknown % */
|
||||
if (--len < 0) {
|
||||
str = oldstr;
|
||||
break;
|
||||
}
|
||||
oldstr = str;
|
||||
adv = format_expand_styles(tmp, &str, NULL);
|
||||
if (adv) {
|
||||
str += adv;
|
||||
continue;
|
||||
}
|
||||
/* discount for unknown % */
|
||||
if (--len < 0) {
|
||||
str = oldstr;
|
||||
break;
|
||||
}
|
||||
oldstr = str;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -583,7 +574,7 @@ int format_real_length(const char *str, int len)
|
|||
}
|
||||
|
||||
g_string_free(tmp, TRUE);
|
||||
return (int) (str-start);
|
||||
return (int) (str - start);
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
if (flags != NULL) *flags = 0;
|
||||
if (flags != NULL)
|
||||
*flags = 0;
|
||||
code = 0;
|
||||
while (*text != '\0') {
|
||||
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, *text);
|
||||
} else {
|
||||
text += adv - 1;
|
||||
text += adv - 1;
|
||||
}
|
||||
code = 0;
|
||||
} else {
|
||||
|
|
@ -739,8 +731,7 @@ char *format_string_unexpand(const char *text, int flags)
|
|||
return g_string_free(out, FALSE);
|
||||
}
|
||||
|
||||
static char *format_get_text_args(TEXT_DEST_REC *dest,
|
||||
const char *text, char **arglist)
|
||||
static char *format_get_text_args(TEXT_DEST_REC *dest, const char *text, char **arglist)
|
||||
{
|
||||
GString *out;
|
||||
char code, *ret;
|
||||
|
|
@ -767,22 +758,25 @@ static char *format_get_text_args(TEXT_DEST_REC *dest,
|
|||
char *ret;
|
||||
|
||||
ret = parse_special((char **) &text, dest->server,
|
||||
dest->target == NULL ? NULL :
|
||||
window_item_find(dest->server, dest->target),
|
||||
arglist, &need_free, NULL, 0);
|
||||
dest->target == NULL ?
|
||||
NULL :
|
||||
window_item_find(dest->server, dest->target),
|
||||
arglist, &need_free, NULL, 0);
|
||||
|
||||
if (ret != NULL) {
|
||||
/* string shouldn't end with \003 or it could
|
||||
mess up the next one or two characters */
|
||||
int diff;
|
||||
int len = strlen(ret);
|
||||
while (len > 0 && ret[len-1] == 3) len--;
|
||||
diff = strlen(ret)-len;
|
||||
while (len > 0 && ret[len - 1] == 3)
|
||||
len--;
|
||||
diff = strlen(ret) - len;
|
||||
|
||||
g_string_append(out, ret);
|
||||
if (diff > 0)
|
||||
g_string_truncate(out, out->len-diff);
|
||||
if (need_free) g_free(ret);
|
||||
g_string_truncate(out, out->len - diff);
|
||||
if (need_free)
|
||||
g_free(ret);
|
||||
}
|
||||
code = 0;
|
||||
} else {
|
||||
|
|
@ -799,8 +793,8 @@ static char *format_get_text_args(TEXT_DEST_REC *dest,
|
|||
return ret;
|
||||
}
|
||||
|
||||
char *format_get_text_theme(THEME_REC *theme, const char *module,
|
||||
TEXT_DEST_REC *dest, int formatnum, ...)
|
||||
char *format_get_text_theme(THEME_REC *theme, const char *module, TEXT_DEST_REC *dest,
|
||||
int formatnum, ...)
|
||||
{
|
||||
va_list va;
|
||||
char *str;
|
||||
|
|
@ -815,21 +809,18 @@ char *format_get_text_theme(THEME_REC *theme, const char *module,
|
|||
return str;
|
||||
}
|
||||
|
||||
char *format_get_text_theme_args(THEME_REC *theme, const char *module,
|
||||
TEXT_DEST_REC *dest, int formatnum,
|
||||
va_list va)
|
||||
char *format_get_text_theme_args(THEME_REC *theme, const char *module, TEXT_DEST_REC *dest,
|
||||
int formatnum, va_list va)
|
||||
{
|
||||
char *arglist[MAX_FORMAT_PARAMS];
|
||||
char buffer[DEFAULT_FORMAT_ARGLIST_SIZE];
|
||||
FORMAT_REC *formats;
|
||||
|
||||
formats = g_hash_table_lookup(default_formats, module);
|
||||
format_read_arglist(va, &formats[formatnum],
|
||||
arglist, sizeof(arglist)/sizeof(char *),
|
||||
buffer, sizeof(buffer));
|
||||
format_read_arglist(va, &formats[formatnum], arglist, sizeof(arglist) / sizeof(char *),
|
||||
buffer, sizeof(buffer));
|
||||
|
||||
return format_get_text_theme_charargs(theme, module, dest,
|
||||
formatnum, arglist);
|
||||
return format_get_text_theme_charargs(theme, module, dest, formatnum, arglist);
|
||||
}
|
||||
|
||||
/* 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)
|
||||
{
|
||||
switch (formatnum) {
|
||||
case TXT_OWN_MSG:
|
||||
case TXT_OWN_MSG_CHANNEL:
|
||||
case TXT_PUBMSG:
|
||||
case TXT_PUBMSG_CHANNEL:
|
||||
case TXT_PUBMSG_ME:
|
||||
case TXT_PUBMSG_ME_CHANNEL:
|
||||
return 0; /* $0 = nick */
|
||||
case TXT_OWN_MSG:
|
||||
case TXT_OWN_MSG_CHANNEL:
|
||||
case TXT_PUBMSG:
|
||||
case TXT_PUBMSG_CHANNEL:
|
||||
case TXT_PUBMSG_ME:
|
||||
case TXT_PUBMSG_ME_CHANNEL:
|
||||
return 0; /* $0 = nick */
|
||||
|
||||
case TXT_PUBMSG_HILIGHT:
|
||||
case TXT_PUBMSG_HILIGHT_CHANNEL:
|
||||
return 1; /* $1 = nick (because $0 = color) */
|
||||
case TXT_PUBMSG_HILIGHT:
|
||||
case TXT_PUBMSG_HILIGHT_CHANNEL:
|
||||
return 1; /* $1 = nick (because $0 = color) */
|
||||
|
||||
default:
|
||||
return 0; /* fallback */
|
||||
default:
|
||||
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];
|
||||
int nick_param;
|
||||
|
||||
if (!format) return NULL;
|
||||
if (!format)
|
||||
return NULL;
|
||||
|
||||
/* Get correct parameter number for nick in this format */
|
||||
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;
|
||||
}
|
||||
|
||||
char *format_get_text_theme_charargs(THEME_REC *theme, const char *module,
|
||||
TEXT_DEST_REC *dest, int formatnum,
|
||||
char **args)
|
||||
char *format_get_text_theme_charargs(THEME_REC *theme, const char *module, TEXT_DEST_REC *dest,
|
||||
int formatnum, char **args)
|
||||
{
|
||||
MODULE_THEME_REC *module_theme;
|
||||
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 */
|
||||
/* Additional protection: avoid recursion during timestamp formatting */
|
||||
if (settings_get_bool("nick_column_enabled") &&
|
||||
g_strcmp0(module, "fe-common/core") == 0 &&
|
||||
is_message_format(formatnum) &&
|
||||
nick_formatting_depth == 0) { /* Prevent recursion */
|
||||
if (settings_get_bool("nick_column_enabled") && g_strcmp0(module, "fe-common/core") == 0 &&
|
||||
is_message_format(formatnum) && nick_formatting_depth == 0) { /* Prevent recursion */
|
||||
|
||||
nick_formatting_depth++;
|
||||
modified_text = apply_nick_column_formatting(text, formatnum);
|
||||
text = modified_text;
|
||||
nick_formatting_depth--;
|
||||
|
||||
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
char *format_get_text(const char *module, WINDOW_REC *window,
|
||||
void *server, const char *target,
|
||||
int formatnum, ...)
|
||||
char *format_get_text(const char *module, WINDOW_REC *window, void *server, const char *target,
|
||||
int formatnum, ...)
|
||||
{
|
||||
TEXT_DEST_REC dest;
|
||||
THEME_REC *theme;
|
||||
|
|
@ -1001,8 +987,7 @@ char *format_add_lineend(const char *text, const char *linestart)
|
|||
return ret;
|
||||
}
|
||||
|
||||
#define LINE_START_IRSSI_LEVEL \
|
||||
(MSGLEVEL_CLIENTERROR | MSGLEVEL_CLIENTNOTICE)
|
||||
#define LINE_START_IRSSI_LEVEL (MSGLEVEL_CLIENTERROR | MSGLEVEL_CLIENTNOTICE)
|
||||
|
||||
#define NOT_LINE_START_LEVEL \
|
||||
(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;
|
||||
|
||||
if ((dest->flags & PRINT_FLAG_SET_TIMESTAMP) == 0 &&
|
||||
(dest->level & (MSGLEVEL_NEVER|MSGLEVEL_LASTLOG)) != 0)
|
||||
(dest->level & (MSGLEVEL_NEVER | MSGLEVEL_LASTLOG)) != 0)
|
||||
return NULL;
|
||||
|
||||
|
||||
if (timestamp_timeout > 0) {
|
||||
diff = t - dest->window->last_timestamp;
|
||||
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);
|
||||
format = format_get_text_theme(theme, MODULE_NAME, dest,
|
||||
TXT_TIMESTAMP);
|
||||
format = format_get_text_theme(theme, MODULE_NAME, dest, TXT_TIMESTAMP);
|
||||
if (strftime(str, sizeof(str), format, tm) <= 0)
|
||||
str[0] = '\0';
|
||||
g_free(format);
|
||||
|
|
@ -1081,8 +1064,7 @@ static char *get_server_tag(THEME_REC *theme, TEXT_DEST_REC *dest)
|
|||
return NULL;
|
||||
|
||||
if ((dest->flags & PRINT_FLAG_SET_SERVERTAG) == 0) {
|
||||
if (dest->window->active != NULL &&
|
||||
dest->window->active->server == dest->server)
|
||||
if (dest->window->active != NULL && dest->window->active->server == dest->server)
|
||||
return NULL;
|
||||
|
||||
if (servers != NULL) {
|
||||
|
|
@ -1100,8 +1082,7 @@ static char *get_server_tag(THEME_REC *theme, TEXT_DEST_REC *dest)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
return format_get_text_theme(theme, MODULE_NAME, dest,
|
||||
TXT_SERVERTAG, dest->server_tag);
|
||||
return format_get_text_theme(theme, MODULE_NAME, dest, TXT_SERVERTAG, dest->server_tag);
|
||||
}
|
||||
|
||||
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)
|
||||
return NULL;
|
||||
|
||||
linestart = g_strconcat(timestamp != NULL ? timestamp : "",
|
||||
servertag, NULL);
|
||||
linestart = g_strconcat(timestamp != NULL ? timestamp : "", servertag, NULL);
|
||||
|
||||
g_free_not_null(timestamp);
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
/* parse ANSI color string */
|
||||
static const char *get_ansi_color(THEME_REC *theme, const char *str,
|
||||
int *fg_ret, int *bg_ret, int *flags_ret)
|
||||
static const char *get_ansi_color(THEME_REC *theme, const char *str, int *fg_ret, int *bg_ret,
|
||||
int *flags_ret)
|
||||
{
|
||||
static char ansitab[8] = { 0, 4, 2, 6, 1, 5, 3, 7 };
|
||||
const char *start;
|
||||
|
|
@ -1153,7 +1132,8 @@ static const char *get_ansi_color(THEME_REC *theme, const char *str,
|
|||
|
||||
num = 0;
|
||||
for (;; str++) {
|
||||
if (*str == '\0') return start;
|
||||
if (*str == '\0')
|
||||
return start;
|
||||
|
||||
if (i_isdigit(*str)) {
|
||||
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 */
|
||||
fg = theme->default_color;
|
||||
bg = -1;
|
||||
flags &= ~(GUI_PRINT_FLAG_INDENT |
|
||||
GUI_PRINT_FLAG_BOLD | GUI_PRINT_FLAG_ITALIC | GUI_PRINT_FLAG_UNDERLINE |
|
||||
GUI_PRINT_FLAG_BLINK | GUI_PRINT_FLAG_REVERSE |
|
||||
GUI_PRINT_FLAG_COLOR_24_FG | GUI_PRINT_FLAG_COLOR_24_BG);
|
||||
flags &= ~(GUI_PRINT_FLAG_INDENT | GUI_PRINT_FLAG_BOLD |
|
||||
GUI_PRINT_FLAG_ITALIC | GUI_PRINT_FLAG_UNDERLINE |
|
||||
GUI_PRINT_FLAG_BLINK | GUI_PRINT_FLAG_REVERSE |
|
||||
GUI_PRINT_FLAG_COLOR_24_FG | GUI_PRINT_FLAG_COLOR_24_BG);
|
||||
break;
|
||||
case 1:
|
||||
/* hilight */
|
||||
|
|
@ -1228,7 +1208,8 @@ static const char *get_ansi_color(THEME_REC *theme, const char *str,
|
|||
case 38:
|
||||
case 48:
|
||||
/* ANSI indexed color or RGB color */
|
||||
if (*str != ';') break;
|
||||
if (*str != ';')
|
||||
break;
|
||||
str++;
|
||||
|
||||
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;
|
||||
|
||||
if (*str == '\0') return start;
|
||||
if (*str == '\0')
|
||||
return start;
|
||||
|
||||
switch (num2) {
|
||||
case 2:
|
||||
|
|
@ -1252,13 +1234,15 @@ static const char *get_ansi_color(THEME_REC *theme, const char *str,
|
|||
}
|
||||
str++;
|
||||
for (; i_isdigit(*str); str++)
|
||||
num2 = (num2&~0xff) |
|
||||
(((num2&0xff) * 10 + (*str-'0'))&0xff);
|
||||
num2 = (num2 & ~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) {
|
||||
flags |= GUI_PRINT_FLAG_COLOR_24_FG;
|
||||
|
|
@ -1271,7 +1255,8 @@ static const char *get_ansi_color(THEME_REC *theme, const char *str,
|
|||
break;
|
||||
case 5:
|
||||
/* indexed */
|
||||
if (*str != ';') break;
|
||||
if (*str != ';')
|
||||
break;
|
||||
str++;
|
||||
|
||||
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;
|
||||
|
||||
if (*str == '\0') return start;
|
||||
if (*str == '\0')
|
||||
return start;
|
||||
|
||||
if (num == 38) {
|
||||
flags &= ~GUI_PRINT_FLAG_COLOR_24_FG;
|
||||
|
|
@ -1295,25 +1281,28 @@ static const char *get_ansi_color(THEME_REC *theme, const char *str,
|
|||
default:
|
||||
if (num >= 30 && num <= 37) {
|
||||
flags &= ~GUI_PRINT_FLAG_COLOR_24_FG;
|
||||
fg = ansitab[num-30];
|
||||
fg = ansitab[num - 30];
|
||||
} else if (num >= 40 && num <= 47) {
|
||||
flags &= ~GUI_PRINT_FLAG_COLOR_24_BG;
|
||||
bg = ansitab[num-40];
|
||||
bg = ansitab[num - 40];
|
||||
} else if (num >= 90 && num <= 97) {
|
||||
flags &= ~GUI_PRINT_FLAG_COLOR_24_FG;
|
||||
fg = 8 + ansitab[num-90];
|
||||
fg = 8 + ansitab[num - 90];
|
||||
} else if (num >= 100 && num <= 107) {
|
||||
flags &= ~GUI_PRINT_FLAG_COLOR_24_BG;
|
||||
bg = 8 + ansitab[num-100];
|
||||
bg = 8 + ansitab[num - 100];
|
||||
}
|
||||
break;
|
||||
}
|
||||
num = 0;
|
||||
|
||||
if (*str == 'm') {
|
||||
if (fg_ret != NULL) *fg_ret = fg;
|
||||
if (bg_ret != NULL) *bg_ret = bg;
|
||||
if (flags_ret != NULL) *flags_ret = flags;
|
||||
if (fg_ret != NULL)
|
||||
*fg_ret = fg;
|
||||
if (bg_ret != NULL)
|
||||
*bg_ret = bg;
|
||||
if (flags_ret != NULL)
|
||||
*flags_ret = flags;
|
||||
|
||||
str++;
|
||||
break;
|
||||
|
|
@ -1337,37 +1326,38 @@ static void get_mirc_color(const char **str, int *fg_ret, int *bg_ret)
|
|||
bg = -1;
|
||||
} else {
|
||||
/* foreground color */
|
||||
fg = **str-'0';
|
||||
fg = **str - '0';
|
||||
(*str)++;
|
||||
if (i_isdigit(**str)) {
|
||||
fg = fg*10 + (**str-'0');
|
||||
fg = fg * 10 + (**str - '0');
|
||||
(*str)++;
|
||||
}
|
||||
|
||||
if ((*str)[0] == ',' && i_isdigit((*str)[1])) {
|
||||
/* background color */
|
||||
(*str)++;
|
||||
bg = **str-'0';
|
||||
bg = **str - '0';
|
||||
(*str)++;
|
||||
if (i_isdigit(**str)) {
|
||||
bg = bg*10 + (**str-'0');
|
||||
bg = bg * 10 + (**str - '0');
|
||||
(*str)++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (fg_ret) *fg_ret = fg;
|
||||
if (bg_ret) *bg_ret = bg;
|
||||
if (fg_ret)
|
||||
*fg_ret = fg;
|
||||
if (bg_ret)
|
||||
*bg_ret = bg;
|
||||
}
|
||||
|
||||
#define IS_COLOR_CODE(c) \
|
||||
((c) == 2 || (c) == 3 || (c) == 4 || (c) == 6 || (c) == 7 || \
|
||||
(c) == 15 || (c) == 17 || (c) == 22 || (c) == 27 || (c) == 29 || (c) == 31)
|
||||
#define IS_COLOR_CODE(c) \
|
||||
((c) == 2 || (c) == 3 || (c) == 4 || (c) == 6 || (c) == 7 || (c) == 15 || (c) == 17 || \
|
||||
(c) == 22 || (c) == 27 || (c) == 29 || (c) == 31)
|
||||
|
||||
/* Return how many characters in `str' must be skipped before `len'
|
||||
characters of text is skipped. */
|
||||
int strip_real_length(const char *str, int len,
|
||||
int *last_color_pos, int *last_color_len)
|
||||
int strip_real_length(const char *str, int len, int *last_color_pos, int *last_color_len)
|
||||
{
|
||||
const char *start = str;
|
||||
|
||||
|
|
@ -1381,36 +1371,39 @@ int strip_real_length(const char *str, int len,
|
|||
const char *mircstart = str;
|
||||
|
||||
if (last_color_pos != NULL)
|
||||
*last_color_pos = (int) (str-start);
|
||||
*last_color_pos = (int) (str - start);
|
||||
str++;
|
||||
get_mirc_color(&str, NULL, 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') {
|
||||
/* We expect 4 to indicate an internal Irssi color code. However 4
|
||||
* also means hex color, an alternative to mIRC color codes. We
|
||||
* don't support those. */
|
||||
if (str[1] == FORMAT_COLOR_24 && str[2] != '\0') {
|
||||
if (str[3] == '\0') str++;
|
||||
else if (str[4] == '\0') str += 2;
|
||||
else if (str[5] == '\0') str += 3;
|
||||
if (str[3] == '\0')
|
||||
str++;
|
||||
else if (str[4] == '\0')
|
||||
str += 2;
|
||||
else if (str[5] == '\0')
|
||||
str += 3;
|
||||
else {
|
||||
if (last_color_pos != NULL)
|
||||
*last_color_pos = (int) (str-start);
|
||||
*last_color_pos = (int) (str - start);
|
||||
if (last_color_len != NULL)
|
||||
*last_color_len = 6;
|
||||
str+=4;
|
||||
str += 4;
|
||||
}
|
||||
} else if (str[1] < FORMAT_STYLE_SPECIAL && str[2] != '\0') {
|
||||
if (last_color_pos != NULL)
|
||||
*last_color_pos = (int) (str-start);
|
||||
*last_color_pos = (int) (str - start);
|
||||
if (last_color_len != NULL)
|
||||
*last_color_len = 3;
|
||||
str++;
|
||||
} else if (str[1] == FORMAT_STYLE_DEFAULTS) {
|
||||
if (last_color_pos != NULL)
|
||||
*last_color_pos = (int) (str-start);
|
||||
*last_color_pos = (int) (str - start);
|
||||
if (last_color_len != NULL)
|
||||
*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)
|
||||
|
|
@ -1452,12 +1445,16 @@ char *strip_codes(const char *input)
|
|||
/* irssi color */
|
||||
if (p[2] != '\0') {
|
||||
if (p[1] == FORMAT_COLOR_24) {
|
||||
if (p[3] == '\0') p += 2;
|
||||
else if (p[4] == '\0') p += 3;
|
||||
else if (p[5] == '\0') p += 4;
|
||||
else p += 5;
|
||||
if (p[3] == '\0')
|
||||
p += 2;
|
||||
else if (p[4] == '\0')
|
||||
p += 3;
|
||||
else if (p[5] == '\0')
|
||||
p += 4;
|
||||
else
|
||||
p += 5;
|
||||
} else
|
||||
p += 2;
|
||||
p += 2;
|
||||
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);
|
||||
|
||||
flags = 0; fgcolor = theme->default_color; bgcolor = -1;
|
||||
flags = 0;
|
||||
fgcolor = theme->default_color;
|
||||
bgcolor = -1;
|
||||
|
||||
if (*str == '\0') {
|
||||
/* 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 */
|
||||
handler(dest->window, GINT_TO_POINTER(fgcolor), GINT_TO_POINTER(bgcolor),
|
||||
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') {
|
||||
|
|
@ -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);
|
||||
fgcolor = theme->default_color;
|
||||
bgcolor = -1;
|
||||
flags &= GUI_PRINT_FLAG_INDENT|GUI_PRINT_FLAG_MONOSPACE;
|
||||
flags &= GUI_PRINT_FLAG_INDENT | GUI_PRINT_FLAG_MONOSPACE;
|
||||
}
|
||||
|
||||
if (*ptr == '\0')
|
||||
break;
|
||||
|
||||
switch (type)
|
||||
{
|
||||
switch (type) {
|
||||
case 2:
|
||||
/* bold */
|
||||
if (!hide_text_style)
|
||||
|
|
@ -1542,9 +1540,8 @@ void format_send_as_gui_flags(TEXT_DEST_REC *dest, const char *text, SIGNAL_FUNC
|
|||
break;
|
||||
case 3:
|
||||
/* MIRC color */
|
||||
get_mirc_color((const char **) &ptr,
|
||||
hide_colors ? NULL : &fgcolor,
|
||||
hide_colors ? NULL : &bgcolor);
|
||||
get_mirc_color((const char **) &ptr, hide_colors ? NULL : &fgcolor,
|
||||
hide_colors ? NULL : &bgcolor);
|
||||
if (!hide_colors)
|
||||
flags |= GUI_PRINT_FLAG_MIRC_COLOR;
|
||||
break;
|
||||
|
|
@ -1576,7 +1573,7 @@ void format_send_as_gui_flags(TEXT_DEST_REC *dest, const char *text, SIGNAL_FUNC
|
|||
case FORMAT_STYLE_DEFAULTS:
|
||||
fgcolor = theme->default_color;
|
||||
bgcolor = -1;
|
||||
flags &= GUI_PRINT_FLAG_INDENT|GUI_PRINT_FLAG_MONOSPACE;
|
||||
flags &= GUI_PRINT_FLAG_INDENT | GUI_PRINT_FLAG_MONOSPACE;
|
||||
break;
|
||||
case FORMAT_STYLE_CLRTOEOL:
|
||||
break;
|
||||
|
|
@ -1610,7 +1607,8 @@ void format_send_as_gui_flags(TEXT_DEST_REC *dest, const char *text, SIGNAL_FUNC
|
|||
default:
|
||||
if (*ptr != FORMAT_COLOR_NOCHANGE) {
|
||||
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')
|
||||
break;
|
||||
|
|
@ -1618,7 +1616,7 @@ void format_send_as_gui_flags(TEXT_DEST_REC *dest, const char *text, SIGNAL_FUNC
|
|||
ptr++;
|
||||
if (*ptr != FORMAT_COLOR_NOCHANGE) {
|
||||
flags &= ~GUI_PRINT_FLAG_COLOR_24_BG;
|
||||
bgcolor = *ptr==(char)0xff ? -1 : *ptr-'0';
|
||||
bgcolor = *ptr == (char) 0xff ? -1 : *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 */
|
||||
fgcolor = theme->default_color;
|
||||
bgcolor = -1;
|
||||
flags &= GUI_PRINT_FLAG_INDENT|GUI_PRINT_FLAG_MONOSPACE;
|
||||
flags &= GUI_PRINT_FLAG_INDENT | GUI_PRINT_FLAG_MONOSPACE;
|
||||
break;
|
||||
case 17:
|
||||
if (!hide_text_style)
|
||||
|
|
@ -1658,11 +1656,9 @@ void format_send_as_gui_flags(TEXT_DEST_REC *dest, const char *text, SIGNAL_FUNC
|
|||
break;
|
||||
case 27:
|
||||
/* ansi color code */
|
||||
ptr = (char *)
|
||||
get_ansi_color(theme, ptr,
|
||||
hide_colors ? NULL : &fgcolor,
|
||||
hide_colors ? NULL : &bgcolor,
|
||||
hide_colors ? NULL : &flags);
|
||||
ptr = (char *) get_ansi_color(theme, ptr, hide_colors ? NULL : &fgcolor,
|
||||
hide_colors ? NULL : &bgcolor,
|
||||
hide_colors ? NULL : &flags);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -1767,7 +1763,7 @@ static void read_settings(void)
|
|||
timestamp_level = settings_get_bool("timestamps") ? MSGLEVEL_ALL : 0;
|
||||
if (timestamp_level > 0)
|
||||
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_text_style = settings_get_bool("hide_text_style");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue