On Nov 5, 2009, at 6:53 PM, Daniel Rall wrote:
> On Thu, Nov 5, 2009 at 12:33 AM, Bert Huijben
> <rhuijben_at_sharpsvn.net> wrote:
>>> -----Original Message-----
>>> From: Hyrum K. Wright [mailto:hyrum_at_hyrumwright.org]
>>> Sent: donderdag 5 november 2009 5:00
>>> To: svn_at_subversion.tigris.org
>>> Subject: svn commit: r40378 - in trunk/subversion: include
>>> libsvn_subr
>>> tests/libsvn_subr
>>>
>>> Author: hwright
>>> Date: Wed Nov 4 20:00:08 2009
>>> New Revision: 40378
>>>
>>> Log:
>>> Add a duplication facility to our stream toolbox. Along the lines
>>> of
>>> the tee(1), the new svn_stream_tee() function returns a stream
>>> which,
>>> when
>>> written to, writes to both of the underlying streams. This allows
>>> writing
>>> two files simultaneously, or writing a file while also pushing
>>> content
>>> across the network.
>>>
>>> This isn't used directly by this commit, but I envision a couple of
>>> uses down
>>> the road. In any case, it's a potentially useful tool, and a nice
>>> exercise while stuck in an aluminum tube.
>>>
>>> * subversion/libsvn_subr/stream.c
>>> (baton_tee, write_handler_tee, svn_stream_tee): New.
>>
>> I think it would be useful to add a close handler, to allow closing
>> the inner streams via the outer stream.
>>
>> In libsvn_wc/adm_crawler.c there is a variant of this stream code.
>> It writes all bytes that are read from another stream. (Search for
>> copying_stream). It would be nice if we could combine these into
>> one generic feature. (But currently I don't see how)
>
> How about allowing for a sentinel value (e.g. NULL) for one of the
> output streams, turning the tee into pipe?
I believe that's what the docs say, and what the current
implementation already does:
if (out1 == NULL)
return out2;
if (out2 == NULL)
return out1;
Lemme know if I'm missing something.
-Hyrum
------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=2415827
Received on 2009-11-09 17:04:45 CET