diff options
author | des <des@FreeBSD.org> | 2000-05-07 19:56:07 +0000 |
---|---|---|
committer | des <des@FreeBSD.org> | 2000-05-07 19:56:07 +0000 |
commit | c23ed76a904669b49069cc6998638c4081fe9f80 (patch) | |
tree | 00dff59e48259ed6e3c70a946b22bb9e4d7f94f4 /lib/libfetch/file.c | |
parent | bd72b40ad302035f20ec7882a114935617f60c15 (diff) | |
download | FreeBSD-src-c23ed76a904669b49069cc6998638c4081fe9f80.zip FreeBSD-src-c23ed76a904669b49069cc6998638c4081fe9f80.tar.gz |
Implement restart
Diffstat (limited to 'lib/libfetch/file.c')
-rw-r--r-- | lib/libfetch/file.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/lib/libfetch/file.c b/lib/libfetch/file.c index d00f2d6..d709e54 100644 --- a/lib/libfetch/file.c +++ b/lib/libfetch/file.c @@ -47,6 +47,12 @@ fetchGetFile(struct url *u, char *flags) if (f == NULL) _fetch_syserr(); + + if (u->offset && fseek(f, u->offset, SEEK_SET) == -1) { + fclose(f); + _fetch_syserr(); + } + return f; } @@ -58,10 +64,16 @@ fetchPutFile(struct url *u, char *flags) if (flags && strchr(flags, 'a')) f = fopen(u->doc, "a"); else - f = fopen(u->doc, "w"); + f = fopen(u->doc, "w+"); if (f == NULL) _fetch_syserr(); + + if (u->offset && fseek(f, u->offset, SEEK_SET) == -1) { + fclose(f); + _fetch_syserr(); + } + return f; } |