chiark / gitweb /
More sensible use of paths for feedfile and chdir
[inn-innduct.git] / backends / innduct.c
index b6984ea..925b7fc 100644 (file)
@@ -3674,13 +3674,12 @@ int main(int argc, char **argv) {
   if (!path_run)
     path_run= innconf->pathrun;
 
-  if (!feedfile) {
-    feedfile= xasprintf("%s/%s",innconf->pathoutgoing,sitename);
-  } else if (!feedfile[0]) {
-    badusage("feed filename, if specified, must be nonempty");
-  } else if (path_ends_slash(feedfile)) {
+  if (!feedfile) feedfile= sitename;
+  if (!feedfile[0]) badusage("feed filename, if specified, must be nonempty");
+  if (path_ends_slash(feedfile))
     feedfile= xasprintf("%s%s", feedfile, sitename);
-  }
+  if (feedfile[0] != '/')
+    feedfile= xasprintf("%s/%s", innconf->pathoutgoing, feedfile);
 
   if (!path_cli) {
     path_cli_dir= "innduct";
@@ -3703,9 +3702,6 @@ int main(int argc, char **argv) {
 
   /* 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);
@@ -3745,6 +3741,9 @@ int main(int argc, char **argv) {
   self_pid= getpid();
   if (self_pid==-1) sysdie("getpid");
 
+  r= chdir(path_run);
+  if (r) sysdie("could not chdir to pathrun %s", path_run);
+
   statemc_lock();
 
   init_signals();