Browse Source

when running uci set with an empty value, fall back to uci remove

Felix Fietkau 14 years ago
parent
commit
83300a90f5
1 changed files with 4 additions and 2 deletions
  1. 4 2
      list.c

+ 4 - 2
list.c

@@ -656,7 +656,7 @@ int uci_set(struct uci_context *ctx, struct uci_ptr *ptr)
 	expand_ptr(ctx, ptr, false);
 	UCI_ASSERT(ctx, ptr->value);
 	UCI_ASSERT(ctx, ptr->s || (!ptr->option && ptr->section));
-	if (!ptr->option) {
+	if (!ptr->option && ptr->value[0]) {
 		UCI_ASSERT(ctx, uci_validate_type(ptr->value));
 	}
 
@@ -666,7 +666,9 @@ int uci_set(struct uci_context *ctx, struct uci_ptr *ptr)
 		if (e)
 			ptr->o = uci_to_option(e);
 	}
-	if (!ptr->o && ptr->option) { /* new option */
+	if (!ptr->value[0]) {
+		return uci_delete(ctx, ptr);
+	} else if (!ptr->o && ptr->option) { /* new option */
 		ptr->o = uci_alloc_option(ptr->s, ptr->option, ptr->value);
 		ptr->last = &ptr->o->e;
 	} else if (!ptr->s && ptr->section) { /* new section */