diff options
author | June McEnroe <june@causal.agency> | 2019-02-23 12:44:20 -0500 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2019-02-23 12:44:20 -0500 |
commit | 35705c9eeb511a61b06fc57b68fba1b738378795 (patch) | |
tree | f4b1d34e4f1bbacb1f574ab4846ef30a88629dd2 | |
parent | Add C-n and C-p key bindings to switch windows (diff) | |
download | catgirl-35705c9eeb511a61b06fc57b68fba1b738378795.tar.gz catgirl-35705c9eeb511a61b06fc57b68fba1b738378795.zip |
Use first word of params in input commands
Prevents anything weird from happening when tab-completing, which inserts a space.
Diffstat (limited to '')
-rw-r--r-- | input.c | 27 |
1 files changed, 16 insertions, 11 deletions
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); } } } |