diff options
author | Ulrich Drepper <drepper@redhat.com> | 2001-04-10 00:15:08 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2001-04-10 00:15:08 +0000 |
commit | c44a663dca2b0e3f3ac9e9e010bc83d58912803e (patch) | |
tree | 05dd4ad598fce567fe744c75b429b9aed0f19f14 /libio/freopen.c | |
parent | f66d7d4f0d88285568cdf09e9d3586961227a8ef (diff) | |
download | glibc-c44a663dca2b0e3f3ac9e9e010bc83d58912803e.zip glibc-c44a663dca2b0e3f3ac9e9e010bc83d58912803e.tar.gz glibc-c44a663dca2b0e3f3ac9e9e010bc83d58912803e.tar.bz2 |
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.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/libio/freopen.c b/libio/freopen.c index 162e835..4e92df1 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; |