diff options
author | Not Zed <NotZed@HelixCode.com> | 2000-12-05 19:50:32 +0800 |
---|---|---|
committer | Michael Zucci <zucchi@src.gnome.org> | 2000-12-05 19:50:32 +0800 |
commit | a8d65409decc86cf8d9f9ebadea28be551b3a4d2 (patch) | |
tree | 757a46fc3ee25686150e2bcdeb2a6954574d0ba3 /camel/camel-stream-fs.c | |
parent | 90feaa4ad02462c8e91d27070e7d8ae178771a06 (diff) | |
download | gsoc2013-evolution-a8d65409decc86cf8d9f9ebadea28be551b3a4d2.tar gsoc2013-evolution-a8d65409decc86cf8d9f9ebadea28be551b3a4d2.tar.gz gsoc2013-evolution-a8d65409decc86cf8d9f9ebadea28be551b3a4d2.tar.bz2 gsoc2013-evolution-a8d65409decc86cf8d9f9ebadea28be551b3a4d2.tar.lz gsoc2013-evolution-a8d65409decc86cf8d9f9ebadea28be551b3a4d2.tar.xz gsoc2013-evolution-a8d65409decc86cf8d9f9ebadea28be551b3a4d2.tar.zst gsoc2013-evolution-a8d65409decc86cf8d9f9ebadea28be551b3a4d2.zip |
stream_flush does make sense for a substream afterall (if you have a
2000-12-05 Not Zed <NotZed@HelixCode.com>
* camel-seekable-substream.c (stream_flush): stream_flush does
make sense for a substream afterall (if you have a stream_write).
(stream_write): Implement this.
(stream_seek): Change the STREAM_END behaviour to be more sane.
if bounded go from the end of the bound, if unbounded, go from the
end of the parent stream.
* camel-stream-mem.c (stream_read): Dont return error if reading
past the end of data, just return 0.
* camel-stream-fs.c (camel_stream_fs_init): Initialise the stream
to be unbound.
(stream_seek): Fix the logic when seeking from the end of an
unbounded stream.
(camel_stream_fs_new_with_fd): If the fd is invalid (-1), then
return NULL immediately.
(stream_seek): Range check a SEEK_END so it fits within
bound_start.
2000-12-01 Not Zed <NotZed@HelixCode.com>
* tests/lib/folders.c (test_folder_basic): New test to perform
basic store operations on folders (taken from folders/test1).
(test_folder_message_ops): Tkane the guts out of folders/test2.
svn path=/trunk/; revision=6790
Diffstat (limited to 'camel/camel-stream-fs.c')
-rw-r--r-- | camel/camel-stream-fs.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/camel/camel-stream-fs.c b/camel/camel-stream-fs.c index 17c6b98e08..59082ec531 100644 --- a/camel/camel-stream-fs.c +++ b/camel/camel-stream-fs.c @@ -69,6 +69,7 @@ camel_stream_fs_init (gpointer object, gpointer klass) CamelStreamFs *stream = CAMEL_STREAM_FS (object); stream->fd = -1; + ((CamelSeekableStream *)stream)->bound_end = CAMEL_STREAM_UNBOUND; } static void @@ -114,6 +115,9 @@ camel_stream_fs_new_with_fd (int fd) CamelStreamFs *stream_fs; off_t offset; + if (fd == -1) + return NULL; + stream_fs = CAMEL_STREAM_FS (camel_object_new (camel_stream_fs_get_type ())); stream_fs->fd = fd; offset = lseek (fd, 0, SEEK_CUR); @@ -271,10 +275,13 @@ stream_seek (CamelSeekableStream *stream, off_t offset, CamelStreamSeekPolicy po real = stream->position + offset; break; case CAMEL_STREAM_END: - if (stream->bound_end != CAMEL_STREAM_UNBOUND) { + if (stream->bound_end == CAMEL_STREAM_UNBOUND) { real = lseek(stream_fs->fd, offset, SEEK_END); - if (real != -1) + if (real != -1) { + if (real<stream->bound_start) + real = stream->bound_start; stream->position = real; + } return real; } real = stream->bound_end + offset; |