summary refs log tree commit diff
path: root/cli/kill.c
diff options
context:
space:
mode:
Diffstat (limited to 'cli/kill.c')
-rw-r--r--cli/kill.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/cli/kill.c b/cli/kill.c
new file mode 100644
index 0000000..b2c6862
--- /dev/null
+++ b/cli/kill.c
@@ -0,0 +1,35 @@
+#include "btcli.h"
+
+void
+usage_kill(void)
+{
+    printf(
+        "Shutdown btpd.\n"
+        "\n"
+        "Usage: kill [seconds]\n"
+        "\n"
+        "Arguments:\n"
+        "seconds\n"
+        "\tThe number of seconds btpd waits before giving up on unresponsive\n"
+        "\ttrackers.\n"
+        "\n"
+        );
+    exit(1);
+}
+
+void
+cmd_kill(int argc, char **argv)
+{
+    int seconds = -1;
+    char *endptr;
+
+    if (argc == 2) {
+        seconds = strtol(argv[1], &endptr, 10);
+        if (strlen(argv[1]) > endptr - argv[1] || seconds < 0)
+            usage_kill();
+    } else if (argc > 2)
+        usage_kill();
+
+    btpd_connect();
+    handle_ipc_res(btpd_die(ipc, seconds), "kill");
+}