summaryrefslogtreecommitdiff
path: root/libio/freopen.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2001-04-10 00:15:08 +0000
committerUlrich Drepper <drepper@redhat.com>2001-04-10 00:15:08 +0000
commitc44a663dca2b0e3f3ac9e9e010bc83d58912803e (patch)
tree05dd4ad598fce567fe744c75b429b9aed0f19f14 /libio/freopen.c
parentf66d7d4f0d88285568cdf09e9d3586961227a8ef (diff)
downloadglibc-c44a663dca2b0e3f3ac9e9e010bc83d58912803e.tar.gz
Update.
2001-04-05 David S. Miller <davem@redhat.com> Add hp-timing support for sparcv9/sparc64 targets. * sysdeps/sparc/sparc32/sparcv9/hp-timing.c: New file * sysdeps/sparc/sparc32/sparcv9/hp-timing.h: New file * sysdeps/sparc/sparc64/hp-timing.c: New file * sysdeps/sparc/sparc64/hp-timing.h: New file * sysdeps/sparc/sparc32/sparcv9/Makefile: Build hp-timing. * sysdeps/sparc/sparc64/Makefile: Likewise. 2001-04-09 Jakub Jelinek <jakub@redhat.com> * sysdeps/generic/fd_to_filename.h: New file. * sysdeps/unix/sysv/linux/fd_to_filename.h: New file. * libio/freopen.c (freopen): If FILENAME is NULL, try to get filename from the open file descriptor. * libio/freopen64.c (freopen64): Likewise. 2001-04-09 Bruno Haible <haible@clisp.cons.org> * misc/error.c (error): fflush stdout also if error_print_progname != NULL. (error_at_line): Likewise. 2001-04-07 Bruno Haible <haible@clisp.cons.org> * intl/gettextP.h (struct loaded_domain): Add codeset_cntr field. (struct binding): Add codeset_cntr field. (_nl_load_domain): Add domainbinding argument. (_nl_init_domain_conv, _nl_free_domain_conv): New declarations. (_nl_find_msg): New declaration, moved here from loadinfo.h. * intl/loadinfo.h (struct loaded_l10nfile): Remove domainbinding field. (_nl_make_l10nflist): Remove domainbinding argument. (_nl_find_msg): Move declaration to gettextP.h. * intl/bindtextdom.c (set_binding_values): Initialize ->codeset_cntr to 0. Increment it when ->codeset is changed. * intl/dcigettext.c (DCIGETTEXT): Pass binding to _nl_find_msg. (_nl_find_msg): Add domainbinding argument. Reinitialize the converter if domainbinding->codeset_cntr has been incremented. * intl/finddomain.c (_nl_find_domain): Don't pass domainbinding to _nl_make_l10nflist(). Pass it to _nl_load_domain() instead. * intl/l10nflist.c (_nl_make_l10nflist): Remove domainbinding argument. * intl/loadmsgcat.c (_nl_init_domain_conv): New function, extracted from _nl_load_domain. Append //TRANSLIT also when using libiconv. (_nl_free_domain_conv): New function, extracted from _nl_unload_domain. (_nl_load_domain): Add domainbinding argument. Call _nl_init_domain_conv. (_nl_unload_domain): Call _nl_free_domain_conv. * intl/Makefile (distribute): Add tst-codeset.sh, tstcodeset.po. (test-srcs): Add tst-codeset. (tests): Depend on tst-codeset.out. (tst-codeset.out): New rule. (CFLAGS-tst-codeset.c): New variable. * intl/tst-codeset.sh: New file. * intl/tstcodeset.po: New file. * intl/tst-codeset.c: New file. * locale/findlocale.c (_nl_find_locale): Update _nl_make_l10nflist calls.
Diffstat (limited to 'libio/freopen.c')
-rw-r--r--libio/freopen.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/libio/freopen.c b/libio/freopen.c
index 162e835956..4e92df17b4 100644
--- a/libio/freopen.c
+++ b/libio/freopen.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993,95,96,97,98,2000 Free Software Foundation, Inc.
+/* Copyright (C) 1993,95,96,97,98,2000,2001 Free Software Foundation, Inc.
This file is part of the GNU IO Library.
This library is free software; you can redistribute it and/or
@@ -27,6 +27,7 @@
#include "stdio.h"
#include <shlib-compat.h>
+#include <fd_to_filename.h>
FILE*
freopen (filename, mode, fp)
@@ -35,11 +36,18 @@ freopen (filename, mode, fp)
FILE* fp;
{
FILE *result;
+ int fd = -1;
CHECK_FILE (fp, NULL);
if (!(fp->_flags & _IO_IS_FILEBUF))
return NULL;
_IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
_IO_flockfile (fp);
+ if (filename == NULL && _IO_fileno (fp) >= 0)
+ {
+ fd = dup (_IO_fileno (fp));
+ if (fd != -1)
+ filename = fd_to_filename (fd);
+ }
#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
if (&_IO_stdin_used == NULL)
/* If the shared C library is used by the application binary which
@@ -54,6 +62,12 @@ freopen (filename, mode, fp)
if (result != NULL)
/* unbound stream orientation */
result->_mode = 0;
+ if (fd != -1)
+ {
+ close (fd);
+ if (filename != NULL)
+ free ((char *) filename);
+ }
_IO_funlockfile (fp);
_IO_cleanup_region_end (0);
return result;