2007-02-08 Jeffrey Stedfast * README: Bumped version * configure.in: Bumped version to 2.2.4 2007-02-06 Jeffrey Stedfast Fix for bug #394433 * configure.in: Detect if the system has GNU's getopt implementation available for us to use. * Makefile.am: Don't build our own copy of the GNU getopt library if the system has it available. * src/uuencode.c: If the system has getopt.h, use it instead of our own getopt.h. * src/uudecode.c: If the system has getopt.h, use it instead of our own getopt.h. 2007-02-06 Jeffrey Stedfast More fixes on account of my test suite... * tests/test-cat.c (test_cat_substream): end = start + random amount... duh. Fixes a bug where sometimes the end bound was < the start bound. * gmime/gmime-stream-cat.c (stream_substream): Calculate the length of each of the source streams correctly. D'oh. (stream_substream): Fixed the calculation for s->start. (stream_substream): Fixed the s->end calculation for when end within the source stream's bounds. (stream_substream): Keep track of how long our substream is going to be for use with setting absolute bound_end on a multi-stream substream. 2007-02-05 Jeffrey Stedfast Fixes on account of the awesome test suite I wrote earlier... still need to fix ::substream() tho (or maybe it's just the test that's broke?). * gmime/gmime-stream-cat.c: Added an id member to struct _cat_node, for use with debugging... (stream_read): Seek in the source stream, don't call Cat::stream_seek() to do it. (stream_seek): Swapped the logic of the "within bounds" check, had it backwards. When seeking past a stream, set the node->position to the length of the stream (technically, it's like we read() thru all that data, right?). Instead of resetting all streams starting at n->next, reset them all starting at current->next... since 'n' technically might be before 'current'. (g_mime_stream_cat_add_source): Assign each node an id for easier debugging... 2007-02-05 Jeffrey Stedfast * tests/test-cat.c: The beginnings of a test suite for GMimeStreamCat. * gmime/gmime-stream-cat.c (stream_read): Go to the next stream if nread <= 0, not just nread == 0. 2007-02-04 Jeffrey Stedfast * gmime/gmime-stream-mem.c (stream_reset): No longer need to update stream->position. * gmime/gmime-stream-mmap.c (stream_reset): Same g_return_if_fail change. Also don't update stream->position. (stream_seek): Added similar sanity checking/eos resetting as StreamFs code. * gmime/gmime-stream-file.c (stream_read): Style changes. (stream_write): Style changes. (stream_close): Fixed compiler warning. (stream_reset): Changed g_return_if_fail to a true if-then. (stream_seek): Changed to mimic the StreamFs changes. (g_mime_stream_file_new): Similar to fs_new() change. * gmime/gmime-stream-fs.c (stream_close): Loop the close() ourselves. (stream_reset): Changed g_return_if_fail to a true if-then. Also be better about resetting eos. (stream_seek): Rewritten to be more correct/robust (at least I hope). Also properly reset eos when appropriate. (g_mime_stream_fs_new): If lseek() fails, pretend start offset is 0. * gmime/gmime-stream.c (stream_reset): No longer needs to update stream->position. (g_mime_stream_reset): Update stream->position if everything reset smoothly. This is just a convenience change to subclass implementations. * gmime/gmime-stream-cat.c (stream_read): Rewritten. Hopefully correct now? Ugh. We can hope... (stream_write): Fixed to work better. (stream_close): Rewritten. (stream_reset): Rewritten to reset the streams, don't seek. (stream_seek): Rewritten... still not correct, but should be ok assuming our bound_start is 0. (stream_length): Rewritten to not depend on a pre-calculated length value... this Does Not Work (tm) if the source streams are unbound and we've written to them. (stream_substream): Rewritten... because ::seek() is so complex for this type of stream, I've tried to eliminate a lot of the headaches by making substreams only slurp up the streams within the bounds of the start/end requested. If the entire contents within the requested bounds are contained within a single source stream, we return a substream of said source stream instead. (g_mime_stream_cat_add_source): Don't precalculate the length here anymore. * gmime/gmime-stream-buffer.c (stream_read): Fixed to never allow buflen to be negative if the read() of our source stream fails. (stream_close): Handle the case where we've already been closed. (stream_eos): Simplified. (stream_reset): Stylistic changes. (stream_seek): Don't allow seeks under our bound_start. 2007-02-03 Jeffrey Stedfast * gmime/gmime-stream-cat.c (stream_flush): Flush all streams up to and including the current stream, not just the current stream. (stream_write): break if we don't write any data to current->stream or get an error so we can try the next stream. * gmime/gmime-stream-file.c (stream_close): Same as below. * gmime/gmime-stream-fs.c (stream_close): Allow closing multiple times... makes this consistant with the other streams. (stream_write): If a system write fails with EFBIG or ENOSPC, set eos to TRUE. 2007-01-20 Jeffrey Stedfast * tests/test-streams.c (test_stream_gets): printf formatter fixes. * examples/imap-example.c: #include , fixes bug #394434. 2007-01-20 Jeffrey Stedfast Fixes bug #394419 * gmime/gmime-filter-charset.c (filter_filter): Do iconv const casting. (filter_complete): Same. 2006-11-02 Jeffrey Stedfast * gmime/gmime-utils.c (g_mime_utils_header_format_date): Changed the names of the parameters to date and tz_offset to prevent warnings from -Wshadow. * gmime/gmime-filter-html.c (writeln): Fixed another possible buffer overflow condition pointed out by hpj. * gmime/gmime-filter-crlf.c (filter_filter): Fixed a possible buffer overflow condition pointed out by hpj. * gmime/gmime-gpg-context.c (gpg_ctx_op_step): Modified to use poll() rather than select() 2006-09-18 Joe Shaw * mono/Makefile.am: Use SOURCES_XML instead of XML_SOURCES to specify the sources.xml file. XML_SOURCES breaks with newer automakes. 2006-08-29 Pawel Salek * gmime/gmime-message-partial.c: set buf just before use - since the mem stream buffer may get reallocated in the meantime leading to segfaults. 2006-08-29 Jeffrey Stedfast * gmime/gmime-param.c (decode_quoted_string): Unescape escape sequences. Fixes bug #352771. * gmime/gmime-message.c (g_mime_message_set_subject): Updated the docs. (g_mime_message_get_subject): Same. 2006-08-21 Peter Bloomfield * gmime/gmime-utils.c (g_mime_utils_unquote_string): handle an arbitrary sequence of quoted and unquoted sections.