1 /* 2 * Copyright (c) 2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef OHOS_FILE_FS_UNI_ERROR_H 17 #define OHOS_FILE_FS_UNI_ERROR_H 18 19 #include "macro.h" 20 #include "uv.h" 21 22 #include <cstring> 23 #include <string> 24 #include <unordered_map> 25 26 namespace OHOS { 27 namespace CJSystemapi { 28 namespace FileFs { 29 30 constexpr int UNKNOWN_ERR = -1; 31 constexpr int ERRNO_NOERR = 0; 32 constexpr int STORAGE_SERVICE_SYS_CAP_TAG = 13600000; 33 constexpr int FILEIO_SYS_CAP_TAG = 13900000; 34 constexpr int USER_FILE_MANAGER_SYS_CAP_TAG = 14000000; 35 constexpr int USER_FILE_SERVICE_SYS_CAP_TAG = 14300000; 36 constexpr int DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG = 22400000; 37 constexpr int SOFTBUS_TRANS_FILE_PERMISSION_DENIED = -426114938; 38 constexpr int SOFTBUS_TRANS_FILE_DISK_QUOTA_EXCEEDED = -426114937; 39 constexpr int SOFTBUS_TRANS_FILE_NO_MEMORY = -426114936; 40 constexpr int SOFTBUS_TRANS_FILE_NETWORK_ERROR = -426114935; 41 constexpr int SOFTBUS_TRANS_FILE_NOT_FOUND = -426114934; 42 constexpr int SOFTBUS_TRANS_FILE_EXISTED = -426114933; 43 constexpr int DFS_CANCEL_SUCCESS = 204; 44 45 enum ErrCodeSuffixOfFileIO { 46 E_PERM = 1, 47 E_NOENT, 48 E_SRCH, 49 E_INTR, 50 E_IO, 51 E_NXIO, 52 E_2BIG, 53 E_BADF, 54 E_CHILD, 55 E_AGAIN, 56 E_NOMEM, 57 E_ACCES, 58 E_FAULT, 59 E_BUSY, 60 E_EXIST, 61 E_XDEV, 62 E_NODEV, 63 E_NOTDIR, 64 E_ISDIR, 65 E_INVAL, 66 E_NFILE, 67 E_MFILE, 68 E_TXTBSY, 69 E_FBIG, 70 E_NOSPC, 71 E_SPIPE, 72 E_ROFS, 73 E_MLINK, 74 E_DEADLK, 75 E_NAMETOOLONG, 76 E_NOSYS, 77 E_NOTEMPTY, 78 E_LOOP, 79 E_WOULDBLOCK, 80 E_BADR, 81 E_NOSTR, 82 E_NODATA, 83 E_OVERFLOW, 84 E_BADFD, 85 E_RESTART, 86 E_DQUOT, 87 E_UKERR, 88 E_NOLCK 89 }; 90 91 enum ErrCodeSuffixOfUserFileManager { 92 E_DISPLAYNAME = 1, 93 E_URIM, 94 E_SUFFIX, 95 E_TRASH, 96 E_OPEN_MODE, 97 E_NOT_ALBUM, 98 E_ROOT_DIR, 99 E_MOVE_DENIED, 100 E_RENAME_DENIED, 101 E_RELATIVEPATH, 102 E_INNER_FAIL, 103 E_FILE_TYPE, 104 E_FILE_KEY, 105 E_INPUT 106 }; 107 108 enum ErrCodeSuffixOfStorageService { 109 E_IPCSS = 1, 110 E_NOTSUPPORTEDFS, 111 E_MOUNT, 112 E_UNMOUNT, 113 E_VOLUMESTATE, 114 E_PREPARE, 115 E_DELETE, 116 E_NOOBJECT, 117 E_OUTOFRANGE 118 }; 119 120 enum ErrCodeSuffixOfUserFileService { 121 E_IPCS = 1, 122 E_URIS, 123 E_GETINFO, 124 E_GETRESULT, 125 E_REGISTER, 126 E_REMOVE, 127 E_INIT, 128 E_NOTIFY, 129 E_CONNECT 130 }; 131 132 enum ErrCodeSuffixOfDistributedFile { 133 E_CLOUD_NOT_READY = 1, 134 E_NETWORK_ERR, 135 E_BATTERY_WARNING 136 }; 137 138 enum CommonErrCode { 139 E_PERMISSION = 201, 140 E_PERMISSION_SYS = 202, 141 E_PARAMS = 401, 142 E_DEVICENOTSUPPORT = 801, 143 E_OSNOTSUPPORT = 901 144 }; 145 146 static inline std::unordered_map<int, int> softbusErr2ErrCodeTable { 147 {SOFTBUS_TRANS_FILE_PERMISSION_DENIED, EPERM}, 148 {SOFTBUS_TRANS_FILE_DISK_QUOTA_EXCEEDED, EIO}, 149 {SOFTBUS_TRANS_FILE_NO_MEMORY, ENOMEM}, 150 {SOFTBUS_TRANS_FILE_NETWORK_ERROR, ENETUNREACH}, 151 {SOFTBUS_TRANS_FILE_NOT_FOUND, ENOENT}, 152 {SOFTBUS_TRANS_FILE_EXISTED, EEXIST}, 153 {DFS_CANCEL_SUCCESS, ECANCELED}, 154 }; 155 156 const std::unordered_map<std::string, int> uvCode2ErrCodeTable { 157 { "EPERM", EPERM }, 158 { "ENOENT", ENOENT }, 159 { "ESRCH", ESRCH }, 160 { "EINTR", EINTR }, 161 { "EIO", EIO }, 162 { "ENXIO", ENXIO }, 163 { "E2BIG", E2BIG }, 164 { "EBADF", EBADF }, 165 { "ECHILD", ECHILD }, 166 { "EAGAIN", EAGAIN }, 167 { "ENOMEM", ENOMEM }, 168 { "EACCES", EACCES }, 169 { "EFAULT", EFAULT }, 170 { "EBUSY", EBUSY }, 171 { "EEXIST", EEXIST }, 172 { "EXDEV", EXDEV }, 173 { "ENODEV", ENODEV }, 174 { "ENOTDIR", ENOTDIR }, 175 { "EISDIR", EISDIR }, 176 { "EINVAL", EINVAL }, 177 { "ENFILE", ENFILE }, 178 { "EMFILE", EMFILE }, 179 { "ETXTBSY", ETXTBSY }, 180 { "EFBIG", EFBIG }, 181 { "ENOSPC", ENOSPC }, 182 { "ESPIPE", ESPIPE }, 183 { "EROFS", EROFS }, 184 { "EMLINK", EMLINK }, 185 { "EDEADLK", EDEADLK }, 186 { "ENAMETOOLONG", ENAMETOOLONG }, 187 { "ENOSYS", ENOSYS }, 188 { "ENOTEMPTY", ENOTEMPTY }, 189 { "ELOOP", ELOOP }, 190 { "EWOULDBLOCK", EWOULDBLOCK }, 191 { "EBADR", EBADR }, 192 { "ENOSTR", ENOSTR }, 193 { "ENODATA", ENODATA }, 194 { "EOVERFLOW", EOVERFLOW }, 195 { "EBADFD", EBADFD }, 196 { "ERESTART", ERESTART }, 197 { "EDQUOT", EDQUOT }, 198 }; 199 200 inline std::unordered_map<int, int32_t> errCodeTable { 201 { EPERM, FILEIO_SYS_CAP_TAG + E_PERM}, 202 { ENOENT, FILEIO_SYS_CAP_TAG + E_NOENT}, 203 { ESRCH, FILEIO_SYS_CAP_TAG + E_SRCH}, 204 { EINTR, FILEIO_SYS_CAP_TAG + E_INTR}, 205 { EIO, FILEIO_SYS_CAP_TAG + E_IO}, 206 { ENXIO, FILEIO_SYS_CAP_TAG + E_NXIO}, 207 { E2BIG, FILEIO_SYS_CAP_TAG + E_2BIG}, 208 { EBADF, FILEIO_SYS_CAP_TAG + E_BADF}, 209 { ECHILD, FILEIO_SYS_CAP_TAG + E_CHILD}, 210 { EAGAIN, FILEIO_SYS_CAP_TAG + E_AGAIN}, 211 { ENOMEM, FILEIO_SYS_CAP_TAG + E_NOMEM}, 212 { EACCES, FILEIO_SYS_CAP_TAG + E_ACCES}, 213 { EFAULT, FILEIO_SYS_CAP_TAG + E_FAULT}, 214 { EBUSY, FILEIO_SYS_CAP_TAG + E_BUSY}, 215 { EEXIST, FILEIO_SYS_CAP_TAG + E_EXIST}, 216 { EXDEV, FILEIO_SYS_CAP_TAG + E_XDEV}, 217 { ENODEV, FILEIO_SYS_CAP_TAG + E_NODEV}, 218 { ENOTDIR, FILEIO_SYS_CAP_TAG + E_NOTDIR}, 219 { EISDIR, FILEIO_SYS_CAP_TAG + E_ISDIR}, 220 { EINVAL, FILEIO_SYS_CAP_TAG + E_INVAL}, 221 { ENFILE, FILEIO_SYS_CAP_TAG + E_NFILE}, 222 { EMFILE, FILEIO_SYS_CAP_TAG + E_MFILE}, 223 { ETXTBSY, FILEIO_SYS_CAP_TAG + E_TXTBSY}, 224 { EFBIG, FILEIO_SYS_CAP_TAG + E_FBIG}, 225 { ENOSPC, FILEIO_SYS_CAP_TAG + E_NOSPC}, 226 { ESPIPE, FILEIO_SYS_CAP_TAG + E_SPIPE}, 227 { EROFS, FILEIO_SYS_CAP_TAG + E_ROFS}, 228 { EMLINK, FILEIO_SYS_CAP_TAG + E_MLINK}, 229 { EDEADLK, FILEIO_SYS_CAP_TAG + E_DEADLK}, 230 { ENAMETOOLONG, FILEIO_SYS_CAP_TAG + E_NAMETOOLONG}, 231 { ENOSYS, FILEIO_SYS_CAP_TAG + E_NOSYS}, 232 { ENOTEMPTY, FILEIO_SYS_CAP_TAG + E_NOTEMPTY}, 233 { ELOOP, FILEIO_SYS_CAP_TAG + E_LOOP}, 234 { EWOULDBLOCK, FILEIO_SYS_CAP_TAG + E_WOULDBLOCK}, 235 { EBADR, FILEIO_SYS_CAP_TAG + E_BADR}, 236 { ENOSTR, FILEIO_SYS_CAP_TAG + E_NOSTR}, 237 { ENODATA, FILEIO_SYS_CAP_TAG + E_NODATA}, 238 { EOVERFLOW, FILEIO_SYS_CAP_TAG + E_OVERFLOW}, 239 { EBADFD, FILEIO_SYS_CAP_TAG + E_BADFD}, 240 { ERESTART, FILEIO_SYS_CAP_TAG + E_RESTART}, 241 { EDQUOT, FILEIO_SYS_CAP_TAG + E_DQUOT}, 242 { UNKNOWN_ERR, FILEIO_SYS_CAP_TAG + E_UKERR}, 243 { ENOLCK, FILEIO_SYS_CAP_TAG + E_NOLCK}, 244 { FILEIO_SYS_CAP_TAG + E_PERM, FILEIO_SYS_CAP_TAG + E_PERM}, 245 { FILEIO_SYS_CAP_TAG + E_NOENT, FILEIO_SYS_CAP_TAG + E_NOENT}, 246 { FILEIO_SYS_CAP_TAG + E_SRCH, FILEIO_SYS_CAP_TAG + E_SRCH}, 247 { FILEIO_SYS_CAP_TAG + E_INTR, FILEIO_SYS_CAP_TAG + E_INTR}, 248 { FILEIO_SYS_CAP_TAG + E_IO, FILEIO_SYS_CAP_TAG + E_IO}, 249 { FILEIO_SYS_CAP_TAG + E_NXIO, FILEIO_SYS_CAP_TAG + E_NXIO}, 250 { FILEIO_SYS_CAP_TAG + E_2BIG, FILEIO_SYS_CAP_TAG + E_2BIG}, 251 { FILEIO_SYS_CAP_TAG + E_BADF, FILEIO_SYS_CAP_TAG + E_BADF}, 252 { FILEIO_SYS_CAP_TAG + E_CHILD, FILEIO_SYS_CAP_TAG + E_CHILD}, 253 { FILEIO_SYS_CAP_TAG + E_AGAIN, FILEIO_SYS_CAP_TAG + E_AGAIN}, 254 { FILEIO_SYS_CAP_TAG + E_NOMEM, FILEIO_SYS_CAP_TAG + E_NOMEM}, 255 { FILEIO_SYS_CAP_TAG + E_ACCES, FILEIO_SYS_CAP_TAG + E_ACCES}, 256 { FILEIO_SYS_CAP_TAG + E_FAULT, FILEIO_SYS_CAP_TAG + E_FAULT}, 257 { FILEIO_SYS_CAP_TAG + E_BUSY, FILEIO_SYS_CAP_TAG + E_BUSY}, 258 { FILEIO_SYS_CAP_TAG + E_EXIST, FILEIO_SYS_CAP_TAG + E_EXIST}, 259 { FILEIO_SYS_CAP_TAG + E_XDEV, FILEIO_SYS_CAP_TAG + E_XDEV}, 260 { FILEIO_SYS_CAP_TAG + E_NODEV, FILEIO_SYS_CAP_TAG + E_NODEV}, 261 { FILEIO_SYS_CAP_TAG + E_NOTDIR, FILEIO_SYS_CAP_TAG + E_NOTDIR}, 262 { FILEIO_SYS_CAP_TAG + E_ISDIR, FILEIO_SYS_CAP_TAG + E_ISDIR}, 263 { FILEIO_SYS_CAP_TAG + E_INVAL, FILEIO_SYS_CAP_TAG + E_INVAL}, 264 { FILEIO_SYS_CAP_TAG + E_NFILE, FILEIO_SYS_CAP_TAG + E_NFILE}, 265 { FILEIO_SYS_CAP_TAG + E_MFILE, FILEIO_SYS_CAP_TAG + E_MFILE}, 266 { FILEIO_SYS_CAP_TAG + E_TXTBSY, FILEIO_SYS_CAP_TAG + E_TXTBSY}, 267 { FILEIO_SYS_CAP_TAG + E_FBIG, FILEIO_SYS_CAP_TAG + E_FBIG}, 268 { FILEIO_SYS_CAP_TAG + E_NOSPC, FILEIO_SYS_CAP_TAG + E_NOSPC}, 269 { FILEIO_SYS_CAP_TAG + E_SPIPE, FILEIO_SYS_CAP_TAG + E_SPIPE}, 270 { FILEIO_SYS_CAP_TAG + E_ROFS, FILEIO_SYS_CAP_TAG + E_ROFS}, 271 { FILEIO_SYS_CAP_TAG + E_MLINK, FILEIO_SYS_CAP_TAG + E_MLINK}, 272 { FILEIO_SYS_CAP_TAG + E_DEADLK, FILEIO_SYS_CAP_TAG + E_DEADLK}, 273 { FILEIO_SYS_CAP_TAG + E_NAMETOOLONG, FILEIO_SYS_CAP_TAG + E_NAMETOOLONG}, 274 { FILEIO_SYS_CAP_TAG + E_NOSYS, FILEIO_SYS_CAP_TAG + E_NOSYS}, 275 { FILEIO_SYS_CAP_TAG + E_NOTEMPTY, FILEIO_SYS_CAP_TAG + E_NOTEMPTY}, 276 { FILEIO_SYS_CAP_TAG + E_LOOP, FILEIO_SYS_CAP_TAG + E_LOOP}, 277 { FILEIO_SYS_CAP_TAG + E_WOULDBLOCK, FILEIO_SYS_CAP_TAG + E_WOULDBLOCK}, 278 { FILEIO_SYS_CAP_TAG + E_BADR, FILEIO_SYS_CAP_TAG + E_BADR}, 279 { FILEIO_SYS_CAP_TAG + E_NOSTR, FILEIO_SYS_CAP_TAG + E_NOSTR}, 280 { FILEIO_SYS_CAP_TAG + E_NODATA, FILEIO_SYS_CAP_TAG + E_NODATA}, 281 { FILEIO_SYS_CAP_TAG + E_OVERFLOW, FILEIO_SYS_CAP_TAG + E_OVERFLOW}, 282 { FILEIO_SYS_CAP_TAG + E_BADFD, FILEIO_SYS_CAP_TAG + E_BADFD}, 283 { FILEIO_SYS_CAP_TAG + E_RESTART, FILEIO_SYS_CAP_TAG + E_RESTART}, 284 { FILEIO_SYS_CAP_TAG + E_DQUOT, FILEIO_SYS_CAP_TAG + E_DQUOT}, 285 { FILEIO_SYS_CAP_TAG + E_UKERR, FILEIO_SYS_CAP_TAG + E_UKERR}, 286 { FILEIO_SYS_CAP_TAG + E_NOLCK, FILEIO_SYS_CAP_TAG + E_NOLCK}, 287 { USER_FILE_MANAGER_SYS_CAP_TAG + E_DISPLAYNAME, USER_FILE_MANAGER_SYS_CAP_TAG + E_DISPLAYNAME}, 288 { USER_FILE_MANAGER_SYS_CAP_TAG + E_URIM, USER_FILE_MANAGER_SYS_CAP_TAG + E_URIM}, 289 { USER_FILE_MANAGER_SYS_CAP_TAG + E_SUFFIX, USER_FILE_MANAGER_SYS_CAP_TAG + E_SUFFIX}, 290 { USER_FILE_MANAGER_SYS_CAP_TAG + E_TRASH, USER_FILE_MANAGER_SYS_CAP_TAG + E_TRASH}, 291 { USER_FILE_MANAGER_SYS_CAP_TAG + E_OPEN_MODE, USER_FILE_MANAGER_SYS_CAP_TAG + E_OPEN_MODE}, 292 { USER_FILE_MANAGER_SYS_CAP_TAG + E_NOT_ALBUM, USER_FILE_MANAGER_SYS_CAP_TAG + E_NOT_ALBUM}, 293 { USER_FILE_MANAGER_SYS_CAP_TAG + E_ROOT_DIR, USER_FILE_MANAGER_SYS_CAP_TAG + E_ROOT_DIR}, 294 { USER_FILE_MANAGER_SYS_CAP_TAG + E_MOVE_DENIED, USER_FILE_MANAGER_SYS_CAP_TAG + E_MOVE_DENIED}, 295 { USER_FILE_MANAGER_SYS_CAP_TAG + E_RENAME_DENIED, USER_FILE_MANAGER_SYS_CAP_TAG + E_RENAME_DENIED}, 296 { USER_FILE_MANAGER_SYS_CAP_TAG + E_RELATIVEPATH, USER_FILE_MANAGER_SYS_CAP_TAG + E_RELATIVEPATH}, 297 { USER_FILE_MANAGER_SYS_CAP_TAG + E_INNER_FAIL, USER_FILE_MANAGER_SYS_CAP_TAG + E_INNER_FAIL}, 298 { USER_FILE_MANAGER_SYS_CAP_TAG + E_FILE_TYPE, USER_FILE_MANAGER_SYS_CAP_TAG + E_FILE_TYPE}, 299 { USER_FILE_MANAGER_SYS_CAP_TAG + E_FILE_KEY, USER_FILE_MANAGER_SYS_CAP_TAG + E_FILE_KEY}, 300 { USER_FILE_MANAGER_SYS_CAP_TAG + E_INPUT, USER_FILE_MANAGER_SYS_CAP_TAG + E_INPUT}, 301 { STORAGE_SERVICE_SYS_CAP_TAG + E_IPCSS, STORAGE_SERVICE_SYS_CAP_TAG + E_IPCSS}, 302 { STORAGE_SERVICE_SYS_CAP_TAG + E_NOTSUPPORTEDFS, STORAGE_SERVICE_SYS_CAP_TAG + E_NOTSUPPORTEDFS}, 303 { STORAGE_SERVICE_SYS_CAP_TAG + E_MOUNT, STORAGE_SERVICE_SYS_CAP_TAG + E_MOUNT}, 304 { STORAGE_SERVICE_SYS_CAP_TAG + E_UNMOUNT, STORAGE_SERVICE_SYS_CAP_TAG + E_UNMOUNT}, 305 { STORAGE_SERVICE_SYS_CAP_TAG + E_VOLUMESTATE, STORAGE_SERVICE_SYS_CAP_TAG + E_VOLUMESTATE}, 306 { STORAGE_SERVICE_SYS_CAP_TAG + E_PREPARE, STORAGE_SERVICE_SYS_CAP_TAG + E_PREPARE}, 307 { STORAGE_SERVICE_SYS_CAP_TAG + E_DELETE, STORAGE_SERVICE_SYS_CAP_TAG + E_DELETE}, 308 { STORAGE_SERVICE_SYS_CAP_TAG + E_NOOBJECT, STORAGE_SERVICE_SYS_CAP_TAG + E_NOOBJECT}, 309 { STORAGE_SERVICE_SYS_CAP_TAG + E_OUTOFRANGE, STORAGE_SERVICE_SYS_CAP_TAG + E_OUTOFRANGE}, 310 { STORAGE_SERVICE_SYS_CAP_TAG + E_NOOBJECT, STORAGE_SERVICE_SYS_CAP_TAG + E_NOOBJECT}, 311 { USER_FILE_SERVICE_SYS_CAP_TAG + E_IPCS, USER_FILE_SERVICE_SYS_CAP_TAG + E_IPCS}, 312 { USER_FILE_SERVICE_SYS_CAP_TAG + E_URIS, USER_FILE_SERVICE_SYS_CAP_TAG + E_URIS}, 313 { USER_FILE_SERVICE_SYS_CAP_TAG + E_GETINFO, USER_FILE_SERVICE_SYS_CAP_TAG + E_GETINFO}, 314 { USER_FILE_SERVICE_SYS_CAP_TAG + E_GETRESULT, USER_FILE_SERVICE_SYS_CAP_TAG + E_GETRESULT}, 315 { USER_FILE_SERVICE_SYS_CAP_TAG + E_REGISTER, USER_FILE_SERVICE_SYS_CAP_TAG + E_REGISTER}, 316 { USER_FILE_SERVICE_SYS_CAP_TAG + E_REMOVE, USER_FILE_SERVICE_SYS_CAP_TAG + E_REMOVE}, 317 { USER_FILE_SERVICE_SYS_CAP_TAG + E_INIT, USER_FILE_SERVICE_SYS_CAP_TAG + E_INIT}, 318 { USER_FILE_SERVICE_SYS_CAP_TAG + E_NOTIFY, USER_FILE_SERVICE_SYS_CAP_TAG + E_NOTIFY}, 319 { USER_FILE_SERVICE_SYS_CAP_TAG + E_CONNECT, USER_FILE_SERVICE_SYS_CAP_TAG + E_CONNECT}, 320 { E_PERMISSION, E_PERMISSION}, 321 { E_PERMISSION_SYS, E_PERMISSION_SYS}, 322 { E_PARAMS, E_PARAMS}, 323 { E_DEVICENOTSUPPORT, E_DEVICENOTSUPPORT}, 324 { E_OSNOTSUPPORT, E_OSNOTSUPPORT}, 325 { DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG + E_CLOUD_NOT_READY, DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG + E_CLOUD_NOT_READY}, 326 { DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG + E_NETWORK_ERR, DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG + E_NETWORK_ERR}, 327 { DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG + E_BATTERY_WARNING, DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG + E_BATTERY_WARNING}, 328 }; 329 330 int ConvertUVCode2ErrCode(int errCode); 331 332 int GetErrorCode(int errCode); 333 334 } 335 } 336 } 337 #endif // OHOS_FILE_FS_UNI_ERROR_H