summaryrefslogtreecommitdiff
path: root/timezone/zic.c
diff options
context:
space:
mode:
Diffstat (limited to 'timezone/zic.c')
-rw-r--r--timezone/zic.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/timezone/zic.c b/timezone/zic.c
index 6f2f6570f5..8e028ebb92 100644
--- a/timezone/zic.c
+++ b/timezone/zic.c
@@ -1,15 +1,21 @@
#ifndef lint
#ifndef NOID
-static char elsieid[] = "@(#)zic.c 7.101";
+static char elsieid[] = "@(#)zic.c 7.102";
#endif /* !defined NOID */
#endif /* !defined lint */
#include "private.h"
#include "locale.h"
#include "tzfile.h"
-#ifdef unix
-#include "sys/stat.h" /* for umask manifest constants */
-#endif /* defined unix */
+
+#if HAVE_SYS_STAT_H
+#include "sys/stat.h"
+#endif
+#ifdef S_IRUSR
+#define MKDIR_UMASK (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH)
+#else
+#define MKDIR_UMASK 0755
+#endif
/*
** On some ancient hosts, predicates like `isspace(C)' are defined
@@ -2198,7 +2204,7 @@ char * const argname;
** created by some other multiprocessor, so we get
** to do extra checking.
*/
- if (mkdir(name, S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH) != 0) {
+ if (mkdir(name, MKDIR_UMASK) != 0) {
const char *e = strerror(errno);
if (errno != EEXIST || !itsdir(name)) {