aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNils Durner <durner@gnunet.org>2009-06-15 20:35:59 +0000
committerNils Durner <durner@gnunet.org>2009-06-15 20:35:59 +0000
commite943ea50e768867674c4bdf05fb2b9b3e0c990ab (patch)
tree96fc94bb6406b647c14cca2c9f78603a762a2ce6 /src
parent21314229eea36c41f276f753c1cf141041405102 (diff)
downloadgnunet-e943ea50e768867674c4bdf05fb2b9b3e0c990ab.tar.gz
gnunet-e943ea50e768867674c4bdf05fb2b9b3e0c990ab.zip
translate GNUNET_DISK_PERM_xxx
Diffstat (limited to 'src')
-rw-r--r--src/util/disk.c26
1 files changed, 24 insertions, 2 deletions
diff --git a/src/util/disk.c b/src/util/disk.c
index 45e832094..5698a8110 100644
--- a/src/util/disk.c
+++ b/src/util/disk.c
@@ -981,17 +981,39 @@ GNUNET_DISK_file_open (const char *fn, int flags, ...)
981 oflags |= O_TRUNC; 981 oflags |= O_TRUNC;
982 if (flags & GNUNET_DISK_OPEN_CREATE) 982 if (flags & GNUNET_DISK_OPEN_CREATE)
983 { 983 {
984 int perm;
985
984 oflags |= O_CREAT; 986 oflags |= O_CREAT;
985 987
986 va_list arg; 988 va_list arg;
987 va_start (arg, flags); 989 va_start (arg, flags);
988 mode = va_arg (arg, int); 990 perm = va_arg (arg, int);
989 va_end (arg); 991 va_end (arg);
992
993 mode = 0;
994 if (perm & GNUNET_DISK_PERM_USER_READ)
995 mode = S_IRUSR;
996 if (perm & GNUNET_DISK_PERM_USER_WRITE)
997 mode |= S_IWUSR;
998 if (perm & GNUNET_DISK_PERM_USER_EXEC)
999 mode |= S_IXUSR;
1000 if (perm & GNUNET_DISK_PERM_GROUP_READ)
1001 mode = S_IRGRP;
1002 if (perm & GNUNET_DISK_PERM_GROUP_WRITE)
1003 mode |= S_IWGRP;
1004 if (perm & GNUNET_DISK_PERM_GROUP_EXEC)
1005 mode |= S_IXGRP;
1006 if (perm & GNUNET_DISK_PERM_OTHER_READ)
1007 mode = S_IROTH;
1008 if (perm & GNUNET_DISK_PERM_OTHER_WRITE)
1009 mode |= S_IWOTH;
1010 if (perm & GNUNET_DISK_PERM_OTHER_EXEC)
1011 mode |= S_IXOTH;
990 } 1012 }
991 if (flags & GNUNET_DISK_OPEN_APPEND) 1013 if (flags & GNUNET_DISK_OPEN_APPEND)
992 oflags = O_APPEND; 1014 oflags = O_APPEND;
993 1015
994s fd = open (expfn, oflag | O_LARGEFILE, perm, mode); 1016 fd = open (expfn, oflags | O_LARGEFILE, mode);
995 if (fd == -1) 1017 if (fd == -1)
996 { 1018 {
997 GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_WARNING, "open", fn); 1019 GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_WARNING, "open", fn);