2002-04-29 Jeff Johnston <jjohnstn@redhat.com>
* libc/include/sys/unistd.h (pread, pwrite): Added prototypes. * libc/unix/Makefile.am: Add pread.c and pwrite.c. * libc/sys/linux/Makefile.am: Add pread64.c and pwrite64.c. * libc/sys/linux/Makefile.in: Regenerated. * libc/unix/Makefile.in: Ditto. * libc/sys/linux/pread64.c: New file. * libc/sys/linux/pwrite64.c: Ditto. * libc/unix/pread.c: Ditto. * libc/unix/pwrite.c: Ditto.
This commit is contained in:
parent
eccebec08d
commit
29798f0d57
|
@ -1,3 +1,15 @@
|
|||
2002-04-29 Jeff Johnston <jjohnstn@redhat.com>
|
||||
|
||||
* libc/include/sys/unistd.h (pread, pwrite): Added prototypes.
|
||||
* libc/unix/Makefile.am: Add pread.c and pwrite.c.
|
||||
* libc/sys/linux/Makefile.am: Add pread64.c and pwrite64.c.
|
||||
* libc/sys/linux/Makefile.in: Regenerated.
|
||||
* libc/unix/Makefile.in: Ditto.
|
||||
* libc/sys/linux/pread64.c: New file.
|
||||
* libc/sys/linux/pwrite64.c: Ditto.
|
||||
* libc/unix/pread.c: Ditto.
|
||||
* libc/unix/pwrite.c: Ditto.
|
||||
|
||||
2002-04-26 Jeff Johnston <jjohnstn@redhat.com>
|
||||
|
||||
* libc/sys/linux/Makefile.am: Add io64.c.
|
||||
|
|
|
@ -78,6 +78,8 @@ int _EXFUN(pause, (void ));
|
|||
int _EXFUN(pthread_atfork, (void (*)(void), void (*)(void), void (*)(void)));
|
||||
#endif
|
||||
int _EXFUN(pipe, (int __fildes[2] ));
|
||||
ssize_t _EXFUN(pread, (int __fd, void *__buf, size_t __nbytes, off_t __offset));
|
||||
ssize_t _EXFUN(pwrite, (int __fd, const void *__buf, size_t __nbytes, off_t __offset));
|
||||
_READ_WRITE_RETURN_TYPE _EXFUN(read, (int __fd, void *__buf, size_t __nbyte ));
|
||||
#if defined(__CYGWIN__)
|
||||
int _EXFUN(revoke, (char *path));
|
||||
|
|
|
@ -9,7 +9,7 @@ SUBLIBS = $(LINUX_MACH_LIB)
|
|||
|
||||
LIB_SOURCES = \
|
||||
brk.c getoptlong.c ids.c inode.c io.c io64.c linux.c mmap.c \
|
||||
process.c realpath.c sched.c \
|
||||
pread64.c process.c pwrite64.c realpath.c sched.c \
|
||||
select.c signal.c siglongjmp.c socket.c sleep.c stack.c \
|
||||
sysconf.c systat.c termios.c time.c \
|
||||
usleep.c wait.c
|
||||
|
|
|
@ -98,7 +98,7 @@ SUBLIBS = $(LINUX_MACH_LIB)
|
|||
|
||||
LIB_SOURCES = \
|
||||
brk.c getoptlong.c ids.c inode.c io.c io64.c linux.c mmap.c \
|
||||
process.c realpath.c sched.c \
|
||||
pread64.c process.c pwrite64.c realpath.c sched.c \
|
||||
select.c signal.c siglongjmp.c socket.c sleep.c stack.c \
|
||||
sysconf.c systat.c termios.c time.c \
|
||||
usleep.c wait.c
|
||||
|
@ -132,18 +132,19 @@ DEFS = @DEFS@ -I. -I$(srcdir)
|
|||
CPPFLAGS = @CPPFLAGS@
|
||||
LIBS = @LIBS@
|
||||
@USE_LIBTOOL_FALSE@lib_a_OBJECTS = brk.o getoptlong.o ids.o inode.o \
|
||||
@USE_LIBTOOL_FALSE@io.o io64.o linux.o mmap.o process.o realpath.o \
|
||||
@USE_LIBTOOL_FALSE@sched.o select.o signal.o siglongjmp.o socket.o \
|
||||
@USE_LIBTOOL_FALSE@sleep.o stack.o sysconf.o systat.o termios.o time.o \
|
||||
@USE_LIBTOOL_FALSE@usleep.o wait.o
|
||||
@USE_LIBTOOL_FALSE@io.o io64.o linux.o mmap.o pread64.o process.o \
|
||||
@USE_LIBTOOL_FALSE@pwrite64.o realpath.o sched.o select.o signal.o \
|
||||
@USE_LIBTOOL_FALSE@siglongjmp.o socket.o sleep.o stack.o sysconf.o \
|
||||
@USE_LIBTOOL_FALSE@systat.o termios.o time.o usleep.o wait.o
|
||||
LTLIBRARIES = $(noinst_LTLIBRARIES)
|
||||
|
||||
@USE_LIBTOOL_TRUE@liblinux_la_DEPENDENCIES =
|
||||
@USE_LIBTOOL_TRUE@liblinux_la_OBJECTS = brk.lo getoptlong.lo ids.lo \
|
||||
@USE_LIBTOOL_TRUE@inode.lo io.lo io64.lo linux.lo mmap.lo process.lo \
|
||||
@USE_LIBTOOL_TRUE@realpath.lo sched.lo select.lo signal.lo \
|
||||
@USE_LIBTOOL_TRUE@siglongjmp.lo socket.lo sleep.lo stack.lo sysconf.lo \
|
||||
@USE_LIBTOOL_TRUE@systat.lo termios.lo time.lo usleep.lo wait.lo
|
||||
@USE_LIBTOOL_TRUE@inode.lo io.lo io64.lo linux.lo mmap.lo pread64.lo \
|
||||
@USE_LIBTOOL_TRUE@process.lo pwrite64.lo realpath.lo sched.lo select.lo \
|
||||
@USE_LIBTOOL_TRUE@signal.lo siglongjmp.lo socket.lo sleep.lo stack.lo \
|
||||
@USE_LIBTOOL_TRUE@sysconf.lo systat.lo termios.lo time.lo usleep.lo \
|
||||
@USE_LIBTOOL_TRUE@wait.lo
|
||||
CFLAGS = @CFLAGS@
|
||||
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
|
|
|
@ -0,0 +1,62 @@
|
|||
/*
|
||||
FUNCTION
|
||||
<<pread64>>---read a large file from specified position
|
||||
|
||||
INDEX
|
||||
pread64
|
||||
|
||||
ANSI_SYNOPSIS
|
||||
#include <unistd.h>
|
||||
ssize_t pread64(int <[fd]>, void *<[buf]>, size_t <[n]>, loff_t <[off]>);
|
||||
|
||||
TRAD_SYNOPSIS
|
||||
#include <unistd.h>
|
||||
ssize_t pread64(<[fd]>, <[buf]>, <[n]>, <[off]>)
|
||||
int <[fd]>;
|
||||
void *<[buf]>;
|
||||
size_t <[n]>;
|
||||
loff_t <[off]>;
|
||||
|
||||
DESCRIPTION
|
||||
The <<pread64>> function is similar to <<pread>>. The only difference is
|
||||
that it operates on large files and so takes a 64-bit offset. Like <<pread>>>,
|
||||
the file position is unchanged by the function (i.e. the file position
|
||||
is the same before and after a call to <<pread>>).
|
||||
|
||||
RETURNS
|
||||
<<pread64>> returns the number of bytes read or <<-1>> if failure occurred.
|
||||
|
||||
PORTABILITY
|
||||
<<pread64>> is an EL/IX extension.
|
||||
|
||||
Supporting OS subroutine required: <<read64>>, <<lseek64>>.
|
||||
*/
|
||||
|
||||
#include <_ansi.h>
|
||||
#include <unistd.h>
|
||||
#include <reent.h>
|
||||
|
||||
ssize_t
|
||||
_DEFUN (pread64, (fd, buf, n, off),
|
||||
int fd _AND
|
||||
_PTR buf _AND
|
||||
size_t n _AND
|
||||
loff_t off)
|
||||
{
|
||||
loff_t cur_pos;
|
||||
_READ_WRITE_RETURN_TYPE num_read;
|
||||
|
||||
if ((cur_pos = lseek64 (fd, 0, SEEK_CUR)) == (loff_t)-1)
|
||||
return -1;
|
||||
|
||||
if (lseek64 (fd, off, SEEK_SET) == (loff_t)-1)
|
||||
return -1;
|
||||
|
||||
num_read = read64 (fd, buf, n);
|
||||
|
||||
if (lseek64 (fd, cur_pos, SEEK_SET) == (loff_t)-1)
|
||||
return -1;
|
||||
|
||||
return (ssize_t)num_read;
|
||||
}
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
/*
|
||||
FUNCTION
|
||||
<<pwrite64>>---write a large file from specified position
|
||||
|
||||
INDEX
|
||||
pwrite64
|
||||
|
||||
ANSI_SYNOPSIS
|
||||
#include <unistd.h>
|
||||
ssize_t pwrite64(int <[fd]>, void *<[buf]>, size_t <[n]>, loff_t <[off]>);
|
||||
|
||||
TRAD_SYNOPSIS
|
||||
#include <unistd.h>
|
||||
ssize_t pwrite64(<[fd]>, <[buf]>, <[n]>, <[off]>)
|
||||
int <[fd]>;
|
||||
void *<[buf]>;
|
||||
size_t <[n]>;
|
||||
loff_t <[off]>;
|
||||
|
||||
DESCRIPTION
|
||||
The <<pwrite64>> function is similar to <<pwrite>>. The only difference is
|
||||
that it operates on large files and so takes a 64-bit offset. Like <<pwrite>>>,
|
||||
the file position is unchanged by the function (i.e. the file position
|
||||
is the same before and after a call to <<pwrite>>).
|
||||
|
||||
RETURNS
|
||||
<<pwrite64>> returns the number of bytes written or <<-1>> if failure occurred.
|
||||
|
||||
PORTABILITY
|
||||
<<pwrite64>> is an EL/IX extension.
|
||||
|
||||
Supporting OS subroutine required: <<write64>>, <<lseek64>>.
|
||||
*/
|
||||
|
||||
#include <_ansi.h>
|
||||
#include <unistd.h>
|
||||
#include <reent.h>
|
||||
|
||||
ssize_t
|
||||
_DEFUN (pwrite64, (fd, buf, n, off),
|
||||
int fd _AND
|
||||
_PTR buf _AND
|
||||
size_t n _AND
|
||||
loff_t off)
|
||||
{
|
||||
loff_t cur_pos;
|
||||
_READ_WRITE_RETURN_TYPE num_written;
|
||||
|
||||
if ((cur_pos = lseek64 (fd, 0, SEEK_CUR)) == (loff_t)-1)
|
||||
return -1;
|
||||
|
||||
if (lseek64 (fd, off, SEEK_SET) == (loff_t)-1)
|
||||
return -1;
|
||||
|
||||
num_written = write64 (fd, buf, n);
|
||||
|
||||
if (lseek64 (fd, cur_pos, SEEK_SET) == (loff_t)-1)
|
||||
return -1;
|
||||
|
||||
return (ssize_t)num_written;
|
||||
}
|
||||
|
|
@ -5,7 +5,8 @@ AUTOMAKE_OPTIONS = cygnus
|
|||
INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
|
||||
|
||||
LIB_SOURCES = \
|
||||
getpass.c sigset.c getpwent.c ttyname.c getut.c getlogin.c getcwd.c
|
||||
getcwd.c getlogin.c getpass.c getpwent.c getut.c \
|
||||
pread.c pwrite.c sigset.c ttyname.c
|
||||
|
||||
libunix_la_LDFLAGS = -Xcompiler -nostdlib
|
||||
|
||||
|
|
|
@ -100,7 +100,8 @@ AUTOMAKE_OPTIONS = cygnus
|
|||
INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
|
||||
|
||||
LIB_SOURCES = \
|
||||
getpass.c sigset.c getpwent.c ttyname.c getut.c getlogin.c getcwd.c
|
||||
getcwd.c getlogin.c getpass.c getpwent.c getut.c \
|
||||
pread.c pwrite.c sigset.c ttyname.c
|
||||
|
||||
|
||||
libunix_la_LDFLAGS = -Xcompiler -nostdlib
|
||||
|
@ -130,13 +131,15 @@ DEFS = @DEFS@ -I. -I$(srcdir)
|
|||
CPPFLAGS = @CPPFLAGS@
|
||||
LIBS = @LIBS@
|
||||
lib_a_LIBADD =
|
||||
@USE_LIBTOOL_FALSE@lib_a_OBJECTS = getpass.o sigset.o getpwent.o \
|
||||
@USE_LIBTOOL_FALSE@ttyname.o getut.o getlogin.o getcwd.o
|
||||
@USE_LIBTOOL_FALSE@lib_a_OBJECTS = getcwd.o getlogin.o getpass.o \
|
||||
@USE_LIBTOOL_FALSE@getpwent.o getut.o pread.o pwrite.o sigset.o \
|
||||
@USE_LIBTOOL_FALSE@ttyname.o
|
||||
LTLIBRARIES = $(noinst_LTLIBRARIES)
|
||||
|
||||
libunix_la_LIBADD =
|
||||
@USE_LIBTOOL_TRUE@libunix_la_OBJECTS = getpass.lo sigset.lo getpwent.lo \
|
||||
@USE_LIBTOOL_TRUE@ttyname.lo getut.lo getlogin.lo getcwd.lo
|
||||
@USE_LIBTOOL_TRUE@libunix_la_OBJECTS = getcwd.lo getlogin.lo getpass.lo \
|
||||
@USE_LIBTOOL_TRUE@getpwent.lo getut.lo pread.lo pwrite.lo sigset.lo \
|
||||
@USE_LIBTOOL_TRUE@ttyname.lo
|
||||
CFLAGS = @CFLAGS@
|
||||
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
|
|
|
@ -0,0 +1,91 @@
|
|||
/*
|
||||
FUNCTION
|
||||
<<pread>>---read a file from specified position
|
||||
|
||||
INDEX
|
||||
pread
|
||||
INDEX
|
||||
_pread_r
|
||||
|
||||
ANSI_SYNOPSIS
|
||||
#include <unistd.h>
|
||||
ssize_t pread(int <[fd]>, void *<[buf]>, size_t <[n]>, off_t <[off]>);
|
||||
ssize_t _pread_r(struct _reent *<[rptr]>, int <[fd]>,
|
||||
void *<[buf]>, size_t <[n]>, off_t <[off]>);
|
||||
|
||||
TRAD_SYNOPSIS
|
||||
#include <unistd.h>
|
||||
ssize_t pread(<[fd]>, <[buf]>, <[n]>, <[off]>)
|
||||
int <[fd]>;
|
||||
void *<[buf]>;
|
||||
size_t <[n]>;
|
||||
off_t <[off]>;
|
||||
|
||||
ssize_t _pread_r(<[rptr]>, <[fd]>, <[buf]>, <[n]>, <[off]>)
|
||||
struct _reent *<[rptr]>;
|
||||
int <[fd]>;
|
||||
void *<[buf]>;
|
||||
size_t <[n]>;
|
||||
off_t <[off]>;
|
||||
|
||||
DESCRIPTION
|
||||
The <<pread>> function is similar to <<read>>. One difference is that
|
||||
<<pread>> has an additional parameter <[off]> which is the offset to
|
||||
position in the file before reading. The function also differs in that
|
||||
the file position is unchanged by the function (i.e. the file position
|
||||
is the same before and after a call to <<pread>>).
|
||||
|
||||
The <<_pread_r>> function is the same as <<pread>>, only a reentrant
|
||||
struct pointer <[rptr]> is provided to preserve reentrancy.
|
||||
|
||||
RETURNS
|
||||
<<pread>> returns the number of bytes read or <<-1>> if failure occurred.
|
||||
|
||||
PORTABILITY
|
||||
<<pread>> is non-ANSI and is specified by the Single Unix Specification.
|
||||
|
||||
Supporting OS subroutine required: <<read>>, <<lseek>>.
|
||||
*/
|
||||
|
||||
#include <_ansi.h>
|
||||
#include <unistd.h>
|
||||
#include <reent.h>
|
||||
|
||||
ssize_t
|
||||
_DEFUN (pread_r, (rptr, fd, buf, n, off),
|
||||
struct _reent *rptr _AND
|
||||
int fd _AND
|
||||
_PTR buf _AND
|
||||
size_t n _AND
|
||||
off_t off)
|
||||
{
|
||||
off_t cur_pos;
|
||||
_READ_WRITE_RETURN_TYPE num_read;
|
||||
|
||||
if ((cur_pos = _lseek_r (rptr, fd, 0, SEEK_CUR)) == (off_t)-1)
|
||||
return -1;
|
||||
|
||||
if (_lseek_r (rptr, fd, off, SEEK_SET) == (off_t)-1)
|
||||
return -1;
|
||||
|
||||
num_read = _read_r (rptr, fd, buf, n);
|
||||
|
||||
if (_lseek_r (rptr, fd, cur_pos, SEEK_SET) == (off_t)-1)
|
||||
return -1;
|
||||
|
||||
return (ssize_t)num_read;
|
||||
}
|
||||
|
||||
#ifndef _REENT_ONLY
|
||||
|
||||
ssize_t
|
||||
_DEFUN (pread, (fd, buf, n, off),
|
||||
int fd _AND
|
||||
_PTR buf _AND
|
||||
size_t n _AND
|
||||
off_t off)
|
||||
{
|
||||
return _pread_r (_REENT, fd, buf, n, off);
|
||||
}
|
||||
|
||||
#endif
|
|
@ -0,0 +1,92 @@
|
|||
/*
|
||||
FUNCTION
|
||||
<<pwrite>>---write a file from specified position
|
||||
|
||||
INDEX
|
||||
pwrite
|
||||
INDEX
|
||||
_pwrite_r
|
||||
|
||||
ANSI_SYNOPSIS
|
||||
#include <unistd.h>
|
||||
ssize_t pwrite(int <[fd]>, const void *<[buf]>,
|
||||
size_t <[n]>, off_t <[off]>);
|
||||
ssize_t _pwrite_r(struct _reent *<[rptr]>, int <[fd]>,
|
||||
const void *<[buf]>, size_t <[n]>, off_t <[off]>);
|
||||
|
||||
TRAD_SYNOPSIS
|
||||
#include <unistd.h>
|
||||
ssize_t pwrite(<[fd]>, <[buf]>, <[n]>, <[off]>)
|
||||
int <[fd]>;
|
||||
const void *<[buf]>;
|
||||
size_t <[n]>;
|
||||
off_t <[off]>;
|
||||
|
||||
ssize_t _pwrite_r(<[rptr]>, <[fd]>, <[buf]>, <[n]>, <[off]>)
|
||||
struct _reent *<[rptr]>;
|
||||
int <[fd]>;
|
||||
const void *<[buf]>;
|
||||
size_t <[n]>;
|
||||
off_t <[off]>;
|
||||
|
||||
DESCRIPTION
|
||||
The <<pwrite>> function is similar to <<write>>. One difference is that
|
||||
<<pwrite>> has an additional parameter <[off]> which is the offset to
|
||||
position in the file before writing. The function also differs in that
|
||||
the file position is unchanged by the function (i.e. the file position
|
||||
is the same before and after a call to <<pwrite>>).
|
||||
|
||||
The <<_pwrite_r>> function is the same as <<pwrite>>, only a reentrant
|
||||
struct pointer <[rptr]> is provided to preserve reentrancy.
|
||||
|
||||
RETURNS
|
||||
<<pwrite>> returns the number of bytes written or <<-1>> if failure occurred.
|
||||
|
||||
PORTABILITY
|
||||
<<pwrite>> is non-ANSI and is specified by the Single Unix Specification.
|
||||
|
||||
Supporting OS subroutine required: <<write>>, <<lseek>>.
|
||||
*/
|
||||
|
||||
#include <_ansi.h>
|
||||
#include <unistd.h>
|
||||
#include <reent.h>
|
||||
|
||||
ssize_t
|
||||
_DEFUN (pwrite_r, (rptr, fd, buf, n, off),
|
||||
struct _reent *rptr _AND
|
||||
int fd _AND
|
||||
_CONST _PTR buf _AND
|
||||
size_t n _AND
|
||||
off_t off)
|
||||
{
|
||||
off_t cur_pos;
|
||||
_READ_WRITE_RETURN_TYPE num_written;
|
||||
|
||||
if ((cur_pos = _lseek_r (rptr, fd, 0, SEEK_CUR)) == (off_t)-1)
|
||||
return -1;
|
||||
|
||||
if (_lseek_r (rptr, fd, off, SEEK_SET) == (off_t)-1)
|
||||
return -1;
|
||||
|
||||
num_written = _write_r (rptr, fd, buf, n);
|
||||
|
||||
if (_lseek_r (rptr, fd, cur_pos, SEEK_SET) == (off_t)-1)
|
||||
return -1;
|
||||
|
||||
return (ssize_t)num_written;
|
||||
}
|
||||
|
||||
#ifndef _REENT_ONLY
|
||||
|
||||
ssize_t
|
||||
_DEFUN (pwrite, (fd, buf, n, off),
|
||||
int fd _AND
|
||||
_CONST _PTR buf _AND
|
||||
size_t n _AND
|
||||
off_t off)
|
||||
{
|
||||
return _pwrite_r (_REENT, fd, buf, n, off);
|
||||
}
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue