*/
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
*/
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
UCI_CMD_REMOVE,
UCI_CMD_CHANGE,
UCI_CMD_RENAME,
+ UCI_CMD_REORDER,
UCI_CMD_LIST_ADD,
};
* @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
/**