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:
f287004
)
fix uci_set()
author
Felix Fietkau
<nbd@openwrt.org>
Mon, 28 Jan 2008 03:23:42 +0000
(
04:23
+0100)
committer
Felix Fietkau
<nbd@openwrt.org>
Mon, 28 Jan 2008 03:23:42 +0000
(
04:23
+0100)
list.c
patch
|
blob
|
history
diff --git
a/list.c
b/list.c
index
a70c2c5
..
e89633e
100644
(file)
--- a/
list.c
+++ b/
list.c
@@
-184,7
+184,7
@@
static struct uci_element *uci_lookup_list(struct uci_context *ctx, struct uci_l
if (!strcmp(e->name, name))
return e;
}
if (!strcmp(e->name, name))
return e;
}
-
UCI_THROW(ctx, UCI_ERR_NOTFOUND)
;
+
return NULL
;
}
int uci_lookup(struct uci_context *ctx, struct uci_element **res, struct uci_package *p, char *section, char *option)
}
int uci_lookup(struct uci_context *ctx, struct uci_element **res, struct uci_package *p, char *section, char *option)
@@
-196,17
+196,23
@@
int uci_lookup(struct uci_context *ctx, struct uci_element **res, struct uci_pac
UCI_HANDLE_ERR(ctx);
UCI_ASSERT(ctx, res != NULL);
UCI_ASSERT(ctx, p != NULL);
UCI_HANDLE_ERR(ctx);
UCI_ASSERT(ctx, res != NULL);
UCI_ASSERT(ctx, p != NULL);
+ UCI_ASSERT(ctx, section != NULL);
e = uci_lookup_list(ctx, &p->sections, section);
e = uci_lookup_list(ctx, &p->sections, section);
- if (!
option
)
- goto found;
+ if (!
e
)
+ goto
not
found;
- s = uci_to_section(e);
- e = uci_lookup_list(ctx, &s->options, option);
+ if (option) {
+ s = uci_to_section(e);
+ e = uci_lookup_list(ctx, &s->options, option);
+ }
-found:
*res = e;
return 0;
*res = e;
return 0;
+
+notfound:
+ UCI_THROW(ctx, UCI_ERR_NOTFOUND);
+ return 0;
}
int uci_set_element_value(struct uci_context *ctx, struct uci_element **element, char *value)
}
int uci_set_element_value(struct uci_context *ctx, struct uci_element **element, char *value)
@@
-281,7
+287,6
@@
int uci_set(struct uci_context *ctx, char *package, char *section, char *option,
* if the section/option is to be modified and it is not found
* create a new element in the appropriate list
*/
* if the section/option is to be modified and it is not found
* create a new element in the appropriate list
*/
- UCI_TRAP_SAVE(ctx, notfound);
e = uci_lookup_list(ctx, &ctx->root, package);
if (!e)
goto notfound;
e = uci_lookup_list(ctx, &ctx->root, package);
if (!e)
goto notfound;
@@
-290,15
+295,14
@@
int uci_set(struct uci_context *ctx, char *package, char *section, char *option,
e = uci_lookup_list(ctx, &p->sections, section);
if (!e)
goto notfound;
e = uci_lookup_list(ctx, &p->sections, section);
if (!e)
goto notfound;
- s = uci_to_section(e);
+ s = uci_to_section(e);
if (option) {
e = uci_lookup_list(ctx, &s->options, option);
if (!e)
goto notfound;
o = uci_to_option(e);
}
if (option) {
e = uci_lookup_list(ctx, &s->options, option);
if (!e)
goto notfound;
o = uci_to_option(e);
}
- UCI_TRAP_RESTORE(ctx);
/*
* no unknown element was supplied, assume that we can just update
/*
* no unknown element was supplied, assume that we can just update
@@
-320,14
+324,14
@@
notfound:
* an option was supplied, but the section wasn't found
*/
if (!p || (!s && option))
* an option was supplied, but the section wasn't found
*/
if (!p || (!s && option))
- UCI_THROW(ctx,
ctx->errno
);
+ UCI_THROW(ctx,
UCI_ERR_NOTFOUND
);
/* now add the missing entry */
uci_add_history(ctx, p, UCI_CMD_ADD, section, option, value);
if (s)
uci_alloc_option(s, option, value);
else
/* now add the missing entry */
uci_add_history(ctx, p, UCI_CMD_ADD, section, option, value);
if (s)
uci_alloc_option(s, option, value);
else
- uci_alloc_section(p,
section, value
);
+ uci_alloc_section(p,
value, section
);
return 0;
}
return 0;
}