projects
/
project
/
uci.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
7cefa00
)
create the history savedir on uci_save() if it does not exist
author
Felix Fietkau
<nbd@openwrt.org>
Tue, 12 Feb 2008 12:30:25 +0000
(13:30 +0100)
committer
Felix Fietkau
<nbd@openwrt.org>
Tue, 12 Feb 2008 12:30:25 +0000
(13:30 +0100)
history.c
patch
|
blob
|
history
uci.h
patch
|
blob
|
history
diff --git
a/history.c
b/history.c
index
8935a3f
..
6be8a9d
100644
(file)
--- 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;
FILE *f = NULL;
char *filename = NULL;
struct uci_element *e, *tmp;
+ struct stat statbuf;
UCI_HANDLE_ERR(ctx);
UCI_ASSERT(ctx, p != NULL);
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 (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);
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
(file)
--- a/
uci.h
+++ b/
uci.h
@@
-32,7
+32,8
@@
#define UCI_CONFDIR "/etc/config"
#define UCI_SAVEDIR "/tmp/.uci"
#define UCI_CONFDIR "/etc/config"
#define UCI_SAVEDIR "/tmp/.uci"
-#define UCI_FILEMODE 0600
+#define UCI_DIRMODE 0700
+#define UCI_FILEMODE 0600
enum
{
enum
{