From c44a663dca2b0e3f3ac9e9e010bc83d58912803e Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Tue, 10 Apr 2001 00:15:08 +0000 Subject: Update. 2001-04-05 David S. Miller 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 * 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 * misc/error.c (error): fflush stdout also if error_print_progname != NULL. (error_at_line): Likewise. 2001-04-07 Bruno Haible * 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. --- libio/freopen.c | 16 +++++++++++++++- libio/freopen64.c | 17 ++++++++++++++++- 2 files changed, 31 insertions(+), 2 deletions(-) (limited to 'libio') 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 +#include 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; diff --git a/libio/freopen64.c b/libio/freopen64.c index 8a104c6080..fb19ed9029 100644 --- a/libio/freopen64.c +++ b/libio/freopen64.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1993,1995,1996,1997,1998,2000 Free Software Foundation, Inc. +/* Copyright (C) 1993,1995,1996,1997,1998,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 @@ -26,6 +26,8 @@ #include "libioP.h" #include "stdio.h" +#include + FILE * freopen64 (filename, mode, fp) const char* filename; @@ -34,15 +36,28 @@ freopen64 (filename, mode, fp) { #ifdef _G_OPEN64 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); + } result = _IO_freopen64 (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; -- cgit 1.4.1