summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--stream.c2
-rw-r--r--sysif.c7
-rw-r--r--sysif.h2
3 files changed, 5 insertions, 6 deletions
diff --git a/stream.c b/stream.c
index 7aae2d5a..53e76afb 100644
--- a/stream.c
+++ b/stream.c
@@ -675,7 +675,7 @@ static val stdio_seek(val stream, val offset, enum strm_whence whence)
if (offset == zero && whence == strm_cur) {
return stdio_ftell(h->f);
} else {
- if (stdio_fseek(h->f, offset, whence) != negone) {
+ if (stdio_fseek(h->f, offset, whence)) {
utf8_decoder_init(&h->ud);
h->unget_c = nil;
return t;
diff --git a/sysif.c b/sysif.c
index ae469b07..04ed6ea5 100644
--- a/sysif.c
+++ b/sysif.c
@@ -1364,14 +1364,13 @@ val stdio_ftell(FILE *f)
#endif
}
-val stdio_fseek(FILE *f, val off, int whence)
+int stdio_fseek(FILE *f, val off, int whence)
{
val self = lit("seek-stream");
#if HAVE_FSEEKO
- return num_off_t(fseeko(f, off_t_num(off, self), whence));
+ return fseeko(f, off_t_num(off, self), whence) == 0;
#else
- int ret = fseek(f, c_long(off, self), whence);
- return (ret == -1) ? num_fast(ret) : stdio_ftell(f);
+ return fseek(f, c_long(off, self), whence) == 0;
#endif
}
diff --git a/sysif.h b/sysif.h
index 02a5a1da..4e971e3d 100644
--- a/sysif.h
+++ b/sysif.h
@@ -59,7 +59,7 @@ val statf(val path);
off_t off_t_num(val num, val self);
val num_off_t(off_t offnum);
val stdio_ftell(FILE *);
-val stdio_fseek(FILE *, val, int whence);
+int stdio_fseek(FILE *, val, int whence);
#if HAVE_GETEUID
void repress_privilege(void);
void drop_privilege(void);