mirror of
git://sourceware.org/git/glibc.git
synced 2025-03-06 20:58:33 +01:00
Update.
(write_output): Don't overwrite old cache file until we know we have a new one. * iconv/Makefile (install-sbin): Add iconvconfig. * iconv/gconv_int.h: Add prototype for __gconv_release_cache.
This commit is contained in:
parent
ba915a3807
commit
9fcddc2b42
3 changed files with 17 additions and 8 deletions
|
@ -2,8 +2,10 @@
|
||||||
|
|
||||||
* iconv/iconvconfig.c (main): Don't write an output file if we
|
* iconv/iconvconfig.c (main): Don't write an output file if we
|
||||||
have seen an error.
|
have seen an error.
|
||||||
|
(write_output): Don't overwrite old cache file until we know we
|
||||||
|
have a new one.
|
||||||
|
|
||||||
* iconv/Makefile (install-bin): Add iconvconfig.
|
* iconv/Makefile (install-sbin): Add iconvconfig.
|
||||||
|
|
||||||
2001-07-25 Jakub Jelinek <jakub@redhat.com>
|
2001-07-25 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
@ -43,7 +45,7 @@
|
||||||
__gconv_release_cache after the steps are handled.
|
__gconv_release_cache after the steps are handled.
|
||||||
* iconv/gconv_dl.c (__gconv_find_shlib): Allocate file name in the
|
* iconv/gconv_dl.c (__gconv_find_shlib): Allocate file name in the
|
||||||
record as well.
|
record as well.
|
||||||
* iconv/gconv_int.h: Add prototype fpr __gconv_release_cache.
|
* iconv/gconv_int.h: Add prototype for __gconv_release_cache.
|
||||||
|
|
||||||
* iconv/gconv_cache.c (__gconv_lookup_cache): Catch one more
|
* iconv/gconv_cache.c (__gconv_lookup_cache): Catch one more
|
||||||
boundary case and reject it.
|
boundary case and reject it.
|
||||||
|
|
|
@ -54,7 +54,7 @@ distribute = gconv_builtin.h gconv_int.h loop.c skeleton.c iconv_prog.h \
|
||||||
|
|
||||||
others = iconv_prog iconvconfig
|
others = iconv_prog iconvconfig
|
||||||
install-others = $(inst_bindir)/iconv
|
install-others = $(inst_bindir)/iconv
|
||||||
install-bin = iconvconfig
|
install-sbin = iconvconfig
|
||||||
|
|
||||||
CFLAGS-gconv_cache.c = -DGCONV_DIR='"$(gconvdir)"'
|
CFLAGS-gconv_cache.c = -DGCONV_DIR='"$(gconvdir)"'
|
||||||
CFLAGS-gconv_conf.c = -DGCONV_PATH='"$(gconvdir)"'
|
CFLAGS-gconv_conf.c = -DGCONV_PATH='"$(gconvdir)"'
|
||||||
|
|
|
@ -305,7 +305,7 @@ main (int argc, char *argv[])
|
||||||
if (status == 0)
|
if (status == 0)
|
||||||
status = write_output ();
|
status = write_output ();
|
||||||
else
|
else
|
||||||
fputs ("No output written!\n", stderr);
|
error (1, 0, _("no output file produced because warning were issued"));
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
@ -966,6 +966,7 @@ write_output (void)
|
||||||
struct iovec iov[6];
|
struct iovec iov[6];
|
||||||
static const gidx_t null_word;
|
static const gidx_t null_word;
|
||||||
size_t total;
|
size_t total;
|
||||||
|
char tmpfname[sizeof (GCONV_MODULES_CACHE) + strlen (".XXXXXX")];
|
||||||
|
|
||||||
/* Function to insert the names. */
|
/* Function to insert the names. */
|
||||||
static void name_insert (const void *nodep, VISIT value, int level)
|
static void name_insert (const void *nodep, VISIT value, int level)
|
||||||
|
@ -992,7 +993,8 @@ write_output (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Open the output file. */
|
/* Open the output file. */
|
||||||
fd = open (GCONV_MODULES_CACHE, O_TRUNC | O_CREAT | O_RDWR, 0644);
|
strcpy (stpcpy (tmpfname, GCONV_MODULES_CACHE), ".XXXXXX");
|
||||||
|
fd = mkstemp (tmpfname);
|
||||||
if (fd == -1)
|
if (fd == -1)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
@ -1144,12 +1146,17 @@ write_output (void)
|
||||||
total += iov[idx].iov_len;
|
total += iov[idx].iov_len;
|
||||||
++idx;
|
++idx;
|
||||||
|
|
||||||
if (TEMP_FAILURE_RETRY (writev (fd, iov, idx)) != total)
|
if (TEMP_FAILURE_RETRY (writev (fd, iov, idx)) != total
|
||||||
|
/* The file was created with mode 0600. Make it world-readable. */
|
||||||
|
|| fchmod (fd, 0644) != 0
|
||||||
|
/* Rename the file, possibly replacing an old one. */
|
||||||
|
|| rename (tmpfname, GCONV_MODULES_CACHE) != 0)
|
||||||
{
|
{
|
||||||
int save_errno = errno;
|
int save_errno = errno;
|
||||||
close (fd);
|
close (fd);
|
||||||
unlink (GCONV_MODULES_CACHE);
|
unlink (tmpfname);
|
||||||
error (EXIT_FAILURE, save_errno, gettext ("cannot write output file"));
|
error (EXIT_FAILURE, save_errno,
|
||||||
|
gettext ("cannot generate output file"));
|
||||||
}
|
}
|
||||||
|
|
||||||
close (fd);
|
close (fd);
|
||||||
|
|
Loading…
Add table
Reference in a new issue