diff --git a/interfaces/kits/js/src/mod_fileio/class_dir/dir_n_exporter.cpp b/interfaces/kits/js/src/mod_fileio/class_dir/dir_n_exporter.cpp index ed53fb3ea98a95b03ae4d104a43161078487f83e..a0a398ad4faedc06891bc41ff885d60665e2e40a 100644 --- a/interfaces/kits/js/src/mod_fileio/class_dir/dir_n_exporter.cpp +++ b/interfaces/kits/js/src/mod_fileio/class_dir/dir_n_exporter.cpp @@ -103,12 +103,11 @@ napi_value DirNExporter::Close(napi_env env, napi_callback_info info) }; NVal thisVar(env, funcArg.GetThisVar()); - static const string PROCEDURE_NAME = "fileioDirClose"; if (funcArg.GetArgc() == NARG_CNT::ZERO) { - return NAsyncWorkPromise(env, thisVar).Schedule(PROCEDURE_NAME, cbExec, cbCompl).val_; + return NAsyncWorkPromise(env, thisVar).Schedule(DIRCLOSE_PROCEDURE_NAME, cbExec, cbCompl).val_; } else { NVal cb(env, funcArg[NARG_POS::FIRST]); - return NAsyncWorkCallback(env, thisVar, cb).Schedule(PROCEDURE_NAME, cbExec, cbCompl).val_; + return NAsyncWorkCallback(env, thisVar, cb).Schedule(DIRCLOSE_PROCEDURE_NAME, cbExec, cbCompl).val_; } } @@ -196,12 +195,11 @@ napi_value DirNExporter::Read(napi_env env, napi_callback_info info) return DoReadComplete(env, err, arg); }; NVal thisVar(env, funcArg.GetThisVar()); - const string PROCEDURE_NAME = "fileioDirRead"; if (funcArg.GetArgc() == NARG_CNT::ZERO) { - return NAsyncWorkPromise(env, thisVar).Schedule(PROCEDURE_NAME, cbExec, cbCompl).val_; + return NAsyncWorkPromise(env, thisVar).Schedule(DIRREAD_PROCEDURE_NAME, cbExec, cbCompl).val_; } else { NVal cb(env, funcArg[NARG_POS::FIRST]); - return NAsyncWorkCallback(env, thisVar, cb).Schedule(PROCEDURE_NAME, cbExec, cbCompl).val_; + return NAsyncWorkCallback(env, thisVar, cb).Schedule(DIRREAD_PROCEDURE_NAME, cbExec, cbCompl).val_; } } @@ -364,10 +362,10 @@ napi_value DirNExporter::ListFile(napi_env env, napi_callback_info info) NVal thisVar(env, funcArg.GetThisVar()); if (funcArg.GetArgc() == NARG_CNT::ONE) { - return NAsyncWorkPromise(env, thisVar).Schedule(listfileProcedureName, cbExec, cbCompl).val_; + return NAsyncWorkPromise(env, thisVar).Schedule(LISTFILE_PROCEDURE_NAME, cbExec, cbCompl).val_; } else { NVal cb(env, funcArg[NARG_POS::SECOND]); - return NAsyncWorkCallback(env, thisVar, cb).Schedule(listfileProcedureName, cbExec, cbCompl).val_; + return NAsyncWorkCallback(env, thisVar, cb).Schedule(LISTFILE_PROCEDURE_NAME, cbExec, cbCompl).val_; } } diff --git a/interfaces/kits/js/src/mod_fileio/class_dir/dir_n_exporter.h b/interfaces/kits/js/src/mod_fileio/class_dir/dir_n_exporter.h index a40ed03d2b542f5ef501fdd4cd3c922bae2d2e2f..5f03896fd662b4a205f92ec0bb0e2910133d51c0 100644 --- a/interfaces/kits/js/src/mod_fileio/class_dir/dir_n_exporter.h +++ b/interfaces/kits/js/src/mod_fileio/class_dir/dir_n_exporter.h @@ -41,7 +41,9 @@ public: DirNExporter(napi_env env, napi_value exports); ~DirNExporter() override; }; -const std::string listfileProcedureName = "fileioDirListFile"; +const std::string LISTFILE_PROCEDURE_NAME = "fileioDirListFile"; +const std::string DIRREAD_PROCEDURE_NAME = "fileioDirRead"; +const std::string DIRCLOSE_PROCEDURE_NAME = "fileioDirClose"; } // namespace ModuleFileIO } // namespace DistributedFS } // namespace OHOS diff --git a/interfaces/kits/js/src/mod_fileio/class_randomaccessfile/randomaccessfile_entity.h b/interfaces/kits/js/src/mod_fileio/class_randomaccessfile/randomaccessfile_entity.h index 2081bffab3e3c07005c4a3077eb973c818c40c5a..49ea0727ff75449a8829d1b22d91b2bb803b2767 100644 --- a/interfaces/kits/js/src/mod_fileio/class_randomaccessfile/randomaccessfile_entity.h +++ b/interfaces/kits/js/src/mod_fileio/class_randomaccessfile/randomaccessfile_entity.h @@ -24,8 +24,8 @@ namespace OHOS { namespace DistributedFS { namespace ModuleFileIO { struct RandomAccessFileEntity { - std::unique_ptr fd_; - size_t fpointer = 0; + std::unique_ptr fd_ = nullptr; + int64_t fpointer = 0; }; } // namespace ModuleFileIO } // namespace DistributedFS diff --git a/interfaces/kits/js/src/mod_fileio/class_randomaccessfile/randomaccessfile_n_exporter.cpp b/interfaces/kits/js/src/mod_fileio/class_randomaccessfile/randomaccessfile_n_exporter.cpp index e5ff8f32b321cd3d2da21f2104dba7f8a7ae362d..ec319973e2b7b920b41732aa1f6f9885c66fd84f 100644 --- a/interfaces/kits/js/src/mod_fileio/class_randomaccessfile/randomaccessfile_n_exporter.cpp +++ b/interfaces/kits/js/src/mod_fileio/class_randomaccessfile/randomaccessfile_n_exporter.cpp @@ -50,9 +50,9 @@ static RandomAccessFileEntity *GetRAFEntity(napi_env env, napi_value raf_entity) return rafEntity; } -static tuple ParseJsFP(napi_env env, napi_value FPFromJs) +static tuple ParseJsFP(napi_env env, napi_value FPFromJs) { - auto [succ, fp] = NVal(env, FPFromJs).ToInt32(); + auto [succ, fp] = NVal(env, FPFromJs).ToInt64(); return { succ, fp }; } @@ -96,13 +96,13 @@ static int DoReadRAF(napi_env env, void* buf, size_t len, int fd, int64_t pos) return ret; } -static size_t DoWriteRAF(napi_env env, void* buf, size_t len, int fd, int64_t pos) +static int DoWriteRAF(napi_env env, void* buf, size_t len, int fd, int64_t pos) { uv_loop_s *loop = nullptr; uv_fs_t write_req; napi_get_uv_event_loop(env, &loop); uv_buf_t iov = uv_buf_init(static_cast(buf), len); - size_t ret = uv_fs_write(loop, &write_req, fd, &iov, 1, pos, NULL); + int ret = uv_fs_write(loop, &write_req, fd, &iov, 1, pos, NULL); uv_fs_req_cleanup(&write_req); return ret; } @@ -280,7 +280,7 @@ napi_value RandomAccessFileNExporter::WriteSync(napi_env env, napi_callback_info } else { pos = rafEntity->fpointer; } - ssize_t writeLen = DoWriteRAF(env, buf, len, rafEntity->fd_.get()->GetFD(), pos); + int writeLen = DoWriteRAF(env, buf, len, rafEntity->fd_.get()->GetFD(), pos); if (writeLen < 0) { UniError(errno).ThrowErr(env); return nullptr; @@ -325,7 +325,7 @@ napi_value RandomAccessFileNExporter::Write(napi_env env, napi_callback_info inf auto arg = make_shared(NVal(env, funcArg[NARG_POS::FIRST])); auto cbExec = [arg, buf, len, fd = rafEntity->fd_.get()->GetFD(), pos, rafEntity](napi_env env) -> UniError { - size_t writeLen = DoWriteRAF(env, buf, len, fd, pos); + int writeLen = DoWriteRAF(env, buf, len, fd, pos); if (writeLen < 0) { return UniError(errno); } diff --git a/interfaces/kits/js/src/mod_fileio/properties/copy_file.cpp b/interfaces/kits/js/src/mod_fileio/properties/copy_file.cpp index b81501a4055c33930ca8d78dbd4399672d136eb9..d1bb7942e8683091e722dba6e56b121f008a4fd5 100644 --- a/interfaces/kits/js/src/mod_fileio/properties/copy_file.cpp +++ b/interfaces/kits/js/src/mod_fileio/properties/copy_file.cpp @@ -190,15 +190,14 @@ napi_value CopyFile::Async(napi_env env, napi_callback_info info) } return {NVal::CreateUndefined(env)}; }; - - const string PROCEDURENAME = "FileIOCopyFile"; + NVal thisVar(env, funcArg.GetThisVar()); if (funcArg.GetArgc() == NARG_CNT::TWO || (funcArg.GetArgc() == NARG_CNT::THREE && !NVal(env, funcArg[NARG_POS::THIRD]).TypeIs(napi_function))) { - return NAsyncWorkPromise(env, thisVar).Schedule(PROCEDURENAME, cbExec, cbCompl).val_; + return NAsyncWorkPromise(env, thisVar).Schedule(PROCEDURE_COPYFILE_NAME, cbExec, cbCompl).val_; } else { NVal cb(env, funcArg[((funcArg.GetArgc() == NARG_CNT::THREE) ? NARG_POS::THIRD : NARG_POS::FOURTH)]); - return NAsyncWorkCallback(env, thisVar, cb).Schedule(PROCEDURENAME, cbExec, cbCompl).val_; + return NAsyncWorkCallback(env, thisVar, cb).Schedule(PROCEDURE_COPYFILE_NAME, cbExec, cbCompl).val_; } } } // namespace ModuleFileIO diff --git a/interfaces/kits/js/src/mod_fileio/properties/copy_file.h b/interfaces/kits/js/src/mod_fileio/properties/copy_file.h index bef01ef1e7a6d0ee54ad37903525210be32e9d98..8536ed91f6bd4632a45f293cf03b5e9d710a9904 100644 --- a/interfaces/kits/js/src/mod_fileio/properties/copy_file.h +++ b/interfaces/kits/js/src/mod_fileio/properties/copy_file.h @@ -26,6 +26,7 @@ public: static napi_value Async(napi_env env, napi_callback_info info); static napi_value Sync(napi_env env, napi_callback_info info); }; +const std::string PROCEDURE_COPYFILE_NAME = "FileIOCopyFile"; } // namespace ModuleFileIO } // namespace DistributedFS } // namespace OHOS diff --git a/interfaces/kits/js/src/mod_fileio/properties/fdatasync.cpp b/interfaces/kits/js/src/mod_fileio/properties/fdatasync.cpp index 6ed9509800b4ee1e8b7fb3a6983ac2db63a090a1..26d04cbb34989cac137c045fc25a8a38f5d48d58 100644 --- a/interfaces/kits/js/src/mod_fileio/properties/fdatasync.cpp +++ b/interfaces/kits/js/src/mod_fileio/properties/fdatasync.cpp @@ -82,13 +82,12 @@ napi_value Fdatasync::Async(napi_env env, napi_callback_info info) return { NVal::CreateUndefined(env) }; }; - const string procedureName = "FileIOFdatasync"; NVal thisVar(env, funcArg.GetThisVar()); if (funcArg.GetArgc() == NARG_CNT::ONE) { - return NAsyncWorkPromise(env, thisVar).Schedule(procedureName, cbExec, cbComplCallback).val_; + return NAsyncWorkPromise(env, thisVar).Schedule(PROCEDURE_FDATASYNC_NAME, cbExec, cbComplCallback).val_; } else { NVal cb(env, funcArg[NARG_POS::SECOND]); - return NAsyncWorkCallback(env, thisVar, cb).Schedule(procedureName, cbExec, cbComplCallback).val_; + return NAsyncWorkCallback(env, thisVar, cb).Schedule(PROCEDURE_FDATASYNC_NAME, cbExec, cbComplCallback).val_; } } } // namespace ModuleFileIO diff --git a/interfaces/kits/js/src/mod_fileio/properties/fdatasync.h b/interfaces/kits/js/src/mod_fileio/properties/fdatasync.h index f10fcbde3a1faa694680ef8ce97aaba17824e65f..2c5c4c1e12bc954780c89aea4afc27b5847e7aa0 100644 --- a/interfaces/kits/js/src/mod_fileio/properties/fdatasync.h +++ b/interfaces/kits/js/src/mod_fileio/properties/fdatasync.h @@ -26,6 +26,7 @@ public: static napi_value Sync(napi_env env, napi_callback_info info); static napi_value Async(napi_env env, napi_callback_info info); }; +const std::string PROCEDURE_FDATASYNC_NAME = "FileIOFdatasync"; } // namespace ModuleFileIO } // namespace DistributedFS } // namespace OHOS diff --git a/interfaces/kits/js/src/mod_fileio/properties/ftruncate.cpp b/interfaces/kits/js/src/mod_fileio/properties/ftruncate.cpp index 5052a1b23a2e330bb00774c2efde6de03b1da9b1..fa002b2da96a52ad8854e93db338d54d97a5b938 100644 --- a/interfaces/kits/js/src/mod_fileio/properties/ftruncate.cpp +++ b/interfaces/kits/js/src/mod_fileio/properties/ftruncate.cpp @@ -101,14 +101,13 @@ napi_value Ftruncate::Async(napi_env env, napi_callback_info info) } }; - const string PROCEDURENAME = "fileIOFtruncate"; NVal thisVar(env, funcArg.GetThisVar()); if (funcArg.GetArgc() == NARG_CNT::ONE || (funcArg.GetArgc() == NARG_CNT::TWO && !NVal(env, funcArg[NARG_POS::SECOND]).TypeIs(napi_function))) { - return NAsyncWorkPromise(env, thisVar).Schedule(PROCEDURENAME, cbExec, cbComplete).val_; + return NAsyncWorkPromise(env, thisVar).Schedule(PROCEDURE_FTRUNCATE_NAME, cbExec, cbComplete).val_; } else { NVal cb(env, funcArg[((funcArg.GetArgc() == NARG_CNT::TWO) ? NARG_POS::SECOND : NARG_POS::THIRD)]); - return NAsyncWorkCallback(env, thisVar, cb).Schedule(PROCEDURENAME, cbExec, cbComplete).val_; + return NAsyncWorkCallback(env, thisVar, cb).Schedule(PROCEDURE_FTRUNCATE_NAME, cbExec, cbComplete).val_; } } } // namespace ModuleFileIO diff --git a/interfaces/kits/js/src/mod_fileio/properties/ftruncate.h b/interfaces/kits/js/src/mod_fileio/properties/ftruncate.h index f9d076efc337ce69f6ea7d804d07a580964b1c91..84f33878caecba871b0dd3ef136248b22cba8f3a 100644 --- a/interfaces/kits/js/src/mod_fileio/properties/ftruncate.h +++ b/interfaces/kits/js/src/mod_fileio/properties/ftruncate.h @@ -26,6 +26,7 @@ public: static napi_value Sync(napi_env env, napi_callback_info info); static napi_value Async(napi_env env, napi_callback_info info); }; +const std::string PROCEDURE_FTRUNCATE_NAME = "FileIOFtruncate"; } // namespace ModuleFileIO } // namespace DistributedFS } // namespace OHOS diff --git a/interfaces/kits/js/src/mod_fileio/properties/open.cpp b/interfaces/kits/js/src/mod_fileio/properties/open.cpp index 25d731c04dccfad36a6cef7a797534a9342caf34..f5eea2c543a2c47c016110bea0a01eda3c3090e8 100644 --- a/interfaces/kits/js/src/mod_fileio/properties/open.cpp +++ b/interfaces/kits/js/src/mod_fileio/properties/open.cpp @@ -30,6 +30,21 @@ namespace DistributedFS { namespace ModuleFileIO { using namespace std; +static tuple GetJsFlags(napi_env env, const NFuncArg &funcArg) +{ + unsigned int flags = O_RDONLY; + if (funcArg.GetArgc() >= NARG_CNT::TWO) { + auto [succ, authFlags] = NVal(env, funcArg[NARG_POS::SECOND]).ToInt32(O_RDONLY); + if (!succ || authFlags < 0) { + UniError(EINVAL).ThrowErr(env, "Invalid flags"); + return { false, flags }; + } + flags = static_cast(authFlags); + (void)CommonFunc::ConvertJsFlags(flags); + } + return { true, flags }; +} + napi_value Open::Sync(napi_env env, napi_callback_info info) { NFuncArg funcArg(env, info); @@ -38,23 +53,15 @@ napi_value Open::Sync(napi_env env, napi_callback_info info) return nullptr; } - bool succ = false; - unique_ptr path = nullptr; - tie(succ, path, ignore) = NVal(env, funcArg[NARG_POS::FIRST]).ToUTF8String(); - if (!succ) { + auto [succGetPath, path, ignore] = NVal(env, funcArg[NARG_POS::FIRST]).ToUTF8String(); + if (!succGetPath) { UniError(EINVAL).ThrowErr(env, "Invalid path"); return nullptr; } - unsigned int flags = O_RDONLY; - if (funcArg.GetArgc() >= NARG_CNT::TWO) { - auto [succGetFlags, authFlags] = NVal(env, funcArg[NARG_POS::SECOND]).ToInt32(O_RDONLY); - if (!succGetFlags || authFlags < 0) { - UniError(EINVAL).ThrowErr(env, "Invalid flags"); - return nullptr; - } - flags = static_cast(authFlags); - (void)CommonFunc::ConvertJsFlags(flags); + auto [succGetFlags, flags] = GetJsFlags(env, funcArg); + if (!succGetFlags) { + return nullptr; } int fd = -1; @@ -70,8 +77,9 @@ napi_value Open::Sync(napi_env env, napi_callback_info info) return nullptr; } } else { + bool succ = false; tie(succ, mode) = NVal(env, funcArg.GetArg(NARG_POS::THIRD)).ToInt32(mode); - if (!succ) { + if (!succ || mode < 0) { UniError(EINVAL).ThrowErr(env, "Invalid mode"); return nullptr; } @@ -112,35 +120,29 @@ napi_value Open::Async(napi_env env, napi_callback_info info) return nullptr; } - auto [succ, path, unuse] = NVal(env, funcArg[NARG_POS::FIRST]).ToUTF8String(); - if (!succ) { + auto [succGetPath, path, unuse] = NVal(env, funcArg[NARG_POS::FIRST]).ToUTF8String(); + if (!succGetPath) { UniError(EINVAL).ThrowErr(env, "Invalid path"); return nullptr; } - size_t argc = funcArg.GetArgc(); - unsigned int flags = O_RDONLY; - if (argc >= NARG_CNT::TWO) { - auto [succ, authFlags] = NVal(env, funcArg[NARG_POS::SECOND]).ToInt32(O_RDONLY); - if (!succ || authFlags < 0) { - UniError(EINVAL).ThrowErr(env, "Invalid flags"); - return nullptr; - } - flags = static_cast(authFlags); - (void)CommonFunc::ConvertJsFlags(flags); + auto [succGetFlags, flags] = GetJsFlags(env, funcArg); + if (!succGetFlags) { + return nullptr; } + size_t argc = funcArg.GetArgc(); int32_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP; if (argc >= NARG_CNT::THREE) { + bool succ = false; tie(succ, mode) = NVal(env, funcArg[NARG_POS::THIRD]).ToInt32(mode); - if (!succ) { + if (!succ || mode < 0) { UniError(EINVAL).ThrowErr(env, "Invalid mode"); return nullptr; } } - auto arg = make_shared(); - auto cbExec = [path = string(path.get()), flags, mode, arg](napi_env env) -> UniError { + auto cbExec = [path = string(path.get()), flags = flags, mode, arg](napi_env env) -> UniError { return DoOpenExec(path, flags, mode, arg); }; diff --git a/interfaces/kits/js/src/mod_fileio/properties/truncate.cpp b/interfaces/kits/js/src/mod_fileio/properties/truncate.cpp index c2f06f611481131d9ddcc2a7a5754179f671a84f..a1c3f52c65d8fde65a063b0b19cdce86c81df534 100644 --- a/interfaces/kits/js/src/mod_fileio/properties/truncate.cpp +++ b/interfaces/kits/js/src/mod_fileio/properties/truncate.cpp @@ -97,13 +97,12 @@ napi_value Truncate::Async(napi_env env, napi_callback_info info) }; NVal thisVar(env, funcArg.GetThisVar()); - const string PROCEDURENAME = "FileIOTruncate"; if (funcArg.GetArgc() == NARG_CNT::ONE || (funcArg.GetArgc() == NARG_CNT::TWO && !NVal(env, funcArg[NARG_POS::SECOND]).TypeIs(napi_function))) { - return NAsyncWorkPromise(env, thisVar).Schedule(PROCEDURENAME, cbExec, cbCompl).val_; + return NAsyncWorkPromise(env, thisVar).Schedule(PROCEDURE_TRUNCATE_NAME, cbExec, cbCompl).val_; } else { NVal cb(env, funcArg[funcArg.GetArgc() - 1]); - return NAsyncWorkCallback(env, thisVar, cb).Schedule(PROCEDURENAME, cbExec, cbCompl).val_; + return NAsyncWorkCallback(env, thisVar, cb).Schedule(PROCEDURE_TRUNCATE_NAME, cbExec, cbCompl).val_; } } } // namespace ModuleFileIO diff --git a/interfaces/kits/js/src/mod_fileio/properties/truncate.h b/interfaces/kits/js/src/mod_fileio/properties/truncate.h index b4f32e0264947345ea5803bec3148181aabf347f..cf53951f0a05685578004b34726901ab37c4857c 100644 --- a/interfaces/kits/js/src/mod_fileio/properties/truncate.h +++ b/interfaces/kits/js/src/mod_fileio/properties/truncate.h @@ -29,6 +29,7 @@ public: static napi_value Sync(napi_env env, napi_callback_info info); static napi_value Async(napi_env env, napi_callback_info info); }; +const std::string PROCEDURE_TRUNCATE_NAME = "FileIOTruncate"; } // namespace ModuleFileIO } // namespace DistributedFS } // namespace OHOS diff --git a/interfaces/kits/js/src/mod_fs/class_watcher/watcher_n_exporter.h b/interfaces/kits/js/src/mod_fs/class_watcher/watcher_n_exporter.h index 6297c0601fa8c2093c0d2e2c3f250b33af565635..ca8d192c69119255b67471be44af80eb2c459348 100644 --- a/interfaces/kits/js/src/mod_fs/class_watcher/watcher_n_exporter.h +++ b/interfaces/kits/js/src/mod_fs/class_watcher/watcher_n_exporter.h @@ -29,7 +29,7 @@ public: ~JSCallbackContext() {} public: - napi_env env_; + napi_env env_ = nullptr; NRef &ref_; std::string fileName_; uint32_t event_ = 0; diff --git a/interfaces/kits/js/src/mod_fs/properties/truncate.cpp b/interfaces/kits/js/src/mod_fs/properties/truncate.cpp index a793c2811751816ba184a18be989e79d739eaf6c..f3edc9693f85270c2832d3345d58c8e292253c61 100644 --- a/interfaces/kits/js/src/mod_fs/properties/truncate.cpp +++ b/interfaces/kits/js/src/mod_fs/properties/truncate.cpp @@ -48,7 +48,7 @@ static tuple ParseJsFile(napi_env env, napi_value pathOrFdFromJs return { true, FileInfo { false, {}, move(fdg) } }; }; -static NError TruncateCore(napi_env env, FileInfo &fileInfo, int64_t truncateLen) +static NError TruncateCore(FileInfo &fileInfo, int64_t truncateLen) { if (fileInfo.isPath) { std::unique_ptr open_req = { @@ -111,7 +111,7 @@ napi_value Truncate::Sync(napi_env env, napi_callback_info info) return nullptr; } } - auto err = TruncateCore(env, fileInfo, truncateLen); + auto err = TruncateCore(fileInfo, truncateLen); if (err) { err.ThrowErr(env); return nullptr; @@ -141,8 +141,8 @@ napi_value Truncate::Async(napi_env env, napi_callback_info info) return nullptr; } } - auto cbExec = [fileInfo = make_shared(move(fileInfo)), truncateLen, env = env]() -> NError { - return TruncateCore(env, *fileInfo, truncateLen); + auto cbExec = [fileInfo = make_shared(move(fileInfo)), truncateLen]() -> NError { + return TruncateCore(*fileInfo, truncateLen); }; auto cbCompl = [](napi_env env, NError err) -> NVal { if (err) {