Add /window

master
C. McEnroe 2020-02-05 22:09:29 -05:00
parent 7c0e9cf3d2
commit b2cf873304
2 changed files with 22 additions and 13 deletions

1
chat.h
View File

@ -123,6 +123,7 @@ void uiShow(void);
void uiHide(void); void uiHide(void);
void uiDraw(void); void uiDraw(void);
void uiShowID(size_t id); void uiShowID(size_t id);
void uiShowNum(size_t num);
void uiRead(void); void uiRead(void);
void uiWrite(size_t id, enum Heat heat, const time_t *time, const char *str); void uiWrite(size_t id, enum Heat heat, const time_t *time, const char *str);
void uiFormat( void uiFormat(

View File

@ -57,9 +57,16 @@ static void commandMe(size_t id, char *params) {
} }
static void commandQuit(size_t id, char *params) { static void commandQuit(size_t id, char *params) {
(void)id;
set(&self.quit, (params ? params : "Goodbye")); set(&self.quit, (params ? params : "Goodbye"));
} }
static void commandWindow(size_t id, char *params) {
(void)id;
if (!params) return;
uiShowNum(strtoul(params, NULL, 10));
}
static const struct Handler { static const struct Handler {
const char *cmd; const char *cmd;
Command *fn; Command *fn;
@ -68,6 +75,7 @@ static const struct Handler {
{ "/notice", commandNotice }, { "/notice", commandNotice },
{ "/quit", commandQuit }, { "/quit", commandQuit },
{ "/quote", commandQuote }, { "/quote", commandQuote },
{ "/window", commandWindow },
}; };
static int compar(const void *cmd, const void *_handler) { static int compar(const void *cmd, const void *_handler) {
@ -97,21 +105,21 @@ const char *commandIsAction(size_t id, const char *input) {
} }
void command(size_t id, char *input) { void command(size_t id, char *input) {
if (id == Debug) { if (id == Debug && input[0] != '/') {
commandQuote(id, input); commandQuote(id, input);
return; } else if (commandIsPrivmsg(id, input)) {
}
if (commandIsPrivmsg(id, input)) {
commandPrivmsg(id, input); commandPrivmsg(id, input);
return; } else if (input[0] == '/' && isdigit(input[1])) {
} commandWindow(id, &input[1]);
char *cmd = strsep(&input, " ");
const struct Handler *handler = bsearch(
cmd, Commands, ARRAY_LEN(Commands), sizeof(*handler), compar
);
if (handler) {
handler->fn(id, input);
} else { } else {
uiFormat(id, Hot, NULL, "No such command %s", cmd); char *cmd = strsep(&input, " ");
const struct Handler *handler = bsearch(
cmd, Commands, ARRAY_LEN(Commands), sizeof(*handler), compar
);
if (handler) {
handler->fn(id, input);
} else {
uiFormat(id, Hot, NULL, "No such command %s", cmd);
}
} }
} }