From 4457c1268a923d2a662ab23ca1b8d7920811ae51 Mon Sep 17 00:00:00 2001 From: Richard Nyberg Date: Thu, 8 Jan 2009 21:51:26 +0100 Subject: [PATCH] Let btpd remove torrent data by itself instead of calling rm. --- btpd/tlib.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/btpd/tlib.c b/btpd/tlib.c index 362139d..e68c341 100644 --- a/btpd/tlib.c +++ b/btpd/tlib.c @@ -62,11 +62,22 @@ int tlib_del(struct tlib *tl) { char relpath[RELPATH_SIZE]; - char cmd[PATH_MAX]; + char path[PATH_MAX]; + DIR *dir; + struct dirent *de; assert(tl->tp == NULL); - snprintf(cmd, PATH_MAX, "rm -r torrents/%s", - bin2hex(tl->hash, relpath, 20)); - system(cmd); + snprintf(path, PATH_MAX, "torrents/%s", bin2hex(tl->hash, relpath, 20)); + if ((dir = opendir(path)) != NULL) { + while ((de = readdir(dir)) != NULL) { + if (strcmp(".", de->d_name) == 0 || strcmp("..", de->d_name) == 0) + continue; + snprintf(path, PATH_MAX, "torrents/%s/%s", relpath, de->d_name); + remove(path); + } + closedir(dir); + } + snprintf(path, PATH_MAX, "torrents/%s", relpath); + remove(path); tlib_kill(tl); return 0; }