Warn when incorrect use of add or set causes variables to be removed.

This commit is contained in:
Guus Sliepen 2013-07-25 16:21:11 +02:00
parent e624969568
commit d219fe2c09

View file

@ -1414,6 +1414,7 @@ static int cmd_config(int argc, char *argv[]) {
/* Some simple checks. */
bool found = false;
bool warnonremove = false;
for(int i = 0; variables[i].name; i++) {
if(strcasecmp(variables[i].name, variable))
@ -1452,6 +1453,16 @@ static int cmd_config(int argc, char *argv[]) {
return 1;
}
/* Change "add" into "set" for variables that do not allow multiple occurences.
Turn on warnings when it seems variables might be removed unintentionally. */
if(action == 1 && !(variables[i].type & VAR_MULTIPLE)) {
warnonremove = true;
action = 0;
} else if(action == 0 && (variables[i].type & VAR_MULTIPLE)) {
warnonremove = true;
}
break;
}
@ -1534,9 +1545,14 @@ static int cmd_config(int argc, char *argv[]) {
}
// Set
} else if(action == 0) {
// Warn if "set" was used for variables that can occur multiple times
if(warnonremove && strcasecmp(bvalue, value))
fprintf(stderr, "Warning: removing %s = %s\n", variable, bvalue);
// Already set? Delete the rest...
if(set)
continue;
// Otherwise, replace.
if(fprintf(tf, "%s = %s\n", variable, value) < 0) {
fprintf(stderr, "Error writing to temporary file %s: %s\n", tmpfile, strerror(errno));