fix searchpath handling

This commit is contained in:
Olaf Rempel 2009-05-04 14:42:29 +02:00
parent 91a2f9a8ce
commit d5578f6073
4 changed files with 26 additions and 10 deletions

View File

@ -44,6 +44,8 @@ pid_t pidfile_check(const char *filename, int remove_stale)
int len = read(fd, buf, sizeof(buf) -1);
buf[len] = '\0';
close(fd);
char *tmp;
pid_t pid = strtol(buf, &tmp, 10);
if (len == 0 || tmp == buf)

View File

@ -30,6 +30,7 @@
#include "pidfile.h"
#include "process.h"
#include "signals.h"
#include "torrentfile.h"
#define DEFAULT_CONFIG "torrent-stats.conf"
#define DEFAULT_LOGFILE "torrent-stats.log"
@ -114,6 +115,9 @@ int main(int argc, char *argv[])
signal_set_callback(SIGHUP, event_loop_break);
while (1) {
if (torrentfile_init() < 0)
break;
if (ctcs_init() < 0)
break;

View File

@ -30,6 +30,10 @@
#include "process.h"
#include "torrentfile.h"
static const char *searchpath;
static const char *ctorrent_bin;
static const char *statserv;
LIST_HEAD(torrent_list);
struct torrent_file * find_create_torrent(const char *fullpath)
@ -112,14 +116,8 @@ static int null_read(int fd, void *privdata)
int seed_torrent(struct torrent_file *torrent)
{
const char *path = config_get_string("global", "search-path", NULL);
if (path == NULL) {
log_print(LOG_WARN, "requesting torrentfile, but no search path given");
return -1;
}
char buf[256];
int len = snprintf(buf, sizeof(buf), "%s/%s", path, torrent->name);
int len = snprintf(buf, sizeof(buf), "%s/%s", searchpath, torrent->name);
if (len < 0 || len >= sizeof(buf)) {
log_print(LOG_WARN, "filename > max");
return -1;
@ -131,11 +129,9 @@ int seed_torrent(struct torrent_file *torrent)
return -1;
}
const char *ctorrent_bin = config_get_string("global", "ctorrent-bin", "/usr/bin/ctorrent");
const char *statserv = config_get_string("global", "statserv", "127.0.0.1:2780");
char *const args[] = { (char *)ctorrent_bin, "-S", (char *)statserv, "-f", buf, NULL };
torrent->child = childproc_alloc(args, path);
torrent->child = childproc_alloc(args, searchpath);
if (childproc_fork(torrent->child, child_exit, torrent) < 0) {
log_print(LOG_ERROR, "spawn_child(%s)", args[0]);
childproc_free(torrent->child);
@ -151,3 +147,15 @@ int seed_torrent(struct torrent_file *torrent)
return 0;
}
int torrentfile_init(void)
{
searchpath = config_get_string("global", "search-path", NULL);
if (searchpath == NULL)
log_print(LOG_WARN, "disable torrent autostart");
ctorrent_bin = config_get_string("global", "ctorrent-bin", "/usr/bin/ctorrent");
statserv = config_get_string("global", "statserv", "127.0.0.1:2780");
return 0;
}

View File

@ -28,4 +28,6 @@ int destroy_torrent(struct torrent_file *torrent);
int seed_torrent(struct torrent_file *torrent);
int torrentfile_init(void);
#endif /* _TORRENTFILE_H_ */