static char *canon_hostname;
static char *ip_address;
static char *tcp_port;
-static char *directory;
static void logreport(int priority, const char *err, va_list params)
{
}
}
-static char *path_ok(void)
+static char *path_ok(char *directory)
{
static char rpath[PATH_MAX];
static char interp_path[PATH_MAX];
return 0;
}
-static int run_service(struct daemon_service *service)
+static int run_service(char *dir, struct daemon_service *service)
{
const char *path;
int enabled = service->enabled;
- loginfo("Request %s for '%s'", service->name, directory);
+ loginfo("Request %s for '%s'", service->name, dir);
if (!enabled && !service->overridable) {
logerror("'%s': service not enabled.", service->name);
return -1;
}
- if (!(path = path_ok()))
+ if (!(path = path_ok(dir)))
return -1;
/*
free(canon_hostname);
free(ip_address);
free(tcp_port);
- free(directory);
- hostname = canon_hostname = ip_address = tcp_port = directory = NULL;
+ hostname = canon_hostname = ip_address = tcp_port = NULL;
if (len != pktlen)
parse_extra_args(line + len + 1, pktlen - len - 1);
* Note: The directory here is probably context sensitive,
* and might depend on the actual service being performed.
*/
- free(directory);
- directory = xstrdup(line + namelen + 5);
- return run_service(s);
+ return run_service(line + namelen + 5, s);
}
}