From aa82ead3ea9c40bbd7e027bb45c4963f53a0154b Mon Sep 17 00:00:00 2001
From: Simon Rose <simon.rose@ess.eu>
Date: Mon, 26 Feb 2024 16:23:44 +0100
Subject: [PATCH] E3-1447: Simply cmditem structure

---
 require-ess/src/afterInit.c | 28 ++++++++--------------------
 1 file changed, 8 insertions(+), 20 deletions(-)

diff --git a/require-ess/src/afterInit.c b/require-ess/src/afterInit.c
index 42b56ba0..5a3ecff7 100644
--- a/require-ess/src/afterInit.c
+++ b/require-ess/src/afterInit.c
@@ -13,11 +13,7 @@
 
 struct cmditem {
   struct cmditem *next;
-  int type;
-  union {
-    char *a[12];
-    char cmd[256];
-  } x;
+  char cmd[256];
 } *cmdlist, **cmdlast = &cmdlist;
 
 void afterInitHook(initHookState state) {
@@ -34,19 +30,12 @@ void afterInitHook(initHookState state) {
   )
     return;
   for (item = cmdlist; item != NULL; item = item->next) {
-    if (item->type == 1) {
-      printf("%s\n", item->x.cmd);
-      iocshCmd(item->x.cmd);
-    } else {
-      ((void (*)())item->x.a[0])(item->x.a[1], item->x.a[2], item->x.a[3],
-                                 item->x.a[4], item->x.a[5], item->x.a[6],
-                                 item->x.a[7], item->x.a[8], item->x.a[9],
-                                 item->x.a[10], item->x.a[11]);
-    }
+    printf("%s\n", item->cmd);
+    iocshCmd(item->cmd);
   }
 }
 
-static struct cmditem *newItem(char *cmd, int type) {
+static struct cmditem *newItem(char *cmd) {
   static int first_time = 1;
   struct cmditem *item;
   if (!cmd) {
@@ -66,7 +55,6 @@ static struct cmditem *newItem(char *cmd, int type) {
     errlogPrintf("afterInit %s", strerror(errno));
     return NULL;
   }
-  item->type = type;
   item->next = NULL;
   *cmdlast = item;
   cmdlast = &item->next;
@@ -81,15 +69,15 @@ static const iocshFuncDef afterInitDef = {
 
 static void afterInitFunc(const iocshArgBuf *args) {
   int i, n;
-  struct cmditem *item = newItem(args[0].aval.av[1], 1);
+  struct cmditem *item = newItem(args[0].aval.av[1]);
   if (!item) return;
 
-  n = sprintf(item->x.cmd, "%.255s", args[0].aval.av[1]);
+  n = sprintf(item->cmd, "%.255s", args[0].aval.av[1]);
   for (i = 2; i < args[0].aval.ac; i++) {
     if (strpbrk(args[0].aval.av[i], " ,\"\\"))
-      n += sprintf(item->x.cmd + n, " '%.*s'", 255 - 3 - n, args[0].aval.av[i]);
+      n += sprintf(item->cmd + n, " '%.*s'", 255 - 3 - n, args[0].aval.av[i]);
     else
-      n += sprintf(item->x.cmd + n, " %.*s", 255 - 1 - n, args[0].aval.av[i]);
+      n += sprintf(item->cmd + n, " %.*s", 255 - 1 - n, args[0].aval.av[i]);
   }
 }
 
-- 
GitLab