You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Paul Burba <pt...@gmail.com> on 2008/09/24 16:46:56 UTC

Re: svn commit: r33260 - in trunk/subversion: include libsvn_subr

On Tue, Sep 23, 2008 at 3:51 PM,  <hw...@tigris.org> wrote:
> Author: hwright
> Date: Tue Sep 23 12:51:13 2008
> New Revision: 33260
>
> Log:
> Deprectate svn_io_file_checksum(), which used the old-style digests in
> favor of a svn_io_file_checksum2(), which has both a simpler
> implementation and works with the newer checksum type.
>
> * subversion/include/svn_io.h,
>  subversion/libsvn_subr/io.c
>  (svn_io_file_checksum2): New.
>  (svn_io_file_checksum): Deprecated and reimplement.
>
> Modified:
>   trunk/subversion/include/svn_io.h
>   trunk/subversion/libsvn_subr/io.c
>
> Modified: trunk/subversion/include/svn_io.h
> URL: http://svn.collab.net/viewvc/svn/trunk/subversion/include/svn_io.h?pathrev=33260&r1=33259&r2=33260
> ==============================================================================
> --- trunk/subversion/include/svn_io.h   Tue Sep 23 12:50:47 2008        (r33259)
> +++ trunk/subversion/include/svn_io.h   Tue Sep 23 12:51:13 2008        (r33260)
> @@ -470,10 +470,25 @@ svn_io_filesizes_different_p(svn_boolean
>                              apr_pool_t *pool);
>
>
> +/** Return in @a *checksum the checksum of type @a kind of @a file
> + * Use @a pool for temporary allocations and to allocate @a *checksum.
> + *
> + * @since New in 1.6.
> + */
> +svn_error_t *
> +svn_io_file_checksum2(svn_checksum_t **checksum,
> +                      const char *file,
> +                      svn_checksum_kind_t kind,
> +                      apr_pool_t *pool);
> +
> +
>  /** Put the md5 checksum of @a file into @a digest.
>  * @a digest points to @c APR_MD5_DIGESTSIZE bytes of storage.
>  * Use @a pool only for temporary allocations.
> + *
> + * @deprecated Provided for backward compatibility with the 1.5 API.
>  */
> +SVN_DEPRECATED
>  svn_error_t *
>  svn_io_file_checksum(unsigned char digest[],
>                      const char *file,
>
> Modified: trunk/subversion/libsvn_subr/io.c
> URL: http://svn.collab.net/viewvc/svn/trunk/subversion/libsvn_subr/io.c?pathrev=33260&r1=33259&r2=33260
> ==============================================================================
> --- trunk/subversion/libsvn_subr/io.c   Tue Sep 23 12:50:47 2008        (r33259)
> +++ trunk/subversion/libsvn_subr/io.c   Tue Sep 23 12:51:13 2008        (r33260)
> @@ -955,40 +955,37 @@ svn_io_filesizes_different_p(svn_boolean
>
>
>  svn_error_t *
> -svn_io_file_checksum(unsigned char digest[],
> -                     const char *file,
> -                     apr_pool_t *pool)
> +svn_io_file_checksum2(svn_checksum_t **checksum,
> +                      const char *file,
> +                      svn_checksum_kind_t kind,
> +                      apr_pool_t *pool)
>  {
> -  struct apr_md5_ctx_t context;
> -  apr_file_t *f = NULL;
> -  svn_error_t *err;
> -  char *buf = apr_palloc(pool, SVN__STREAM_CHUNK_SIZE);
> -  apr_size_t len;
> -
> -  /* ### The apr_md5 functions return apr_status_t, but they only
> -     return success, and really, what could go wrong?  So below, we
> -     ignore their return values. */
> -
> -  apr_md5_init(&context);
> +  svn_stream_t *file_stream;
> +  svn_stream_t *checksum_stream;
> +  apr_file_t* f;
>
>   SVN_ERR(svn_io_file_open(&f, file, APR_READ, APR_OS_DEFAULT, pool));
> +  file_stream = svn_stream_from_aprfile2(f, TRUE, pool);

Hi Hyrum,

Do you need to call svn_stream_from_aprfile2() here with DISOWN set to
TRUE?  Doing so means the subsequent svn_stream_close() does *not*
close F right?

This seems to be the cause of all the failures the Windows buildbot is
experiencing  --
http://www.mobsol.be/buildbot/win32-xp%2520VS2005/builds/925.
Changing DISOWN to FALSE causes all these failing tests to pass.

Paul

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: svn commit: r33260 - in trunk/subversion: include libsvn_subr

Posted by "Hyrum K. Wright" <hy...@mail.utexas.edu>.
Paul Burba wrote:
> On Tue, Sep 23, 2008 at 3:51 PM,  <hw...@tigris.org> wrote:
>> Author: hwright
>> Date: Tue Sep 23 12:51:13 2008
>> New Revision: 33260
>>
>> Log:
>> Deprectate svn_io_file_checksum(), which used the old-style digests in
>> favor of a svn_io_file_checksum2(), which has both a simpler
>> implementation and works with the newer checksum type.
>>
>> * subversion/include/svn_io.h,
>>  subversion/libsvn_subr/io.c
>>  (svn_io_file_checksum2): New.
>>  (svn_io_file_checksum): Deprecated and reimplement.
>>
>> Modified:
>>   trunk/subversion/include/svn_io.h
>>   trunk/subversion/libsvn_subr/io.c
>>
>> Modified: trunk/subversion/include/svn_io.h
>> URL: http://svn.collab.net/viewvc/svn/trunk/subversion/include/svn_io.h?pathrev=33260&r1=33259&r2=33260
>> ==============================================================================
>> --- trunk/subversion/include/svn_io.h   Tue Sep 23 12:50:47 2008        (r33259)
>> +++ trunk/subversion/include/svn_io.h   Tue Sep 23 12:51:13 2008        (r33260)
>> @@ -470,10 +470,25 @@ svn_io_filesizes_different_p(svn_boolean
>>                              apr_pool_t *pool);
>>
>>
>> +/** Return in @a *checksum the checksum of type @a kind of @a file
>> + * Use @a pool for temporary allocations and to allocate @a *checksum.
>> + *
>> + * @since New in 1.6.
>> + */
>> +svn_error_t *
>> +svn_io_file_checksum2(svn_checksum_t **checksum,
>> +                      const char *file,
>> +                      svn_checksum_kind_t kind,
>> +                      apr_pool_t *pool);
>> +
>> +
>>  /** Put the md5 checksum of @a file into @a digest.
>>  * @a digest points to @c APR_MD5_DIGESTSIZE bytes of storage.
>>  * Use @a pool only for temporary allocations.
>> + *
>> + * @deprecated Provided for backward compatibility with the 1.5 API.
>>  */
>> +SVN_DEPRECATED
>>  svn_error_t *
>>  svn_io_file_checksum(unsigned char digest[],
>>                      const char *file,
>>
>> Modified: trunk/subversion/libsvn_subr/io.c
>> URL: http://svn.collab.net/viewvc/svn/trunk/subversion/libsvn_subr/io.c?pathrev=33260&r1=33259&r2=33260
>> ==============================================================================
>> --- trunk/subversion/libsvn_subr/io.c   Tue Sep 23 12:50:47 2008        (r33259)
>> +++ trunk/subversion/libsvn_subr/io.c   Tue Sep 23 12:51:13 2008        (r33260)
>> @@ -955,40 +955,37 @@ svn_io_filesizes_different_p(svn_boolean
>>
>>
>>  svn_error_t *
>> -svn_io_file_checksum(unsigned char digest[],
>> -                     const char *file,
>> -                     apr_pool_t *pool)
>> +svn_io_file_checksum2(svn_checksum_t **checksum,
>> +                      const char *file,
>> +                      svn_checksum_kind_t kind,
>> +                      apr_pool_t *pool)
>>  {
>> -  struct apr_md5_ctx_t context;
>> -  apr_file_t *f = NULL;
>> -  svn_error_t *err;
>> -  char *buf = apr_palloc(pool, SVN__STREAM_CHUNK_SIZE);
>> -  apr_size_t len;
>> -
>> -  /* ### The apr_md5 functions return apr_status_t, but they only
>> -     return success, and really, what could go wrong?  So below, we
>> -     ignore their return values. */
>> -
>> -  apr_md5_init(&context);
>> +  svn_stream_t *file_stream;
>> +  svn_stream_t *checksum_stream;
>> +  apr_file_t* f;
>>
>>   SVN_ERR(svn_io_file_open(&f, file, APR_READ, APR_OS_DEFAULT, pool));
>> +  file_stream = svn_stream_from_aprfile2(f, TRUE, pool);
> 
> Hi Hyrum,
> 
> Do you need to call svn_stream_from_aprfile2() here with DISOWN set to
> TRUE?  Doing so means the subsequent svn_stream_close() does *not*
> close F right?

Paul,
You are correct, and r33268 corrects this problem.  (I'm blaming the typo on
random cosmic ray <-> neuron interactions.)

-Hyrum