diff rvinterf/tmsh/usercmd.c @ 71:27c41e4b21ae

fc-tmsh one-shot operation mode implemented
author Mychaela Falconia <falcon@freecalypso.org>
date Wed, 26 Oct 2016 23:51:47 +0000
parents 2159f260ed13
children 2825d79bb151
line wrap: on
line diff
--- a/rvinterf/tmsh/usercmd.c	Wed Oct 26 23:33:21 2016 +0000
+++ b/rvinterf/tmsh/usercmd.c	Wed Oct 26 23:51:47 2016 +0000
@@ -8,6 +8,7 @@
 #include <string.h>
 #include <strings.h>
 #include <stdlib.h>
+#include "exitcodes.h"
 
 extern char usercmd[];
 
@@ -120,3 +121,27 @@
 	*ap = 0;
 	tp->func(ap - argv, argv);
 }
+
+dispatch_oneshot_cmd(argc, argv)
+	char **argv;
+{
+	struct cmdtab *tp;
+
+	for (tp = cmdtab; tp->cmd; tp++)
+		if (!strcmp(tp->cmd, argv[0]))
+			break;
+	if (!tp->func) {
+		fprintf(stderr,
+			"error: \"%s\" is not a valid command\n", argv[0]);
+		exit(ERROR_USAGE);
+	}
+	if (argc - 1 > tp->maxargs) {
+		fprintf(stderr, "%s: too many arguments\n", tp->cmd);
+		exit(ERROR_USAGE);
+	}
+	if (argc - 1 < tp->minargs) {
+		fprintf(stderr, "%s: too few arguments\n", tp->cmd);
+		exit(ERROR_USAGE);
+	}
+	return tp->func(argc, argv);
+}