diff options
author | NotZed <NotZed@HelixCode.com> | 2000-05-20 03:58:41 +0800 |
---|---|---|
committer | Michael Zucci <zucchi@src.gnome.org> | 2000-05-20 03:58:41 +0800 |
commit | 2ce4eb74b65f3e9d07a921aad3899a7141b0000f (patch) | |
tree | 50439e412a6f12dc0b7db68274de8a8f16b74e08 /camel/camel-stream-filter.c | |
parent | b5ae6150b2a72683b7311af3252230069300d9e2 (diff) | |
download | gsoc2013-evolution-2ce4eb74b65f3e9d07a921aad3899a7141b0000f.tar.gz gsoc2013-evolution-2ce4eb74b65f3e9d07a921aad3899a7141b0000f.tar.zst gsoc2013-evolution-2ce4eb74b65f3e9d07a921aad3899a7141b0000f.zip |
> searchpart = strchr(namepart, '?');
2000-05-19 NotZed <NotZed@HelixCode.com>
* camel-simple-data-wrapper.c (construct_from_stream): If we
already have been constructed, unref our content.
(write_to_stream): Check we've been constructued, and change for
stream api changes.
* camel-mime-parser.c: Removed exception stuff.
* md5-utils.c (md5_get_digest_from_stream): repaired.
* camel-mime-message.c: Remove exception from write_to_stream, and
fix, and fix formatting.
* providers/sendmail/camel-sendmail-transport.c (_send_internal):
Fix for stream changes.
* providers/pop3/camel-pop3-store.c (camel_pop3_command): Fixes
for stream changes.
* providers/mbox/camel-mbox-folder.c, and elsewhere, fix all
stream api changes.
(mbox_append_message): Use stream_close() now its back.
(mbox_append_message): unref the from filter.
* camel-stream-mem.c: And here.
* camel-stream-fs.[ch]: Here too.
* camel-stream-filter.c: Likewise. This is getting tedious.
* camel-stream-buffer.c (stream_write): Fix a few little problems.
(stream_close): Reimplmeent.
(camel_stream_buffer_read_line): Slightly more efficient version,
that also only allocates the right amount of memory for strings.
* camel-seekable-substream.c: Likewise.
* camel-seekable-stream.[ch]: Remove exceptions, fix formatting,
changes for stream (re)fixes. set_bounds returns an error.
* camel-stream.[ch]: Remove exceptions. Make flush and reset return
an error code, repair all the screwed up formatting, and put back
close.
* camel-mime-part-utils.c
(camel_mime_part_construct_content_from_parser): And here.
* camel-mime-part.c (camel_mime_part_set_content): And this too.
(write_to_stream): Fixed for stream changes.
* camel.h: Fixed.
* providers/vee/camel-vee-folder.c (vee_search_by_expression):
Implement. Performs an intersection of the two searches.
(camel_vee_folder_finalise): Unref search folders.
(vee_append_message): Implement append.
svn path=/trunk/; revision=3142
Diffstat (limited to 'camel/camel-stream-filter.c')
-rw-r--r-- | camel/camel-stream-filter.c | 53 |
1 files changed, 33 insertions, 20 deletions
diff --git a/camel/camel-stream-filter.c b/camel/camel-stream-filter.c index 389390caaf..3aaa1a20ed 100644 --- a/camel/camel-stream-filter.c +++ b/camel/camel-stream-filter.c @@ -1,3 +1,4 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; fill-column: 160 -*- */ /* * Copyright (C) 2000 Helix Code Inc. * @@ -19,7 +20,6 @@ */ #include "camel-stream-filter.h" -#include "camel-exception.h" struct _filter { struct _filter *next; @@ -48,13 +48,12 @@ struct _CamelStreamFilterPrivate { static void camel_stream_filter_class_init (CamelStreamFilterClass *klass); static void camel_stream_filter_init (CamelStreamFilter *obj); -static int do_read (CamelStream *stream, char *buffer, - unsigned int n, CamelException *ex); -static int do_write (CamelStream *stream, const char *buffer, - unsigned int n, CamelException *ex); -static void do_flush (CamelStream *stream, CamelException *ex); +static int do_read (CamelStream *stream, char *buffer, unsigned int n); +static int do_write (CamelStream *stream, const char *buffer, unsigned int n); +static int do_flush (CamelStream *stream); +static int do_close (CamelStream *stream); static gboolean do_eos (CamelStream *stream); -static void do_reset (CamelStream *stream, CamelException *ex); +static int do_reset (CamelStream *stream); static CamelStreamClass *camel_stream_filter_parent; @@ -121,6 +120,7 @@ camel_stream_filter_class_init (CamelStreamFilterClass *klass) camel_stream_class->read = do_read; camel_stream_class->write = do_write; camel_stream_class->flush = do_flush; + camel_stream_class->flush = do_close; camel_stream_class->eos = do_eos; camel_stream_class->reset = do_reset; @@ -216,7 +216,7 @@ camel_stream_filter_remove(CamelStreamFilter *filter, int id) } static int -do_read (CamelStream *stream, char *buffer, unsigned int n, CamelException *ex) +do_read (CamelStream *stream, char *buffer, unsigned int n) { CamelStreamFilter *filter = (CamelStreamFilter *)stream; struct _CamelStreamFilterPrivate *p = _PRIVATE(filter); @@ -228,7 +228,7 @@ do_read (CamelStream *stream, char *buffer, unsigned int n, CamelException *ex) if (p->filteredlen<=0) { int presize = READ_SIZE; - size = camel_stream_read(filter->source, p->buffer, READ_SIZE, ex); + size = camel_stream_read(filter->source, p->buffer, READ_SIZE); if (size<=0) { /* this is somewhat untested */ if (camel_stream_eos(filter->source)) { @@ -263,7 +263,7 @@ do_read (CamelStream *stream, char *buffer, unsigned int n, CamelException *ex) } static int -do_write (CamelStream *stream, const char *buf, unsigned int n, CamelException *ex) +do_write (CamelStream *stream, const char *buf, unsigned int n) { CamelStreamFilter *filter = (CamelStreamFilter *)stream; struct _CamelStreamFilterPrivate *p = _PRIVATE(filter); @@ -280,11 +280,11 @@ do_write (CamelStream *stream, const char *buf, unsigned int n, CamelException * f = f->next; } - return camel_stream_write(filter->source, buffer, n, ex); + return camel_stream_write(filter->source, buffer, n); } -static void -do_flush (CamelStream *stream, CamelException *ex) +static int +do_flush (CamelStream *stream) { CamelStreamFilter *filter = (CamelStreamFilter *)stream; struct _CamelStreamFilterPrivate *p = _PRIVATE(filter); @@ -294,7 +294,7 @@ do_flush (CamelStream *stream, CamelException *ex) if (p->last_was_read) { g_warning("Flushing a filter stream without writing to it"); - return; + return 0; } buffer = ""; @@ -305,9 +305,21 @@ do_flush (CamelStream *stream, CamelException *ex) camel_mime_filter_complete(f->filter, buffer, len, presize, &buffer, &len, &presize); f = f->next; } - camel_stream_write(filter->source, buffer, len, ex); - if (!camel_exception_is_set(ex)) - camel_stream_flush(filter->source, ex); + if (len>0 && camel_stream_write(filter->source, buffer, len) == -1) + return -1; + return camel_stream_flush(filter->source); +} + +static int +do_close (CamelStream *stream) +{ + CamelStreamFilter *filter = (CamelStreamFilter *)stream; + struct _CamelStreamFilterPrivate *p = _PRIVATE(filter); + + if (!p->last_was_read) { + do_flush(stream); + } + return camel_stream_close(filter->source); } static gboolean @@ -322,15 +334,14 @@ do_eos (CamelStream *stream) return camel_stream_eos(filter->source); } -static void -do_reset (CamelStream *stream, CamelException *ex) +static int +do_reset (CamelStream *stream) { CamelStreamFilter *filter = (CamelStreamFilter *)stream; struct _CamelStreamFilterPrivate *p = _PRIVATE(filter); struct _filter *f; p->filteredlen = 0; - camel_stream_reset(filter->source, ex); /* and reset filters */ f = p->filters; @@ -338,5 +349,7 @@ do_reset (CamelStream *stream, CamelException *ex) camel_mime_filter_reset(f->filter); f = f->next; } + + return camel_stream_reset(filter->source); } |