summaryrefslogtreecommitdiffstats
path: root/usr.sbin/sade/variable.c
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>1995-12-07 10:34:59 +0000
committerpeter <peter@FreeBSD.org>1995-12-07 10:34:59 +0000
commit03382d7ccd5ed3c8bf17b6719df445c2d9c5dea6 (patch)
tree3d31cd880ab6a9af9ad3ab3c6313d70e1c542d60 /usr.sbin/sade/variable.c
parent53a232b78efd4ef6c84ff8047a3a43c3d8cf0a25 (diff)
downloadFreeBSD-src-03382d7ccd5ed3c8bf17b6719df445c2d9c5dea6.zip
FreeBSD-src-03382d7ccd5ed3c8bf17b6719df445c2d9c5dea6.tar.gz
Update the -current sources from the 2.1 branch.
Approved (in spirit) by: jkh
Diffstat (limited to 'usr.sbin/sade/variable.c')
-rw-r--r--usr.sbin/sade/variable.c66
1 files changed, 61 insertions, 5 deletions
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;
+}
OpenPOWER on IntegriCloud