From ee8449f7293a20a2a971ecdbf3d31129a281dee4 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Thu, 4 Sep 2003 08:27:37 +0000 Subject: Update. 2003-09-04 Ulrich Drepper * libio/libio.h: Define _IO_FLAGS2_NOTCANCEL. * libio/fileops.c [_LIBC]: Remove close macro. (_IO_file_open): If _IO_FLAGS2_NOTCANCEL is set, use open_not_cancel. (_IO_new_file_open): Recognize 'c' flag in mode string. (_IO_file_read): If _IO_FLAGS2_NOTCANCEL is set use read_not_cancel. (_IO_new_file_write): If _IO_FLAGS2_NOTCANCEL is set use write_not_cancel. * iconv/gconv_conf.c: Use fopen with 'c' mode flag. * inet/rcmd.c: Likewise. * inet/ruserpass.c: Likewise. * intl/localealias.c: Likewise. * malloc/mtrace.c: Likewise. * misc/getpass.c: Likewise. * misc/getttyent.c: Likewise. * misc/mntent_r.c: Likewise. * misc/getusershell.c: Likewise. * nss/nsswitch.c: Likewise. * resolv/res_hconf.c: Likewise. * resolv/res_init.c: Likewise. * sysdeps/unix/sysv/linux/getsysstats.c: Likewise. * time/getdate.c: Likewise. * time/tzfile.c: Likewise. * misc/fstab.h: Undo last change. * misc/mntent.h: Likewise. * misc/Makefile: Remove CFLAGS-mntent_r.c, CFLAGS-mntent.c, and CFLAGS-fstab.c definition. 2003-09-04 Jakub Jelinek 2003-09-03 Ulrich Drepper --- misc/Makefile | 3 --- misc/fstab.h | 10 +++++----- misc/getpass.c | 2 +- misc/getttyent.c | 2 +- misc/getusershell.c | 2 +- misc/mntent.h | 12 ++++++------ misc/mntent_r.c | 9 +++++++-- 7 files changed, 21 insertions(+), 19 deletions(-) (limited to 'misc') diff --git a/misc/Makefile b/misc/Makefile index 406ed0f..db04bb9 100644 --- a/misc/Makefile +++ b/misc/Makefile @@ -86,9 +86,6 @@ CFLAGS-error.c = -fexceptions CFLAGS-getpass.c = -fexceptions CFLAGS-mkstemp.c = -fexceptions CFLAGS-mkstemp64.c = -fexceptions -CFLAGS-mntent_r.c = -fexceptions -CFLAGS-mntent.c = -fexceptions -CFLAGS-fstab.c = -fexceptions CFLAGS-getsysstats.c = -fexceptions CFLAGS-getusershell.c = -fexceptions diff --git a/misc/fstab.h b/misc/fstab.h index 421c65a..24ecad7 100644 --- a/misc/fstab.h +++ b/misc/fstab.h @@ -68,11 +68,11 @@ struct fstab __BEGIN_DECLS -extern struct fstab *getfsent (void); -extern struct fstab *getfsspec (__const char *__name); -extern struct fstab *getfsfile (__const char *__name); -extern int setfsent (void); -extern void endfsent (void); +extern struct fstab *getfsent (void) __THROW; +extern struct fstab *getfsspec (__const char *__name) __THROW; +extern struct fstab *getfsfile (__const char *__name) __THROW; +extern int setfsent (void) __THROW; +extern void endfsent (void) __THROW; __END_DECLS diff --git a/misc/getpass.c b/misc/getpass.c index 70562e5..52dab94 100644 --- a/misc/getpass.c +++ b/misc/getpass.c @@ -56,7 +56,7 @@ getpass (prompt) /* Try to write to and read from the terminal if we can. If we can't open the terminal, use stderr and stdin. */ - in = fopen ("/dev/tty", "w+"); + in = fopen ("/dev/tty", "w+c"); if (in == NULL) { in = stdin; diff --git a/misc/getttyent.c b/misc/getttyent.c index 1bc82e6..2ff0a7b 100644 --- a/misc/getttyent.c +++ b/misc/getttyent.c @@ -192,7 +192,7 @@ setttyent() if (tf) { (void)rewind(tf); return (1); - } else if ((tf = fopen(_PATH_TTYS, "r"))) { + } else if ((tf = fopen(_PATH_TTYS, "rc"))) { /* We do the locking ourselves. */ __fsetlocking (tf, FSETLOCKING_BYCALLER); return (1); diff --git a/misc/getusershell.c b/misc/getusershell.c index c15b8f6..96ab5c8 100644 --- a/misc/getusershell.c +++ b/misc/getusershell.c @@ -100,7 +100,7 @@ initshells() if (strings != NULL) free(strings); strings = NULL; - if ((fp = fopen(_PATH_SHELLS, "r")) == NULL) + if ((fp = fopen(_PATH_SHELLS, "rc")) == NULL) return (char **) okshells; if (fstat64(fileno(fp), &statb) == -1) { (void)fclose(fp); diff --git a/misc/mntent.h b/misc/mntent.h index 863664c..a82e953 100644 --- a/misc/mntent.h +++ b/misc/mntent.h @@ -1,5 +1,5 @@ /* Utilities for reading/writing fstab, mtab, etc. - Copyright (C) 1995-1999, 2003 Free Software Foundation, Inc. + Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -64,28 +64,28 @@ struct mntent /* Prepare to begin reading and/or writing mount table entries from the beginning of FILE. MODE is as for `fopen'. */ -extern FILE *setmntent (__const char *__file, __const char *__mode); +extern FILE *setmntent (__const char *__file, __const char *__mode) __THROW; /* Read one mount table entry from STREAM. Returns a pointer to storage reused on the next call, or null for EOF or error (use feof/ferror to check). */ -extern struct mntent *getmntent (FILE *__stream); +extern struct mntent *getmntent (FILE *__stream) __THROW; #ifdef __USE_MISC /* Reentrant version of the above function. */ extern struct mntent *getmntent_r (FILE *__restrict __stream, struct mntent *__restrict __result, char *__restrict __buffer, - int __bufsize); + int __bufsize) __THROW; #endif /* Write the mount table entry described by MNT to STREAM. Return zero on success, nonzero on failure. */ extern int addmntent (FILE *__restrict __stream, - __const struct mntent *__restrict __mnt); + __const struct mntent *__restrict __mnt) __THROW; /* Close a stream opened with `setmntent'. */ -extern int endmntent (FILE *__stream); +extern int endmntent (FILE *__stream) __THROW; /* Search MNT->mnt_opts for an option matching OPT. Returns the address of the substring, or null if none found. */ diff --git a/misc/mntent_r.c b/misc/mntent_r.c index 7a39418..9bfe875 100644 --- a/misc/mntent_r.c +++ b/misc/mntent_r.c @@ -1,5 +1,5 @@ /* Utilities for reading/writing fstab, mtab, etc. - Copyright (C) 1995-2000, 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 1995-2000, 2001, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -38,7 +38,12 @@ FILE * __setmntent (const char *file, const char *mode) { - FILE *result = fopen (file, mode); + /* Extend the mode parameter with "c" to disable cancellation in the + I/O functions. */ + size_t modelen = strlen (mode); + char newmode[modelen + 2]; + memcpy (mempcpy (newmode, mode, modelen), "c", 2); + FILE *result = fopen (file, newmode); if (result != NULL) /* We do the locking ourselves. */ -- cgit v1.1