about summary refs log tree commit diff
path: root/misc
diff options
context:
space:
mode:
Diffstat (limited to 'misc')
-rw-r--r--misc/Makefile3
-rw-r--r--misc/fstab.h10
-rw-r--r--misc/getpass.c2
-rw-r--r--misc/getttyent.c2
-rw-r--r--misc/getusershell.c2
-rw-r--r--misc/mntent.h12
-rw-r--r--misc/mntent_r.c9
7 files changed, 21 insertions, 19 deletions
diff --git a/misc/Makefile b/misc/Makefile
index 406ed0fed9..db04bb9baf 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 421c65a5c6..24ecad7dbc 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 70562e54af..52dab9439a 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 1bc82e6938..2ff0a7b5c2 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 c15b8f664f..96ab5c8be1 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 863664c6bf..a82e9539af 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 7a394186d4..9bfe8756f1 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.  */