diff loadtools/secondprog.c @ 204:064d4eedb3a6

loadtools: second program invokation support added to fc-iram like in fc-xram
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 01 May 2017 21:54:58 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/loadtools/secondprog.c	Mon May 01 21:54:58 2017 +0000
@@ -0,0 +1,36 @@
+/*
+ * This module contains the code for passing the serial channel to a
+ * second program, used by fc-iram and fc-xram.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+extern char **passon_argv;
+extern int passon_argc;
+
+exec_2nd_prog()
+{
+	char **execp_argv;
+	char **sp, **dp;
+	extern int target_fd;
+	char desc_arg[16];
+
+	sprintf(desc_arg, "-d%d", target_fd);
+	execp_argv = (char **) malloc(sizeof(char *) * (passon_argc + 2));
+	if (!execp_argv) {
+		perror("malloc argv for execvp");
+		exit(1);
+	}
+	sp = passon_argv;
+	dp = execp_argv;
+	*dp++ = *sp++;
+	*dp++ = desc_arg;
+	while (*sp)
+		*dp++ = *sp++;
+	*dp = NULL;
+	execvp(execp_argv[0], execp_argv);
+	fprintf(stderr, "Unable to execvp %s\n", passon_argv[0]);
+	exit(1);
+}