X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fuci.git;a=blobdiff_plain;f=uci_internal.h;h=02f81f52b8e6936483b1564215f0278fd62da0e2;hp=7ce00d04dda07c13f6708874aec276477e929717;hb=dc47efacd6bbeabb378b68525391dda2b20ce175;hpb=6ce771b1095c220f849e70cdcbf23bd09f7fe7d5 diff --git a/uci_internal.h b/uci_internal.h index 7ce00d0..02f81f5 100644 --- a/uci_internal.h +++ b/uci_internal.h @@ -9,7 +9,7 @@ * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Lesser General Public License for more details. */ #ifndef __UCI_INTERNAL_H @@ -20,7 +20,7 @@ #ifdef UCI_PLUGIN_SUPPORT #define __plugin extern #else -#define __plugin static +#define __plugin __private #endif struct uci_parse_context @@ -40,12 +40,15 @@ struct uci_parse_context int bufsz; }; +extern const char *uci_confdir; +extern const char *uci_savedir; + __plugin void *uci_malloc(struct uci_context *ctx, size_t size); __plugin void *uci_realloc(struct uci_context *ctx, void *ptr, size_t size); __plugin char *uci_strdup(struct uci_context *ctx, const char *str); __plugin bool uci_validate_str(const char *str, bool name); -__plugin void uci_add_history(struct uci_context *ctx, struct uci_list *list, int cmd, const char *section, const char *option, const char *value); -__plugin void uci_free_history(struct uci_history *h); +__plugin void uci_add_delta(struct uci_context *ctx, struct uci_list *list, int cmd, const char *section, const char *option, const char *value); +__plugin void uci_free_delta(struct uci_delta *h); __plugin struct uci_package *uci_alloc_package(struct uci_context *ctx, const char *name); __private FILE *uci_open_stream(struct uci_context *ctx, const char *filename, int pos, bool write, bool create); @@ -59,8 +62,11 @@ __private void uci_cleanup(struct uci_context *ctx); __private struct uci_element *uci_lookup_list(struct uci_list *list, const char *name); __private void uci_fixup_section(struct uci_context *ctx, struct uci_section *s); __private void uci_free_package(struct uci_package **package); +__private struct uci_element *uci_alloc_generic(struct uci_context *ctx, int type, const char *name, int size); +__private void uci_free_element(struct uci_element *e); +__private struct uci_element *uci_expand_ptr(struct uci_context *ctx, struct uci_ptr *ptr, bool complete); -__private int uci_load_history(struct uci_context *ctx, struct uci_package *p, bool flush); +__private int uci_load_delta(struct uci_context *ctx, struct uci_package *p, bool flush); static inline bool uci_validate_package(const char *str) { @@ -180,9 +186,9 @@ struct uci_backend _var = { \ #define UCI_HANDLE_ERR(ctx) do { \ DPRINTF("ENTER: %s\n", __func__); \ int __val = 0; \ - ctx->err = 0; \ if (!ctx) \ return UCI_ERR_INVAL; \ + ctx->err = 0; \ if (!ctx->internal && !ctx->nested) \ __val = setjmp(ctx->trap); \ ctx->internal = false; \