summaryrefslogtreecommitdiff
path: root/timezone/zic.c
diff options
context:
space:
mode:
Diffstat (limited to 'timezone/zic.c')
-rw-r--r--timezone/zic.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/timezone/zic.c b/timezone/zic.c
index 6fdcfcb66a..64642b39c5 100644
--- a/timezone/zic.c
+++ b/timezone/zic.c
@@ -1,6 +1,6 @@
#ifndef lint
#ifndef NOID
-static char elsieid[] = "@(#)zic.c 7.104";
+static char elsieid[] = "@(#)zic.c 7.107";
#endif /* !defined NOID */
#endif /* !defined lint */
@@ -621,9 +621,11 @@ const char * const tofile;
result = link(fromname, toname);
#if (HAVE_SYMLINK - 0)
- if (result != 0) {
+ if (result != 0 &&
+ access(fromname, F_OK) == 0 &&
+ !itsdir(fromname)) {
const char *s = tofile;
- register char *symlinkcontents = NULL;
+ register char * symlinkcontents = NULL;
while ((s = strchr(s+1, '/')) != NULL)
symlinkcontents = ecatalloc(symlinkcontents, "../");
symlinkcontents = ecatalloc(symlinkcontents, fromname);