chiark / gitweb /
client: Function for inserting arguments.
[tripe] / client / tripectl.c
index d9f5dd8161192886162307ad27b3f4785960c6d5..133170475f5a9dd5095fc8767a7f21e54f8eed25 100644 (file)
@@ -275,6 +275,19 @@ static void cleanup(void) { if (pidfile) unlink(pidfile); }
 static void sigdie(int sig)
   { cleanup(); signal(sig, SIG_DFL); raise(sig); }
 
+static void putarg(string_v *av, const char *fmt, ...)
+{
+  va_list ap;
+  dstr d = DSTR_INIT;
+
+  va_start(ap, fmt);
+  dstr_vputf(&d, fmt, &ap);
+  dstr_putz(&d);
+  va_end(ap);
+  DA_UNSHIFT(av, xstrdup(d.buf));
+  dstr_destroy(&d);
+}
+
 static void version(FILE *fp)
   { pquis(fp, "$, TrIPE version " VERSION "\n"); }
 
@@ -447,11 +460,11 @@ int main(int argc, char *argv[])
 #endif
     sigaction(SIGCHLD, &sa, 0);
 
-    DA_UNSHIFT(&spawnopts, (char *)sock);
-    DA_UNSHIFT(&spawnopts, "-a");
-    DA_UNSHIFT(&spawnopts, "-d.");
-    DA_UNSHIFT(&spawnopts, (char *)spawnpath);
     DA_PUSH(&spawnopts, 0);
+    putarg(&spawnopts, "-a%s", sock);
+    putarg(&spawnopts, "-d.");
+    putarg(&spawnopts, "-F");
+    putarg(&spawnopts, "%s", spawnpath);
     if (socketpair(PF_UNIX, SOCK_STREAM, 0, pfd))
       die(EXIT_FAILURE, "error from socketpair: %s", strerror(errno));
     sigemptyset(&newmask);