X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fuci.git;a=blobdiff_plain;f=file.c;h=47d9c44b08152de07d0ac734192ca89e4c1c482e;hp=be63247be7da3eec4d5c7472168bd30b7d506ba3;hb=01ca9e5e467e4f324f52fd80a2ec4db999b3db48;hpb=b7c461d025b6db1f9c3e0ce137863d9f912cdbfa diff --git a/file.c b/file.c index be63247..47d9c44 100644 --- a/file.c +++ b/file.c @@ -545,7 +545,7 @@ static FILE *uci_open_stream(struct uci_context *ctx, const char *filename, int UCI_THROW(ctx, UCI_ERR_NOTFOUND); } - fd = open(filename, (write ? O_RDWR | O_CREAT : O_RDONLY)); + fd = open(filename, (write ? O_RDWR | O_CREAT : O_RDONLY), UCI_FILEMODE); if (fd <= 0) goto error; @@ -749,7 +749,7 @@ int uci_save(struct uci_context *ctx, struct uci_package *p) fprintf(f, "\n"); else fprintf(f, "=%s\n", h->value); - uci_list_del(&e->list); + uci_free_history(h); } done: @@ -802,15 +802,17 @@ static inline char *get_filename(char *path) 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++) { @@ -836,6 +838,8 @@ char **uci_list_configs(struct uci_context *ctx) strcpy(buf, p); buf += strlen(buf) + 1; } - return configs; + *list = configs; + + return 0; }