From 03334664fb44ff268f6808a945d5d74d3ed34a70 Mon Sep 17 00:00:00 2001 From: Michael Vetter Date: Sat, 16 May 2020 23:41:12 +0200 Subject: [PATCH] Actually open the URL --- src/command/cmd_defs.c | 18 +++++++++++++++++- src/command/cmd_funcs.c | 20 ++++++++++++++++++++ src/command/cmd_funcs.h | 2 ++ 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/src/command/cmd_defs.c b/src/command/cmd_defs.c index db55eaf4..398badc0 100644 --- a/src/command/cmd_defs.c +++ b/src/command/cmd_defs.c @@ -2449,7 +2449,23 @@ static struct cmd_t command_defs[] = CMD_EXAMPLES( "/software valhalla.edda", "/software xmpp.vanaheimr.edda") - } + }, + + { "/urlopen", + parse_args, 1, -1, NULL, + CMD_NOSUBFUNCS + CMD_MAINFUNC(cmd_urlopen) + CMD_TAGS( + CMD_TAG_CHAT, + CMD_TAG_GROUPCHAT) + CMD_SYN( + "/urlopen ") + CMD_DESC( + "Open the URL") + CMD_ARGS( + { "", "URL to open."}) + CMD_NOEXAMPLES + }, }; static GHashTable *search_index; diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c index 96f6c372..109043bc 100644 --- a/src/command/cmd_funcs.c +++ b/src/command/cmd_funcs.c @@ -8858,3 +8858,23 @@ cmd_slashguard(ProfWin *window, const char *const command, gchar **args) return TRUE; } + +gboolean +cmd_urlopen(ProfWin *window, const char *const command, gchar **args) +{ + if (args[0] == NULL) { + cons_bad_cmd_usage(command); + return TRUE; + } + + //TODO: make function. see src/xmpp/avatar.c + GString *cmd = g_string_new(""); + + g_string_append_printf(cmd, "%s %s > /dev/null 2>&1", "xdg-open", args[0]); + cons_show("Calling: %s", cmd->str); + FILE *stream = popen(cmd->str, "r"); + + pclose(stream); + g_string_free(cmd, TRUE); + return TRUE; +} diff --git a/src/command/cmd_funcs.h b/src/command/cmd_funcs.h index 6f82a88a..a8739974 100644 --- a/src/command/cmd_funcs.h +++ b/src/command/cmd_funcs.h @@ -232,4 +232,6 @@ gboolean cmd_correction(ProfWin *window, const char *const command, gchar **args gboolean cmd_correct(ProfWin *window, const char *const command, gchar **args); gboolean cmd_slashguard(ProfWin *window, const char *const command, gchar **args); gboolean cmd_serversoftware(ProfWin *window, const char *const command, gchar **args); +gboolean cmd_urlopen(ProfWin *window, const char *const command, gchar **args); + #endif