access.c revision 299742
1251875Speter/*
2251875Speter * access.c:  shared code to manipulate svn_fs_access_t objects
3251875Speter *
4251875Speter * ====================================================================
5251875Speter *    Licensed to the Apache Software Foundation (ASF) under one
6251875Speter *    or more contributor license agreements.  See the NOTICE file
7251875Speter *    distributed with this work for additional information
8251875Speter *    regarding copyright ownership.  The ASF licenses this file
9251875Speter *    to you under the Apache License, Version 2.0 (the
10251875Speter *    "License"); you may not use this file except in compliance
11251875Speter *    with the License.  You may obtain a copy of the License at
12251875Speter *
13251875Speter *      http://www.apache.org/licenses/LICENSE-2.0
14251875Speter *
15251875Speter *    Unless required by applicable law or agreed to in writing,
16251875Speter *    software distributed under the License is distributed on an
17251875Speter *    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
18251875Speter *    KIND, either express or implied.  See the License for the
19251875Speter *    specific language governing permissions and limitations
20251875Speter *    under the License.
21251875Speter * ====================================================================
22251875Speter */
23251875Speter
24251875Speter
25251875Speter#include <apr_hash.h>
26251875Speter
27251875Speter#include "svn_hash.h"
28251875Speter#include "svn_types.h"
29251875Speter#include "svn_pools.h"
30251875Speter#include "svn_fs.h"
31251875Speter#include "private/svn_fs_private.h"
32251875Speter
33251875Speter#include "fs-loader.h"
34251875Speter
35251875Speter
36251875Speter
37251875Spetersvn_error_t *
38251875Spetersvn_fs_create_access(svn_fs_access_t **access_ctx,
39251875Speter                     const char *username,
40251875Speter                     apr_pool_t *pool)
41251875Speter{
42251875Speter  svn_fs_access_t *ac;
43251875Speter
44251875Speter  SVN_ERR_ASSERT(username != NULL);
45251875Speter
46251875Speter  ac = apr_pcalloc(pool, sizeof(*ac));
47251875Speter  ac->username = apr_pstrdup(pool, username);
48251875Speter  ac->lock_tokens = apr_hash_make(pool);
49251875Speter  *access_ctx = ac;
50251875Speter
51251875Speter  return SVN_NO_ERROR;
52251875Speter}
53251875Speter
54251875Speter
55251875Spetersvn_error_t *
56251875Spetersvn_fs_set_access(svn_fs_t *fs,
57251875Speter                  svn_fs_access_t *access_ctx)
58251875Speter{
59251875Speter  fs->access_ctx = access_ctx;
60251875Speter
61251875Speter  return SVN_NO_ERROR;
62251875Speter}
63251875Speter
64251875Speter
65251875Spetersvn_error_t *
66251875Spetersvn_fs_get_access(svn_fs_access_t **access_ctx,
67251875Speter                  svn_fs_t *fs)
68251875Speter{
69269847Speter  *access_ctx = fs->access_ctx;
70251875Speter
71251875Speter  return SVN_NO_ERROR;
72251875Speter}
73251875Speter
74251875Speter
75251875Spetersvn_error_t *
76251875Spetersvn_fs_access_get_username(const char **username,
77251875Speter                           svn_fs_access_t *access_ctx)
78251875Speter{
79251875Speter  *username = access_ctx->username;
80251875Speter
81251875Speter  return SVN_NO_ERROR;
82251875Speter}
83251875Speter
84251875Speter
85251875Spetersvn_error_t *
86251875Spetersvn_fs_access_add_lock_token2(svn_fs_access_t *access_ctx,
87251875Speter                              const char *path,
88251875Speter                              const char *token)
89251875Speter{
90251875Speter  svn_hash_sets(access_ctx->lock_tokens, token, path);
91251875Speter  return SVN_NO_ERROR;
92251875Speter}
93251875Speter
94251875Speterapr_hash_t *
95251875Spetersvn_fs__access_get_lock_tokens(svn_fs_access_t *access_ctx)
96251875Speter{
97251875Speter  return access_ctx->lock_tokens;
98251875Speter}
99251875Speter