Author: cmpilato
Date: Tue Mar 29 20:18:43 2011
New Revision: 1086717
URL: http://svn.apache.org/viewvc?rev=1086717&view=rev
Log:
Avoid unnecessary abstraction by combined a factor function with its
sole result consumer.
* subversion/svnrdump/load_editor.h,
* subversion/svnrdump/load_editor.c
(get_dumpstream_loader): Remove, moving all its logic into ...
(load_dumpstream): ... this, which was renamed from
'drive_dumpstream_loader' and no longer accepts 'parser' and
'parse_baton' parmeters.
* subversion/svnrdump/svnrdump.c
(load_revisions): Just call load_dumpstream() now rather than the
combination of get_dumpstream_loader() and
drive_dumpstream_loader().
Modified:
subversion/trunk/subversion/svnrdump/load_editor.c
subversion/trunk/subversion/svnrdump/load_editor.h
subversion/trunk/subversion/svnrdump/svnrdump.c
Modified: subversion/trunk/subversion/svnrdump/load_editor.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/svnrdump/load_editor.c?rev=1086717&r1=1086716&r2=1086717&view=diff
==============================================================================
--- subversion/trunk/subversion/svnrdump/load_editor.c (original)
+++ subversion/trunk/subversion/svnrdump/load_editor.c Tue Mar 29 20:18:43 2011
@@ -589,55 +589,42 @@ close_revision(void *baton)
}
svn_error_t *
-get_dumpstream_loader(const svn_repos_parse_fns2_t **parser,
- void **parse_baton,
- svn_ra_session_t *session,
- apr_pool_t *pool)
+load_dumpstream(svn_stream_t *stream,
+ svn_ra_session_t *session,
+ svn_cancel_func_t cancel_func,
+ void *cancel_baton,
+ apr_pool_t *pool)
{
- svn_repos_parse_fns2_t *pf;
- struct parse_baton *pb;
-
- pf = apr_pcalloc(pool, sizeof(*pf));
- pf->new_revision_record = new_revision_record;
- pf->uuid_record = uuid_record;
- pf->new_node_record = new_node_record;
- pf->set_revision_property = set_revision_property;
- pf->set_node_property = set_node_property;
- pf->delete_node_property = delete_node_property;
- pf->remove_node_props = remove_node_props;
- pf->set_fulltext = set_fulltext;
- pf->apply_textdelta = apply_textdelta;
- pf->close_node = close_node;
- pf->close_revision = close_revision;
-
- pb = apr_pcalloc(pool, sizeof(*pb));
- pb->session = session;
-
- *parser = pf;
- *parse_baton = pb;
-
- return SVN_NO_ERROR;
-}
-
-svn_error_t *
-drive_dumpstream_loader(svn_stream_t *stream,
- const svn_repos_parse_fns2_t *parser,
- void *parse_baton,
- svn_ra_session_t *session,
- svn_cancel_func_t cancel_func,
- void *cancel_baton,
- apr_pool_t *pool)
-{
- struct parse_baton *pb = parse_baton;
+ svn_repos_parse_fns2_t *parser;
+ struct parse_baton *parse_baton;
const svn_string_t *lock_string;
svn_boolean_t be_atomic;
svn_error_t *err;
+ const char *root_url;
SVN_ERR(svn_ra_has_capability(session, &be_atomic,
SVN_RA_CAPABILITY_ATOMIC_REVPROPS,
pool));
SVN_ERR(get_lock(&lock_string, session, cancel_func, cancel_baton, pool));
- SVN_ERR(svn_ra_get_repos_root2(session, &(pb->root_url), pool));
+ SVN_ERR(svn_ra_get_repos_root2(session, &root_url, pool));
+
+ parser = apr_pcalloc(pool, sizeof(*parser));
+ parser->new_revision_record = new_revision_record;
+ parser->uuid_record = uuid_record;
+ parser->new_node_record = new_node_record;
+ parser->set_revision_property = set_revision_property;
+ parser->set_node_property = set_node_property;
+ parser->delete_node_property = delete_node_property;
+ parser->remove_node_props = remove_node_props;
+ parser->set_fulltext = set_fulltext;
+ parser->apply_textdelta = apply_textdelta;
+ parser->close_node = close_node;
+ parser->close_revision = close_revision;
+
+ parse_baton = apr_pcalloc(pool, sizeof(*parse_baton));
+ parse_baton->session = session;
+ parse_baton->root_url = root_url;
+
err = svn_repos_parse_dumpstream2(stream, parser, parse_baton,
cancel_func, cancel_baton, pool);
Modified: subversion/trunk/subversion/svnrdump/load_editor.h
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/svnrdump/load_editor.h?rev=1086717&r1=1086716&r2=1086717&view=diff
==============================================================================
--- subversion/trunk/subversion/svnrdump/load_editor.h (original)
+++ subversion/trunk/subversion/svnrdump/load_editor.h Tue Mar 29 20:18:43 2011
@@ -89,32 +89,16 @@ struct revision_baton
};
/**
- * Build up a dumpstream parser @a parser (and corresponding baton @a
- * parse_baton) to fire the appropriate callbacks in a commit editor
- * set to commit to session @a session. Use @a pool for all memory
- * allocations.
+ * Load the dumpstream carried in @a stream to the location described
+ * by @a session. Use @a pool for all memory allocations. Use @a
+ * cancel_func and @a cancel_baton to check for user cancellation of
+ * the operation (for timely-but-safe termination).
*/
svn_error_t *
-get_dumpstream_loader(const svn_repos_parse_fns2_t **parser,
- void **parse_baton,
- svn_ra_session_t *session,
- apr_pool_t *pool);
-
-/**
- * Drive the dumpstream loader described by @a parser and @a
- * parse_baton to parse and commit the stream @a stream to the
- * location described by @a session. Use @a pool for all memory
- * allocations. Use @a cancel_func and @a cancel_baton to check for
- * user cancellation of the operation (for timely-but-safe
- * termination).
- */
-svn_error_t *
-drive_dumpstream_loader(svn_stream_t *stream,
- const svn_repos_parse_fns2_t *parser,
- void *parse_baton,
- svn_ra_session_t *session,
- svn_cancel_func_t cancel_func,
- void *cancel_baton,
- apr_pool_t *pool);
+load_dumpstream(svn_stream_t *stream,
+ svn_ra_session_t *session,
+ svn_cancel_func_t cancel_func,
+ void *cancel_baton,
+ apr_pool_t *pool);
#endif
Modified: subversion/trunk/subversion/svnrdump/svnrdump.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/svnrdump/svnrdump.c?rev=1086717&r1=1086716&r2=1086717&view=diff
==============================================================================
--- subversion/trunk/subversion/svnrdump/svnrdump.c (original)
+++ subversion/trunk/subversion/svnrdump/svnrdump.c Tue Mar 29 20:18:43 2011
@@ -441,15 +441,12 @@ load_revisions(svn_ra_session_t *session
{
apr_file_t *stdin_file;
svn_stream_t *stdin_stream;
- const svn_repos_parse_fns2_t *parser;
- void *parse_baton;
apr_file_open_stdin(&stdin_file, pool);
stdin_stream = svn_stream_from_aprfile2(stdin_file, FALSE, pool);
- SVN_ERR(get_dumpstream_loader(&parser, &parse_baton, session, pool));
- SVN_ERR(drive_dumpstream_loader(stdin_stream, parser, parse_baton,
- session, check_cancel, NULL, pool));
+ SVN_ERR(load_dumpstream(stdin_stream, session, check_cancel,
+ NULL, pool));
SVN_ERR(svn_stream_close(stdin_stream));