diff options
Diffstat (limited to 'usr.sbin/sysinstall/command.c')
-rw-r--r-- | usr.sbin/sysinstall/command.c | 68 |
1 files changed, 25 insertions, 43 deletions
diff --git a/usr.sbin/sysinstall/command.c b/usr.sbin/sysinstall/command.c index 5d132c4..1fad8d2 100644 --- a/usr.sbin/sysinstall/command.c +++ b/usr.sbin/sysinstall/command.c @@ -4,7 +4,7 @@ * This is probably the last program in the `sysinstall' line - the next * generation being essentially a complete rewrite. * - * $Id: command.c,v 1.10 1995/05/29 11:01:05 jkh Exp $ + * $Id: command.c,v 1.11.4.1 1995/07/21 11:45:35 rgrimes Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -72,28 +72,19 @@ command_clear(void) numCommands = 0; } -/* Add a shell command under a given key */ -void -command_shell_add(char *key, char *fmt, ...) +static void +addit(char *key, int type, void *cmd, void *data) { - va_list args; - char *cmd; int i; - cmd = (char *)safe_malloc(1024); - va_start(args, fmt); - vsnprintf(cmd, 1024, fmt, args); - va_end(args); - /* First, look for the key already present and add a command to it */ for (i = 0; i < numCommands; i++) { if (!strcmp(commandStack[i]->key, key)) { if (commandStack[i]->ncmds == MAX_NUM_COMMANDS) - msgFatal("More than %d commands stacked up behind %s??", - MAX_NUM_COMMANDS, key); - commandStack[i]->cmds[commandStack[i]->ncmds].type = CMD_SHELL; - commandStack[i]->cmds[commandStack[i]->ncmds].ptr = (void *)cmd; - commandStack[i]->cmds[commandStack[i]->ncmds].data = NULL; + msgFatal("More than %d commands stacked up behind %s??", MAX_NUM_COMMANDS, key); + commandStack[i]->cmds[commandStack[i]->ncmds].type = type; + commandStack[i]->cmds[commandStack[i]->ncmds].ptr = cmd; + commandStack[i]->cmds[commandStack[i]->ncmds].data = data; ++(commandStack[i]->ncmds); return; } @@ -105,40 +96,31 @@ command_shell_add(char *key, char *fmt, ...) commandStack[numCommands] = safe_malloc(sizeof(Command)); strcpy(commandStack[numCommands]->key, key); commandStack[numCommands]->ncmds = 1; - commandStack[numCommands]->cmds[0].type = CMD_SHELL; - commandStack[numCommands]->cmds[0].ptr = (void *)cmd; - commandStack[numCommands++]->cmds[0].data = NULL; + commandStack[numCommands]->cmds[0].type = type; + commandStack[numCommands]->cmds[0].ptr = cmd; + commandStack[numCommands++]->cmds[0].data = data; } /* Add a shell command under a given key */ void -command_func_add(char *key, commandFunc func, void *data) +command_shell_add(char *key, char *fmt, ...) { - int i; + va_list args; + char *cmd; - /* First, look for the key already present and add a command to it */ - for (i = 0; i < numCommands; i++) { - if (!strcmp(commandStack[i]->key, key)) { - if (commandStack[i]->ncmds == MAX_NUM_COMMANDS) - msgFatal("More than %d commands stacked up behind %s??", - MAX_NUM_COMMANDS, key); - commandStack[i]->cmds[commandStack[i]->ncmds].type = CMD_FUNCTION; - commandStack[i]->cmds[commandStack[i]->ncmds].ptr = (void *)func; - commandStack[i]->cmds[commandStack[i]->ncmds].data = data; - ++(commandStack[i]->ncmds); - return; - } - } - if (numCommands == MAX_CMDS) - msgFatal("More than %d commands accumulated??", MAX_CMDS); + cmd = (char *)safe_malloc(1024); + va_start(args, fmt); + vsnprintf(cmd, 1024, fmt, args); + va_end(args); - /* If we fell to here, it's a new key */ - commandStack[numCommands] = safe_malloc(sizeof(Command)); - strcpy(commandStack[numCommands]->key, key); - commandStack[numCommands]->ncmds = 1; - commandStack[numCommands]->cmds[0].type = CMD_FUNCTION; - commandStack[numCommands]->cmds[0].ptr = (void *)func; - commandStack[numCommands++]->cmds[0].data = data; + addit(key, CMD_SHELL, cmd, NULL); +} + +/* Add a shell command under a given key */ +void +command_func_add(char *key, commandFunc func, void *data) +{ + addit(key, CMD_FUNCTION, func, data); } /* arg to sort */ |