From 03382d7ccd5ed3c8bf17b6719df445c2d9c5dea6 Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 7 Dec 1995 10:34:59 +0000 Subject: Update the -current sources from the 2.1 branch. Approved (in spirit) by: jkh --- usr.sbin/sade/variable.c | 66 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 61 insertions(+), 5 deletions(-) (limited to 'usr.sbin/sade/variable.c') diff --git a/usr.sbin/sade/variable.c b/usr.sbin/sade/variable.c index 9cf6742..5cbaa84 100644 --- a/usr.sbin/sade/variable.c +++ b/usr.sbin/sade/variable.c @@ -4,7 +4,7 @@ * This is probably the last program in the `sysinstall' line - the next * generation being essentially a complete rewrite. * - * $Id: variable.c,v 1.5.2.2 1995/06/01 21:04:03 jkh Exp $ + * $Id: variable.c,v 1.6.2.7 1995/10/26 08:56:18 jkh Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -50,21 +50,23 @@ make_variable(char *var, char *value) { Variable *newvar; - /* First search to see if it's already there */ + /* Put it in the environment in any case */ + setenv(var, value, 1); + + /* Now search to see if it's already in the list */ for (newvar = VarHead; newvar; newvar = newvar->next) { if (!strcmp(newvar->name, var)) { strncpy(newvar->value, value, VAR_VALUE_MAX); - setenv(var, value, 1); return; } } - setenv(var, value, 1); + + /* No? Create a new one */ newvar = (Variable *)safe_malloc(sizeof(Variable)); strncpy(newvar->name, var, VAR_NAME_MAX); strncpy(newvar->value, value, VAR_VALUE_MAX); newvar->next = VarHead; VarHead = newvar; - setenv(newvar->name, newvar->value, 1); if (isDebug()) msgDebug("Setting variable %s to %s\n", newvar->name, newvar->value); } @@ -74,6 +76,10 @@ variable_set(char *var) { char tmp[VAR_NAME_MAX + VAR_VALUE_MAX], *cp; + if (!var) + msgFatal("NULL variable name & value passed."); + else if (!*var) + msgDebug("Warning: Zero length name & value passed to variable_set()\n"); strncpy(tmp, var, VAR_NAME_MAX + VAR_VALUE_MAX); if ((cp = index(tmp, '=')) == NULL) msgFatal("Invalid variable format: %s", var); @@ -86,5 +92,55 @@ variable_set2(char *var, char *value) { if (!var || !value) msgFatal("Null name or value passed to set_variable2!"); + else if (!*var || !*value) + msgDebug("Warning: Zero length name or value passed to variable_set2()\n"); make_variable(var, value); } + +char * +variable_get(char *var) +{ + return getenv(var); +} + +void +variable_unset(char *var) +{ + Variable *vp; + + unsetenv(var); + + /* Now search to see if it's in our list, if we have one.. */ + if (!VarHead) + return; + else if (!VarHead->next && !strcmp(VarHead->name, var)) { + free(VarHead); + VarHead = NULL; + } + else { + for (vp = VarHead; vp; vp = vp->next) { + if (!strcmp(vp->name, var)) { + Variable *save = vp->next; + + *vp = *save; + safe_free(save); + break; + } + } + } +} + +/* Prompt user for the name of a variable */ +char * +variable_get_value(char *var, char *prompt) +{ + char *cp; + + dialog_clear(); + if ((cp = msgGetInput(variable_get(var), prompt)) != NULL) + variable_set2(var, cp); + else + cp = NULL; + dialog_clear(); + return cp; +} -- cgit v1.1