projects
/
project
/
uci.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
796bfd3
)
add support for partial lookups - skip lookup for filled-in sections or packages
author
Felix Fietkau
<nbd@openwrt.org>
Sat, 21 Aug 2010 00:44:32 +0000
(
02:44
+0200)
committer
Felix Fietkau
<nbd@openwrt.org>
Sat, 21 Aug 2010 00:44:32 +0000
(
02:44
+0200)
list.c
patch
|
blob
|
history
diff --git
a/list.c
b/list.c
index
c683dd2
..
9917971
100644
(file)
--- a/
list.c
+++ b/
list.c
@@
-371,7
+371,11
@@
uci_lookup_ptr(struct uci_context *ctx, struct uci_ptr *ptr, char *str, bool ext
ptr->flags |= UCI_LOOKUP_DONE;
/* look up the package first */
ptr->flags |= UCI_LOOKUP_DONE;
/* look up the package first */
- e = uci_lookup_list(&ctx->root, ptr->package);
+ if (ptr->p)
+ e = &ptr->p->e;
+ else
+ e = uci_lookup_list(&ctx->root, ptr->package);
+
if (!e) {
UCI_INTERNAL(uci_load, ctx, ptr->package, &ptr->p);
if (!ptr->p)
if (!e) {
UCI_INTERNAL(uci_load, ctx, ptr->package, &ptr->p);
if (!ptr->p)
@@
-382,12
+386,14
@@
uci_lookup_ptr(struct uci_context *ctx, struct uci_ptr *ptr, char *str, bool ext
ptr->last = e;
}
ptr->last = e;
}
- if (!ptr->section)
+ if (!ptr->section
&& !ptr->s
)
goto complete;
/* if the section name validates as a regular name, pass through
* to the regular uci_lookup function call */
goto complete;
/* if the section name validates as a regular name, pass through
* to the regular uci_lookup function call */
- if (ptr->flags & UCI_LOOKUP_EXTENDED) {
+ if (ptr->s) {
+ e = &ptr->s->e;
+ } else if (ptr->flags & UCI_LOOKUP_EXTENDED) {
if (extended)
e = uci_lookup_ext_section(ctx, ptr);
else
if (extended)
e = uci_lookup_ext_section(ctx, ptr);
else