diff options
Diffstat (limited to 'libio')
-rw-r--r-- | libio/fileops.c | 9 | ||||
-rw-r--r-- | libio/iopopen.c | 5 | ||||
-rw-r--r-- | libio/stdio.h | 14 |
3 files changed, 14 insertions, 14 deletions
diff --git a/libio/fileops.c b/libio/fileops.c index aae02f001c..0faf01f09f 100644 --- a/libio/fileops.c +++ b/libio/fileops.c @@ -47,6 +47,7 @@ # include "../iconv/gconv_charset.h" # include "../iconv/gconv_int.h" # include <shlib-compat.h> +# include <not-cancel.h> #endif #ifndef errno extern int errno; @@ -1240,14 +1241,18 @@ _IO_file_close_mmap (fp) /* In addition to closing the file descriptor we have to unmap the file. */ (void) __munmap (fp->_IO_buf_base, fp->_IO_buf_end - fp->_IO_buf_base); fp->_IO_buf_base = fp->_IO_buf_end = NULL; - return close (fp->_fileno); + /* Cancelling close should be avoided if possible since it leaves an + unrecoverable state behind. */ + return close_not_cancel (fp->_fileno); } int _IO_file_close (fp) _IO_FILE *fp; { - return close (fp->_fileno); + /* Cancelling close should be avoided if possible since it leaves an + unrecoverable state behind. */ + return close_not_cancel (fp->_fileno); } INTDEF(_IO_file_close) diff --git a/libio/iopopen.c b/libio/iopopen.c index 80a97f1b64..63094389d7 100644 --- a/libio/iopopen.c +++ b/libio/iopopen.c @@ -39,6 +39,7 @@ #ifdef _LIBC # include <unistd.h> # include <shlib-compat.h> +# include <not-cancel.h> #endif #include <sys/types.h> #include <sys/wait.h> @@ -74,7 +75,7 @@ extern int _IO_dup2 __P ((int fd, int fd2)); #ifndef _IO_waitpid #ifdef _LIBC -#define _IO_waitpid __waitpid +#define _IO_waitpid waitpid_not_cancel #else #define _IO_waitpid waitpid #endif @@ -89,7 +90,7 @@ extern int _IO_dup2 __P ((int fd, int fd2)); #ifndef _IO_close #ifdef _LIBC -#define _IO_close __close +#define _IO_close close_not_cancel #else #define _IO_close close #endif diff --git a/libio/stdio.h b/libio/stdio.h index f98d38ff32..88ef61b029 100644 --- a/libio/stdio.h +++ b/libio/stdio.h @@ -757,17 +757,11 @@ extern int fileno_unlocked (FILE *__stream) __THROW; #if (defined __USE_POSIX2 || defined __USE_SVID || defined __USE_BSD || \ defined __USE_MISC) -/* Create a new stream connected to a pipe running the given command. +/* Create a new stream connected to a pipe running the given command. */ +extern FILE *popen (__const char *__command, __const char *__modes) __THROW; - This function is a possible cancellation point and therefore not - marked with __THROW. */ -extern FILE *popen (__const char *__command, __const char *__modes); - -/* Close a stream opened by popen and return the status of its child. - - This function is a possible cancellation point and therefore not - marked with __THROW. */ -extern int pclose (FILE *__stream); +/* Close a stream opened by popen and return the status of its child. */ +extern int pclose (FILE *__stream) __THROW; #endif |