aboutsummaryrefslogtreecommitdiff
path: root/transmission.c
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2020-07-13 15:59:30 +0200
committerdec05eba <dec05eba@protonmail.com>2020-07-13 15:59:30 +0200
commitae0520e57267dbd866fc8cd25f66f4e6af2ac118 (patch)
tree22788688f1b588c3ad00c1ce3fe13da68b3a9382 /transmission.c
parenta1ca82847eb356c6b85ada2ac11f38d98f6e085e (diff)
Move c files into src directory
Diffstat (limited to 'transmission.c')
-rw-r--r--transmission.c81
1 files changed, 0 insertions, 81 deletions
diff --git a/transmission.c b/transmission.c
deleted file mode 100644
index 0acb5a5..0000000
--- a/transmission.c
+++ /dev/null
@@ -1,81 +0,0 @@
-#include "transmission.h"
-#include "program.h"
-#include "buffer.h"
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-#define NUM_COLUMNS 10
-
-int transmission_is_daemon_running() {
- const char *args[] = { "transmission-remote", "-si", NULL };
- return program_exec(args, NULL, NULL);
-}
-
-int transmission_start_daemon() {
- /* TODO: Make seed ratio configurable */
- const char *args[] = { "transmission-daemon", "--global-seedratio", "2.0", "--download-dir", NULL };
- int res = program_exec(args, NULL, NULL);
- if(res != 0)
- return res;
-
- fprintf(stderr, "Waiting for the transmission daemon to startup...\n");
- while(transmission_is_daemon_running()) {
- const useconds_t one_hundred_ms = 1000 * 1000 * 100;
- usleep(one_hundred_ms);
- }
- fprintf(stderr, "The transmission daemon is now running!\n");
- return 0;
-}
-
-int transmission_add_torrent(const char *url) {
- const char *args[] = { "transmission-remote", "-a", "--", url, NULL };
- return program_exec(args, NULL, NULL);
-}
-
-int transmission_get_all_torrents(TorrentListCallback callback, void *userdata) {
- int result = 0;
-
- Buffer buffer;
- buffer_init(&buffer);
-
- const char *args[] = { "transmission-remote", "--list", NULL };
- int exec_res = program_exec(args, program_buffer_write_callback, &buffer);
- if(exec_res != 0) {
- result = exec_res;
- goto cleanup;
- }
- buffer_append(&buffer, "0", 1);
-
- char id[6];
- char done[6];
- char have[13];
- char format[7];
- char eta[33];
- char up[11];
- char down[11];
- char ratio[11];
- char status[33];
- char name[256];
-
- char *end_of_first_line = strchr(buffer.data, '\n');
- if(!end_of_first_line)
- goto cleanup;
-
- int num_bytes_read = 0;
- size_t offset = end_of_first_line - (char*)buffer.data;
- while(offset < buffer.size) {
- /* ID, Done, Have (size, format), ETA, Up, Down, Ratio, Status, Name */
- int res = sscanf(buffer.data + offset, "%5s %5s %12s %6s %32s %10s %10s %10s %32s %[^\n] %n", id, done, have, format, eta, up, down, ratio, status, name, &num_bytes_read);
- if(res == EOF || res != NUM_COLUMNS)
- break;
- /*printf("id: %s, done: %s, have: %s, format: %s, eta: %s, up: %s, down: %s, ratio: %s, status: %s, name: %s\n", id, done, have, format, eta, up, down, ratio, status, name);*/
- callback(atoi(id), atof(done), name, userdata);
- offset += num_bytes_read;
- }
-
- cleanup:
- buffer_deinit(&buffer);
- return result;
-}