summaryrefslogtreecommitdiff
path: root/utils/utils.c
diff options
context:
space:
mode:
authorVincent Sanders <vince@kyllikki.org>2015-03-31 22:41:37 +0100
committerVincent Sanders <vince@kyllikki.org>2015-03-31 22:41:37 +0100
commit82c7a7a4baf4a7a15381ee720799dc41c3d54909 (patch)
tree5f3b47ce1c0aca854323a8c7a06c94db5e05c373 /utils/utils.c
parent87a38ca5c1624cb86d8c031b38166a00494d6be0 (diff)
downloadnetsurf-82c7a7a4baf4a7a15381ee720799dc41c3d54909.tar.gz
netsurf-82c7a7a4baf4a7a15381ee720799dc41c3d54909.tar.bz2
Fix RISC OS not having a pread/pwrite implementation.
Diffstat (limited to 'utils/utils.c')
-rw-r--r--utils/utils.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/utils/utils.c b/utils/utils.c
index 5c8acd6f0..722e32302 100644
--- a/utils/utils.c
+++ b/utils/utils.c
@@ -32,6 +32,7 @@
#include <regex.h>
#include <time.h>
#include <errno.h>
+#include <unistd.h>
#include "utils/config.h"
#include "utils/log.h"
@@ -628,3 +629,34 @@ nserror nsc_snptimet(char *str, size_t size, time_t *timep)
return NSERROR_OK;
}
+
+#ifndef HAVE_PREAD
+
+ssize_t pread(int fd, void *buf, size_t count, off_t offset)
+{
+ off_t sk;
+
+ sk = lseek(fd, offset, SEEK_SET);
+ if (sk == -1) {
+ return (off_t)-1;
+ }
+ return read(fd, buf, count);
+}
+
+#endif
+
+
+#ifndef HAVE_PWRITE
+
+ssize_t pwrite(int fd, const void *buf, size_t count, off_t offset)
+{
+ off_t sk;
+
+ sk = lseek(fd, offset, SEEK_SET);
+ if (sk == (off_t)-1) {
+ return -1;
+ }
+ return write(fd, buf, count);
+}
+
+#endif