1/* 2 * err.c : implementation of fs-private error functions 3 * 4 * ==================================================================== 5 * Licensed to the Apache Software Foundation (ASF) under one 6 * or more contributor license agreements. See the NOTICE file 7 * distributed with this work for additional information 8 * regarding copyright ownership. The ASF licenses this file 9 * to you under the Apache License, Version 2.0 (the 10 * "License"); you may not use this file except in compliance 11 * with the License. You may obtain a copy of the License at 12 * 13 * http://www.apache.org/licenses/LICENSE-2.0 14 * 15 * Unless required by applicable law or agreed to in writing, 16 * software distributed under the License is distributed on an 17 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 18 * KIND, either express or implied. See the License for the 19 * specific language governing permissions and limitations 20 * under the License. 21 * ==================================================================== 22 */ 23 24 25 26#include <stdlib.h> 27#include <stdarg.h> 28 29#include "svn_private_config.h" 30#include "svn_fs.h" 31#include "err.h" 32#include "id.h" 33 34#include "../libsvn_fs/fs-loader.h" 35 36 37 38/* Building common error objects. */ 39 40 41svn_error_t * 42svn_fs_base__err_corrupt_fs_revision(svn_fs_t *fs, svn_revnum_t rev) 43{ 44 return svn_error_createf 45 (SVN_ERR_FS_CORRUPT, 0, 46 _("Corrupt filesystem revision %ld in filesystem '%s'"), 47 rev, fs->path); 48} 49 50 51svn_error_t * 52svn_fs_base__err_dangling_id(svn_fs_t *fs, const svn_fs_id_t *id) 53{ 54 svn_string_t *id_str = svn_fs_base__id_unparse(id, fs->pool); 55 return svn_error_createf 56 (SVN_ERR_FS_ID_NOT_FOUND, 0, 57 _("Reference to non-existent node '%s' in filesystem '%s'"), 58 id_str->data, fs->path); 59} 60 61 62svn_error_t * 63svn_fs_base__err_dangling_rev(svn_fs_t *fs, svn_revnum_t rev) 64{ 65 /* Log the UUID as this error may be reported to the client. */ 66 return svn_error_createf 67 (SVN_ERR_FS_NO_SUCH_REVISION, 0, 68 _("No such revision %ld in filesystem '%s'"), 69 rev, fs->uuid); 70} 71 72 73svn_error_t * 74svn_fs_base__err_corrupt_txn(svn_fs_t *fs, 75 const char *txn) 76{ 77 return 78 svn_error_createf 79 (SVN_ERR_FS_CORRUPT, 0, 80 _("Corrupt entry in 'transactions' table for '%s'" 81 " in filesystem '%s'"), txn, fs->path); 82} 83 84 85svn_error_t * 86svn_fs_base__err_corrupt_copy(svn_fs_t *fs, const char *copy_id) 87{ 88 return 89 svn_error_createf 90 (SVN_ERR_FS_CORRUPT, 0, 91 _("Corrupt entry in 'copies' table for '%s' in filesystem '%s'"), 92 copy_id, fs->path); 93} 94 95 96svn_error_t * 97svn_fs_base__err_no_such_txn(svn_fs_t *fs, const char *txn) 98{ 99 return 100 svn_error_createf 101 (SVN_ERR_FS_NO_SUCH_TRANSACTION, 0, 102 _("No transaction named '%s' in filesystem '%s'"), 103 txn, fs->path); 104} 105 106 107svn_error_t * 108svn_fs_base__err_txn_not_mutable(svn_fs_t *fs, const char *txn) 109{ 110 return 111 svn_error_createf 112 (SVN_ERR_FS_TRANSACTION_NOT_MUTABLE, 0, 113 _("Cannot modify transaction named '%s' in filesystem '%s'"), 114 txn, fs->path); 115} 116 117 118svn_error_t * 119svn_fs_base__err_no_such_copy(svn_fs_t *fs, const char *copy_id) 120{ 121 return 122 svn_error_createf 123 (SVN_ERR_FS_NO_SUCH_COPY, 0, 124 _("No copy with id '%s' in filesystem '%s'"), copy_id, fs->path); 125} 126 127 128svn_error_t * 129svn_fs_base__err_bad_lock_token(svn_fs_t *fs, const char *lock_token) 130{ 131 return 132 svn_error_createf 133 (SVN_ERR_FS_BAD_LOCK_TOKEN, 0, 134 _("Token '%s' does not point to any existing lock in filesystem '%s'"), 135 lock_token, fs->path); 136} 137 138svn_error_t * 139svn_fs_base__err_no_lock_token(svn_fs_t *fs, const char *path) 140{ 141 return 142 svn_error_createf 143 (SVN_ERR_FS_NO_LOCK_TOKEN, 0, 144 _("No token given for path '%s' in filesystem '%s'"), path, fs->path); 145} 146 147svn_error_t * 148svn_fs_base__err_corrupt_lock(svn_fs_t *fs, const char *lock_token) 149{ 150 return 151 svn_error_createf 152 (SVN_ERR_FS_CORRUPT, 0, 153 _("Corrupt lock in 'locks' table for '%s' in filesystem '%s'"), 154 lock_token, fs->path); 155} 156 157svn_error_t * 158svn_fs_base__err_no_such_node_origin(svn_fs_t *fs, const char *node_id) 159{ 160 return 161 svn_error_createf 162 (SVN_ERR_FS_NO_SUCH_NODE_ORIGIN, 0, 163 _("No record in 'node-origins' table for node id '%s' in " 164 "filesystem '%s'"), node_id, fs->path); 165} 166 167svn_error_t * 168svn_fs_base__err_no_such_checksum_rep(svn_fs_t *fs, svn_checksum_t *checksum) 169{ 170 return 171 svn_error_createf 172 (SVN_ERR_FS_NO_SUCH_CHECKSUM_REP, 0, 173 _("No record in 'checksum-reps' table for checksum '%s' in " 174 "filesystem '%s'"), svn_checksum_to_cstring_display(checksum, 175 fs->pool), 176 fs->path); 177} 178