about summary refs log tree commit diff stats
path: root/src/tools/aesgcm_download.c
diff options
context:
space:
mode:
authorWilliam Wennerström <william@wstrm.dev>2020-12-03 16:43:07 +0100
committerWilliam Wennerström <william@wstrm.dev>2020-12-03 16:54:06 +0100
commit3a6597ee2967f91f49a1b4e17cf0595f37064587 (patch)
tree82d021e0c76b6980d908952edd4402272f14dcab /src/tools/aesgcm_download.c
parent1bb6cecee69d5167220a18cc4c125c215784de66 (diff)
downloadprofani-tty-3a6597ee2967f91f49a1b4e17cf0595f37064587.tar.gz
Refactor for threaded external executable for built-in download methods
Diffstat (limited to 'src/tools/aesgcm_download.c')
-rw-r--r--src/tools/aesgcm_download.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/tools/aesgcm_download.c b/src/tools/aesgcm_download.c
index d6a85d06..d75cabe3 100644
--- a/src/tools/aesgcm_download.c
+++ b/src/tools/aesgcm_download.c
@@ -47,6 +47,7 @@
 #include <gio/gio.h>
 #include <pthread.h>
 #include <assert.h>
+#include <errno.h>
 
 #include "profanity.h"
 #include "event/client_events.h"
@@ -146,8 +147,28 @@ aesgcm_file_get(void* userdata)
     free(https_url);
     free(fragment);
 
+    if (aesgcm_dl->cmd_template != NULL) {
+        gchar** argv = format_call_external_argv(aesgcm_dl->cmd_template,
+                                                 aesgcm_dl->url,
+                                                 aesgcm_dl->filename);
+
+        // TODO(wstrm): Log the error.
+        if (!call_external(argv, NULL, NULL)) {
+            http_print_transfer_update(aesgcm_dl->window, aesgcm_dl->url,
+                                       "Downloading '%s' failed: Unable to call "
+                                       "command '%s' with file at '%s' (%s).",
+                                       aesgcm_dl->url,
+                                       aesgcm_dl->cmd_template,
+                                       aesgcm_dl->filename,
+                                       "TODO(wstrm): Log the error");
+        }
+
+        g_strfreev(argv);
+    }
+
     free(aesgcm_dl->filename);
     free(aesgcm_dl->url);
+    free(aesgcm_dl->cmd_template);
     free(aesgcm_dl);
 
     return NULL;