FreeBSD/contrib/subversion/subversion/svnserve/serve.c
/* Unlock the paths with lock tokens in LOCK_TOKENS, ignoring any errors.
   LOCK_TOKENS contains svn_ra_svn_item_t elements, assumed to be lists. */
Unlock the paths with lock tokens in LOCK_TOKENS, ignoring any errors.
LOCK_TOKENS contains svn_ra_svn_item_t elements, assumed to be lists.
Unlock the paths with lock tokens in LOCK_TOKENS ignoring any errors . LOCK_TOKENS contains svn_ra_svn_item_t elements assumed to be lists .
static svn_error_t *unlock_paths(const apr_array_header_t *lock_tokens,
                                 server_baton_t *sb,
                                 apr_pool_t *pool)
{
  int i;
  apr_pool_t *subpool = svn_pool_create(pool);
  apr_hash_t *targets = apr_hash_make(subpool);
  svn_error_t *err;
  for (i = 0; i < lock_tokens->nelts; ++i)
    {
      svn_ra_svn_item_t *item, *path_item, *token_item;
      const char *path, *token, *full_path;
      item = &APR_ARRAY_IDX(lock_tokens, i, svn_ra_svn_item_t);
      path_item = &APR_ARRAY_IDX(item->u.list, 0, svn_ra_svn_item_t);
      token_item = &APR_ARRAY_IDX(item->u.list, 1, svn_ra_svn_item_t);
      path = path_item->u.string->data;
      full_path = svn_fspath__join(sb->repository->fs_path->data,
                                   svn_relpath_canonicalize(path, subpool),
                                   subpool);
      token = token_item->u.string->data;
      svn_hash_sets(targets, full_path, token);
    }
  err = svn_repos_fs_unlock_many(sb->repository->repos, targets, FALSE,
                                 lock_cb, sb, subpool, subpool);
  log_error(err, sb);
  svn_error_clear(err);
  svn_pool_destroy(subpool);
  return SVN_NO_ERROR;
}
static svn_error_t * unlock_paths ( const apr_array_header_t * lock_tokens , server_baton_t * sb , apr_pool_t * pool ) { int i ; apr_pool_t * subpool = svn_pool_create ( pool ) ; apr_hash_t * targets = apr_hash_make ( subpool ) ; svn_error_t * err ; for ( i = 0 ; i < lock_tokens -> nelts ; ++ i ) { svn_ra_svn_item_t * item , * path_item , * token_item ; const char * path , * token , * full_path ; item = & APR_ARRAY_IDX ( lock_tokens , i , svn_ra_svn_item_t ) ; path_item = & APR_ARRAY_IDX ( item -> u . list , 0 , svn_ra_svn_item_t ) ; token_item = & APR_ARRAY_IDX ( item -> u . list , 1 , svn_ra_svn_item_t ) ; path = path_item -> u . string -> data ; full_path = svn_fspath__join ( sb -> repository -> fs_path -> data , svn_relpath_canonicalize ( path , subpool ) , subpool ) ; token = token_item -> u . string -> data ; svn_hash_sets ( targets , full_path , token ) ; } err = svn_repos_fs_unlock_many ( sb -> repository -> repos , targets , FALSE , lock_cb , sb , subpool , subpool ) ; log_error ( err , sb ) ; svn_error_clear ( err ) ; svn_pool_destroy ( subpool ) ; return SVN_NO_ERROR ; }
Unlock the paths with lock tokens in LOCK_TOKENS, ignoring any errors.
Unlock the paths with lock tokens in LOCK_TOKENS ignoring any errors .
/* The lock may have become defunct after the commit, so ignore such
     errors. */