Пример #1
0
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;
}
Пример #2
0
/* 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++;
    }