* libio/oldfileops.c (_IO_old_file_xsputn): Fix last patch.
authorUlrich Drepper <drepper@redhat.com>
Mon, 17 Oct 2005 16:05:54 +0000 (16:05 +0000)
committerUlrich Drepper <drepper@redhat.com>
Mon, 17 Oct 2005 16:05:54 +0000 (16:05 +0000)
Return EOF not 0.

* sysdeps/unix/sysv/linux/readonly-area.c (__readonly_area): Also
allow EACCES errors when opening /rpco for now.

* wctype/wcfuncs.c: Don't use expensive wide char lookups in isw*
functions if character is in ASCII range.
* wctype/wcfuncs_l.c: Likewise.

ChangeLog
libio/oldfileops.c
sysdeps/unix/sysv/linux/readonly-area.c

index b0ffe2c..4978c55 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2005-10-17  Ulrich Drepper  <drepper@redhat.com>
+
+       * libio/oldfileops.c (_IO_old_file_xsputn): Fix last patch.
+       Return EOF not 0.
+
+       * sysdeps/unix/sysv/linux/readonly-area.c (__readonly_area): Also
+       allow EACCES errors when opening /rpco for now.
+
+       * wctype/wcfuncs.c: Don't use expensive wide char lookups in isw*
+       functions if character is in ASCII range.
+       * wctype/wcfuncs_l.c: Likewise.
+
 2005-05-03  Robert Millan  <robertmh@gnu.org>
 
        * abi-tags (.*-.*-knetbsd.*-gnu.*): New match, with ABI value 4.
index cd54ea5..a69c87e 100644 (file)
@@ -754,7 +754,7 @@ _IO_old_file_xsputn (f, data, n)
       _IO_size_t block_size, do_write;
       /* Next flush the (full) buffer. */
       if (__overflow (f, EOF) == EOF)
-       return to_do == 0 ? 0 : n - to_do;
+       return to_do == 0 ? EOF : n - to_do;
 
       /* Try to maintain alignment: write a whole number of blocks.
         dont_write is what gets left over. */
index 29224d9..69e926a 100644 (file)
@@ -35,10 +35,15 @@ __readonly_area (const char *ptr, size_t size)
   FILE *fp = fopen ("/proc/self/maps", "rc");
   if (fp == NULL)
     {
-      if (errno == ENOENT)
-       /* It is the system administrator's choice to not have /proc
-          available to this process (e.g., because it runs in a chroot
-          environment.  Don't fail in this case.  */
+      /* It is the system administrator's choice to not have /proc
+        available to this process (e.g., because it runs in a chroot
+        environment.  Don't fail in this case.  */
+      if (errno == ENOENT
+         /* The kernel has a bug in that a process is denied access
+            to the /proc filesystem if it is set[ug]id.  There has
+            been no willingness to change this in the kernel so
+            far.  */
+         || errno == EACCES)
        return 1;
       return -1;
     }