{
char *section = (argc > 2 ? argv[2] : NULL);
struct uci_package *package;
- char **configs;
+ char **configs = NULL;
char **p;
- configs = uci_list_configs(ctx);
- if (!configs)
- return 0;
+ if ((uci_list_configs(ctx, &configs) != UCI_OK) || !configs) {
+ uci_perror(ctx, appname);
+ return 1;
+ }
if (argc >= 2) {
if (uci_load(ctx, argv[1], &package) != UCI_OK) {
- uci_perror(ctx, NULL);
+ uci_perror(ctx, appname);
return 1;
}
uci_show_package(package, section);
for (p = configs; *p; p++) {
if ((argc < 2) || !strcmp(argv[1], *p)) {
if (uci_load(ctx, *p, &package) != UCI_OK) {
- uci_perror(ctx, NULL);
+ uci_perror(ctx, appname);
return 1;
}
uci_show_package(package, section);
static int uci_do_export(int argc, char **argv)
{
- char **configs = uci_list_configs(ctx);
+ char **configs = NULL;
char **p;
- if (!configs)
- return 0;
+ if ((uci_list_configs(ctx, &configs) != UCI_OK) || !configs) {
+ uci_perror(ctx, appname);
+ return 1;
+ }
for (p = configs; *p; p++) {
if ((argc < 2) || !strcmp(argv[1], *p)) {
return p;
}
-char **uci_list_configs(struct uci_context *ctx)
+int uci_list_configs(struct uci_context *ctx, char ***list)
{
char **configs;
glob_t globbuf;
int size, i;
char *buf;
+ UCI_HANDLE_ERR(ctx);
+
if (glob(UCI_CONFDIR "/*", GLOB_MARK, NULL, &globbuf) != 0)
- return NULL;
+ UCI_THROW(ctx, UCI_ERR_NOTFOUND);
size = sizeof(char *) * (globbuf.gl_pathc + 1);
for(i = 0; i < globbuf.gl_pathc; i++) {
strcpy(buf, p);
buf += strlen(buf) + 1;
}
- return configs;
+ *list = configs;
+
+ return 0;
}