diff --git a/bundle.json b/bundle.json index d30a25d045722d11b7f9679b7cb8a2b584021020..4ad57ce4ca5bb70dd298f614d4177a5d9ff17714 100644 --- a/bundle.json +++ b/bundle.json @@ -130,15 +130,6 @@ "header_base": "//foundation/filemanagement/file_api/interfaces/kits/c/fileio" } }, - { - "name": "//foundation/filemanagement/file_api/interfaces/kits/cj:cjfile", - "header": { - "header_files": [ - "utils.h" - ], - "header_base": "//foundation/filemanagement/file_api/interfaces/kits/cj" - } - }, { "name": "//foundation/filemanagement/file_api/interfaces/kits/js:securitylabel", "header": { diff --git a/interfaces/kits/cj/BUILD.gn b/interfaces/kits/cj/BUILD.gn index 9673b303ec3337eda96fb1ed14f3e3c195fc54ee..56041aa8cbe09c630dd0afe139e5191ff1240af6 100644 --- a/interfaces/kits/cj/BUILD.gn +++ b/interfaces/kits/cj/BUILD.gn @@ -12,10 +12,9 @@ # limitations under the License. import("//build/ohos.gni") -import("//build/ohos/ndk/ndk.gni") import("//foundation/filemanagement/file_api/file_api.gni") -ohos_shared_library("cjfile") { +ohos_shared_library("cj_file_fs_ffi") { sanitize = { integer_overflow = true ubsan = true @@ -24,14 +23,107 @@ ohos_shared_library("cjfile") { cfi_cross_dso = true debug = false } - include_dirs = [ "${src_path}/common/file_helper" ] - sources = [ "./utils.cpp" ] - deps = [] - external_deps = [ "libuv:uv" ] + defines = [] + cflags_cc = [] + if (is_mingw || is_mac || is_linux) { + defines += [ "PREVIEW" ] + } + + if (current_os == "ohos" && current_cpu == "x86_64") { + defines += [ "SIMULATOR" ] + } + if (is_ohos) { + defines += [ "OHOS_PLATFORM" ] + if (use_musl && !is_asan) { + defines += [ "HOOK_ENABLE" ] + } + } else if (is_mingw) { + defines += [ "WINDOWS_PLATFORM" ] + cflags_cc += [ "-std=c++17" ] + } else if (is_mac) { + defines += [ "MAC_PLATFORM" ] + } else if (is_linux) { + defines += [ "LINUX_PLATFORM" ] + cflags_cc += [ "-std=c++17" ] + } else if (is_arkui_x && target_os == "ios") { + defines += [ "IOS_PLATFORM" ] + } else if (is_arkui_x && target_os == "android") { + defines += [ "ANDROID_PLATFORM" ] + } + + include_dirs = [ + "${src_path}/common", + "${src_path}/common/napi", + "${src_path}/common/napi/n_async", + "${src_path}/common/file_helper", + "${src_path}/mod_fs", + "${src_path}/mod_fs/class_randomaccessfile", + "${src_path}/mod_fs/class_readeriterator", + "${src_path}/mod_fs/properties", + "${utils_path}/common/include", + "${utils_path}/filemgmt_libhilog", + "${utils_path}/filemgmt_libh", + "${utils_path}/filemgmt_libn/include", + "${file_api_path}/interfaces/kits/cj/src", + "${file_api_path}/interfaces/kits/native/remote_uri", + "${file_api_path}/interfaces/kits/rust/include", + ] + + if (!defined(defines)) { + defines = [] + } + + use_exceptions = true + + if (product_name != "ohos-sdk") { + deps = [ + "${file_api_path}/interfaces/kits/js:build_kits_js", + "${file_api_path}/interfaces/kits/js:fs", + "${file_api_path}/interfaces/kits/native:remote_uri_native", + "${file_api_path}/interfaces/kits/rust:rust_file", + "${utils_path}/filemgmt_libhilog:filemgmt_libhilog", + "${utils_path}/filemgmt_libn:filemgmt_libn", + ] + external_deps = [ + "ability_base:zuri", + "ability_runtime:ability_manager", + "ability_runtime:abilitykit_native", + "access_token:libtokenid_sdk", + "app_file_service:fileuri_native", + "bounds_checking_function:libsec_shared", + "bundle_framework:appexecfwk_base", + "bundle_framework:appexecfwk_core", + "c_utils:utils", + "data_share:datashare_common", + "data_share:datashare_consumer", + "hilog:libhilog", + "ipc:ipc_core", + "libuv:uv", + "napi:ace_napi", + "napi:cj_bind_ffi", + "napi:cj_bind_native", + "samgr:samgr_proxy", + ] + sources = [ + "../js/src/common/file_helper/fd_guard.cpp", + "src/uni_error.cpp", + "src/utils.cpp", + ] + } else { + defines += [ "PREVIEWER" ] + sources = [ "src/file_fs_mock.cpp" ] + external_deps = [ "napi:cj_bind_ffi" ] + } + + if (current_os == "ohos") { + defines += [ "OHOS_PLATFORM" ] + } + + if (current_os == "mingw") { + defines += [ "WINDOWS_PLATFORM" ] + } - output_name = "cjfile" - output_extension = "so" part_name = "file_api" subsystem_name = "filemanagement" } diff --git a/interfaces/kits/cj/src/file_fs_mock.cpp b/interfaces/kits/cj/src/file_fs_mock.cpp new file mode 100644 index 0000000000000000000000000000000000000000..20e305ddcce99eced5b30f66b83c915c1ed0b0a7 --- /dev/null +++ b/interfaces/kits/cj/src/file_fs_mock.cpp @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "cj_common_ffi.h" + +extern "C" { +FFI_EXPORT int FfiOHOSFileFsClose = 0; +FFI_EXPORT int FfiOHOSFileFsCloseByFd = 0; +FFI_EXPORT int FfiOHOSFileFsDup = 0; +FFI_EXPORT int FfiOHOSFileFsGetFD = 0; +FFI_EXPORT int FfiOHOSFILEFsGetFD = 0; +FFI_EXPORT int FfiOHOSFILEFsGetPath = 0; +FFI_EXPORT int FfiOHOSFILEFsGetName = 0; +FFI_EXPORT int FfiOHOSFILEFsTryLock = 0; +FFI_EXPORT int FfiOHOSFILEFsUnLock = 0; +FFI_EXPORT int FfiOHOSFILEFsGetParent = 0; +FFI_EXPORT int FfiOHOSFileFsStatByID = 0; +FFI_EXPORT int FfiOHOSFileFsStatByString = 0; +FFI_EXPORT int FfiOHOSFileFsCreateStream = 0; +FFI_EXPORT int FfiOHOSFileFsFdopenStream = 0; +FFI_EXPORT int FfiOHOSFileFsLstat = 0; +FFI_EXPORT int FfiOHOSFileFsCreateRandomAccessFileByString = 0; +FFI_EXPORT int FfiOHOSFileFsCreateRandomAccessFileByID = 0; +FFI_EXPORT int FfiOHOSRandomAccessFileGetFd = 0; +FFI_EXPORT int FfiOHOSRandomAccessFileGetFPointer = 0; +FFI_EXPORT int FfiOHOSRandomAccessFileSetFilePointerSync = 0; +FFI_EXPORT int FfiOHOSRandomAccessFileClose = 0; +FFI_EXPORT int FfiOHOSRandomAccessFileWrite = 0; +FFI_EXPORT int FfiOHOSRandomAccessFileRead = 0; +FFI_EXPORT int FfiOHOSFileFsMkdir = 0; +FFI_EXPORT int FfiOHOSFileFsRmdir = 0; +FFI_EXPORT int FfiOHOSFileFsMoveDir = 0; +FFI_EXPORT int FfiOHOSFileFsRename = 0; +FFI_EXPORT int FfiOHOSFileFsUnlink = 0; +FFI_EXPORT int FfiOHOSFileFsAccess = 0; +FFI_EXPORT int FfiOHOSFileFsOpen = 0; +FFI_EXPORT int FfiOHOSFileFsRead = 0; +FFI_EXPORT int FfiOHOSFileFsReadCur = 0; +FFI_EXPORT int FfiOHOSFileFsWrite = 0; +FFI_EXPORT int FfiOHOSFileFsWriteCur = 0; +FFI_EXPORT int FfiOHOSFileFsCopyDir = 0; +FFI_EXPORT int FfiOHOSFileFsCopyFile = 0; +FFI_EXPORT int FfiOHOSFileFsCopyFileSI = 0; +FFI_EXPORT int FfiOHOSFileFsCopyFileIS = 0; +FFI_EXPORT int FfiOHOSFileFsCopyFileII = 0; +FFI_EXPORT int FfiOHOSFileFsMoveFile = 0; +FFI_EXPORT int FfiOHOSFileFsMkdtemp = 0; +FFI_EXPORT int FfiOHOSFileFsTruncateByString = 0; +FFI_EXPORT int FfiOHOSFileFsTruncateByFd = 0; +FFI_EXPORT int FfiOHOSFileFsReadLines = 0; +FFI_EXPORT int FfiOHOSFileFsReadText = 0; +FFI_EXPORT int FfiOHOSFileFsUtimes = 0; +FFI_EXPORT int FfiOHOSFileFsCreateWatcher = 0; +FFI_EXPORT int FfiOHOSFileFsWatcherStart = 0; +FFI_EXPORT int FfiOHOSFileFsWatcherStop = 0; +FFI_EXPORT int FfiOHOSFileFsReaderIteratorNext = 0; +FFI_EXPORT int FfiOHOSFileListFile = 0; +FFI_EXPORT int FfiOHOSFileFsLseek = 0; +FFI_EXPORT int FfiOHOSFileFsFdatasync = 0; +FFI_EXPORT int FfiOHOSFileFsFsync = 0; +FFI_EXPORT int FfiOHOSFileFsSymlink = 0; +FFI_EXPORT int FfiOHOSStreamClose = 0; +FFI_EXPORT int FfiOHOSStreamFlush = 0; +FFI_EXPORT int FfiOHOSStreamWriteCur = 0; +FFI_EXPORT int FfiOHOSStreamWrite = 0; +FFI_EXPORT int FfiOHOSStreamReadCur = 0; +FFI_EXPORT int FfiOHOSStreamRead = 0; + +FFI_EXPORT int FfiOHOSStatGetIno = 0; +FFI_EXPORT int FfiOHOSStatGetMode = 0; +FFI_EXPORT int FfiOHOSStatGetUid = 0; +FFI_EXPORT int FfiOHOSStatGetGid = 0; +FFI_EXPORT int FfiOHOSStatGetSize = 0; +FFI_EXPORT int FfiOHOSStatGetAtime = 0; +FFI_EXPORT int FfiOHOSStatGetMtime = 0; +FFI_EXPORT int FfiOHOSStatGetCtime = 0; +FFI_EXPORT int FfiOHOSStatIsBlockDevice = 0; +FFI_EXPORT int FfiOHOSStatIsCharacterDevice = 0; +FFI_EXPORT int FfiOHOSStatIsDirectory = 0; +FFI_EXPORT int FfiOHOSStatIsFIFO = 0; +FFI_EXPORT int FfiOHOSStatIsFile = 0; +FFI_EXPORT int FfiOHOSStatIsSocket = 0; +FFI_EXPORT int FfiOHOSStatIsSymbolicLink = 0; +} diff --git a/interfaces/kits/cj/src/macro.h b/interfaces/kits/cj/src/macro.h new file mode 100644 index 0000000000000000000000000000000000000000..85366d6a1e0aea1f427ffe44da0acd3460c078ba --- /dev/null +++ b/interfaces/kits/cj/src/macro.h @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef OHOS_FILE_FS_MACRO_H +#define OHOS_FILE_FS_MACRO_H + +#include "hilog/log.h" + +#ifdef LOG_DOMAIN +#undef LOG_DOMAIN +#endif +#ifdef LOG_TAG +#undef LOG_TAG +#endif + +#define LOG_DOMAIN 0xD004388 +#define LOG_TAG "FILE-FS" + +#define LOGI(...) \ +if (HiLogIsLoggable(LOG_DOMAIN, LOG_TAG, LOG_INFO)) { \ + HILOG_INFO(LOG_CORE, ##__VA_ARGS__); \ +} + +#define LOGE(...) \ +if (HiLogIsLoggable(LOG_DOMAIN, LOG_TAG, LOG_ERROR)) { \ + HILOG_ERROR(LOG_CORE, ##__VA_ARGS__); \ +} + +#endif diff --git a/interfaces/kits/cj/src/uni_error.cpp b/interfaces/kits/cj/src/uni_error.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a5c64ae124eb8b62bcf0128551bede8a7b003f20 --- /dev/null +++ b/interfaces/kits/cj/src/uni_error.cpp @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "uni_error.h" + +namespace OHOS { +namespace CJSystemapi { +namespace FileFs { + +int ConvertUVCode2ErrCode(int errCode) +{ + if (errCode >= 0) { + return errCode; + } + auto uvCode = std::string(uv_err_name(errCode)); + if (uvCode2ErrCodeTable.find(uvCode) != uvCode2ErrCodeTable.end()) { + return uvCode2ErrCodeTable.at(uvCode); + } + return UNKNOWN_ERR; +} + +int GetErrorCode(int errCode) +{ + int32_t code; + int genericCode = ConvertUVCode2ErrCode(errCode); + if (errCodeTable.find(genericCode) != errCodeTable.end()) { + code = errCodeTable.at(genericCode); + } else { + code = errCodeTable.at(UNKNOWN_ERR); + } + return code; +} + +} +} +} \ No newline at end of file diff --git a/interfaces/kits/cj/src/uni_error.h b/interfaces/kits/cj/src/uni_error.h new file mode 100644 index 0000000000000000000000000000000000000000..7dd5935d1fc63600fefba9eb292b6c90543edb6b --- /dev/null +++ b/interfaces/kits/cj/src/uni_error.h @@ -0,0 +1,319 @@ +/* + * Copyright (c) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef OHOS_FILE_FS_UNI_ERROR_H +#define OHOS_FILE_FS_UNI_ERROR_H + +#include "macro.h" +#include "uv.h" + +#include +#include +#include + +namespace OHOS { +namespace CJSystemapi { +namespace FileFs { + +constexpr int UNKNOWN_ERR = -1; +constexpr int STORAGE_SERVICE_SYS_CAP_TAG = 13600000; +constexpr int FILEIO_SYS_CAP_TAG = 13900000; +constexpr int USER_FILE_MANAGER_SYS_CAP_TAG = 14000000; +constexpr int USER_FILE_SERVICE_SYS_CAP_TAG = 14300000; +constexpr int DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG = 22400000; + +enum ErrCodeSuffixOfFileIO { + E_PERM = 1, + E_NOENT, + E_SRCH, + E_INTR, + E_IO, + E_NXIO, + E_2BIG, + E_BADF, + E_CHILD, + E_AGAIN, + E_NOMEM, + E_ACCES, + E_FAULT, + E_BUSY, + E_EXIST, + E_XDEV, + E_NODEV, + E_NOTDIR, + E_ISDIR, + E_INVAL, + E_NFILE, + E_MFILE, + E_TXTBSY, + E_FBIG, + E_NOSPC, + E_SPIPE, + E_ROFS, + E_MLINK, + E_DEADLK, + E_NAMETOOLONG, + E_NOSYS, + E_NOTEMPTY, + E_LOOP, + E_WOULDBLOCK, + E_BADR, + E_NOSTR, + E_NODATA, + E_OVERFLOW, + E_BADFD, + E_RESTART, + E_DQUOT, + E_UKERR, + E_NOLCK +}; + +enum ErrCodeSuffixOfUserFileManager { + E_DISPLAYNAME = 1, + E_URIM, + E_SUFFIX, + E_TRASH, + E_OPEN_MODE, + E_NOT_ALBUM, + E_ROOT_DIR, + E_MOVE_DENIED, + E_RENAME_DENIED, + E_RELATIVEPATH, + E_INNER_FAIL, + E_FILE_TYPE, + E_FILE_KEY, + E_INPUT +}; + +enum ErrCodeSuffixOfStorageService { + E_IPCSS = 1, + E_NOTSUPPORTEDFS, + E_MOUNT, + E_UNMOUNT, + E_VOLUMESTATE, + E_PREPARE, + E_DELETE, + E_NOOBJECT, + E_OUTOFRANGE +}; + +enum ErrCodeSuffixOfUserFileService { + E_IPCS = 1, + E_URIS, + E_GETINFO, + E_GETRESULT, + E_REGISTER, + E_REMOVE, + E_INIT, + E_NOTIFY, + E_CONNECT +}; + +enum ErrCodeSuffixOfDistributedFile { + E_CLOUD_NOT_READY = 1, + E_NETWORK_ERR, + E_BATTERY_WARNING +}; + +enum CommonErrCode { + E_PERMISSION = 201, + E_PERMISSION_SYS = 202, + E_PARAMS = 401, + E_DEVICENOTSUPPORT = 801, + E_OSNOTSUPPORT = 901 +}; + +const std::unordered_map uvCode2ErrCodeTable { + { "EPERM", EPERM }, + { "ENOENT", ENOENT }, + { "ESRCH", ESRCH }, + { "EINTR", EINTR }, + { "EIO", EIO }, + { "ENXIO", ENXIO }, + { "E2BIG", E2BIG }, + { "EBADF", EBADF }, + { "ECHILD", ECHILD }, + { "EAGAIN", EAGAIN }, + { "ENOMEM", ENOMEM }, + { "EACCES", EACCES }, + { "EFAULT", EFAULT }, + { "EBUSY", EBUSY }, + { "EEXIST", EEXIST }, + { "EXDEV", EXDEV }, + { "ENODEV", ENODEV }, + { "ENOTDIR", ENOTDIR }, + { "EISDIR", EISDIR }, + { "EINVAL", EINVAL }, + { "ENFILE", ENFILE }, + { "EMFILE", EMFILE }, + { "ETXTBSY", ETXTBSY }, + { "EFBIG", EFBIG }, + { "ENOSPC", ENOSPC }, + { "ESPIPE", ESPIPE }, + { "EROFS", EROFS }, + { "EMLINK", EMLINK }, + { "EDEADLK", EDEADLK }, + { "ENAMETOOLONG", ENAMETOOLONG }, + { "ENOSYS", ENOSYS }, + { "ENOTEMPTY", ENOTEMPTY }, + { "ELOOP", ELOOP }, + { "EWOULDBLOCK", EWOULDBLOCK }, + { "EBADR", EBADR }, + { "ENOSTR", ENOSTR }, + { "ENODATA", ENODATA }, + { "EOVERFLOW", EOVERFLOW }, + { "EBADFD", EBADFD }, + { "ERESTART", ERESTART }, + { "EDQUOT", EDQUOT }, +}; + +inline std::unordered_map errCodeTable { + { EPERM, FILEIO_SYS_CAP_TAG + E_PERM}, + { ENOENT, FILEIO_SYS_CAP_TAG + E_NOENT}, + { ESRCH, FILEIO_SYS_CAP_TAG + E_SRCH}, + { EINTR, FILEIO_SYS_CAP_TAG + E_INTR}, + { EIO, FILEIO_SYS_CAP_TAG + E_IO}, + { ENXIO, FILEIO_SYS_CAP_TAG + E_NXIO}, + { E2BIG, FILEIO_SYS_CAP_TAG + E_2BIG}, + { EBADF, FILEIO_SYS_CAP_TAG + E_BADF}, + { ECHILD, FILEIO_SYS_CAP_TAG + E_CHILD}, + { EAGAIN, FILEIO_SYS_CAP_TAG + E_AGAIN}, + { ENOMEM, FILEIO_SYS_CAP_TAG + E_NOMEM}, + { EACCES, FILEIO_SYS_CAP_TAG + E_ACCES}, + { EFAULT, FILEIO_SYS_CAP_TAG + E_FAULT}, + { EBUSY, FILEIO_SYS_CAP_TAG + E_BUSY}, + { EEXIST, FILEIO_SYS_CAP_TAG + E_EXIST}, + { EXDEV, FILEIO_SYS_CAP_TAG + E_XDEV}, + { ENODEV, FILEIO_SYS_CAP_TAG + E_NODEV}, + { ENOTDIR, FILEIO_SYS_CAP_TAG + E_NOTDIR}, + { EISDIR, FILEIO_SYS_CAP_TAG + E_ISDIR}, + { EINVAL, FILEIO_SYS_CAP_TAG + E_INVAL}, + { ENFILE, FILEIO_SYS_CAP_TAG + E_NFILE}, + { EMFILE, FILEIO_SYS_CAP_TAG + E_MFILE}, + { ETXTBSY, FILEIO_SYS_CAP_TAG + E_TXTBSY}, + { EFBIG, FILEIO_SYS_CAP_TAG + E_FBIG}, + { ENOSPC, FILEIO_SYS_CAP_TAG + E_NOSPC}, + { ESPIPE, FILEIO_SYS_CAP_TAG + E_SPIPE}, + { EROFS, FILEIO_SYS_CAP_TAG + E_ROFS}, + { EMLINK, FILEIO_SYS_CAP_TAG + E_MLINK}, + { EDEADLK, FILEIO_SYS_CAP_TAG + E_DEADLK}, + { ENAMETOOLONG, FILEIO_SYS_CAP_TAG + E_NAMETOOLONG}, + { ENOSYS, FILEIO_SYS_CAP_TAG + E_NOSYS}, + { ENOTEMPTY, FILEIO_SYS_CAP_TAG + E_NOTEMPTY}, + { ELOOP, FILEIO_SYS_CAP_TAG + E_LOOP}, + { EWOULDBLOCK, FILEIO_SYS_CAP_TAG + E_WOULDBLOCK}, + { EBADR, FILEIO_SYS_CAP_TAG + E_BADR}, + { ENOSTR, FILEIO_SYS_CAP_TAG + E_NOSTR}, + { ENODATA, FILEIO_SYS_CAP_TAG + E_NODATA}, + { EOVERFLOW, FILEIO_SYS_CAP_TAG + E_OVERFLOW}, + { EBADFD, FILEIO_SYS_CAP_TAG + E_BADFD}, + { ERESTART, FILEIO_SYS_CAP_TAG + E_RESTART}, + { EDQUOT, FILEIO_SYS_CAP_TAG + E_DQUOT}, + { UNKNOWN_ERR, FILEIO_SYS_CAP_TAG + E_UKERR}, + { ENOLCK, FILEIO_SYS_CAP_TAG + E_NOLCK}, + { FILEIO_SYS_CAP_TAG + E_PERM, FILEIO_SYS_CAP_TAG + E_PERM}, + { FILEIO_SYS_CAP_TAG + E_NOENT, FILEIO_SYS_CAP_TAG + E_NOENT}, + { FILEIO_SYS_CAP_TAG + E_SRCH, FILEIO_SYS_CAP_TAG + E_SRCH}, + { FILEIO_SYS_CAP_TAG + E_INTR, FILEIO_SYS_CAP_TAG + E_INTR}, + { FILEIO_SYS_CAP_TAG + E_IO, FILEIO_SYS_CAP_TAG + E_IO}, + { FILEIO_SYS_CAP_TAG + E_NXIO, FILEIO_SYS_CAP_TAG + E_NXIO}, + { FILEIO_SYS_CAP_TAG + E_2BIG, FILEIO_SYS_CAP_TAG + E_2BIG}, + { FILEIO_SYS_CAP_TAG + E_BADF, FILEIO_SYS_CAP_TAG + E_BADF}, + { FILEIO_SYS_CAP_TAG + E_CHILD, FILEIO_SYS_CAP_TAG + E_CHILD}, + { FILEIO_SYS_CAP_TAG + E_AGAIN, FILEIO_SYS_CAP_TAG + E_AGAIN}, + { FILEIO_SYS_CAP_TAG + E_NOMEM, FILEIO_SYS_CAP_TAG + E_NOMEM}, + { FILEIO_SYS_CAP_TAG + E_ACCES, FILEIO_SYS_CAP_TAG + E_ACCES}, + { FILEIO_SYS_CAP_TAG + E_FAULT, FILEIO_SYS_CAP_TAG + E_FAULT}, + { FILEIO_SYS_CAP_TAG + E_BUSY, FILEIO_SYS_CAP_TAG + E_BUSY}, + { FILEIO_SYS_CAP_TAG + E_EXIST, FILEIO_SYS_CAP_TAG + E_EXIST}, + { FILEIO_SYS_CAP_TAG + E_XDEV, FILEIO_SYS_CAP_TAG + E_XDEV}, + { FILEIO_SYS_CAP_TAG + E_NODEV, FILEIO_SYS_CAP_TAG + E_NODEV}, + { FILEIO_SYS_CAP_TAG + E_NOTDIR, FILEIO_SYS_CAP_TAG + E_NOTDIR}, + { FILEIO_SYS_CAP_TAG + E_ISDIR, FILEIO_SYS_CAP_TAG + E_ISDIR}, + { FILEIO_SYS_CAP_TAG + E_INVAL, FILEIO_SYS_CAP_TAG + E_INVAL}, + { FILEIO_SYS_CAP_TAG + E_NFILE, FILEIO_SYS_CAP_TAG + E_NFILE}, + { FILEIO_SYS_CAP_TAG + E_MFILE, FILEIO_SYS_CAP_TAG + E_MFILE}, + { FILEIO_SYS_CAP_TAG + E_TXTBSY, FILEIO_SYS_CAP_TAG + E_TXTBSY}, + { FILEIO_SYS_CAP_TAG + E_FBIG, FILEIO_SYS_CAP_TAG + E_FBIG}, + { FILEIO_SYS_CAP_TAG + E_NOSPC, FILEIO_SYS_CAP_TAG + E_NOSPC}, + { FILEIO_SYS_CAP_TAG + E_SPIPE, FILEIO_SYS_CAP_TAG + E_SPIPE}, + { FILEIO_SYS_CAP_TAG + E_ROFS, FILEIO_SYS_CAP_TAG + E_ROFS}, + { FILEIO_SYS_CAP_TAG + E_MLINK, FILEIO_SYS_CAP_TAG + E_MLINK}, + { FILEIO_SYS_CAP_TAG + E_DEADLK, FILEIO_SYS_CAP_TAG + E_DEADLK}, + { FILEIO_SYS_CAP_TAG + E_NAMETOOLONG, FILEIO_SYS_CAP_TAG + E_NAMETOOLONG}, + { FILEIO_SYS_CAP_TAG + E_NOSYS, FILEIO_SYS_CAP_TAG + E_NOSYS}, + { FILEIO_SYS_CAP_TAG + E_NOTEMPTY, FILEIO_SYS_CAP_TAG + E_NOTEMPTY}, + { FILEIO_SYS_CAP_TAG + E_LOOP, FILEIO_SYS_CAP_TAG + E_LOOP}, + { FILEIO_SYS_CAP_TAG + E_WOULDBLOCK, FILEIO_SYS_CAP_TAG + E_WOULDBLOCK}, + { FILEIO_SYS_CAP_TAG + E_BADR, FILEIO_SYS_CAP_TAG + E_BADR}, + { FILEIO_SYS_CAP_TAG + E_NOSTR, FILEIO_SYS_CAP_TAG + E_NOSTR}, + { FILEIO_SYS_CAP_TAG + E_NODATA, FILEIO_SYS_CAP_TAG + E_NODATA}, + { FILEIO_SYS_CAP_TAG + E_OVERFLOW, FILEIO_SYS_CAP_TAG + E_OVERFLOW}, + { FILEIO_SYS_CAP_TAG + E_BADFD, FILEIO_SYS_CAP_TAG + E_BADFD}, + { FILEIO_SYS_CAP_TAG + E_RESTART, FILEIO_SYS_CAP_TAG + E_RESTART}, + { FILEIO_SYS_CAP_TAG + E_DQUOT, FILEIO_SYS_CAP_TAG + E_DQUOT}, + { FILEIO_SYS_CAP_TAG + E_UKERR, FILEIO_SYS_CAP_TAG + E_UKERR}, + { FILEIO_SYS_CAP_TAG + E_NOLCK, FILEIO_SYS_CAP_TAG + E_NOLCK}, + { USER_FILE_MANAGER_SYS_CAP_TAG + E_DISPLAYNAME, USER_FILE_MANAGER_SYS_CAP_TAG + E_DISPLAYNAME}, + { USER_FILE_MANAGER_SYS_CAP_TAG + E_URIM, USER_FILE_MANAGER_SYS_CAP_TAG + E_URIM}, + { USER_FILE_MANAGER_SYS_CAP_TAG + E_SUFFIX, USER_FILE_MANAGER_SYS_CAP_TAG + E_SUFFIX}, + { USER_FILE_MANAGER_SYS_CAP_TAG + E_TRASH, USER_FILE_MANAGER_SYS_CAP_TAG + E_TRASH}, + { USER_FILE_MANAGER_SYS_CAP_TAG + E_OPEN_MODE, USER_FILE_MANAGER_SYS_CAP_TAG + E_OPEN_MODE}, + { USER_FILE_MANAGER_SYS_CAP_TAG + E_NOT_ALBUM, USER_FILE_MANAGER_SYS_CAP_TAG + E_NOT_ALBUM}, + { USER_FILE_MANAGER_SYS_CAP_TAG + E_ROOT_DIR, USER_FILE_MANAGER_SYS_CAP_TAG + E_ROOT_DIR}, + { USER_FILE_MANAGER_SYS_CAP_TAG + E_MOVE_DENIED, USER_FILE_MANAGER_SYS_CAP_TAG + E_MOVE_DENIED}, + { USER_FILE_MANAGER_SYS_CAP_TAG + E_RENAME_DENIED, USER_FILE_MANAGER_SYS_CAP_TAG + E_RENAME_DENIED}, + { USER_FILE_MANAGER_SYS_CAP_TAG + E_RELATIVEPATH, USER_FILE_MANAGER_SYS_CAP_TAG + E_RELATIVEPATH}, + { USER_FILE_MANAGER_SYS_CAP_TAG + E_INNER_FAIL, USER_FILE_MANAGER_SYS_CAP_TAG + E_INNER_FAIL}, + { USER_FILE_MANAGER_SYS_CAP_TAG + E_FILE_TYPE, USER_FILE_MANAGER_SYS_CAP_TAG + E_FILE_TYPE}, + { USER_FILE_MANAGER_SYS_CAP_TAG + E_FILE_KEY, USER_FILE_MANAGER_SYS_CAP_TAG + E_FILE_KEY}, + { USER_FILE_MANAGER_SYS_CAP_TAG + E_INPUT, USER_FILE_MANAGER_SYS_CAP_TAG + E_INPUT}, + { STORAGE_SERVICE_SYS_CAP_TAG + E_IPCSS, STORAGE_SERVICE_SYS_CAP_TAG + E_IPCSS}, + { STORAGE_SERVICE_SYS_CAP_TAG + E_NOTSUPPORTEDFS, STORAGE_SERVICE_SYS_CAP_TAG + E_NOTSUPPORTEDFS}, + { STORAGE_SERVICE_SYS_CAP_TAG + E_MOUNT, STORAGE_SERVICE_SYS_CAP_TAG + E_MOUNT}, + { STORAGE_SERVICE_SYS_CAP_TAG + E_UNMOUNT, STORAGE_SERVICE_SYS_CAP_TAG + E_UNMOUNT}, + { STORAGE_SERVICE_SYS_CAP_TAG + E_VOLUMESTATE, STORAGE_SERVICE_SYS_CAP_TAG + E_VOLUMESTATE}, + { STORAGE_SERVICE_SYS_CAP_TAG + E_PREPARE, STORAGE_SERVICE_SYS_CAP_TAG + E_PREPARE}, + { STORAGE_SERVICE_SYS_CAP_TAG + E_DELETE, STORAGE_SERVICE_SYS_CAP_TAG + E_DELETE}, + { STORAGE_SERVICE_SYS_CAP_TAG + E_NOOBJECT, STORAGE_SERVICE_SYS_CAP_TAG + E_NOOBJECT}, + { STORAGE_SERVICE_SYS_CAP_TAG + E_OUTOFRANGE, STORAGE_SERVICE_SYS_CAP_TAG + E_OUTOFRANGE}, + { STORAGE_SERVICE_SYS_CAP_TAG + E_NOOBJECT, STORAGE_SERVICE_SYS_CAP_TAG + E_NOOBJECT}, + { USER_FILE_SERVICE_SYS_CAP_TAG + E_IPCS, USER_FILE_SERVICE_SYS_CAP_TAG + E_IPCS}, + { USER_FILE_SERVICE_SYS_CAP_TAG + E_URIS, USER_FILE_SERVICE_SYS_CAP_TAG + E_URIS}, + { USER_FILE_SERVICE_SYS_CAP_TAG + E_GETINFO, USER_FILE_SERVICE_SYS_CAP_TAG + E_GETINFO}, + { USER_FILE_SERVICE_SYS_CAP_TAG + E_GETRESULT, USER_FILE_SERVICE_SYS_CAP_TAG + E_GETRESULT}, + { USER_FILE_SERVICE_SYS_CAP_TAG + E_REGISTER, USER_FILE_SERVICE_SYS_CAP_TAG + E_REGISTER}, + { USER_FILE_SERVICE_SYS_CAP_TAG + E_REMOVE, USER_FILE_SERVICE_SYS_CAP_TAG + E_REMOVE}, + { USER_FILE_SERVICE_SYS_CAP_TAG + E_INIT, USER_FILE_SERVICE_SYS_CAP_TAG + E_INIT}, + { USER_FILE_SERVICE_SYS_CAP_TAG + E_NOTIFY, USER_FILE_SERVICE_SYS_CAP_TAG + E_NOTIFY}, + { USER_FILE_SERVICE_SYS_CAP_TAG + E_CONNECT, USER_FILE_SERVICE_SYS_CAP_TAG + E_CONNECT}, + { E_PERMISSION, E_PERMISSION}, + { E_PERMISSION_SYS, E_PERMISSION_SYS}, + { E_PARAMS, E_PARAMS}, + { E_DEVICENOTSUPPORT, E_DEVICENOTSUPPORT}, + { E_OSNOTSUPPORT, E_OSNOTSUPPORT}, + { DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG + E_CLOUD_NOT_READY, DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG + E_CLOUD_NOT_READY}, + { DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG + E_NETWORK_ERR, DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG + E_NETWORK_ERR}, + { DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG + E_BATTERY_WARNING, DISTRIBUTEDFILE_SERVICE_SYS_CAP_TAG + E_BATTERY_WARNING}, +}; + +int ConvertUVCode2ErrCode(int errCode); + +int GetErrorCode(int errCode); + +} +} +} +#endif //OHOS_FILE_FS_UNI_ERROR_H \ No newline at end of file diff --git a/interfaces/kits/cj/utils.cpp b/interfaces/kits/cj/src/utils.cpp similarity index 100% rename from interfaces/kits/cj/utils.cpp rename to interfaces/kits/cj/src/utils.cpp diff --git a/interfaces/kits/cj/utils.h b/interfaces/kits/cj/src/utils.h similarity index 100% rename from interfaces/kits/cj/utils.h rename to interfaces/kits/cj/src/utils.h