Added seek.c, an interface to the lseek systemcall
authorceriel <none@none>
Wed, 1 Jul 1987 13:00:43 +0000 (13:00 +0000)
committerceriel <none@none>
Wed, 1 Jul 1987 13:00:43 +0000 (13:00 +0000)
modules/src/system/.distr
modules/src/system/Makefile
modules/src/system/seek.c [new file with mode: 0644]
modules/src/system/system.3

index 05e4045..b4e1926 100644 (file)
@@ -17,3 +17,4 @@ system.h
 time.c
 unlock.c
 write.c
+seek.c
index dee6ac4..3762891 100644 (file)
@@ -7,10 +7,10 @@ INCLUDES = -I.
 CFLAGS = $(INCLUDES) -O
 OBJ    = access.o break.o chmode.o close.o create.o filesize.o \
        modtime.o lock.o open.o read.o remove.o stop.o \
-       system.o time.o unlock.o write.o
+       system.o time.o unlock.o write.o seek.o
 CSRC   = access.c break.c chmode.c close.c create.c filesize.c \
        modtime.c lock.c open.c read.c remove.c stop.c \
-       system.c time.c unlock.c write.c
+       system.c time.c unlock.c write.c seek.c
 SRC    = Makefile system.h $(CSRC)
 
 all:           $(LIBSYS)
diff --git a/modules/src/system/seek.c b/modules/src/system/seek.c
new file mode 100644 (file)
index 0000000..2d742fa
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+ * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
+ * See the copyright notice in the ACK home directory, in the file "Copyright".
+ */
+/* $Header$ */
+
+#include <system.h>
+
+long lseek();
+
+int
+sys_seek(fp, off, whence, poff)
+       File *fp;
+       long off;
+       long *poff;
+{
+       return (*poff = lseek(fp->o_fd, off, whence)) >= 0;
+}
index 3fbd518..38bd888 100644 (file)
@@ -29,6 +29,12 @@ sys_break, sys_stop, sys_time \- system call interface
 .B char *bufptr;
 .B int nbytes;
 .PP
+.B int sys_seek(filep, offset, whence, poffset)
+.B File *filep;
+.B long offset;
+.B int whence;
+.B long *poffset;
+.PP
 .B int sys_reset(filep)
 .B File *filep
 .PP
@@ -142,6 +148,31 @@ A non-zero return value indicates that
 .I nbytes
 are actually written.
 .PP
+.I Sys_seek
+sets the file pointer of
+.I filep
+as follows:
+.IP " "
+If
+.I whence
+is 0, the pointer is set to
+.I offset
+bytes.
+.IP " "
+If
+.I whence
+is 1, the pointer is set to its current location plus
+.IR offset .
+.IP " "
+If
+.I whence
+is 2, the pointer is set to the size of the file plus
+.IR offset .
+.PP
+Upon succesful completion, the resulting pointer location is returned in
+.IR poffset ,
+and 1 is returned. Otherwise, 0 is returned.
+.PP
 .I Sys_reset
 causes the open file known by
 .I filep