#ifndef __LIBUCI_H
#define __LIBUCI_H
+#include "uci_config.h"
+
/*
* you can use these defines to enable debugging behavior for
* apps compiled against libuci:
*
*/
-#ifdef DEBUG_ALL
-#define UCI_DEBUG
-#define UCI_DEBUG_TYPECAST
-#endif
-
#include <stdbool.h>
#include <setjmp.h>
#include <stdio.h>
*/
extern int uci_parse_argument(struct uci_context *ctx, FILE *stream, char **str, char **result);
+/**
+ * uci_set_backend: change the default backend
+ * @ctx: uci context
+ * @name: name of the backend
+ *
+ * The default backend is "file", which uses /etc/config for config storage
+ */
+extern int uci_set_backend(struct uci_context *ctx, const char *name);
+
/* UCI data structures */
enum uci_type {
UCI_TYPE_HISTORY = 0,
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
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