projects
/
project
/
uci.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ignore the package keyword for uci_load()
[project/uci.git]
/
list.c
diff --git
a/list.c
b/list.c
index
5561778
..
e89633e
100644
(file)
--- a/
list.c
+++ b/
list.c
@@
-153,6
+153,8
@@
uci_free_package(struct uci_package *p)
if(!p)
return;
if(!p)
return;
+ if (p->path)
+ free(p->path);
uci_foreach_element_safe(&p->sections, tmp, e) {
uci_free_section(uci_to_section(e));
}
uci_foreach_element_safe(&p->sections, tmp, e) {
uci_free_section(uci_to_section(e));
}
@@
-174,7
+176,7
@@
uci_add_history(struct uci_context *ctx, struct uci_package *p, int cmd, char *s
}
}
-static struct uci_element *uci_lookup_list(struct uci_context *ctx, struct uci_list *list, char *name)
+static struct uci_element *uci_lookup_list(struct uci_context *ctx, struct uci_list *list, c
onst c
har *name)
{
struct uci_element *e;
{
struct uci_element *e;
@@
-182,35
+184,35
@@
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,
char *package
, char *section, char *option)
+int uci_lookup(struct uci_context *ctx, struct uci_element **res,
struct uci_package *p
, char *section, char *option)
{
struct uci_element *e;
{
struct uci_element *e;
- struct uci_package *p;
struct uci_section *s;
struct uci_option *o;
UCI_HANDLE_ERR(ctx);
UCI_ASSERT(ctx, res != NULL);
struct uci_section *s;
struct uci_option *o;
UCI_HANDLE_ERR(ctx);
UCI_ASSERT(ctx, res != NULL);
- UCI_ASSERT(ctx, package != NULL);
-
- e = uci_lookup_list(ctx, &ctx->root, package);
- if (!section)
- goto found;
+ UCI_ASSERT(ctx, p != NULL);
+ UCI_ASSERT(ctx, section != NULL);
- p = uci_to_package(e);
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)
@@
-280,14
+282,11
@@
int uci_set(struct uci_context *ctx, char *package, char *section, char *option,
UCI_ASSERT(ctx, package != NULL);
UCI_ASSERT(ctx, section != NULL);
UCI_ASSERT(ctx, package != NULL);
UCI_ASSERT(ctx, section != NULL);
- fprintf(stderr, "uci_set: '%s' '%s' '%s' = '%s'\n", package, section, option, value);
-
/*
* look up the package, section and option (if set)
* if the section/option is to be modified and it is not found
* create a new element in the appropriate list
*/
/*
* look up the package, section and option (if set)
* 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;
@@
-296,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
@@
-326,34
+324,26
@@
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;
}
-int uci_unload(struct uci_context *ctx,
const char *name
)
+int uci_unload(struct uci_context *ctx,
struct uci_package *p
)
{
struct uci_element *e;
UCI_HANDLE_ERR(ctx);
{
struct uci_element *e;
UCI_HANDLE_ERR(ctx);
- UCI_ASSERT(ctx, name != NULL);
-
- uci_foreach_element(&ctx->root, e) {
- if (!strcmp(e->name, name))
- goto found;
- }
- UCI_THROW(ctx, UCI_ERR_NOTFOUND);
-
-found:
- uci_free_package(uci_to_package(e));
+ UCI_ASSERT(ctx, p != NULL);
+ uci_free_package(p);
return 0;
}
return 0;
}