about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog27
-rw-r--r--libio/fileops.c10
-rw-r--r--libio/libioP.h4
-rw-r--r--pwd/getpw.c5
-rw-r--r--pwd/putpwent.c4
-rw-r--r--sysdeps/unix/sysv/linux/Makefile3
-rw-r--r--sysdeps/unix/sysv/linux/Versions6
-rw-r--r--sysdeps/unix/sysv/linux/sys/acct.h4
-rw-r--r--sysdeps/unix/sysv/linux/sys/sendfile.h34
-rw-r--r--sysdeps/unix/sysv/linux/syscalls.list1
10 files changed, 85 insertions, 13 deletions
diff --git a/ChangeLog b/ChangeLog
index a038b7bb8e..4782fef8b0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,20 @@
+1998-08-20 20:07  Ulrich Drepper  <drepper@cygnus.com>
+
+	* pwd/getpw.c (__getpw): Use %lu for uid and gid parameter and
+	cast them to unsigned long int.
+	* pwd/putpwent.c (putpwent): Likewise.
+	Patch by John Tobey <jtobey@banta-im.com>.
+
+1998-08-20 17:14  H.J. Lu  <hjl@gnu.org>
+
+	* libio/libioP.h (FILEBUF_LITERAL): Set the _offset field to
+	_IO_pos_BAD.
+
+1998-02-20 17:54  H.J. Lu  <hjl@gnu.org>
+
+	* libio/fileops.c (_IO_file_seekoff): Don't adjust pointers if
+	_IO_SYSSEEK fails.
+
 1998-08-20 19:14  Ulrich Drepper  <drepper@cygnus.com>
 
 	* sysdeps/unix/sysv/linux/Makefile [subdirs=misc] (sysdeps_routines):
@@ -8,6 +25,16 @@
 	* sysdeps/unix/sysv/linux/sys/mount.h: Declare umount2.
 	Define MNT_FORCE.
 
+	* sysdeps/unix/sysv/linux/Makefile [subdirs=misc] (sysdep_headers):
+	Add sys/sendfile.h.
+	* sysdeps/unix/sysv/linux/syscalls.list: Add sendfile.
+	* sysdeps/unix/sysv/linux/sys/sendfile.h: New file.
+
+	* sysdeps/unix/sysv/linux/sys/acct.h: Pretty print.
+
+	* sysdeps/unix/sysv/linux/Versions [GLIBC_2.1]: Add umount2 and
+	sendfile.
+
 1998-08-20 16:01  Ulrich Drepper  <drepper@cygnus.com>
 
 	* elf/ldd.sh.in: Redirect warnings and error messages to stderr.
diff --git a/libio/fileops.c b/libio/fileops.c
index 596d97078a..5a5f9d9db2 100644
--- a/libio/fileops.c
+++ b/libio/fileops.c
@@ -613,10 +613,12 @@ _IO_file_seekoff (fp, offset, dir, mode)
   _IO_unsave_markers (fp);
   result = _IO_SYSSEEK (fp, offset, dir);
   if (result != EOF)
-    _IO_mask_flags (fp, 0, _IO_EOF_SEEN);
-  fp->_offset = result;
-  _IO_setg (fp, fp->_IO_buf_base, fp->_IO_buf_base, fp->_IO_buf_base);
-  _IO_setp (fp, fp->_IO_buf_base, fp->_IO_buf_base);
+    {
+      _IO_mask_flags (fp, 0, _IO_EOF_SEEN);
+      fp->_offset = result;
+      _IO_setg (fp, fp->_IO_buf_base, fp->_IO_buf_base, fp->_IO_buf_base);
+      _IO_setp (fp, fp->_IO_buf_base, fp->_IO_buf_base);
+    }
   return result;
 }
 
