From: Felix Fietkau Date: Tue, 12 Feb 2008 12:30:25 +0000 (+0100) Subject: create the history savedir on uci_save() if it does not exist X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fuci.git;a=commitdiff_plain;h=8dd3eb50025224bd2aa286c0e5c27d230efb7bde;hp=7cefa00eadb4292d2c915a38a86e588c6e539d26;ds=sidebyside create the history savedir on uci_save() if it does not exist --- diff --git a/history.c b/history.c index 8935a3f..6be8a9d 100644 --- a/history.c +++ b/history.c @@ -355,6 +355,7 @@ int uci_save(struct uci_context *ctx, struct uci_package *p) FILE *f = NULL; char *filename = NULL; struct uci_element *e, *tmp; + struct stat statbuf; UCI_HANDLE_ERR(ctx); UCI_ASSERT(ctx, p != NULL); @@ -371,6 +372,11 @@ int uci_save(struct uci_context *ctx, struct uci_package *p) if (uci_list_empty(&p->history)) return 0; + if (stat(ctx->savedir, &statbuf) < 0) + mkdir(ctx->savedir, UCI_DIRMODE); + else if ((statbuf.st_mode & S_IFMT) != S_IFDIR) + UCI_THROW(ctx, UCI_ERR_IO); + if ((asprintf(&filename, "%s/%s", ctx->savedir, p->e.name) < 0) || !filename) UCI_THROW(ctx, UCI_ERR_MEM); diff --git a/uci.h b/uci.h index ab65d1c..5cd36e0 100644 --- a/uci.h +++ b/uci.h @@ -32,7 +32,8 @@ #define UCI_CONFDIR "/etc/config" #define UCI_SAVEDIR "/tmp/.uci" -#define UCI_FILEMODE 0600 +#define UCI_DIRMODE 0700 +#define UCI_FILEMODE 0600 enum {