chiark / gitweb /
set cwd
[inn-innduct.git] / backends / innduct.c
index afe94172da08bae01136d9bd335f96ad1b84cd48..b6984eaeb89cea752c54c0264e143bb174bb1f18 100644 (file)
@@ -356,7 +356,7 @@ static oop_rd_call peer_rd_err, peer_rd_ok;
 /* when changing defaults, remember to update the manpage */
 
 static const char *sitename, *remote_host;
 /* when changing defaults, remember to update the manpage */
 
 static const char *sitename, *remote_host;
-static const char *feedfile, *path_cli, *path_cli_dir;
+static const char *feedfile, *path_run, *path_cli, *path_cli_dir;
 static int quiet_multiple=0;
 static int become_daemon=1, try_filemon=1;
 static int try_stream=1;
 static int quiet_multiple=0;
 static int become_daemon=1, try_filemon=1;
 static int try_stream=1;
@@ -3572,6 +3572,7 @@ static const Option innduct_options[]= {
 {0,"no-filemon",         0,       &try_filemon,              op_setint, 0   },
 {'C',"inndconf",         "F",     &inndconffile,             op_string      },
 {'P',"port",             "PORT",  &port,                     op_integer     },
 {0,"no-filemon",         0,       &try_filemon,              op_setint, 0   },
 {'C',"inndconf",         "F",     &inndconffile,             op_string      },
 {'P',"port",             "PORT",  &port,                     op_integer     },
+{0,"chdir",              "DIR",   &path_run,                 op_string      },
 {0,"cli",            "DIR/|PATH", &path_cli,                 op_string      },
 {0,"help",               0,       0,                         help           },
 
 {0,"cli",            "DIR/|PATH", &path_cli,                 op_string      },
 {0,"help",               0,       0,                         help           },
 
@@ -3669,7 +3670,10 @@ int main(int argc, char **argv) {
   if (max_bad_data_ratio < 0 || max_bad_data_ratio > 100)
     badusage("bad input data ratio must be between 0..100");
   max_bad_data_ratio *= 0.01;
   if (max_bad_data_ratio < 0 || max_bad_data_ratio > 100)
     badusage("bad input data ratio must be between 0..100");
   max_bad_data_ratio *= 0.01;
-  
+
+  if (!path_run)
+    path_run= innconf->pathrun;
+
   if (!feedfile) {
     feedfile= xasprintf("%s/%s",innconf->pathoutgoing,sitename);
   } else if (!feedfile[0]) {
   if (!feedfile) {
     feedfile= xasprintf("%s/%s",innconf->pathoutgoing,sitename);
   } else if (!feedfile[0]) {
@@ -3679,7 +3683,7 @@ int main(int argc, char **argv) {
   }
 
   if (!path_cli) {
   }
 
   if (!path_cli) {
-    path_cli_dir= xasprintf("%s/innduct", innconf->pathrun);
+    path_cli_dir= "innduct";
   } else if (!path_cli[0] || !strcmp(path_cli,"none")) {
     path_cli= 0; /* ok, don't then */
   } else if (path_ends_slash(path_cli)) {
   } else if (!path_cli[0] || !strcmp(path_cli,"none")) {
     path_cli= 0; /* ok, don't then */
   } else if (path_ends_slash(path_cli)) {
@@ -3699,6 +3703,9 @@ int main(int argc, char **argv) {
 
   /* set things up */
 
 
   /* set things up */
 
+  r= chdir(path_run);
+  if (r) sysdie("could not chdir to pathrun %s", path_run);
+
   path_lock=        xasprintf("%s_lock",      feedfile);
   path_flushing=    xasprintf("%s_flushing",  feedfile);
   path_defer=       xasprintf("%s_defer",     feedfile);
   path_lock=        xasprintf("%s_lock",      feedfile);
   path_flushing=    xasprintf("%s_flushing",  feedfile);
   path_defer=       xasprintf("%s_defer",     feedfile);