static svn_error_t* datasource_get_next_token(apr_uint32_t *hash, void **token, void *baton, svn_diff_datasource_e datasource) { struct track_tokens_t *srcs = (struct track_tokens_t *) baton; struct track_tokens_t *src = &srcs[datasource_to_index(datasource)]; *token = NULL; if (src->index < src->num_tracks) *token = src->tracks[src->index++]; return SVN_NO_ERROR; }
/* Implements svn_diff_fns2_t::datasource_get_next_token */ static svn_error_t * datasource_get_next_token(apr_uint32_t *hash, void **token, void *baton, svn_diff_datasource_e datasource) { diff_mem_baton_t *mem_baton = baton; source_tokens_t *src = &(mem_baton->sources[datasource_to_index(datasource)]); if (src->tokens->nelts > src->next_token) { /* There are actually tokens to be returned */ char *buf = mem_baton->normalization_buf[0]; svn_string_t *tok = (*token) = APR_ARRAY_IDX(src->tokens, src->next_token, svn_string_t *); apr_off_t len = tok->len; svn_diff__normalize_state_t state = svn_diff__normalize_state_normal; svn_diff__normalize_buffer(&buf, &len, &state, tok->data, mem_baton->normalization_options); *hash = svn__adler32(0, buf, len); src->next_token++; }