diff options
-rw-r--r-- | ChangeLog | 12 | ||||
-rw-r--r-- | libio/oldfileops.c | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/readonly-area.c | 13 |
3 files changed, 22 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog index b0ffe2c7d1..4978c55673 100644 --- 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. diff --git a/libio/oldfileops.c b/libio/oldfileops.c index cd54ea5811..a69c87e8b8 100644 --- a/libio/oldfileops.c +++ b/libio/oldfileops.c @@ -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. */ diff --git a/sysdeps/unix/sysv/linux/readonly-area.c b/sysdeps/unix/sysv/linux/readonly-area.c index 29224d98b9..69e926a7a1 100644 --- a/sysdeps/unix/sysv/linux/readonly-area.c +++ b/sysdeps/unix/sysv/linux/readonly-area.c @@ -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; } |