From 35705c9eeb511a61b06fc57b68fba1b738378795 Mon Sep 17 00:00:00 2001 From: Curtis McEnroe Date: Sat, 23 Feb 2019 12:44:20 -0500 Subject: Use first word of params in input commands Prevents anything weird from happening when tab-completing, which inserts a space. --- input.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) (limited to 'input.c') diff --git a/input.c b/input.c index dee50f2..45de9f1 100644 --- a/input.c +++ b/input.c @@ -41,7 +41,8 @@ static void privmsg(struct Tag tag, bool action, const char *mesg) { typedef void Handler(struct Tag tag, char *params); static void inputJoin(struct Tag tag, char *params) { - ircFmt("JOIN :%s\r\n", params ? params : tag.name); + char *chan = strsep(¶ms, " "); + ircFmt("JOIN :%s\r\n", chan ? chan : tag.name); } static void inputMe(struct Tag tag, char *params) { @@ -49,8 +50,9 @@ static void inputMe(struct Tag tag, char *params) { } static void inputNick(struct Tag tag, char *params) { - if (params) { - ircFmt("NICK :%s\r\n", params); + char *nick = strsep(¶ms, " "); + if (nick) { + ircFmt("NICK :%s\r\n", nick); } else { uiLog(tag, UIHot, L"/nick requires a nickname"); } @@ -90,8 +92,9 @@ static void inputWho(struct Tag tag, char *params) { } static void inputWhois(struct Tag tag, char *params) { - if (params) { - ircFmt("WHOIS :%s\r\n", params); + char *nick = strsep(¶ms, " "); + if (nick) { + ircFmt("WHOIS :%s\r\n", nick); } else { uiLog(tag, UIHot, L"/whois requires a nick"); } @@ -142,20 +145,22 @@ static void inputURL(struct Tag tag, char *params) { } static void inputWindow(struct Tag tag, char *params) { - if (!params) { + char *word = strsep(¶ms, " "); + if (!word) { uiLog(tag, UIHot, L"/window requires a name or number"); return; } - bool relative = (params[0] == '+' || params[0] == '-'); - int num = strtol(params, ¶ms, 0); - if (!params[0]) { + bool relative = (word[0] == '+' || word[0] == '-'); + char *trail; + int num = strtol(word, &trail, 0); + if (!trail[0]) { uiShowNum(num, relative); } else { - struct Tag name = tagFind(params); + struct Tag name = tagFind(word); if (name.id != TagNone.id) { uiShowTag(name); } else { - uiFmt(tag, UIHot, "No window for %s", params); + uiFmt(tag, UIHot, "No window for %s", word); } } } -- cgit 1.4.1