Remove static buffer from colorMentions
parent
a8264f31e0
commit
ded0455d3e
26
handle.c
26
handle.c
|
@ -1160,7 +1160,7 @@ static bool isMention(const struct Message *msg) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *colorMentions(uint id, struct Message *msg) {
|
static void colorMentions(struct Cat *cat, uint id, struct Message *msg) {
|
||||||
char *split = strstr(msg->params[1], ": ");
|
char *split = strstr(msg->params[1], ": ");
|
||||||
if (!split) {
|
if (!split) {
|
||||||
split = strchr(msg->params[1], ' ');
|
split = strchr(msg->params[1], ' ');
|
||||||
|
@ -1168,19 +1168,16 @@ static const char *colorMentions(uint id, struct Message *msg) {
|
||||||
}
|
}
|
||||||
if (!split) split = &msg->params[1][strlen(msg->params[1])];
|
if (!split) split = &msg->params[1][strlen(msg->params[1])];
|
||||||
for (char *ch = msg->params[1]; ch < split; ++ch) {
|
for (char *ch = msg->params[1]; ch < split; ++ch) {
|
||||||
if (iscntrl(*ch)) return "";
|
if (iscntrl(*ch)) return;
|
||||||
}
|
}
|
||||||
char delimit = *split;
|
char delimit = *split;
|
||||||
char *mention = msg->params[1];
|
char *mention = msg->params[1];
|
||||||
msg->params[1] = (delimit ? &split[1] : split);
|
msg->params[1] = (delimit ? &split[1] : split);
|
||||||
*split = '\0';
|
*split = '\0';
|
||||||
|
|
||||||
static char buf[1024];
|
|
||||||
buf[0] = '\0';
|
|
||||||
struct Cat cat = { buf, sizeof(buf), 0 };
|
|
||||||
while (*mention) {
|
while (*mention) {
|
||||||
size_t skip = strspn(mention, ",<> ");
|
size_t skip = strspn(mention, ",<> ");
|
||||||
catf(&cat, "%.*s", (int)skip, mention);
|
catf(cat, "%.*s", (int)skip, mention);
|
||||||
mention += skip;
|
mention += skip;
|
||||||
|
|
||||||
size_t len = strcspn(mention, ",<> ");
|
size_t len = strcspn(mention, ",<> ");
|
||||||
|
@ -1188,15 +1185,14 @@ static const char *colorMentions(uint id, struct Message *msg) {
|
||||||
mention[len] = '\0';
|
mention[len] = '\0';
|
||||||
enum Color color = completeColor(id, mention);
|
enum Color color = completeColor(id, mention);
|
||||||
if (color != Default) {
|
if (color != Default) {
|
||||||
catf(&cat, "\3%02d%s\3", color, mention);
|
catf(cat, "\3%02d%s\3", color, mention);
|
||||||
} else {
|
} else {
|
||||||
catf(&cat, "%s", mention);
|
catf(cat, "%s", mention);
|
||||||
}
|
}
|
||||||
mention[len] = punct;
|
mention[len] = punct;
|
||||||
mention += len;
|
mention += len;
|
||||||
}
|
}
|
||||||
catf(&cat, "%c", delimit);
|
catf(cat, "%c", delimit);
|
||||||
return buf;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void handlePrivmsg(struct Message *msg) {
|
static void handlePrivmsg(struct Message *msg) {
|
||||||
|
@ -1223,6 +1219,8 @@ static void handlePrivmsg(struct Message *msg) {
|
||||||
}
|
}
|
||||||
if (heat > Ice) urlScan(id, msg->nick, msg->params[1]);
|
if (heat > Ice) urlScan(id, msg->nick, msg->params[1]);
|
||||||
|
|
||||||
|
char buf[1024] = "";
|
||||||
|
struct Cat cat = { buf, sizeof(buf), 0 };
|
||||||
if (notice) {
|
if (notice) {
|
||||||
if (id != Network) {
|
if (id != Network) {
|
||||||
logFormat(id, tagTime(msg), "-%s- %s", msg->nick, msg->params[1]);
|
logFormat(id, tagTime(msg), "-%s- %s", msg->nick, msg->params[1]);
|
||||||
|
@ -1234,21 +1232,21 @@ static void handlePrivmsg(struct Message *msg) {
|
||||||
);
|
);
|
||||||
} else if (action) {
|
} else if (action) {
|
||||||
logFormat(id, tagTime(msg), "* %s %s", msg->nick, msg->params[1]);
|
logFormat(id, tagTime(msg), "* %s %s", msg->nick, msg->params[1]);
|
||||||
const char *mentions = colorMentions(id, msg);
|
colorMentions(&cat, id, msg);
|
||||||
uiFormat(
|
uiFormat(
|
||||||
id, heat, tagTime(msg),
|
id, heat, tagTime(msg),
|
||||||
"%s\35\3%d* %s\17\35\t%s%s",
|
"%s\35\3%d* %s\17\35\t%s%s",
|
||||||
(mention ? "\26" : ""), hash(msg->user), msg->nick,
|
(mention ? "\26" : ""), hash(msg->user), msg->nick,
|
||||||
mentions, msg->params[1]
|
buf, msg->params[1]
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
logFormat(id, tagTime(msg), "<%s> %s", msg->nick, msg->params[1]);
|
logFormat(id, tagTime(msg), "<%s> %s", msg->nick, msg->params[1]);
|
||||||
const char *mentions = colorMentions(id, msg);
|
colorMentions(&cat, id, msg);
|
||||||
uiFormat(
|
uiFormat(
|
||||||
id, heat, tagTime(msg),
|
id, heat, tagTime(msg),
|
||||||
"%s\3%d<%s>\17\t%s%s",
|
"%s\3%d<%s>\17\t%s%s",
|
||||||
(mention ? "\26" : ""), hash(msg->user), msg->nick,
|
(mention ? "\26" : ""), hash(msg->user), msg->nick,
|
||||||
mentions, msg->params[1]
|
buf, msg->params[1]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue