add new command del_list
[project/uci.git] / delta.c
diff --git a/delta.c b/delta.c
index 24784f8..0a24f31 100644 (file)
--- a/delta.c
+++ b/delta.c
@@ -114,6 +114,9 @@ static inline int uci_parse_delta_tuple(struct uci_context *ctx, char **buf, str
        case '|':
                c = UCI_CMD_LIST_ADD;
                break;
+       case '_':
+               c = UCI_CMD_LIST_DEL;
+               break;
        }
 
        if (c != UCI_CMD_CHANGE)
@@ -138,6 +141,9 @@ static inline int uci_parse_delta_tuple(struct uci_context *ctx, char **buf, str
        case UCI_CMD_LIST_ADD:
                if (!ptr->option)
                        goto error;
+       case UCI_CMD_LIST_DEL:
+               if (!ptr->option)
+                       goto error;
        }
 
        return c;
@@ -176,6 +182,9 @@ static void uci_parse_delta_line(struct uci_context *ctx, struct uci_package *p,
        case UCI_CMD_LIST_ADD:
                UCI_INTERNAL(uci_add_list, ctx, &ptr);
                break;
+       case UCI_CMD_LIST_DEL:
+               UCI_INTERNAL(uci_del_list, ctx, &ptr);
+               break;
        case UCI_CMD_ADD:
        case UCI_CMD_CHANGE:
                UCI_INTERNAL(uci_set, ctx, &ptr);
@@ -460,6 +469,9 @@ int uci_save(struct uci_context *ctx, struct uci_package *p)
                case UCI_CMD_LIST_ADD:
                        prefix = "|";
                        break;
+               case UCI_CMD_LIST_DEL:
+                       prefix = "_";
+                       break;
                default:
                        break;
                }