chiark / gitweb /
client: Function for inserting arguments.
authorMark Wooding <mdw@distorted.org.uk>
Sat, 20 Dec 2008 17:06:10 +0000 (17:06 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Sat, 20 Dec 2008 17:06:10 +0000 (17:06 +0000)
We will shortly need fancier formatting than previously.

client/tripectl.c

index e171b0da8661b79f83a461875cd573f9f9909e56..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,12 +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, "-F");
-    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);