summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: d7198b1)
raw | patch | inline | side by side (parent: d7198b1)
author | Lennart Poettering <lennart@poettering.net> | |
Wed, 1 Mar 2006 21:22:57 +0000 (21:22 +0000) | ||
committer | Lennart Poettering <lennart@poettering.net> | |
Wed, 1 Mar 2006 21:22:57 +0000 (21:22 +0000) |
src/filecache.c | patch | blob | history |
diff --git a/src/filecache.c b/src/filecache.c
index 5f81f1453afadbc5918173f608b17d8f35e496e0..f64f69e7e516b82d272fa24e2120ed25e1878960 100644 (file)
--- a/src/filecache.c
+++ b/src/filecache.c
#include <unistd.h>
#include <assert.h>
#include <pthread.h>
+#include <inttypes.h>
+#include <limits.h>
#include <ne_props.h>
#include <ne_uri.h>
return NULL;
}
+#ifdef FIXNEON64
+
+/* We assume that off_t is 64 bit, neon assumes it is 32 bit wide. we
+ * need to work around this somehow */
+
+typedef struct {
+ uint32_t start, end, total;
+} ne_content_range64;
+
+#endif
+
static int load_up_to_unlocked(struct file_info *fi, off_t l) {
+
+#ifdef FIXNEON64
+ ne_content_range64 range;
+#else
ne_content_range range;
+#endif
ne_session *session;
assert(fi);
if (l <= fi->present)
return 0;
- if (lseek(fi->fd, fi->present, SEEK_SET) != fi->present)
+#ifdef FIXNEON64
+ if (l > UINT_MAX) {
+ /* neon doesn't support 64bit ne_get_range right now */
+ errno = EIO;
return -1;
+ }
+#endif
+ if (lseek(fi->fd, fi->present, SEEK_SET) != fi->present)
+ return -1;
+
range.start = fi->present;
range.end = l-1;
range.total = 0;
- if (ne_get_range(session, fi->filename, &range, fi->fd) != NE_OK) {
+ if (ne_get_range(session, fi->filename, (ne_content_range*) &range, fi->fd) != NE_OK) {
fprintf(stderr, "GET failed: %s\n", ne_get_error(session));
errno = ENOENT;
return -1;