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 STORAGE_SERVICE_SYS_CAP_TAG = 13600000; 32 constexpr int FILEIO_SYS_CAP_TAG = 13900000; 33 constexpr int USER_FILE_MANAGER_SYS_CAP_TAG = 14000000; 34 constexpr int USER_FILE_SERVICE_SYS_CAP_TAG = 14300000; 35 constexpr int DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG = 22400000; 36 37 enum ErrCodeSuffixOfFileIO { 38 E_PERM = 1, 39 E_NOENT, 40 E_SRCH, 41 E_INTR, 42 E_IO, 43 E_NXIO, 44 E_2BIG, 45 E_BADF, 46 E_CHILD, 47 E_AGAIN, 48 E_NOMEM, 49 E_ACCES, 50 E_FAULT, 51 E_BUSY, 52 E_EXIST, 53 E_XDEV, 54 E_NODEV, 55 E_NOTDIR, 56 E_ISDIR, 57 E_INVAL, 58 E_NFILE, 59 E_MFILE, 60 E_TXTBSY, 61 E_FBIG, 62 E_NOSPC, 63 E_SPIPE, 64 E_ROFS, 65 E_MLINK, 66 E_DEADLK, 67 E_NAMETOOLONG, 68 E_NOSYS, 69 E_NOTEMPTY, 70 E_LOOP, 71 E_WOULDBLOCK, 72 E_BADR, 73 E_NOSTR, 74 E_NODATA, 75 E_OVERFLOW, 76 E_BADFD, 77 E_RESTART, 78 E_DQUOT, 79 E_UKERR, 80 E_NOLCK 81 }; 82 83 enum ErrCodeSuffixOfUserFileManager { 84 E_DISPLAYNAME = 1, 85 E_URIM, 86 E_SUFFIX, 87 E_TRASH, 88 E_OPEN_MODE, 89 E_NOT_ALBUM, 90 E_ROOT_DIR, 91 E_MOVE_DENIED, 92 E_RENAME_DENIED, 93 E_RELATIVEPATH, 94 E_INNER_FAIL, 95 E_FILE_TYPE, 96 E_FILE_KEY, 97 E_INPUT 98 }; 99 100 enum ErrCodeSuffixOfStorageService { 101 E_IPCSS = 1, 102 E_NOTSUPPORTEDFS, 103 E_MOUNT, 104 E_UNMOUNT, 105 E_VOLUMESTATE, 106 E_PREPARE, 107 E_DELETE, 108 E_NOOBJECT, 109 E_OUTOFRANGE 110 }; 111 112 enum ErrCodeSuffixOfUserFileService { 113 E_IPCS = 1, 114 E_URIS, 115 E_GETINFO, 116 E_GETRESULT, 117 E_REGISTER, 118 E_REMOVE, 119 E_INIT, 120 E_NOTIFY, 121 E_CONNECT 122 }; 123 124 enum ErrCodeSuffixOfDistributedFile { 125 E_CLOUD_NOT_READY = 1, 126 E_NETWORK_ERR, 127 E_BATTERY_WARNING 128 }; 129 130 enum CommonErrCode { 131 E_PERMISSION = 201, 132 E_PERMISSION_SYS = 202, 133 E_PARAMS = 401, 134 E_DEVICENOTSUPPORT = 801, 135 E_OSNOTSUPPORT = 901 136 }; 137 138 const std::unordered_map<std::string, int> uvCode2ErrCodeTable { 139 { "EPERM", EPERM }, 140 { "ENOENT", ENOENT }, 141 { "ESRCH", ESRCH }, 142 { "EINTR", EINTR }, 143 { "EIO", EIO }, 144 { "ENXIO", ENXIO }, 145 { "E2BIG", E2BIG }, 146 { "EBADF", EBADF }, 147 { "ECHILD", ECHILD }, 148 { "EAGAIN", EAGAIN }, 149 { "ENOMEM", ENOMEM }, 150 { "EACCES", EACCES }, 151 { "EFAULT", EFAULT }, 152 { "EBUSY", EBUSY }, 153 { "EEXIST", EEXIST }, 154 { "EXDEV", EXDEV }, 155 { "ENODEV", ENODEV }, 156 { "ENOTDIR", ENOTDIR }, 157 { "EISDIR", EISDIR }, 158 { "EINVAL", EINVAL }, 159 { "ENFILE", ENFILE }, 160 { "EMFILE", EMFILE }, 161 { "ETXTBSY", ETXTBSY }, 162 { "EFBIG", EFBIG }, 163 { "ENOSPC", ENOSPC }, 164 { "ESPIPE", ESPIPE }, 165 { "EROFS", EROFS }, 166 { "EMLINK", EMLINK }, 167 { "EDEADLK", EDEADLK }, 168 { "ENAMETOOLONG", ENAMETOOLONG }, 169 { "ENOSYS", ENOSYS }, 170 { "ENOTEMPTY", ENOTEMPTY }, 171 { "ELOOP", ELOOP }, 172 { "EWOULDBLOCK", EWOULDBLOCK }, 173 { "EBADR", EBADR }, 174 { "ENOSTR", ENOSTR }, 175 { "ENODATA", ENODATA }, 176 { "EOVERFLOW", EOVERFLOW }, 177 { "EBADFD", EBADFD }, 178 { "ERESTART", ERESTART }, 179 { "EDQUOT", EDQUOT }, 180 }; 181 182 inline std::unordered_map<int, int32_t> errCodeTable { 183 { EPERM, FILEIO_SYS_CAP_TAG + E_PERM}, 184 { ENOENT, FILEIO_SYS_CAP_TAG + E_NOENT}, 185 { ESRCH, FILEIO_SYS_CAP_TAG + E_SRCH}, 186 { EINTR, FILEIO_SYS_CAP_TAG + E_INTR}, 187 { EIO, FILEIO_SYS_CAP_TAG + E_IO}, 188 { ENXIO, FILEIO_SYS_CAP_TAG + E_NXIO}, 189 { E2BIG, FILEIO_SYS_CAP_TAG + E_2BIG}, 190 { EBADF, FILEIO_SYS_CAP_TAG + E_BADF}, 191 { ECHILD, FILEIO_SYS_CAP_TAG + E_CHILD}, 192 { EAGAIN, FILEIO_SYS_CAP_TAG + E_AGAIN}, 193 { ENOMEM, FILEIO_SYS_CAP_TAG + E_NOMEM}, 194 { EACCES, FILEIO_SYS_CAP_TAG + E_ACCES}, 195 { EFAULT, FILEIO_SYS_CAP_TAG + E_FAULT}, 196 { EBUSY, FILEIO_SYS_CAP_TAG + E_BUSY}, 197 { EEXIST, FILEIO_SYS_CAP_TAG + E_EXIST}, 198 { EXDEV, FILEIO_SYS_CAP_TAG + E_XDEV}, 199 { ENODEV, FILEIO_SYS_CAP_TAG + E_NODEV}, 200 { ENOTDIR, FILEIO_SYS_CAP_TAG + E_NOTDIR}, 201 { EISDIR, FILEIO_SYS_CAP_TAG + E_ISDIR}, 202 { EINVAL, FILEIO_SYS_CAP_TAG + E_INVAL}, 203 { ENFILE, FILEIO_SYS_CAP_TAG + E_NFILE}, 204 { EMFILE, FILEIO_SYS_CAP_TAG + E_MFILE}, 205 { ETXTBSY, FILEIO_SYS_CAP_TAG + E_TXTBSY}, 206 { EFBIG, FILEIO_SYS_CAP_TAG + E_FBIG}, 207 { ENOSPC, FILEIO_SYS_CAP_TAG + E_NOSPC}, 208 { ESPIPE, FILEIO_SYS_CAP_TAG + E_SPIPE}, 209 { EROFS, FILEIO_SYS_CAP_TAG + E_ROFS}, 210 { EMLINK, FILEIO_SYS_CAP_TAG + E_MLINK}, 211 { EDEADLK, FILEIO_SYS_CAP_TAG + E_DEADLK}, 212 { ENAMETOOLONG, FILEIO_SYS_CAP_TAG + E_NAMETOOLONG}, 213 { ENOSYS, FILEIO_SYS_CAP_TAG + E_NOSYS}, 214 { ENOTEMPTY, FILEIO_SYS_CAP_TAG + E_NOTEMPTY}, 215 { ELOOP, FILEIO_SYS_CAP_TAG + E_LOOP}, 216 { EWOULDBLOCK, FILEIO_SYS_CAP_TAG + E_WOULDBLOCK}, 217 { EBADR, FILEIO_SYS_CAP_TAG + E_BADR}, 218 { ENOSTR, FILEIO_SYS_CAP_TAG + E_NOSTR}, 219 { ENODATA, FILEIO_SYS_CAP_TAG + E_NODATA}, 220 { EOVERFLOW, FILEIO_SYS_CAP_TAG + E_OVERFLOW}, 221 { EBADFD, FILEIO_SYS_CAP_TAG + E_BADFD}, 222 { ERESTART, FILEIO_SYS_CAP_TAG + E_RESTART}, 223 { EDQUOT, FILEIO_SYS_CAP_TAG + E_DQUOT}, 224 { UNKNOWN_ERR, FILEIO_SYS_CAP_TAG + E_UKERR}, 225 { ENOLCK, FILEIO_SYS_CAP_TAG + E_NOLCK}, 226 { FILEIO_SYS_CAP_TAG + E_PERM, FILEIO_SYS_CAP_TAG + E_PERM}, 227 { FILEIO_SYS_CAP_TAG + E_NOENT, FILEIO_SYS_CAP_TAG + E_NOENT}, 228 { FILEIO_SYS_CAP_TAG + E_SRCH, FILEIO_SYS_CAP_TAG + E_SRCH}, 229 { FILEIO_SYS_CAP_TAG + E_INTR, FILEIO_SYS_CAP_TAG + E_INTR}, 230 { FILEIO_SYS_CAP_TAG + E_IO, FILEIO_SYS_CAP_TAG + E_IO}, 231 { FILEIO_SYS_CAP_TAG + E_NXIO, FILEIO_SYS_CAP_TAG + E_NXIO}, 232 { FILEIO_SYS_CAP_TAG + E_2BIG, FILEIO_SYS_CAP_TAG + E_2BIG}, 233 { FILEIO_SYS_CAP_TAG + E_BADF, FILEIO_SYS_CAP_TAG + E_BADF}, 234 { FILEIO_SYS_CAP_TAG + E_CHILD, FILEIO_SYS_CAP_TAG + E_CHILD}, 235 { FILEIO_SYS_CAP_TAG + E_AGAIN, FILEIO_SYS_CAP_TAG + E_AGAIN}, 236 { FILEIO_SYS_CAP_TAG + E_NOMEM, FILEIO_SYS_CAP_TAG + E_NOMEM}, 237 { FILEIO_SYS_CAP_TAG + E_ACCES, FILEIO_SYS_CAP_TAG + E_ACCES}, 238 { FILEIO_SYS_CAP_TAG + E_FAULT, FILEIO_SYS_CAP_TAG + E_FAULT}, 239 { FILEIO_SYS_CAP_TAG + E_BUSY, FILEIO_SYS_CAP_TAG + E_BUSY}, 240 { FILEIO_SYS_CAP_TAG + E_EXIST, FILEIO_SYS_CAP_TAG + E_EXIST}, 241 { FILEIO_SYS_CAP_TAG + E_XDEV, FILEIO_SYS_CAP_TAG + E_XDEV}, 242 { FILEIO_SYS_CAP_TAG + E_NODEV, FILEIO_SYS_CAP_TAG + E_NODEV}, 243 { FILEIO_SYS_CAP_TAG + E_NOTDIR, FILEIO_SYS_CAP_TAG + E_NOTDIR}, 244 { FILEIO_SYS_CAP_TAG + E_ISDIR, FILEIO_SYS_CAP_TAG + E_ISDIR}, 245 { FILEIO_SYS_CAP_TAG + E_INVAL, FILEIO_SYS_CAP_TAG + E_INVAL}, 246 { FILEIO_SYS_CAP_TAG + E_NFILE, FILEIO_SYS_CAP_TAG + E_NFILE}, 247 { FILEIO_SYS_CAP_TAG + E_MFILE, FILEIO_SYS_CAP_TAG + E_MFILE}, 248 { FILEIO_SYS_CAP_TAG + E_TXTBSY, FILEIO_SYS_CAP_TAG + E_TXTBSY}, 249 { FILEIO_SYS_CAP_TAG + E_FBIG, FILEIO_SYS_CAP_TAG + E_FBIG}, 250 { FILEIO_SYS_CAP_TAG + E_NOSPC, FILEIO_SYS_CAP_TAG + E_NOSPC}, 251 { FILEIO_SYS_CAP_TAG + E_SPIPE, FILEIO_SYS_CAP_TAG + E_SPIPE}, 252 { FILEIO_SYS_CAP_TAG + E_ROFS, FILEIO_SYS_CAP_TAG + E_ROFS}, 253 { FILEIO_SYS_CAP_TAG + E_MLINK, FILEIO_SYS_CAP_TAG + E_MLINK}, 254 { FILEIO_SYS_CAP_TAG + E_DEADLK, FILEIO_SYS_CAP_TAG + E_DEADLK}, 255 { FILEIO_SYS_CAP_TAG + E_NAMETOOLONG, FILEIO_SYS_CAP_TAG + E_NAMETOOLONG}, 256 { FILEIO_SYS_CAP_TAG + E_NOSYS, FILEIO_SYS_CAP_TAG + E_NOSYS}, 257 { FILEIO_SYS_CAP_TAG + E_NOTEMPTY, FILEIO_SYS_CAP_TAG + E_NOTEMPTY}, 258 { FILEIO_SYS_CAP_TAG + E_LOOP, FILEIO_SYS_CAP_TAG + E_LOOP}, 259 { FILEIO_SYS_CAP_TAG + E_WOULDBLOCK, FILEIO_SYS_CAP_TAG + E_WOULDBLOCK}, 260 { FILEIO_SYS_CAP_TAG + E_BADR, FILEIO_SYS_CAP_TAG + E_BADR}, 261 { FILEIO_SYS_CAP_TAG + E_NOSTR, FILEIO_SYS_CAP_TAG + E_NOSTR}, 262 { FILEIO_SYS_CAP_TAG + E_NODATA, FILEIO_SYS_CAP_TAG + E_NODATA}, 263 { FILEIO_SYS_CAP_TAG + E_OVERFLOW, FILEIO_SYS_CAP_TAG + E_OVERFLOW}, 264 { FILEIO_SYS_CAP_TAG + E_BADFD, FILEIO_SYS_CAP_TAG + E_BADFD}, 265 { FILEIO_SYS_CAP_TAG + E_RESTART, FILEIO_SYS_CAP_TAG + E_RESTART}, 266 { FILEIO_SYS_CAP_TAG + E_DQUOT, FILEIO_SYS_CAP_TAG + E_DQUOT}, 267 { FILEIO_SYS_CAP_TAG + E_UKERR, FILEIO_SYS_CAP_TAG + E_UKERR}, 268 { FILEIO_SYS_CAP_TAG + E_NOLCK, FILEIO_SYS_CAP_TAG + E_NOLCK}, 269 { USER_FILE_MANAGER_SYS_CAP_TAG + E_DISPLAYNAME, USER_FILE_MANAGER_SYS_CAP_TAG + E_DISPLAYNAME}, 270 { USER_FILE_MANAGER_SYS_CAP_TAG + E_URIM, USER_FILE_MANAGER_SYS_CAP_TAG + E_URIM}, 271 { USER_FILE_MANAGER_SYS_CAP_TAG + E_SUFFIX, USER_FILE_MANAGER_SYS_CAP_TAG + E_SUFFIX}, 272 { USER_FILE_MANAGER_SYS_CAP_TAG + E_TRASH, USER_FILE_MANAGER_SYS_CAP_TAG + E_TRASH}, 273 { USER_FILE_MANAGER_SYS_CAP_TAG + E_OPEN_MODE, USER_FILE_MANAGER_SYS_CAP_TAG + E_OPEN_MODE}, 274 { USER_FILE_MANAGER_SYS_CAP_TAG + E_NOT_ALBUM, USER_FILE_MANAGER_SYS_CAP_TAG + E_NOT_ALBUM}, 275 { USER_FILE_MANAGER_SYS_CAP_TAG + E_ROOT_DIR, USER_FILE_MANAGER_SYS_CAP_TAG + E_ROOT_DIR}, 276 { USER_FILE_MANAGER_SYS_CAP_TAG + E_MOVE_DENIED, USER_FILE_MANAGER_SYS_CAP_TAG + E_MOVE_DENIED}, 277 { USER_FILE_MANAGER_SYS_CAP_TAG + E_RENAME_DENIED, USER_FILE_MANAGER_SYS_CAP_TAG + E_RENAME_DENIED}, 278 { USER_FILE_MANAGER_SYS_CAP_TAG + E_RELATIVEPATH, USER_FILE_MANAGER_SYS_CAP_TAG + E_RELATIVEPATH}, 279 { USER_FILE_MANAGER_SYS_CAP_TAG + E_INNER_FAIL, USER_FILE_MANAGER_SYS_CAP_TAG + E_INNER_FAIL}, 280 { USER_FILE_MANAGER_SYS_CAP_TAG + E_FILE_TYPE, USER_FILE_MANAGER_SYS_CAP_TAG + E_FILE_TYPE}, 281 { USER_FILE_MANAGER_SYS_CAP_TAG + E_FILE_KEY, USER_FILE_MANAGER_SYS_CAP_TAG + E_FILE_KEY}, 282 { USER_FILE_MANAGER_SYS_CAP_TAG + E_INPUT, USER_FILE_MANAGER_SYS_CAP_TAG + E_INPUT}, 283 { STORAGE_SERVICE_SYS_CAP_TAG + E_IPCSS, STORAGE_SERVICE_SYS_CAP_TAG + E_IPCSS}, 284 { STORAGE_SERVICE_SYS_CAP_TAG + E_NOTSUPPORTEDFS, STORAGE_SERVICE_SYS_CAP_TAG + E_NOTSUPPORTEDFS}, 285 { STORAGE_SERVICE_SYS_CAP_TAG + E_MOUNT, STORAGE_SERVICE_SYS_CAP_TAG + E_MOUNT}, 286 { STORAGE_SERVICE_SYS_CAP_TAG + E_UNMOUNT, STORAGE_SERVICE_SYS_CAP_TAG + E_UNMOUNT}, 287 { STORAGE_SERVICE_SYS_CAP_TAG + E_VOLUMESTATE, STORAGE_SERVICE_SYS_CAP_TAG + E_VOLUMESTATE}, 288 { STORAGE_SERVICE_SYS_CAP_TAG + E_PREPARE, STORAGE_SERVICE_SYS_CAP_TAG + E_PREPARE}, 289 { STORAGE_SERVICE_SYS_CAP_TAG + E_DELETE, STORAGE_SERVICE_SYS_CAP_TAG + E_DELETE}, 290 { STORAGE_SERVICE_SYS_CAP_TAG + E_NOOBJECT, STORAGE_SERVICE_SYS_CAP_TAG + E_NOOBJECT}, 291 { STORAGE_SERVICE_SYS_CAP_TAG + E_OUTOFRANGE, STORAGE_SERVICE_SYS_CAP_TAG + E_OUTOFRANGE}, 292 { STORAGE_SERVICE_SYS_CAP_TAG + E_NOOBJECT, STORAGE_SERVICE_SYS_CAP_TAG + E_NOOBJECT}, 293 { USER_FILE_SERVICE_SYS_CAP_TAG + E_IPCS, USER_FILE_SERVICE_SYS_CAP_TAG + E_IPCS}, 294 { USER_FILE_SERVICE_SYS_CAP_TAG + E_URIS, USER_FILE_SERVICE_SYS_CAP_TAG + E_URIS}, 295 { USER_FILE_SERVICE_SYS_CAP_TAG + E_GETINFO, USER_FILE_SERVICE_SYS_CAP_TAG + E_GETINFO}, 296 { USER_FILE_SERVICE_SYS_CAP_TAG + E_GETRESULT, USER_FILE_SERVICE_SYS_CAP_TAG + E_GETRESULT}, 297 { USER_FILE_SERVICE_SYS_CAP_TAG + E_REGISTER, USER_FILE_SERVICE_SYS_CAP_TAG + E_REGISTER}, 298 { USER_FILE_SERVICE_SYS_CAP_TAG + E_REMOVE, USER_FILE_SERVICE_SYS_CAP_TAG + E_REMOVE}, 299 { USER_FILE_SERVICE_SYS_CAP_TAG + E_INIT, USER_FILE_SERVICE_SYS_CAP_TAG + E_INIT}, 300 { USER_FILE_SERVICE_SYS_CAP_TAG + E_NOTIFY, USER_FILE_SERVICE_SYS_CAP_TAG + E_NOTIFY}, 301 { USER_FILE_SERVICE_SYS_CAP_TAG + E_CONNECT, USER_FILE_SERVICE_SYS_CAP_TAG + E_CONNECT}, 302 { E_PERMISSION, E_PERMISSION}, 303 { E_PERMISSION_SYS, E_PERMISSION_SYS}, 304 { E_PARAMS, E_PARAMS}, 305 { E_DEVICENOTSUPPORT, E_DEVICENOTSUPPORT}, 306 { E_OSNOTSUPPORT, E_OSNOTSUPPORT}, 307 { DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG + E_CLOUD_NOT_READY, DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG + E_CLOUD_NOT_READY}, 308 { DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG + E_NETWORK_ERR, DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG + E_NETWORK_ERR}, 309 { DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG + E_BATTERY_WARNING, DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG + E_BATTERY_WARNING}, 310 }; 311 312 int ConvertUVCode2ErrCode(int errCode); 313 314 int GetErrorCode(int errCode); 315 316 } 317 } 318 } 319 #endif // OHOS_FILE_FS_UNI_ERROR_H