X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fuci.git;a=blobdiff_plain;f=uci.h;h=a04da29ff26bd2026fc3c7a3b5ee238acd8d81b7;hp=ed1a83407ec003e3f364912c9f7db7627a79b67a;hb=4763c3f56ddfc69369a21634e9ad83d6175ca451;hpb=563f8dd6f0eb56780a00f5856bf7fcf40e39d845 diff --git a/uci.h b/uci.h index ed1a834..a04da29 100644 --- a/uci.h +++ b/uci.h @@ -84,6 +84,16 @@ extern void uci_free_context(struct uci_context *ctx); extern void uci_perror(struct uci_context *ctx, const char *str); /** + * uci_geterror: Get an error string for the last uci error + * @ctx: uci context + * @dest: target pointer for the string + * @str: prefix for the error message + * + * Note: string must be freed by the caller + */ +extern void uci_get_errorstr(struct uci_context *ctx, char **dest, const char *str); + +/** * uci_import: Import uci config data from a stream * @ctx: uci context * @stream: file stream to import from @@ -149,26 +159,13 @@ extern int uci_lookup_ptr(struct uci_context *ctx, struct uci_ptr *ptr, char *st extern int uci_add_section(struct uci_context *ctx, struct uci_package *p, const char *type, struct uci_section **res); /** - * uci_set_element_value: Replace an element's value with a new one - * @ctx: uci context - * @element: pointer to an uci_element struct pointer - * @value: new value - * - * Only valid for uci_option and uci_section. Will replace the type string - * when used with an uci_section - */ -extern int uci_set_element_value(struct uci_context *ctx, struct uci_element **element, const char *value); - -/** * uci_set: Set an element's value; create the element if necessary * @ctx: uci context - * @package: package name - * @section: section name - * @option: option name - * @value: value (option) or type (section) - * @result: store the updated element in this variable (optional) + * @ptr: uci pointer + * + * The updated/created element is stored in ptr->last */ -extern int uci_set(struct uci_context *ctx, struct uci_package *p, const char *section, const char *option, const char *value, struct uci_element **result); +extern int uci_set(struct uci_context *ctx, struct uci_ptr *ptr); /** * uci_add_list: Append a string to an element list @@ -181,6 +178,14 @@ extern int uci_set(struct uci_context *ctx, struct uci_package *p, const char *s extern int uci_add_list(struct uci_context *ctx, struct uci_ptr *ptr); /** + * uci_reorder: Reposition a section + * @ctx: uci context + * @s: uci section to reposition + * @pos: new position in the section list + */ +extern int uci_reorder_section(struct uci_context *ctx, struct uci_section *s, int pos); + +/** * uci_rename: Rename an element * @ctx: uci context * @ptr: uci pointer (with value) @@ -247,11 +252,9 @@ extern int uci_add_history_path(struct uci_context *ctx, const char *dir); /** * uci_revert: revert all changes to a config item * @ctx: uci context - * @p: pointer to a uci_package struct ptr (will be replaced by the revert) - * @section: section name (optional) - * @option option name (optional) + * @ptr: uci pointer */ -extern int uci_revert(struct uci_context *ctx, struct uci_package **p, const char *section, const char *option); +extern int uci_revert(struct uci_context *ctx, struct uci_ptr *ptr); /** * uci_parse_argument: parse a shell-style argument, with an arbitrary quoting style @@ -394,6 +397,7 @@ enum uci_command { UCI_CMD_REMOVE, UCI_CMD_CHANGE, UCI_CMD_RENAME, + UCI_CMD_REORDER, UCI_CMD_LIST_ADD, }; @@ -437,8 +441,10 @@ struct uci_ptr * @type: the type of the container struct this is embedded in. * @member: the name of the member within the struct. */ +#ifndef container_of #define container_of(ptr, type, member) \ ((type *) ((char *)ptr - offsetof(type,member))) +#endif /**