1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-25 02:02:09 +03:00
* misc/Makefile (CFLAGS-getpass.c): Add -fexceptions.
	* misc/getpass.c (getpass): Add cleanup handler to ensure the
	stream is closed even if the thread is canceled.
	(call_fclose): New function.
	* posix/unistd.h: Remove __THROW from getpass prorotype.

	* posix/Makefile (CFLAGS-getopt.c): Add -fexceptions.

	* signal/signal.h (psignal): Remove __THROW.
	* stdio-common/Makefile (CFLAGS-psignal.c): Add -fexceptions.
This commit is contained in:
Ulrich Drepper
2003-08-30 09:10:12 +00:00
parent 048466f614
commit cdbfa9f89f
7 changed files with 34 additions and 8 deletions

View File

@ -1,5 +1,16 @@
2003-08-30 Ulrich Drepper <drepper@redhat.com> 2003-08-30 Ulrich Drepper <drepper@redhat.com>
* misc/Makefile (CFLAGS-getpass.c): Add -fexceptions.
* misc/getpass.c (getpass): Add cleanup handler to ensure the
stream is closed even if the thread is canceled.
(call_fclose): New function.
* posix/unistd.h: Remove __THROW from getpass prorotype.
* posix/Makefile (CFLAGS-getopt.c): Add -fexceptions.
* signal/signal.h (psignal): Remove __THROW.
* stdio-common/Makefile (CFLAGS-psignal.c): Add -fexceptions.
* misc/Makefile (CFLAGS-error.c): Define. * misc/Makefile (CFLAGS-error.c): Define.
* misc/error.c (error): Disable cancellation handling around the * misc/error.c (error): Disable cancellation handling around the
actual output. The message should in any case be printed. actual output. The message should in any case be printed.

View File

@ -83,6 +83,7 @@ CFLAGS-writev.c = -fexceptions -fasynchronous-unwind-tables
CFLAGS-usleep.c = -fexceptions CFLAGS-usleep.c = -fexceptions
CFLAGS-syslog.c = -fexceptions CFLAGS-syslog.c = -fexceptions
CFLAGS-error.c = -fexceptions CFLAGS-error.c = -fexceptions
CFLAGS-getpass.c = -fexceptions
include ../Rules include ../Rules

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1992,93,94,95,96,97,98,99,2001 Free Software Foundation, Inc. /* Copyright (C) 1992-1999, 2001, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -21,11 +21,10 @@
#include <termios.h> #include <termios.h>
#include <unistd.h> #include <unistd.h>
#ifdef USE_IN_LIBIO #include <wchar.h>
# include <wchar.h> #define flockfile(s) _IO_flockfile (s)
# define flockfile(s) _IO_flockfile (s) #define funlockfile(s) _IO_funlockfile (s)
# define funlockfile(s) _IO_funlockfile (s) #include <bits/libc-lock.h>
#endif
/* It is desirable to use this bit on systems that have it. /* It is desirable to use this bit on systems that have it.
The only bit of terminal state we want to twiddle is echoing, which is The only bit of terminal state we want to twiddle is echoing, which is
@ -36,6 +35,13 @@
#define TCSASOFT 0 #define TCSASOFT 0
#endif #endif
static void
call_fclose (void *arg)
{
if (arg != NULL)
fclose (arg);
}
char * char *
getpass (prompt) getpass (prompt)
const char *prompt; const char *prompt;
@ -64,6 +70,10 @@ getpass (prompt)
out = in; out = in;
} }
/* Make sure the stream we opened is closed even if the thread is
canceled. */
__libc_cleanup_push (call_fclose, in == out ? in : NULL);
flockfile (out); flockfile (out);
/* Turn echoing off if it is on now. */ /* Turn echoing off if it is on now. */
@ -117,6 +127,8 @@ getpass (prompt)
funlockfile (out); funlockfile (out);
__libc_cleanup_pop (0);
if (in != stdin) if (in != stdin)
/* We opened the terminal; now close it. */ /* We opened the terminal; now close it. */
fclose (in); fclose (in);

View File

@ -127,6 +127,7 @@ CFLAGS-sleep.c = -fexceptions
CFLAGS-wait.c = -fexceptions -fasynchronous-unwind-tables CFLAGS-wait.c = -fexceptions -fasynchronous-unwind-tables
CFLAGS-waitid.c = -fexceptions CFLAGS-waitid.c = -fexceptions
CFLAGS-waitpid.c = -fexceptions -fasynchronous-unwind-tables CFLAGS-waitpid.c = -fexceptions -fasynchronous-unwind-tables
CFLAGS-getopt.c = -fexceptions
tstgetopt-ARGS = -a -b -cfoobar --required foobar --optional=bazbug \ tstgetopt-ARGS = -a -b -cfoobar --required foobar --optional=bazbug \
--none random --col --color --colour --none random --col --color --colour

View File

@ -845,7 +845,7 @@ extern int chroot (__const char *__path) __THROW;
/* Prompt with PROMPT and read a string from the terminal without echoing. /* Prompt with PROMPT and read a string from the terminal without echoing.
Uses /dev/tty if possible; otherwise stderr and stdin. */ Uses /dev/tty if possible; otherwise stderr and stdin. */
extern char *getpass (__const char *__prompt) __THROW; extern char *getpass (__const char *__prompt);
#endif /* Use BSD || X/Open. */ #endif /* Use BSD || X/Open. */

View File

@ -134,7 +134,7 @@ extern int gsignal (int __sig) __THROW;
#ifdef __USE_MISC #ifdef __USE_MISC
/* Print a message describing the meaning of the given signal number. */ /* Print a message describing the meaning of the given signal number. */
extern void psignal (int __sig, __const char *__s) __THROW; extern void psignal (int __sig, __const char *__s);
#endif /* Use misc. */ #endif /* Use misc. */

View File

@ -84,6 +84,7 @@ CFLAGS-tst-printfsz.c = -Wno-format
CFLAGS-tmpfile.c = -fexceptions CFLAGS-tmpfile.c = -fexceptions
CFLAGS-tmpfile64.c = -fexceptions CFLAGS-tmpfile64.c = -fexceptions
CFLAGS-tempname.c = -fexceptions CFLAGS-tempname.c = -fexceptions
CFLAGS-psignal.c = -fexceptions
tst-sscanf-ENV = LOCPATH=$(common-objpfx)localedata tst-sscanf-ENV = LOCPATH=$(common-objpfx)localedata
tst-swprintf-ENV = LOCPATH=$(common-objpfx)localedata tst-swprintf-ENV = LOCPATH=$(common-objpfx)localedata