summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@pi.lan>2008-08-22 20:17:09 +0200
committerFelix Fietkau <nbd@pi.lan>2008-08-22 20:17:09 +0200
commit9efd0d9456d1822cb93b4ce1cc769b09a400852d (patch)
tree42d946fecf8d9bbe58a4e3e740484db50b9ff400
parent563f8dd6f0eb56780a00f5856bf7fcf40e39d845 (diff)
downloaduci-9efd0d9456d1822cb93b4ce1cc769b09a400852d.tar.gz
cleanup, fix rename
-rw-r--r--cli.c16
-rw-r--r--list.c5
2 files changed, 7 insertions, 14 deletions
diff --git a/cli.c b/cli.c
index 5a260ef..290dcbf 100644
--- a/cli.c
+++ b/cli.c
@@ -187,13 +187,7 @@ static int package_cmd(int cmd, char *tuple)
return 1;
}
- if (ptr.o)
- e = &ptr.o->e;
- else if (ptr.s)
- e = &ptr.s->e;
- else
- e = &ptr.p->e;
-
+ e = ptr.last;
switch(cmd) {
case CMD_CHANGES:
uci_show_changes(ptr.p);
@@ -341,13 +335,7 @@ static int uci_do_section_cmd(int cmd, int argc, char **argv)
if (ptr.value && (cmd != CMD_SET) && (cmd != CMD_ADD_LIST) && (cmd != CMD_RENAME))
return 1;
- if (ptr.o)
- e = &ptr.o->e;
- else if (ptr.s)
- e = &ptr.s->e;
- else
- e = &ptr.p->e;
-
+ e = ptr.last;
switch(cmd) {
case CMD_GET:
switch(e->type) {
diff --git a/list.c b/list.c
index e770234..98a6e28 100644
--- a/list.c
+++ b/list.c
@@ -350,6 +350,7 @@ error:
UCI_THROW(ctx, UCI_ERR_INVAL);
done:
free(section);
+ ptr->section = e->name;
return e;
}
@@ -371,8 +372,10 @@ int uci_lookup_ptr(struct uci_context *ctx, struct uci_ptr *ptr, char *str, bool
UCI_INTERNAL(uci_load, ctx, ptr->package, &ptr->p);
if (!ptr->p)
goto notfound;
+ ptr->last = &ptr->p->e;
} else {
ptr->p = uci_to_package(e);
+ ptr->last = e;
}
if (!ptr->section)
@@ -388,6 +391,7 @@ int uci_lookup_ptr(struct uci_context *ctx, struct uci_ptr *ptr, char *str, bool
if (!e)
goto abort;
+ ptr->last = e;
ptr->s = uci_to_section(e);
if (ptr->option) {
@@ -396,6 +400,7 @@ int uci_lookup_ptr(struct uci_context *ctx, struct uci_ptr *ptr, char *str, bool
goto abort;
ptr->o = uci_to_option(e);
+ ptr->last = e;
}
complete: