diff --git a/interfaces/kits/js/src/mod_fs/ani/bind_function_class.cpp b/interfaces/kits/js/src/mod_fs/ani/bind_function_class.cpp index 2d7283c7d9887f878763c47d22f689e782262a7d..627f2960fc9abccd7643bb845554939f5684a554 100644 --- a/interfaces/kits/js/src/mod_fs/ani/bind_function_class.cpp +++ b/interfaces/kits/js/src/mod_fs/ani/bind_function_class.cpp @@ -149,6 +149,7 @@ static ani_status BindStaticMethods(ani_env *env) static const char *className = "L@ohos/file/fs/FileIoImpl;"; std::array methods = { + ani_native_function { "accessSync", nullptr, reinterpret_cast(AccessAni::AccessSync) }, ani_native_function { "closeSync", nullptr, reinterpret_cast(CloseAni::CloseSync) }, ani_native_function { "connectDfs", nullptr, reinterpret_cast(ConnectDfsAni::ConnectDfsSync) }, ani_native_function { "copyDirSync", nullptr, reinterpret_cast(CopyDirAni::CopyDirSync) }, @@ -159,7 +160,6 @@ static ani_status BindStaticMethods(ani_env *env) ani_native_function { "createStreamSync", nullptr, reinterpret_cast(CreateStreamAni::CreateStreamSync) }, ani_native_function { "disConnectDfs", nullptr, reinterpret_cast(DisConnectDfsAni::DisConnectDfsSync) }, - ani_native_function { "doAccessSync", nullptr, reinterpret_cast(AccessAni::AccessSync3) }, ani_native_function { "dup", nullptr, reinterpret_cast(DupAni::Dup) }, ani_native_function { "fdatasyncSync", nullptr, reinterpret_cast(FDataSyncAni::FDataSyncSync) }, ani_native_function { diff --git a/interfaces/kits/js/src/mod_fs/ani/ets/@ohos.file.fs.ets b/interfaces/kits/js/src/mod_fs/ani/ets/@ohos.file.fs.ets index 00920e50f8a9ca9d5039bbf3c1551e1c2ad751d7..6bde2360d68b1607c29c9d4be7614bf7041d8c0e 100644 --- a/interfaces/kits/js/src/mod_fs/ani/ets/@ohos.file.fs.ets +++ b/interfaces/kits/js/src/mod_fs/ani/ets/@ohos.file.fs.ets @@ -19,7 +19,7 @@ function access(path: string, mode?: AccessModeType): Promise { return new Promise((resolve: (result: boolean) => void, reject: (e: BusinessError) => void) => { if (mode === undefined) { let promise = taskpool.execute((path: string): boolean => { - return FileIoImpl.doAccessSync(path); + return FileIoImpl.accessSync(path); }, path); promise.then((ret: NullishType) => { let result = ret as boolean; @@ -29,7 +29,7 @@ function access(path: string, mode?: AccessModeType): Promise { }); } else { let promise = taskpool.execute((path: string, mode: AccessModeType): boolean => { - return FileIoImpl.doAccessSync(path, mode); + return FileIoImpl.accessSync(path, mode); }, path, mode); promise.then((ret: NullishType) => { let result = ret as boolean; @@ -43,7 +43,7 @@ function access(path: string, mode?: AccessModeType): Promise { function access(path: string, callback: AsyncCallback): void { let promise = taskpool.execute((path: string): boolean => { - return FileIoImpl.doAccessSync(path); + return FileIoImpl.accessSync(path); }, path); promise.then((ret: NullishType): void => { let e = new BusinessError(); @@ -57,7 +57,7 @@ function access(path: string, callback: AsyncCallback): void { function access(path: string, mode: AccessModeType, flag: AccessFlagType): Promise { return new Promise((resolve: (result: boolean) => void, reject: (e: BusinessError) => void) => { - let promise = taskpool.execute(FileIoImpl.doAccessSync, path, mode, flag); + let promise = taskpool.execute(FileIoImpl.accessSync, path, mode, flag); promise.then((ret: NullishType): void => { let result = ret as boolean; resolve(result); @@ -68,11 +68,11 @@ function access(path: string, mode: AccessModeType, flag: AccessFlagType): Promi } function accessSync(path: string, mode?: AccessModeType): boolean { - return FileIoImpl.doAccessSync(path, mode); + return FileIoImpl.accessSync(path, mode); } function accessSync(path: string, mode: AccessModeType, flag: AccessFlagType): boolean { - return FileIoImpl.doAccessSync(path, mode, flag); + return FileIoImpl.accessSync(path, mode, flag); } function close(file: number | File): Promise { @@ -2064,7 +2064,7 @@ class FileIoImpl { loadLibrary("ani_fs_class"); } - static native doAccessSync(path: string, mode?: AccessModeType, flag?: AccessFlagType): boolean; + static native accessSync(path: string, mode?: AccessModeType, flag?: AccessFlagType): boolean; static native closeSync(file: number | File): void; diff --git a/interfaces/kits/js/src/mod_fs/properties/access_core.cpp b/interfaces/kits/js/src/mod_fs/properties/access_core.cpp index d97f4aa80452f316e0cc85ba660509004c9e544e..cd4ea29ee59d9e2e91011ee35bff73c7b5224546 100644 --- a/interfaces/kits/js/src/mod_fs/properties/access_core.cpp +++ b/interfaces/kits/js/src/mod_fs/properties/access_core.cpp @@ -55,12 +55,12 @@ const int BASE_USER_RANGE = 200000; static int UvAccess(const string &path, int mode) { - std::unique_ptr access_req = {new uv_fs_t, FsUtils::FsReqCleanup}; - if (!access_req) { + unique_ptr accessReq = {new uv_fs_t, FsUtils::FsReqCleanup}; + if (!accessReq) { HILOGE("Failed to request heap memory."); return ENOMEM; } - return uv_fs_access(nullptr, access_req.get(), path.c_str(), mode, nullptr); + return uv_fs_access(nullptr, accessReq.get(), path.c_str(), mode, nullptr); } #if !defined(WIN_PLATFORM) && !defined(IOS_PLATFORM) @@ -150,12 +150,12 @@ static int Access(const string &path, int mode, int flag = DEFAULT_FLAG) return UvAccess(path, mode); } -static int GetMode(const std::optional &modeOpt, bool *hasMode) +static int GetMode(const optional &modeOpt, bool *hasMode) { if (modeOpt.has_value()) { int mode = static_cast(modeOpt.value()); *hasMode = true; - if ((static_cast(mode) & 0x06) == static_cast(mode)) { + if ((static_cast(mode) & 0x06) == static_cast(mode)) { return mode; } } @@ -163,17 +163,17 @@ static int GetMode(const std::optional &modeOpt, bool *hasMode) return -1; } -static bool ValidAccessArgs(const std::string &path, const std::optional &modeOpt, +static bool ValidAccessArgs(const string &path, const optional &modeOpt, int &finalMode, int &flag) { if (path.empty()) { - HILOGE("Invalid path"); + HILOGE("Invalid path from ETS first argument"); return false; } bool hasMode = false; int mode = GetMode(modeOpt, &hasMode); if (mode < 0 && hasMode) { - HILOGE("Invalid mode"); + HILOGE("Invalid mode from ETS second argument"); return false; } finalMode = hasMode ? mode : 0; @@ -181,7 +181,7 @@ static bool ValidAccessArgs(const std::string &path, const std::optional AccessCore::DoAccess(const std::string& path, const std::optional &mode) +FsResult AccessCore::DoAccess(const string& path, const optional &mode) { int finalMode = 0; int flag = DEFAULT_FLAG; @@ -189,7 +189,7 @@ FsResult AccessCore::DoAccess(const std::string& path, const std::optional return FsResult::Error(EINVAL); } int ret = Access(path, finalMode, flag); - if (ret < 0 && (std::string_view(uv_err_name(ret)) != "ENOENT")) { + if (ret < 0 && (string_view(uv_err_name(ret)) != "ENOENT")) { HILOGE("Failed to access file by path"); return FsResult::Error(ret); } @@ -197,15 +197,16 @@ FsResult AccessCore::DoAccess(const std::string& path, const std::optional return FsResult::Success(isAccess); } -FsResult AccessCore::DoAccess(const std::string& path, const AccessModeType &mode, const AccessFlag &flag) +FsResult AccessCore::DoAccess(const string& path, const AccessModeType &mode, const AccessFlag &flag) { int finalMode = static_cast(mode); int finalFlag = static_cast(flag); - if (!ValidAccessArgs(path, std::make_optional(mode), finalMode, finalFlag)) { + if (!ValidAccessArgs(path, make_optional(mode), finalMode, finalFlag)) { return FsResult::Error(EINVAL); } + int ret = Access(path, finalMode, finalFlag); - if (ret < 0 && (std::string_view(uv_err_name(ret)) != "ENOENT")) { + if (ret < 0 && (string_view(uv_err_name(ret)) != "ENOENT")) { HILOGE("Failed to access file by path"); return FsResult::Error(ret); } diff --git a/interfaces/kits/js/src/mod_fs/properties/access_core.h b/interfaces/kits/js/src/mod_fs/properties/access_core.h index 0a6f9e1b2f7776e5b6af5db1c12b773e0d9113bb..5afb07cadfaea201fe66076805a6e11109ca1e22 100644 --- a/interfaces/kits/js/src/mod_fs/properties/access_core.h +++ b/interfaces/kits/js/src/mod_fs/properties/access_core.h @@ -40,7 +40,6 @@ public: }; constexpr int DIR_DEFAULT_PERM = 0770; -const string PROCEDURE_ACCESS_NAME = "FileIOAccess"; } // namespace ModuleFileIO } // namespace FileManagement } // namespace OHOS diff --git a/interfaces/kits/js/src/mod_fs/properties/ani/access_ani.cpp b/interfaces/kits/js/src/mod_fs/properties/ani/access_ani.cpp index 329e116231db924a7a676180d4d20c25f63f8eca..266c6f3aeb5ffd5e436ff502350a644346f90816 100644 --- a/interfaces/kits/js/src/mod_fs/properties/ani/access_ani.cpp +++ b/interfaces/kits/js/src/mod_fs/properties/ani/access_ani.cpp @@ -74,20 +74,20 @@ std::optional OptToAccessFlagType(const std::optional &flag_ind return ToAccessFlagType(flag_index.value()); } -ani_boolean AccessAni::AccessSync3( +ani_boolean AccessAni::AccessSync( ani_env *env, [[maybe_unused]] ani_class clazz, ani_string path, ani_enum_item mode, ani_enum_item flag) { ani_boolean ret = 0; auto [succPath, pathStr] = TypeConverter::ToUTF8String(env, path); if (!succPath) { - HILOGE("Invalid path"); + HILOGE("Invalid path from ETS first argument"); ErrorHandler::Throw(env, EINVAL); return ret; } auto [succMode, modeOp] = TypeConverter::EnumToInt32(env, mode); if (!succMode) { - HILOGE("Invalid mode"); + HILOGE("Invalid mode from ETS second argument"); ErrorHandler::Throw(env, EINVAL); return ret; } @@ -95,7 +95,7 @@ ani_boolean AccessAni::AccessSync3( auto [succFlag, flagOpt] = TypeConverter::EnumToInt32(env, flag); if (!succFlag) { - HILOGE("Invalid flag"); + HILOGE("Invalid flag from ETS third argument"); ErrorHandler::Throw(env, EINVAL); return ret; } diff --git a/interfaces/kits/js/src/mod_fs/properties/ani/access_ani.h b/interfaces/kits/js/src/mod_fs/properties/ani/access_ani.h index 2dea25bda4d221d2460c6438488e210eae2b1b55..baa64359acb51cd510b9c8021765875d91bc5d5a 100644 --- a/interfaces/kits/js/src/mod_fs/properties/ani/access_ani.h +++ b/interfaces/kits/js/src/mod_fs/properties/ani/access_ani.h @@ -13,8 +13,8 @@ * limitations under the License. */ -#ifndef INTERFACES_KITS_JS_SRC_MOD_FS_ACCESS_ANI_H -#define INTERFACES_KITS_JS_SRC_MOD_FS_ACCESS_ANI_H +#ifndef INTERFACES_KITS_JS_SRC_MOD_FS_PROPERTIES_ANI_ACCESS_ANI_H +#define INTERFACES_KITS_JS_SRC_MOD_FS_PROPERTIES_ANI_ACCESS_ANI_H #include @@ -25,7 +25,7 @@ namespace ANI { class AccessAni final { public: - static ani_boolean AccessSync3( + static ani_boolean AccessSync( ani_env *env, [[maybe_unused]] ani_class clazz, ani_string path, ani_enum_item mode, ani_enum_item flag); }; } // namespace ANI @@ -33,4 +33,4 @@ public: } // namespace FileManagement } // namespace OHOS -#endif // INTERFACES_KITS_JS_SRC_MOD_FS_ACCESS_ANI_H \ No newline at end of file +#endif // INTERFACES_KITS_JS_SRC_MOD_FS_PROPERTIES_ANI_ACCESS_ANI_H \ No newline at end of file diff --git a/interfaces/kits/js/src/mod_fs/properties/ani/dup_ani.cpp b/interfaces/kits/js/src/mod_fs/properties/ani/dup_ani.cpp index 9158f077c6e14d9eba133634486e0c4c941dbf36..22c002243e45cb58b9dac253eec37acbc6d7feca 100644 --- a/interfaces/kits/js/src/mod_fs/properties/ani/dup_ani.cpp +++ b/interfaces/kits/js/src/mod_fs/properties/ani/dup_ani.cpp @@ -33,7 +33,8 @@ ani_object DupAni::Dup(ani_env *env, [[maybe_unused]] ani_class clazz, ani_doubl FsResult ret = DupCore::DoDup(static_cast(fd)); if (!ret.IsSuccess()) { HILOGE("Dup file failed"); - ErrorHandler::Throw(env, EINVAL); + const auto &err = ret.GetError(); + ErrorHandler::Throw(env, err); return nullptr; } const FsFile *file = ret.GetData().value(); diff --git a/interfaces/kits/js/src/mod_fs/properties/ani/dup_ani.h b/interfaces/kits/js/src/mod_fs/properties/ani/dup_ani.h index 8f943ddb2f4cb475f5e4b85bbd33dc3cf158e801..c0e4a02c7083134a8e1e92289189c457006b80e7 100644 --- a/interfaces/kits/js/src/mod_fs/properties/ani/dup_ani.h +++ b/interfaces/kits/js/src/mod_fs/properties/ani/dup_ani.h @@ -13,8 +13,8 @@ * limitations under the License. */ -#ifndef INTERFACES_KITS_JS_SRC_MOD_FS_DUP_ANI_H -#define INTERFACES_KITS_JS_SRC_MOD_FS_DUP_ANI_H +#ifndef INTERFACES_KITS_JS_SRC_MOD_FS_PROPERTIES_ANI_DUP_ANI_H +#define INTERFACES_KITS_JS_SRC_MOD_FS_PROPERTIES_ANI_DUP_ANI_H #include @@ -32,4 +32,4 @@ public: } // namespace FileManagement } // namespace OHOS -#endif // INTERFACES_KITS_JS_SRC_MOD_FS_DUP_ANI_H \ No newline at end of file +#endif // INTERFACES_KITS_JS_SRC_MOD_FS_PROPERTIES_ANI_DUP_ANI_H \ No newline at end of file diff --git a/interfaces/kits/js/src/mod_fs/properties/ani/read_ani.cpp b/interfaces/kits/js/src/mod_fs/properties/ani/read_ani.cpp index fa5ce2334a35ed1d5973284dea9a9e1eafd42d22..2dc05a44d498f526f840efaffe55774c5f3b48a2 100644 --- a/interfaces/kits/js/src/mod_fs/properties/ani/read_ani.cpp +++ b/interfaces/kits/js/src/mod_fs/properties/ani/read_ani.cpp @@ -22,9 +22,12 @@ #include "read_core.h" #include "type_converter.h" +#ifdef FILE_API_TRACE +#include "hitrace_meter.h" +#endif + namespace OHOS::FileManagement::ModuleFileIO::ANI { -using namespace std; using namespace OHOS::FileManagement::ModuleFileIO; static tuple> ToReadOptions(ani_env *env, ani_object obj) @@ -38,26 +41,31 @@ static tuple> ToReadOptions(ani_env *env, ani_object auto [succOffset, offset] = AniHelper::ParseInt64Option(env, obj, "offset"); if (!succOffset) { - HILOGE("Illegal option.offset parameter"); + HILOGE("option.offset shall be positive number"); return { false, nullopt }; } options.offset = offset; auto [succLength, length] = AniHelper::ParseInt64Option(env, obj, "length"); if (!succLength) { - HILOGE("Illegal option.length parameter"); + HILOGE("Invalid option.length"); return { false, nullopt }; } options.length = length; + return { true, make_optional(move(options)) }; } ani_double ReadAni::ReadSync( ani_env *env, [[maybe_unused]] ani_class clazz, ani_double fd, ani_arraybuffer buffer, ani_object options) { +#ifdef FILE_API_TRACE + HITRACE_METER_NAME(HITRACE_TAG_FILEMANAGEMENT, __PRETTY_FUNCTION__); +#endif + auto [succBuf, arrayBuffer] = TypeConverter::ToArrayBuffer(env, buffer); if (!succBuf) { - HILOGE("Failed to resolve arrayBuffer!"); + HILOGE("Invalid arraybuffer"); ErrorHandler::Throw(env, EINVAL); return -1; } @@ -71,7 +79,6 @@ ani_double ReadAni::ReadSync( auto ret = ReadCore::DoRead(static_cast(fd), arrayBuffer, op); if (!ret.IsSuccess()) { - HILOGE("Read file content failed!"); const auto &err = ret.GetError(); ErrorHandler::Throw(env, err); return -1; diff --git a/interfaces/kits/js/src/mod_fs/properties/ani/read_ani.h b/interfaces/kits/js/src/mod_fs/properties/ani/read_ani.h index ceec384b48be270170bf14f877680608ad65f1a8..3604b5c2f253782ec861740c2a954c85355e5850 100644 --- a/interfaces/kits/js/src/mod_fs/properties/ani/read_ani.h +++ b/interfaces/kits/js/src/mod_fs/properties/ani/read_ani.h @@ -13,8 +13,8 @@ * limitations under the License. */ -#ifndef INTERFACES_KITS_JS_SRC_MOD_FS_READ_ANI_H -#define INTERFACES_KITS_JS_SRC_MOD_FS_READ_ANI_H +#ifndef INTERFACES_KITS_JS_SRC_MOD_FS_PROPERTIES_ANI_READ_ANI_H +#define INTERFACES_KITS_JS_SRC_MOD_FS_PROPERTIES_ANI_READ_ANI_H #include @@ -26,4 +26,4 @@ public: ani_env *env, [[maybe_unused]] ani_class clazz, ani_double fd, ani_arraybuffer buffer, ani_object options); }; } // namespace OHOS::FileManagement::ModuleFileIO::ANI -#endif // INTERFACES_KITS_JS_SRC_MOD_FS_READ_ANI_H \ No newline at end of file +#endif // INTERFACES_KITS_JS_SRC_MOD_FS_PROPERTIES_ANI_READ_ANI_H \ No newline at end of file diff --git a/interfaces/kits/js/src/mod_fs/properties/ani/rmdir_ani.cpp b/interfaces/kits/js/src/mod_fs/properties/ani/rmdir_ani.cpp index 04a4cfa6b2fd2ab944f40b5eb02c1e02b630f4e3..45239541cf1f30123678a42d3b17d4b60966a87b 100644 --- a/interfaces/kits/js/src/mod_fs/properties/ani/rmdir_ani.cpp +++ b/interfaces/kits/js/src/mod_fs/properties/ani/rmdir_ani.cpp @@ -30,13 +30,13 @@ void RmdirAni::RmdirSync(ani_env *env, [[maybe_unused]] ani_class clazz, ani_str { auto [succPath, pathStr] = TypeConverter::ToUTF8String(env, path); if (!succPath) { - HILOGE("Invalid path"); + HILOGE("Invalid path from ETS first argument"); ErrorHandler::Throw(env, EINVAL); return; } auto ret = RmdirentCore::DoRmdirent(pathStr); if (!ret.IsSuccess()) { - HILOGE("DoRmdirent failed"); + HILOGE("DoRmdir failed"); const auto &err = ret.GetError(); ErrorHandler::Throw(env, err); return; diff --git a/interfaces/kits/js/src/mod_fs/properties/ani/rmdir_ani.h b/interfaces/kits/js/src/mod_fs/properties/ani/rmdir_ani.h index 5c7dedc9b30042d9876103e594890c31546e9d99..a3270301894b01638d61284a4483e969752afb60 100644 --- a/interfaces/kits/js/src/mod_fs/properties/ani/rmdir_ani.h +++ b/interfaces/kits/js/src/mod_fs/properties/ani/rmdir_ani.h @@ -13,8 +13,8 @@ * limitations under the License. */ -#ifndef RMDIR_ANI_H -#define RMDIR_ANI_H +#ifndef INTERFACES_KITS_JS_SRC_MOD_FS_PROPERTIES_ANI_RMDIR_ANI_H +#define INTERFACES_KITS_JS_SRC_MOD_FS_PROPERTIES_ANI_RMDIR_ANI_H #include @@ -32,4 +32,4 @@ public: } // namespace FileManagement } // namespace OHOS -#endif // RMDIR_ANI_H \ No newline at end of file +#endif // INTERFACES_KITS_JS_SRC_MOD_FS_PROPERTIES_ANI_RMDIR_ANI_H \ No newline at end of file diff --git a/interfaces/kits/js/src/mod_fs/properties/ani/symlink_ani.cpp b/interfaces/kits/js/src/mod_fs/properties/ani/symlink_ani.cpp index 4cbac513388e666d58b321a6ab77e971b7dc279e..6721e2ad1ca2afea7209f7ea6c71845bbc8c6aa0 100644 --- a/interfaces/kits/js/src/mod_fs/properties/ani/symlink_ani.cpp +++ b/interfaces/kits/js/src/mod_fs/properties/ani/symlink_ani.cpp @@ -29,17 +29,17 @@ void SymlinkAni::SymlinkSync(ani_env *env, [[maybe_unused]] ani_class clazz, ani { auto [succTarget, targetPath] = TypeConverter::ToUTF8String(env, target); if (!succTarget) { - HILOGE("Invalid target"); + HILOGE("Failed to get symlink arguments: invalid target"); ErrorHandler::Throw(env, EINVAL); return; } - auto [succSrc, src] = TypeConverter::ToUTF8String(env, srcPath); + auto [succSrc, sourcePath] = TypeConverter::ToUTF8String(env, srcPath); if (!succSrc) { - HILOGE("Invalid src"); + HILOGE("Failed to get symlink arguments: invalid src"); ErrorHandler::Throw(env, EINVAL); return; } - auto ret = SymlinkCore::DoSymlink(targetPath, src); + auto ret = SymlinkCore::DoSymlink(targetPath, sourcePath); if (!ret.IsSuccess()) { HILOGE("DoSymlink failed"); const auto &err = ret.GetError(); diff --git a/interfaces/kits/js/src/mod_fs/properties/ani/symlink_ani.h b/interfaces/kits/js/src/mod_fs/properties/ani/symlink_ani.h index 6ba3abb554ecd244031623959486bcc81f45ea04..3c8c16ca2885f06ce07be648cbef5b0d7d098669 100644 --- a/interfaces/kits/js/src/mod_fs/properties/ani/symlink_ani.h +++ b/interfaces/kits/js/src/mod_fs/properties/ani/symlink_ani.h @@ -13,8 +13,8 @@ * limitations under the License. */ -#ifndef INTERFACES_KITS_JS_SRC_MOD_FS_SYMLINK_ANI_H -#define INTERFACES_KITS_JS_SRC_MOD_FS_SYMLINK_ANI_H +#ifndef INTERFACES_KITS_JS_SRC_MOD_FS_PROPERTIES_ANI_SYMLINK_ANI_H +#define INTERFACES_KITS_JS_SRC_MOD_FS_PROPERTIES_ANI_SYMLINK_ANI_H #include @@ -32,4 +32,4 @@ public: } // namespace FileManagement } // namespace OHOS -#endif // INTERFACES_KITS_JS_SRC_MOD_FS_SYMLINK_ANI_H \ No newline at end of file +#endif // INTERFACES_KITS_JS_SRC_MOD_FS_PROPERTIES_ANI_SYMLINK_ANI_H \ No newline at end of file diff --git a/interfaces/kits/js/src/mod_fs/properties/ani/utimes_ani.cpp b/interfaces/kits/js/src/mod_fs/properties/ani/utimes_ani.cpp index 849f10d4d789b07971c92d3f5ac422d073f8642a..a5af2a704a41fce7353cdc2d5696a84c3bd6f90d 100644 --- a/interfaces/kits/js/src/mod_fs/properties/ani/utimes_ani.cpp +++ b/interfaces/kits/js/src/mod_fs/properties/ani/utimes_ani.cpp @@ -30,7 +30,7 @@ void UtimesAni::Utimes( { auto [succPath, newPath] = TypeConverter::ToUTF8String(env, path); if (!succPath) { - HILOGE("Invalid path"); + HILOGE("Invalid path from ETS first argument"); ErrorHandler::Throw(env, EINVAL); return; } diff --git a/interfaces/kits/js/src/mod_fs/properties/ani/utimes_ani.h b/interfaces/kits/js/src/mod_fs/properties/ani/utimes_ani.h index 118f7d25ad1cd1fb7cc4442f4e4826af311a36f4..b07dd421d1d86d0aa80ca047889d45377c4fcd1e 100644 --- a/interfaces/kits/js/src/mod_fs/properties/ani/utimes_ani.h +++ b/interfaces/kits/js/src/mod_fs/properties/ani/utimes_ani.h @@ -13,8 +13,8 @@ * limitations under the License. */ -#ifndef INTERFACES_KITS_JS_SRC_MOD_FS_UTIMES_ANI_H -#define INTERFACES_KITS_JS_SRC_MOD_FS_UTIMES_ANI_H +#ifndef INTERFACES_KITS_JS_SRC_MOD_FS_PROPERTIES_ANI_UTIMES_ANI_H +#define INTERFACES_KITS_JS_SRC_MOD_FS_PROPERTIES_ANI_UTIMES_ANI_H #include @@ -33,4 +33,4 @@ public: } // namespace FileManagement } // namespace OHOS -#endif // INTERFACES_KITS_JS_SRC_MOD_FS_UTIMES_ANI_H \ No newline at end of file +#endif // INTERFACES_KITS_JS_SRC_MOD_FS_PROPERTIES_ANI_UTIMES_ANI_H \ No newline at end of file diff --git a/interfaces/kits/js/src/mod_fs/properties/read_core.cpp b/interfaces/kits/js/src/mod_fs/properties/read_core.cpp index 2099ebce63eb8ca42436d1a78e60305fc5247ad7..fa2f0305bd25a2f53c8d72f3230da3c32302003a 100644 --- a/interfaces/kits/js/src/mod_fs/properties/read_core.cpp +++ b/interfaces/kits/js/src/mod_fs/properties/read_core.cpp @@ -33,25 +33,28 @@ static tuple ValidReadArg(ArrayBuffer &arrayBuffe size_t retLen = 0; int64_t offset = -1; bool succ = false; + void *buf = arrayBuffer.buf; size_t bufLen = arrayBuffer.length; - if (bufLen > UINT_MAX) { HILOGE("Invalid arraybuffer"); return { false, nullptr, retLen, offset }; } - optional lengthOp = nullopt; + + optional lengthOp = nullopt; optional offsetOp = nullopt; if (options.has_value()) { ReadOptions op = options.value(); lengthOp = op.length; offsetOp = op.offset; } + tie(succ, retLen) = FsUtils::GetActualLen(bufLen, 0, lengthOp); if (!succ) { HILOGE("Failed to get actual length"); return { false, nullptr, retLen, offset }; } + if (offsetOp.has_value()) { offset = offsetOp.value(); if (offset < 0) { @@ -65,12 +68,13 @@ static tuple ValidReadArg(ArrayBuffer &arrayBuffe FsResult ReadCore::DoRead(const int32_t &fd, ArrayBuffer &arrayBuffer, const optional &options) { if (fd < 0) { - HILOGE("Invalid fd"); + HILOGE("Invalid fd from ETS first argument"); return FsResult::Error(EINVAL); } auto [succ, buf, len, offset] = ValidReadArg(arrayBuffer, options); if (!succ) { + HILOGE("Failed to resolve buf and options"); return FsResult::Error(EINVAL); } diff --git a/interfaces/kits/js/src/mod_fs/properties/read_core.h b/interfaces/kits/js/src/mod_fs/properties/read_core.h index 4b5b74fc3b818e9086d64489417f6dafe6f90493..89315dbc4fdd929eab5ef3e5be32cfc2baef2417 100644 --- a/interfaces/kits/js/src/mod_fs/properties/read_core.h +++ b/interfaces/kits/js/src/mod_fs/properties/read_core.h @@ -13,8 +13,8 @@ * limitations under the License. */ -#ifndef FILEMANAGEMENT_FILE_API_READ_CORE_H -#define FILEMANAGEMENT_FILE_API_READ_CORE_H +#ifndef INTERFACES_KITS_JS_SRC_MOD_FS_PROPERTIES_READ_CORE_H +#define INTERFACES_KITS_JS_SRC_MOD_FS_PROPERTIES_READ_CORE_H #include #include "filemgmt_libfs.h" @@ -34,7 +34,6 @@ public: const int32_t &fd, ArrayBuffer &arrayBuffer, const optional &options = nullopt); }; -const string PROCEDURE_READTEXT_NAME = "FileIOReadText"; } // namespace OHOS::FileManagement::ModuleFileIO -#endif // FILEMANAGEMENT_FILE_API_READ_CORE_H \ No newline at end of file +#endif // INTERFACES_KITS_JS_SRC_MOD_FS_PROPERTIES_READ_CORE_H \ No newline at end of file diff --git a/interfaces/kits/js/src/mod_fs/properties/rmdir_core.cpp b/interfaces/kits/js/src/mod_fs/properties/rmdir_core.cpp index c87ce49efe9c9101f16f62ed00f58c048517a49a..9c30fc364226f17d5c5813b386596e8e2cd9f069 100644 --- a/interfaces/kits/js/src/mod_fs/properties/rmdir_core.cpp +++ b/interfaces/kits/js/src/mod_fs/properties/rmdir_core.cpp @@ -55,29 +55,29 @@ static int32_t RmDirent(const string &fpath) #else static int32_t RmDirent(const string &fpath) { - std::unique_ptr scandir_req = { + std::unique_ptr scandirReq = { new (std::nothrow) uv_fs_t, FsUtils::FsReqCleanup }; - if (!scandir_req) { + if (!scandirReq) { HILOGE("Failed to request heap memory."); return ENOMEM; } int ret = 0; - ret = uv_fs_scandir(nullptr, scandir_req.get(), fpath.c_str(), 0, nullptr); + ret = uv_fs_scandir(nullptr, scandirReq.get(), fpath.c_str(), 0, nullptr); if (ret < 0) { HILOGE("Failed to scandir, ret: %{public}d", ret); return ret; } uv_dirent_t dent; - while (uv_fs_scandir_next(scandir_req.get(), &dent) != UV_EOF) { + while (uv_fs_scandir_next(scandirReq.get(), &dent) != UV_EOF) { string filePath = fpath + "/" + string(dent.name); if (dent.type == UV_DIRENT_FILE) { - std::unique_ptr unlink_req = { + std::unique_ptr unlinkReq = { new (std::nothrow) uv_fs_t, FsUtils::FsReqCleanup }; - if (!unlink_req) { + if (!unlinkReq) { HILOGE("Failed to request heap memory."); return ENOMEM; } - ret = uv_fs_unlink(nullptr, unlink_req.get(), filePath.c_str(), nullptr); + ret = uv_fs_unlink(nullptr, unlinkReq.get(), filePath.c_str(), nullptr); if (ret < 0) { HILOGE("Failed to unlink file, ret: %{public}d", ret); return ret; @@ -89,13 +89,13 @@ static int32_t RmDirent(const string &fpath) } } } - std::unique_ptr rmdir_req = { + std::unique_ptr rmdirReq = { new (std::nothrow) uv_fs_t, FsUtils::FsReqCleanup}; - if (!rmdir_req) { + if (!rmdirReq) { HILOGE("Failed to request heap memory."); return ENOMEM; } - ret = uv_fs_rmdir(nullptr, rmdir_req.get(), fpath.c_str(), nullptr); + ret = uv_fs_rmdir(nullptr, rmdirReq.get(), fpath.c_str(), nullptr); if (ret < 0) { HILOGE("Failed to rmdir empty dir, ret: %{public}d", ret); return ret; @@ -107,7 +107,7 @@ static int32_t RmDirent(const string &fpath) FsResult RmdirentCore::DoRmdirent(const string &fpath) { if (fpath.empty()) { - HILOGE("Invalid path"); + HILOGE("Invalid path from ETS first argument"); return FsResult::Error(EINVAL); } diff --git a/interfaces/kits/js/src/mod_fs/properties/rmdir_core.h b/interfaces/kits/js/src/mod_fs/properties/rmdir_core.h index 90a6902fa586d24413015e6dadd864abdfe8d5ea..036f8e5461823a41dd8fa3c4173634e36f7c49df 100644 --- a/interfaces/kits/js/src/mod_fs/properties/rmdir_core.h +++ b/interfaces/kits/js/src/mod_fs/properties/rmdir_core.h @@ -26,7 +26,7 @@ class RmdirentCore final { public: static FsResult DoRmdirent(const std::string &fpath); }; -const std::string PROCEDURE_RMDIRENT_NAME = "FileIORmDirent"; + } // namespace ModuleFileIO } // namespace FileManagement } // namespace OHOS diff --git a/interfaces/kits/js/src/mod_fs/properties/symlink_core.cpp b/interfaces/kits/js/src/mod_fs/properties/symlink_core.cpp index c447187189726243a8583d8c78502ba800705d53..3e62d10c6c962db66db93f9a2f2604714c1c54f5 100644 --- a/interfaces/kits/js/src/mod_fs/properties/symlink_core.cpp +++ b/interfaces/kits/js/src/mod_fs/properties/symlink_core.cpp @@ -35,7 +35,8 @@ FsResult SymlinkCore::DoSymlink(const string &target, const string &srcPat HILOGE("Failed to request heap memory."); return FsResult::Error(ENOMEM); } - int ret = uv_fs_symlink(nullptr, symlinkReq.get(), srcPath.c_str(), target.c_str(), 0, nullptr); + + int ret = uv_fs_symlink(nullptr, symlinkReq.get(), target.c_str(), srcPath.c_str(), 0, nullptr); if (ret < 0) { HILOGE("Failed to create a link for old path"); return FsResult::Error(ret); diff --git a/interfaces/kits/js/src/mod_fs/properties/symlink_core.h b/interfaces/kits/js/src/mod_fs/properties/symlink_core.h index 223c8b683d30b409e5c9882386d0e92632c64741..4eaef88d9da983a7abf7ba162ae860a069e928d3 100644 --- a/interfaces/kits/js/src/mod_fs/properties/symlink_core.h +++ b/interfaces/kits/js/src/mod_fs/properties/symlink_core.h @@ -25,7 +25,7 @@ class SymlinkCore final { public: static FsResult DoSymlink(const string &target, const string &srcPath); }; -const std::string PROCEDURE_RMDIRENT_NAME = "FileIOSymLink"; + } // namespace ModuleFileIO } // namespace FileManagement } // namespace OHOS diff --git a/interfaces/kits/js/src/mod_fs/properties/utimes_core.cpp b/interfaces/kits/js/src/mod_fs/properties/utimes_core.cpp index 4b517167bf69d8fbbee4b590ba089d193c6c7746..96ac9b3ad094e1e098dcb41b6e176ee95e099ed8 100644 --- a/interfaces/kits/js/src/mod_fs/properties/utimes_core.cpp +++ b/interfaces/kits/js/src/mod_fs/properties/utimes_core.cpp @@ -28,15 +28,17 @@ using namespace std; FsResult UtimesCore::DoUtimes(const string &path, const double mtime) { if (mtime < 0) { - HILOGE("Invalid mtime"); + HILOGE("Invalid mtime from ETS second argument"); return FsResult::Error(EINVAL); } + std::unique_ptr statReq = { new (std::nothrow) uv_fs_t, FsUtils::FsReqCleanup }; if (!statReq) { HILOGE("Failed to request heap memory."); return FsResult::Error(ENOMEM); } + int ret = uv_fs_stat(nullptr, statReq.get(), path.c_str(), nullptr); if (ret < 0) { HILOGE("Failed to get stat of the file by path"); diff --git a/interfaces/kits/js/src/mod_fs/properties/utimes_core.h b/interfaces/kits/js/src/mod_fs/properties/utimes_core.h index 86fe8c4fd83dded66c52ddf571c158e1799330a6..34d5f8857004662ce18d941c2eeea79e52345626 100644 --- a/interfaces/kits/js/src/mod_fs/properties/utimes_core.h +++ b/interfaces/kits/js/src/mod_fs/properties/utimes_core.h @@ -25,7 +25,7 @@ class UtimesCore final { public: static FsResult DoUtimes(const string &path, const double mtime); }; -const std::string PROCEDURE_RMDIRENT_NAME = "FileIOUtimes"; + } // namespace ModuleFileIO } // namespace FileManagement } // namespace OHOS