[PATCH] dup function for svn_info_t
From: Chris Foote <cfoote_at_v21.me.uk>
Date: 2005-06-11 14:30:29 CEST
[LOG]
Add a function to duplicate the svn_info_t structure.
* subversion/include/svn_client.h
* subversion/libsvn_client/info.c
-- Index: subversion/include/svn_client.h =================================================================== --- subversion/include/svn_client.h (revision 15032) +++ subversion/include/svn_client.h (working copy) @@ -1975,6 +1975,9 @@ */ typedef struct svn_info_t { + /* IMPORTANT: If you extend this structure, check svn_info_dup() to see + if you need to extend that as well. */ + /** Where the item lives in the repository. */ const char *URL; @@ -2025,6 +2028,8 @@ const char *prejfile; /** @} */ + /* IMPORTANT: If you extend this structure, check svn_info_dup() to see + if you need to extend that as well. */ } svn_info_t; @@ -2043,6 +2048,15 @@ apr_pool_t *pool); /** + * Return a duplicate of @a info, allocated in @a pool. No part of the new + * structure will be shared with @a info. + * + * @since New in 1.3. + */ +svn_info_t * +svn_info_dup(const svn_info_t *info, apr_pool_t *pool); + +/** * Invoke @a receiver with @a receiver_baton to return information * about @a path_or_url in @a revision. The information returned is * system-generated metadata, not the sort of "property" metadata Index: subversion/libsvn_client/info.c =================================================================== --- subversion/libsvn_client/info.c (revision 15032) +++ subversion/libsvn_client/info.c (working copy) @@ -412,3 +412,40 @@ return SVN_NO_ERROR; } + + +svn_info_t * +svn_info_dup (const svn_info_t *info, apr_pool_t *pool) +{ + svn_info_t *dupinfo = apr_pcalloc (pool, sizeof(*dupinfo)); + + /* Perform a trivial copy ... */ + *dupinfo = *info; + + /* ...and then re-copy stuff that needs to be duped into our pool. */ + if (info->URL) + dupinfo->URL = apr_pstrdup (pool, info->URL); + if (info->repos_root_URL) + dupinfo->repos_root_URL = apr_pstrdup (pool, info->repos_root_URL); + if (info->repos_UUID) + dupinfo->repos_UUID = apr_pstrdup (pool, info->repos_UUID); + if (info->last_changed_author) + dupinfo->last_changed_author = apr_pstrdup (pool, + info->last_changed_author); + if (info->lock) + dupinfo->lock = svn_lock_dup (info->lock, pool); + if (info->copyfrom_url) + dupinfo->copyfrom_url = apr_pstrdup (pool, info->copyfrom_url); + if (info->checksum) + dupinfo->checksum = apr_pstrdup (pool, info->checksum); + if (info->conflict_old) + dupinfo->conflict_old = apr_pstrdup (pool, info->conflict_old); + if (info->conflict_new) + dupinfo->conflict_new = apr_pstrdup (pool, info->conflict_new); + if (info->conflict_wrk) + dupinfo->conflict_wrk = apr_pstrdup (pool, info->conflict_wrk); + if (info->prejfile) + dupinfo->prejfile = apr_pstrdup (pool, info->prejfile); + + return dupinfo; +} --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org For additional commands, e-mail: dev-help@subversion.tigris.orgReceived on Sat Jun 11 14:31:25 2005 |
This is an archived mail posted to the Subversion Dev mailing list.
This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.