#define UCI_CONFDIR "/etc/config"
#define UCI_SAVEDIR "/tmp/.uci"
-#define UCI_FILEMODE 0600
+#define UCI_DIRMODE 0700
+#define UCI_FILEMODE 0600
enum
{
* If section is omitted, then a pointer to the config package is returned
* If option is omitted, then a pointer to the config section is returned
*/
-extern int uci_lookup(struct uci_context *ctx, struct uci_element **res, struct uci_package *package, char *section, char *option);
+extern int uci_lookup(struct uci_context *ctx, struct uci_element **res, struct uci_package *package, const char *section, const char *option);
/**
* uci_add_section: Add an unnamed section
* @type: section type
* @res: pointer to store a reference to the new section in
*/
-extern int uci_add_section(struct uci_context *ctx, struct uci_package *p, char *type, struct uci_section **res);
+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
* 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, char *value);
+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
* @value: value (option) or type (section)
* @result: store the updated element in this variable (optional)
*/
-extern int uci_set(struct uci_context *ctx, struct uci_package *p, char *section, char *option, char *value, struct uci_element **result);
+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);
/**
* uci_rename: Rename an element
* @section: section name
* @option: option name (optional)
*/
-extern int uci_delete(struct uci_context *ctx, struct uci_package *p, char *section, char *option);
+extern int uci_delete(struct uci_context *ctx, struct uci_package *p, const char *section, const char *option);
/**
* uci_save: save change history for a package
* @section: section name (optional)
* @option option name (optional)
*/
-extern int uci_revert(struct uci_context *ctx, struct uci_package **p, char *section, char *option);
+extern int uci_revert(struct uci_context *ctx, struct uci_package **p, const char *section, const char *option);
/**
* uci_parse_argument: parse a shell-style argument, with an arbitrary quoting style
char **(*list_configs)(struct uci_context *ctx);
struct uci_package *(*load)(struct uci_context *ctx, const char *name);
void (*commit)(struct uci_context *ctx, struct uci_package **p, bool overwrite);
+
+ /* private: */
+ const void *ptr;
+ void *priv;
};
struct uci_context
struct uci_list history_path;
/* private: */
- int errno;
+ int err;
const char *func;
jmp_buf trap;
bool internal;
char *value;
};
-#define UCI_BACKEND(_var, _name, ...) \
-struct uci_backend _var = { \
- .e.list = { \
- .next = &_var.e.list, \
- .prev = &_var.e.list, \
- }, \
- .e.name = _name, \
- .e.type = UCI_TYPE_BACKEND, \
- __VA_ARGS__ \
-}
-
/* linked list handling */
#ifndef offsetof