aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--catgets/open_catalog.c5
-rw-r--r--timezone/zic.c10
3 files changed, 21 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index c1bcefe..8f71120 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+1999-05-02 H.J. Lu <hjl@gnu.org>
+
+ * timezone/zic.c (dolink): Remove the symlink destination first.
+
+ * catgets/open_catalog.c (__open_catalog): Set catalog->status
+ to "nonexisting" if failed to open the file.
+
1999-05-01 Ulrich Drepper <drepper@cygnus.com>
* string/bits/string2.h: Only use __builtin_memset for egcs 1.1 and
diff --git a/catgets/open_catalog.c b/catgets/open_catalog.c
index 4b619e4..aefa34f 100644
--- a/catgets/open_catalog.c
+++ b/catgets/open_catalog.c
@@ -183,7 +183,10 @@ __open_catalog (__nl_catd catalog)
/* Avoid dealing with directories and block devices */
if (fd < 0)
- goto unlock_return;
+ {
+ catalog->status = nonexisting;
+ goto unlock_return;
+ }
if (__fxstat (_STAT_VER, fd, &st) < 0)
{
diff --git a/timezone/zic.c b/timezone/zic.c
index e5c6761..296f284c 100644
--- a/timezone/zic.c
+++ b/timezone/zic.c
@@ -621,6 +621,16 @@ const char * const tofile;
symlinkcontents = ecatalloc(symlinkcontents, "../");
symlinkcontents = ecatalloc(symlinkcontents, fromname);
+ result = unlink(toname);
+ if (result != 0 && errno != ENOENT) {
+ const char *e = strerror(errno);
+
+ (void) fprintf(stderr,
+ _("%s: Can't unlink %s: %s\n"),
+ progname, toname, e);
+ (void) exit(EXIT_FAILURE);
+ }
+
result = symlink(symlinkcontents, toname);
if (result == 0)
warning(_("hard link failed, symbolic link used"));