Esempio n. 1
0
bool SVNLineDiff::Diff(svn_diff_t **diff, LPCTSTR line1, apr_size_t len1, LPCTSTR line2, apr_size_t len2, bool bWordDiff)
{
	if (m_subpool)
		svn_pool_clear(m_subpool);
	else
		m_subpool = svn_pool_create(m_pool);

	if (m_subpool == NULL)
		return false;

	m_bWordDiff = bWordDiff;
	m_line1 = line1;
	m_line2 = line2;
	m_line1length = len1 ? len1 : _tcslen(m_line1);
	m_line2length = len2 ? len2 : _tcslen(m_line2);

	m_line1pos = 0;
	m_line2pos = 0;
	m_line1tokens.clear();
	m_line2tokens.clear();
	svn_error_t * err = svn_diff_diff(diff, this, &SVNLineDiff_vtable, m_subpool);
	if (err)
	{
		svn_error_clear(err);
        svn_pool_clear(m_subpool);
		return false;
	}
	return true;
}
Esempio n. 2
0
svn_error_t *diff_playlist_tracks(svn_diff_t **diff,
                                  sp_playlist *playlist,
                                  sp_track **tracks,
                                  int num_tracks,
                                  apr_pool_t *pool) {
  sp_playlist_add_ref(playlist);
  struct track_tokens_t sources[2];
  fill_track_tokens_from_playlist(&sources[0], playlist);
  fill_track_tokens_from_tracks(&sources[1], tracks, num_tracks);

  // Run through SVN diff
  apr_pool_t *local_pool = svn_pool_create(pool);
  svn_error_t *result = svn_diff_diff(diff, &sources, 
                                      &diff_playlist_search_vtable, local_pool);
  svn_pool_destroy(local_pool);
  sp_playlist_release(playlist);
  return result;
}