aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--degesch.c131
1 files changed, 76 insertions, 55 deletions
diff --git a/degesch.c b/degesch.c
index 294afab..01cc65f 100644
--- a/degesch.c
+++ b/degesch.c
@@ -4821,68 +4821,85 @@ handle_command_quote (struct app_context *ctx, char *arguments)
static bool handle_command_help (struct app_context *, char *);
+#define NOT_IMPLEMENTED(name) { #name, "(Not implemented)", NULL, NULL },
+
static struct command_handler
{
const char *name;
- bool (*handler) (struct app_context *ctx, char *arguments);
const char *description;
const char *usage;
+ bool (*handler) (struct app_context *ctx, char *arguments);
}
g_command_handlers[] =
{
- { "help", handle_command_help, "Show help",
- "[<command> | <option>]" },
- { "quit", handle_command_quit, "Quit the program",
- "[<message>]" },
- { "buffer", handle_command_buffer, "Manage buffers",
- "list | clear | move | { close [<number> | <name>] } | <number>" },
- { "set", handle_command_set, "Manage configuration",
- "[<option>]" },
- { "save", handle_command_save, "Save configuration",
- "" },
-
- { "msg", handle_command_msg, "Send message to a nick or channel",
- "<target> <message>" },
- { "query", handle_command_query, "Send a private message to a nick",
- "<nick> <message>" },
- { "notice", handle_command_notice, "Send notice to a nick or channel",
- "<target> <message>" },
- { "ctcp", handle_command_ctcp, "Send a CTCP query",
- "<target> <tag>" },
- { "me", handle_command_me, "Send a CTCP action",
- "<message>" },
-
- { "join", handle_command_join, "Join channels",
- "[<channel>[,<channel>...]]" },
- { "part", handle_command_part, "Leave channels",
- "[<channel>[,<channel>...]]" },
-#if 0
- { "cycle", NULL, "", "" },
-
- { "mode", NULL, "", "" },
- { "topic", NULL, "", "" },
- { "kick", NULL, "", "" },
- { "kickban", NULL, "", "" },
- { "ban", NULL, "", "" },
- { "invite", NULL, "", "" },
-#endif
-
- { "connect", handle_command_connect, "Connect to the server",
- "" },
- { "list", handle_command_list, "List channels and their topic",
- "[<channel>[,<channel>...]] [server]" },
-#if 0
- { "names", NULL, "", "" },
- { "who", NULL, "", "" },
- { "whois", NULL, "", "" },
-
- { "motd", NULL, "", "" },
- { "away", NULL, "", "" },
-#endif
- { "nick", handle_command_nick, "Change current nick",
- "<nickname>" },
- { "quote", handle_command_quote, "Send a raw command to the server",
- "<command>" },
+ { "help", "Show help",
+ "[<command> | <option>]",
+ handle_command_help },
+ { "quit", "Quit the program",
+ "[<message>]",
+ handle_command_quit },
+ { "buffer", "Manage buffers",
+ "list | clear | move | { close [<number> | <name>] } | <number>",
+ handle_command_buffer },
+ { "set", "Manage configuration",
+ "[<option>]",
+ handle_command_set },
+ { "save", "Save configuration",
+ NULL,
+ handle_command_save },
+
+ { "msg", "Send message to a nick or channel",
+ "<target> <message>",
+ handle_command_msg },
+ { "query", "Send a private message to a nick",
+ "<nick> <message>",
+ handle_command_query },
+ { "notice", "Send notice to a nick or channel",
+ "<target> <message>",
+ handle_command_notice },
+ { "ctcp", "Send a CTCP query",
+ "<target> <tag>",
+ handle_command_ctcp },
+ { "me", "Send a CTCP action",
+ "<message>",
+ handle_command_me },
+
+ { "join", "Join channels",
+ "[<channel>[,<channel>...]]",
+ handle_command_join },
+ { "part", "Leave channels",
+ "[<channel>[,<channel>...]]",
+ handle_command_part },
+ NOT_IMPLEMENTED (cycle)
+
+ NOT_IMPLEMENTED (mode)
+ NOT_IMPLEMENTED (topic)
+ NOT_IMPLEMENTED (kick)
+ NOT_IMPLEMENTED (kickban)
+ NOT_IMPLEMENTED (ban)
+ NOT_IMPLEMENTED (invite)
+
+ { "connect", "Connect to the server",
+ NULL,
+ handle_command_connect },
+ { "disconnect", "Disconnect from the server",
+ NULL,
+ NULL },
+ { "list", "List channels and their topic",
+ "[<channel>[,<channel>...]] [server]",
+ handle_command_list },
+ NOT_IMPLEMENTED (names)
+ NOT_IMPLEMENTED (who)
+ NOT_IMPLEMENTED (whois)
+
+ NOT_IMPLEMENTED (motd)
+ NOT_IMPLEMENTED (away)
+ { "nick", "Change current nick",
+ "<nickname>",
+ handle_command_nick },
+ { "quote", "Send a raw command to the server",
+ "<command>",
+ handle_command_quote },
};
static bool
@@ -4947,7 +4964,7 @@ handle_command_help (struct app_context *ctx, char *arguments)
buffer_send_status (ctx, ctx->global_buffer, "%s: %s",
handler->name, handler->description);
buffer_send_status (ctx, ctx->global_buffer, " Arguments: %s",
- handler->usage);
+ handler->usage ? handler->usage : "(none)");
return true;
}
@@ -5011,6 +5028,10 @@ process_user_command (struct app_context *ctx, char *command)
if (!handler)
buffer_send_error (ctx, ctx->global_buffer,
"%s: %s", "No such command", name);
+ // TODO: remove once everything is implemented
+ else if (!handler->handler)
+ buffer_send_error (ctx, ctx->global_buffer,
+ "%s: %s", "Not implemented", name);
else if (!handler->handler (ctx, command))
buffer_send_error (ctx, ctx->global_buffer,
"%s: /%s %s", "Usage", handler->name, handler->usage);