+ if (dest) {
+ err = asprintf(dest, format,
+ (prefix ? prefix : ""), (prefix ? ": " : ""),
+ (ctx && ctx->func ? ctx->func : ""), (ctx && ctx->func ? ": " : ""),
+ uci_errstr[err],
+ error_info);
+ if (err < 0)
+ *dest = NULL;
+ } else {
+ strcat(error_info, "\n");
+ fprintf(stderr, format,
+ (prefix ? prefix : ""), (prefix ? ": " : ""),
+ (ctx && ctx->func ? ctx->func : ""), (ctx && ctx->func ? ": " : ""),
+ uci_errstr[err],
+ error_info);
+ }
+}
+
+int uci_list_configs(struct uci_context *ctx, char ***list)
+{
+ UCI_HANDLE_ERR(ctx);
+ UCI_ASSERT(ctx, list != NULL);
+ UCI_ASSERT(ctx, ctx->backend && ctx->backend->list_configs);
+ *list = ctx->backend->list_configs(ctx);
+ return 0;