Set self.nick to * initially

Allows removing a bunch of checks that self.nick is set, and it's what
the server usually calls you before registration.

Never highlight notices as mentions.
master
C. McEnroe 2020-02-11 17:52:55 -05:00
parent 2771863299
commit cc80fae758
3 changed files with 11 additions and 12 deletions

1
chat.c
View File

@ -145,6 +145,7 @@ int main(int argc, char *argv[]) {
if (!user) user = nick; if (!user) user = nick;
if (!real) real = nick; if (!real) real = nick;
set(&self.nick, "*");
set(&self.network, host); set(&self.network, host);
set(&self.chanTypes, "#&"); set(&self.chanTypes, "#&");
set(&self.prefixes, "@+"); set(&self.prefixes, "@+");

View File

@ -87,8 +87,8 @@ static const time_t *tagTime(const struct Message *msg) {
typedef void Handler(struct Message *msg); typedef void Handler(struct Message *msg);
static void handleErrorNicknameInUse(struct Message *msg) { static void handleErrorNicknameInUse(struct Message *msg) {
if (self.nick) return;
require(msg, false, 2); require(msg, false, 2);
if (strcmp(self.nick, "*")) return;
ircFormat("NICK :%s_\r\n", msg->params[1]); ircFormat("NICK :%s_\r\n", msg->params[1]);
} }
@ -234,7 +234,7 @@ static void handleReplyMOTD(struct Message *msg) {
static void handleJoin(struct Message *msg) { static void handleJoin(struct Message *msg) {
require(msg, true, 1); require(msg, true, 1);
size_t id = idFor(msg->params[0]); size_t id = idFor(msg->params[0]);
if (self.nick && !strcmp(msg->nick, self.nick)) { if (!strcmp(msg->nick, self.nick)) {
if (!self.user) { if (!self.user) {
set(&self.user, msg->user); set(&self.user, msg->user);
self.color = hash(msg->user); self.color = hash(msg->user);
@ -264,7 +264,7 @@ static void handleJoin(struct Message *msg) {
static void handlePart(struct Message *msg) { static void handlePart(struct Message *msg) {
require(msg, true, 1); require(msg, true, 1);
size_t id = idFor(msg->params[0]); size_t id = idFor(msg->params[0]);
if (self.nick && !strcmp(msg->nick, self.nick)) { if (!strcmp(msg->nick, self.nick)) {
completeClear(id); completeClear(id);
} }
completeRemove(id, msg->nick); completeRemove(id, msg->nick);
@ -281,7 +281,7 @@ static void handlePart(struct Message *msg) {
static void handleKick(struct Message *msg) { static void handleKick(struct Message *msg) {
require(msg, true, 2); require(msg, true, 2);
size_t id = idFor(msg->params[0]); size_t id = idFor(msg->params[0]);
bool kicked = self.nick && !strcmp(msg->params[1], self.nick); bool kicked = !strcmp(msg->params[1], self.nick);
completeTouch(id, msg->nick, hash(msg->user)); completeTouch(id, msg->nick, hash(msg->user));
urlScan(id, msg->nick, msg->params[2]); urlScan(id, msg->nick, msg->params[2]);
uiFormat( uiFormat(
@ -300,7 +300,7 @@ static void handleKick(struct Message *msg) {
static void handleNick(struct Message *msg) { static void handleNick(struct Message *msg) {
require(msg, true, 1); require(msg, true, 1);
if (self.nick && !strcmp(msg->nick, self.nick)) { if (!strcmp(msg->nick, self.nick)) {
set(&self.nick, msg->params[0]); set(&self.nick, msg->params[0]);
uiRead(); // Update prompt. uiRead(); // Update prompt.
} }
@ -499,7 +499,7 @@ static void handleReplyWhoisGeneric(struct Message *msg) {
static void handleReplyEndOfWhois(struct Message *msg) { static void handleReplyEndOfWhois(struct Message *msg) {
require(msg, false, 2); require(msg, false, 2);
if (!replies.whois) return; if (!replies.whois) return;
if (!self.nick || strcmp(msg->params[1], self.nick)) { if (strcmp(msg->params[1], self.nick)) {
completeRemove(Network, msg->params[1]); completeRemove(Network, msg->params[1]);
} }
replies.whois--; replies.whois--;
@ -514,7 +514,6 @@ static bool isAction(struct Message *msg) {
} }
static bool isMention(const struct Message *msg) { static bool isMention(const struct Message *msg) {
if (!self.nick) return false;
size_t len = strlen(self.nick); size_t len = strlen(self.nick);
const char *match = msg->params[1]; const char *match = msg->params[1];
while (NULL != (match = strcasestr(match, self.nick))) { while (NULL != (match = strcasestr(match, self.nick))) {
@ -567,7 +566,7 @@ static void handlePrivmsg(struct Message *msg) {
require(msg, true, 2); require(msg, true, 2);
bool query = !strchr(self.chanTypes, msg->params[0][0]); bool query = !strchr(self.chanTypes, msg->params[0][0]);
bool network = strchr(msg->nick, '.'); bool network = strchr(msg->nick, '.');
bool mine = self.nick && !strcmp(msg->nick, self.nick); bool mine = !strcmp(msg->nick, self.nick);
size_t id; size_t id;
if (query && network) { if (query && network) {
id = Network; id = Network;
@ -586,9 +585,8 @@ static void handlePrivmsg(struct Message *msg) {
if (notice) { if (notice) {
uiFormat( uiFormat(
id, Warm, tagTime(msg), id, Warm, tagTime(msg),
"%s\3%d-%s-\17\3%d\t%s", "\3%d-%s-\3%d\t%s",
(mention ? "\26" : ""), hash(msg->user), msg->nick, hash(msg->user), msg->nick, LightGray, msg->params[1]
LightGray, msg->params[1]
); );
} else if (action) { } else if (action) {
uiFormat( uiFormat(

2
ui.c
View File

@ -657,7 +657,7 @@ static void inputUpdate(void) {
struct Style init = { .fg = self.color, .bg = Default }; struct Style init = { .fg = self.color, .bg = Default };
struct Style rest = Reset; struct Style rest = Reset;
const char *prefix = ""; const char *prefix = "";
const char *prompt = (self.nick ? self.nick : ""); const char *prompt = self.nick;
const char *suffix = ""; const char *suffix = "";
if (NULL != (skip = commandIsPrivmsg(id, buf))) { if (NULL != (skip = commandIsPrivmsg(id, buf))) {
prefix = "<"; suffix = "> "; prefix = "<"; suffix = "> ";