You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ph...@apache.org on 2013/03/27 19:31:38 UTC
svn commit: r1461770 - in /subversion/trunk/subversion:
include/private/svn_io_private.h libsvn_subr/stream.c
Author: philip
Date: Wed Mar 27 18:31:38 2013
New Revision: 1461770
URL: http://svn.apache.org/r1461770
Log:
Add some is-buffered support to lazy-open streams.
* subversion/libsvn_subr/stream.c
(is_buffered_lazyopen): New.
(svn_stream_lazyopen_create): Set is-buffered function.
* subversion/include/private/svn_io_private.h
(svn_stream__is_buffered): Note limitation.
Modified:
subversion/trunk/subversion/include/private/svn_io_private.h
subversion/trunk/subversion/libsvn_subr/stream.c
Modified: subversion/trunk/subversion/include/private/svn_io_private.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/include/private/svn_io_private.h?rev=1461770&r1=1461769&r2=1461770&view=diff
==============================================================================
--- subversion/trunk/subversion/include/private/svn_io_private.h (original)
+++ subversion/trunk/subversion/include/private/svn_io_private.h Wed Mar 27 18:31:38 2013
@@ -81,7 +81,9 @@ svn_stream__set_is_buffered(svn_stream_t
/** Return whether this generic @a stream uses internal buffering.
* This may be used to work around subtle differences between buffered
- * an non-buffered APR files.
+ * an non-buffered APR files. A lazy-open stream cannot report the
+ * true buffering state until after the lazy open: a stream that
+ * initially reports as non-buffered may report as buffered later.
*
* @since New in 1.7.
*/
Modified: subversion/trunk/subversion/libsvn_subr/stream.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/stream.c?rev=1461770&r1=1461769&r2=1461770&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/stream.c (original)
+++ subversion/trunk/subversion/libsvn_subr/stream.c Wed Mar 27 18:31:38 2013
@@ -1781,6 +1781,19 @@ seek_handler_lazyopen(void *baton,
return SVN_NO_ERROR;
}
+/* Implements svn_stream__is_buffered_fn_t */
+static svn_boolean_t
+is_buffered_lazyopen(void *baton)
+{
+ lazyopen_baton_t *b = baton;
+
+ /* No lazy open as we cannot handle an open error. */
+ if (!b->real_stream)
+ return FALSE;
+
+ return svn_stream__is_buffered(b->real_stream);
+}
+
svn_stream_t *
svn_stream_lazyopen_create(svn_stream_lazyopen_func_t open_func,
void *open_baton,
@@ -1801,6 +1814,7 @@ svn_stream_lazyopen_create(svn_stream_la
svn_stream_set_close(stream, close_handler_lazyopen);
svn_stream_set_mark(stream, mark_handler_lazyopen);
svn_stream_set_seek(stream, seek_handler_lazyopen);
+ svn_stream__set_is_buffered(stream, is_buffered_lazyopen);
return stream;
}