diff --git a/libio/libioP.h b/libio/libioP.h
index 84bac2c719..4891294726 100644
--- a/libio/libioP.h
+++ b/libio/libioP.h
@@ -555,12 +555,12 @@ extern int _IO_vscanf __P ((const char *, _IO_va_list));
 # define FILEBUF_LITERAL(CHAIN, FLAGS, FD) \
        { _IO_MAGIC+_IO_LINKED+_IO_IS_FILEBUF+FLAGS, \
          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, CHAIN, FD, \
-	   0, 0, 0, 0, { 0 }, &_IO_stdfile_##FD##_lock }
+	   0, _IO_pos_BAD, 0, 0, { 0 }, &_IO_stdfile_##FD##_lock }
 #else
 /* check following! */
 # define FILEBUF_LITERAL(CHAIN, FLAGS, FD) \
        { _IO_MAGIC+_IO_LINKED+_IO_IS_FILEBUF+FLAGS, \
-	   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, CHAIN, FD }
+	   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, CHAIN, FD, 0, _IO_pos_BAD }
 #endif
 
 /* VTABLE_LABEL defines NAME as of the CLASS class.
diff --git a/pwd/getpw.c b/pwd/getpw.c
index 5f738724a9..52c3db7afb 100644
--- a/pwd/getpw.c
+++ b/pwd/getpw.c
@@ -50,8 +50,9 @@ __getpw (uid, buf)
   if (__getpwuid_r (uid, &resbuf, tmpbuf, buflen, &p) < 0)
     return -1;
 
-  if (sprintf (buf, "%s:%s:%u:%u:%s:%s:%s", p->pw_name, p->pw_passwd,
-	       p->pw_uid, p->pw_gid, p->pw_gecos, p->pw_dir, p->pw_shell) < 0)
+  if (sprintf (buf, "%s:%s:%lu:%lu:%s:%s:%s", p->pw_name, p->pw_passwd,
+	       (unsigned long int) p->pw_uid, (unsigned long int) p->pw_gid,
+	       p->pw_gecos, p->pw_dir, p->pw_shell) < 0)
     return -1;
 
   return 0;
diff --git a/pwd/putpwent.c b/pwd/putpwent.c
index 7ab48c16d6..ac1fd7e464 100644
--- a/pwd/putpwent.c
+++ b/pwd/putpwent.c
@@ -35,9 +35,9 @@ putpwent (p, stream)
       return -1;
     }
 
-  if (fprintf (stream, "%s:%s:%u:%u:%s:%s:%s\n",
+  if (fprintf (stream, "%s:%s:%lu:%lu:%s:%s:%s\n",
 	       p->pw_name, _S (p->pw_passwd),
-	       p->pw_uid, p->pw_gid,
+	       (unsigned long int) p->pw_uid, (unsigned long int) p->pw_gid,
 	       _S (p->pw_gecos), _S (p->pw_dir), _S (p->pw_shell)) < 0)
     return -1;
 
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
index 5c38ced83f..ffd446d9f8 100644
--- a/sysdeps/unix/sysv/linux/Makefile
+++ b/sysdeps/unix/sysv/linux/Makefile
@@ -17,7 +17,8 @@ sysdep_headers += sys/mount.h sys/acct.h sys/sysctl.h sys/mtio.h \
 		  sys/user.h sys/sysmacros.h sys/procfs.h sys/prctl.h \
 		  sys/debugreg.h sys/kd.h sys/soundcard.h sys/vt.h \
 		  sys/quota.h sys/fsuid.h bits/mman.h \
-		  scsi/sg.h scsi/scsi.h sys/pci.h sys/ultrasound.h
+		  scsi/sg.h scsi/scsi.h sys/pci.h sys/ultrasound.h \
+		  sys/sendfile.h
 
 install-others += $(inst_includedir)/bits/syscall.h
 
diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
index 8a7f0f85c3..2e392818b6 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -75,5 +75,11 @@ libc {
 
     # c*
     capget; capset;
+
+    # s*
+    sendfile;
+
+    # u*
+    umount2;
   }
 }
diff --git a/sysdeps/unix/sysv/linux/sys/acct.h b/sysdeps/unix/sysv/linux/sys/acct.h
index 1d723d55b8..0b16d249af 100644
--- a/sysdeps/unix/sysv/linux/sys/acct.h
+++ b/sysdeps/unix/sysv/linux/sys/acct.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998 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
@@ -17,8 +17,8 @@
    Boston, MA 02111-1307, USA.  */
 
 #ifndef _SYS_ACCT_H
-
 #define _SYS_ACCT_H	1
+
 #include <features.h>
 
 #define	__need_time_t
diff --git a/sysdeps/unix/sysv/linux/sys/sendfile.h b/sysdeps/unix/sysv/linux/sys/sendfile.h
new file mode 100644
index 0000000000..8008101b74
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sys/sendfile.h
@@ -0,0 +1,34 @@
+/* Copyright (C) 1998 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
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef _SYS_SENDFILE_H
+#define _SYS_SENDFILE_H	1
+
+#include <features.h>
+#include <sys/types.h>
+
+__BEGIN_DECLS
+
+/* Send COUNT bytes from file associated with IN_FD starting at OFFSET to
+   descriptor OUT_FD.  */
+extern ssize_t sendfile __P ((int __out_fd, int __in_fd, off_t *offset,
+			      size_t __count));
+
+__END_DECLS
+
+#endif	/* sys/sendfile.h */
diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list
index 82c6423afc..54b210d728 100644
--- a/sysdeps/unix/sysv/linux/syscalls.list
+++ b/sysdeps/unix/sysv/linux/syscalls.list
@@ -67,6 +67,7 @@ sched_setp	-	sched_setparam	2	__sched_setparam	sched_setparam
 sched_sets	-	sched_setscheduler	3	__sched_setscheduler	sched_setscheduler
 sched_yield	-	sched_yield	0	__sched_yield	sched_yield
 select		-	_newselect	5	__select	select
+sendfile	EXTRA	sendfile	4	sendfile
 setfsgid	EXTRA	setfsgid	1	setfsgid
 setfsuid	EXTRA	setfsuid	1	setfsuid
 setpgid		-	setpgid		2	__setpgid	setpgid