From ba9234d947af45f15b1e4dece1a9cd447cecc038 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Sat, 4 Jul 1998 10:39:13 +0000 Subject: Update. 1998-07-04 10:14 Ulrich Drepper * libio/Makefile (routines): Add iofread_u and iofwrite_u. * libio/Versions: Add fread_unlocked and fwrite_unlocked. * Makerules (lib%.so): Adjust ignore pattern for last makefile change. * time/tzfile.c (decode): Optimize by using bswap_32. (__tzfile_read): Use _unlocked stream functions. Correct setting of __tzname array values. (__tzfile_compute): Correct setting of __tzname array values. * time/tzset.c (__tzstring): Clean up a bit. 1998-06-29 19:01 Jim Wilson * posix/regex.c (re_comp): Add cast to char * before gettext calls. 1998-06-30 Andreas Jaeger * sysdeps/unix/bsd/poll.c (__poll): Allocate fd_set dynamically so that fd can be bigger than FD_SETSIZE. 1998-07-01 Andreas Jaeger * nscd/grpcache.c: Include . * nscd/pwdcache.c: Likewise. * nis/nis_modify.c: Include . * nis/nis_add.c: Likewise. * nis/nis_checkpoint.c: Likewise. * posix/runptests.c: Likewise. * sysdeps/generic/statvfs64.c: Likewise. * sysdeps/generic/fstatvfs64.c: Likewise. 1998-07-03 13:16 Ulrich Drepper * localedata/charmaps/ISO-8859-9: Change mapping for 0xea, 0xec, 0xef to match data from Unicode. Reported by Michael Deutschmann . 1998-07-03 11:45 Ulrich Drepper * stdio-common/printf.h: Define printf_function and printf_arginfo_function types using __PMT not __P. Reported by Marc Lehmann. 1998-07-02 14:07 -0400 Zack Weinberg * assert/test-assert.c: New test. * assert/test-assert-perr.c: New test. * assert/Makefile (tests): Add test-assert and test-assert-perr. 1998-07-02 13:45 Zack Weinberg BSD-style SCM_CREDS support. * sysdeps/unix/sysv/linux/socket.h: Define struct cmsgcred and SCM_CREDS. * sysdeps/unix/sysv/linux/sendmsg.c: New file. Convert user visible SCM_CREDS packet to what the kernel wants. * sysdeps/unix/sysv/linux/recvmsg.c: New file. Convert SCM_CREDS packet output by kernel to what users want. * sysdeps/unix/sysv/linux/sendmsg.S: Moved to... * sysdeps/unix/sysv/linux/__sendmsg.S: here. * sysdeps/unix/sysv/linux/recvmsg.S: Moved to... * sysdeps/unix/sysv/linux/__recvmsg.S: here. * sysdeps/unix/sysv/linux/Makefile [subdir=socket]: Add __sendmsg and __recvmsg to sysdep_routines. * sysdeps/unix/sysv/linux/Dist: Add __sendmsg.S and __recvmsg.S. 1998-07-02 Thorsten Kukuk * nscd/grpcache.c: Fix gid pointer handling and debug messages. * nscd/pwdcache.c: Fix uid pointer handling and debug messages. * nscd/nscd.c: Check, if pthread_create fails. 1998-07-02 Andreas Jaeger * stdio-common/test_rdwr.c (main): Use %Zu for size_t in printf format strings. * stdio-common/bug1.c (main): Likewise. * stdio-common/bug5.c (main): Likewise. * stdio-common/tstgetln.c (main): Likewise. * elf/sprof.c (generate_call_graph): Likewise. (load_shobj): Likewise. * posix/runptests.c (main): Likewise. * string/tst-strlen.c (main): Likewise. * sysdeps/libm-ieee754/e_acos.c (__ieee754_acos): Remove unused variable q3. * sysdeps/libm-ieee754/e_asin.c (__ieee754_asin): Likewise 1998-07-03 Andreas Jaeger * wctype/Versions: Add __towctrans. Noticed by Alex Buell . 1998-07-02 Mark Kettenis * grp/initgroups.c (compat_call): Only call dynamically loaded functions if they are really present. 1998-07-02 Mark Kettenis * sysdeps/unix/sysv/linux/bits/sched.h: Move __END_DECLS within #ifdef that contains __BEGIN_DECLS. 1998-07-02 Andreas Schwab * libio/iofwrite.c: Fix return value when size == 0. 1998-07-01 Andreas Schwab * posix/Makefile (distribute): Add annexc.c. (generated): Add $(objpfx)annexc and $(objpfx)annexc.out. 1998-07-01 Andreas Schwab * sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Add bits/pthreadtypes.h here, and do not clobber headers. * sysdeps/unix/sysv/linux/Dist: Add bits/pthreadtypes.h. 1998-07-03 Andreas Jaeger * timezone/tst-timezone.c: Add tests for tzname variable. 1998-07-03 12:17 Zack Weinberg * Makefile [versioning=yes]: Build the mapfiles with a pattern rule that lists all of them as targets. (sysd-versions): Depend only on Versions.def. Write a Makefile fragment that defines $(vers-libs) based on contents of that file; then include it. (lib-noranlib): Depend on lib-mapfiles not sysd-versions. (lib-mapfiles): New target, depends on sysd-versions and $(vers-libs). Predicate all this on avoid-generated unset as well as versioning. 1998-07-03 14:35 Andreas Schwab --- libio/Makefile | 2 +- libio/Versions | 2 +- libio/iofread_u.c | 42 ++++++++++++++++++++++++++++++++++++++++++ libio/iofwrite.c | 6 +++--- libio/iofwrite_u.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 94 insertions(+), 5 deletions(-) create mode 100644 libio/iofread_u.c create mode 100644 libio/iofwrite_u.c (limited to 'libio') diff --git a/libio/Makefile b/libio/Makefile index 61bd54f..3c75183 100644 --- a/libio/Makefile +++ b/libio/Makefile @@ -34,7 +34,7 @@ routines := \ clearerr feof ferror fgetc fileno fputc freopen fseek getc getchar \ memstream pclose putc putchar rewind setbuf setlinebuf vasprintf \ iovdprintf vscanf vsnprintf obprintf fcloseall fseeko ftello \ - freopen64 fseeko64 ftello64 \ + freopen64 fseeko64 ftello64 iofread_u iofwrite_u \ \ libc_fatal diff --git a/libio/Versions b/libio/Versions index ea58a29..12277ae 100644 --- a/libio/Versions +++ b/libio/Versions @@ -98,6 +98,6 @@ libc { # f* fgetpos64; fopen64; freopen64; fseeko; fseeko64; fsetpos64; ftello; - ftello64; fopen; fclose; fdopen; + ftello64; fopen; fclose; fdopen; fread_unlocked; fwrite_unlocked; } } diff --git a/libio/iofread_u.c b/libio/iofread_u.c new file mode 100644 index 0000000..bd7ceaf --- /dev/null +++ b/libio/iofread_u.c @@ -0,0 +1,42 @@ +/* Copyright (C) 1993, 1995, 1997, 1998 Free Software Foundation, Inc. + This file is part of the GNU IO Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2, or (at + your option) any later version. + + This library is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this library; see the file COPYING. If not, write to + the Free Software Foundation, 59 Temple Place - Suite 330, Boston, + MA 02111-1307, USA. + + As a special exception, if you link this library with files + compiled with a GNU compiler to produce an executable, this does + not cause the resulting executable to be covered by the GNU General + Public License. This exception does not however invalidate any + other reasons why the executable file might be covered by the GNU + General Public License. */ + +#include "libioP.h" + +_IO_size_t +fread_unlocked (buf, size, count, fp) + void *buf; + _IO_size_t size; + _IO_size_t count; + _IO_FILE *fp; +{ + _IO_size_t bytes_requested = size*count; + _IO_size_t bytes_read; + CHECK_FILE (fp, 0); + if (bytes_requested == 0) + return 0; + bytes_read = _IO_sgetn (fp, (char *) buf, bytes_requested); + return bytes_requested == bytes_read ? count : bytes_read / size; +} diff --git a/libio/iofwrite.c b/libio/iofwrite.c index 0f82797..d163d29 100644 --- a/libio/iofwrite.c +++ b/libio/iofwrite.c @@ -35,15 +35,15 @@ _IO_fwrite (buf, size, count, fp) _IO_size_t request = size * count; _IO_size_t written; CHECK_FILE (fp, 0); + /* Many traditional implementations return 0 if size==0 && count > 0, + but ANSI requires us to return count in this case. */ if (request == 0) - return 0; + return count; _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); _IO_flockfile (fp); written = _IO_sputn (fp, (const char *) buf, request); _IO_funlockfile (fp); _IO_cleanup_region_end (0); - /* Many traditional implementations return 0 if size==0 && count > 0, - but ANSI requires us to return count in this case. */ if (written == request) return count; else diff --git a/libio/iofwrite_u.c b/libio/iofwrite_u.c new file mode 100644 index 0000000..7d1d24b --- /dev/null +++ b/libio/iofwrite_u.c @@ -0,0 +1,47 @@ +/* Copyright (C) 1993, 1996, 1997, 1998 Free Software Foundation, Inc. + This file is part of the GNU IO Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2, or (at + your option) any later version. + + This library is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this library; see the file COPYING. If not, write to + the Free Software Foundation, 59 Temple Place - Suite 330, Boston, + MA 02111-1307, USA. + + As a special exception, if you link this library with files + compiled with a GNU compiler to produce an executable, this does + not cause the resulting executable to be covered by the GNU General + Public License. This exception does not however invalidate any + other reasons why the executable file might be covered by the GNU + General Public License. */ + +#include "libioP.h" + +_IO_size_t +fwrite_unlocked (buf, size, count, fp) + const void *buf; + _IO_size_t size; + _IO_size_t count; + _IO_FILE *fp; +{ + _IO_size_t request = size * count; + _IO_size_t written; + CHECK_FILE (fp, 0); + /* Many traditional implementations return 0 if size==0 && count > 0, + but ANSI requires us to return count in this case. */ + if (request == 0) + return count; + written = _IO_sputn (fp, (const char *) buf, request); + if (written == request) + return count; + else + return written / size; +} -- cgit v1.1