From 1ee9a29ed87ce993b0f8dcda52f3302fa89dff3e Mon Sep 17 00:00:00 2001 From: zhuhongtao66 Date: Wed, 7 Dec 2022 17:59:48 +0800 Subject: [PATCH 1/3] fixed 09f8e74 from https://gitee.com/zhuhongtao66/filemanagement_file_api_sunxuhui1/pulls/99 Add log output for class_dir Signed-off-by: zhuhongtao66 --- interfaces/kits/js/src/common/log.h | 2 +- .../mod_fileio/class_dir/dir_n_exporter.cpp | 46 ++++++++++++++++++- .../src/mod_fileio/class_dir/dir_n_exporter.h | 2 + 3 files changed, 48 insertions(+), 2 deletions(-) diff --git a/interfaces/kits/js/src/common/log.h b/interfaces/kits/js/src/common/log.h index 57ba9edcd..71aacaf4c 100644 --- a/interfaces/kits/js/src/common/log.h +++ b/interfaces/kits/js/src/common/log.h @@ -27,7 +27,7 @@ namespace OHOS { namespace DistributedFS { #ifndef FILE_SUBSYSTEM_DEBUG_LOCAL -static constexpr int FILEIO_DOMAIN_ID = 0; +static constexpr int FILEIO_DOMAIN_ID = 0xD004388; static constexpr OHOS::HiviewDFX::HiLogLabel FILEIO_LABEL = { LOG_CORE, FILEIO_DOMAIN_ID, "file_api" }; #ifdef HILOGD 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 b94cfe121..7a7fa28ea 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 @@ -171,10 +171,31 @@ napi_value DirNExporter::Read(napi_env env, napi_callback_info info) auto cbExec = [arg, dir, dirEntity](napi_env env) -> UniError { struct dirent tmpDirent; lock_guard(dirEntity->lock_); + char dirBuff[DIR_BUFF_LEN]; + (void)memset_s(dirBuff, DIR_BUFF_LEN, 0x00, DIR_BUFF_LEN); + + if (EOK == memcpy_s(dirBuff, DIR_BUFF_LEN, dir, DIR_BUFF_LEN - 1)) { + HILOGE("[0]struct DIR member fd = %{public}02x-%{public}02x-%{public}02x-%{public}02x," + "buf_pos = %{public}02x-%{public}02x-%{public}02x-%{public}02x," + "buf_end = %{public}02x-%{public}02x-%{public}02x-%{public}02x", + dirBuff[8], dirBuff[9], dirBuff[10], dirBuff[11], dirBuff[12], dirBuff[13], dirBuff[14], + dirBuff[15], dirBuff[16], dirBuff[17], dirBuff[18], dirBuff[19]); + } errno = 0; dirent *res = nullptr; do { res = readdir(dir); + if (res != nullptr) { + HILOGE("res filelength = %{public}u, type = %{public}d", res->d_reclen, res->d_type); + } + + if (EOK == memcpy_s(dirBuff, DIR_BUFF_LEN, dir, DIR_BUFF_LEN - 1)) { + HILOGE("struct DIR member fd = %{public}02x-%{public}02x-%{public}02x-%{public}02x," + "buf_pos = %{public}02x-%{public}02x-%{public}02x-%{public}02x," + "buf_end = %{public}02x-%{public}02x-%{public}02x-%{public}02x", + dirBuff[8], dirBuff[9], dirBuff[10], dirBuff[11], dirBuff[12], dirBuff[13], + dirBuff[14], dirBuff[15], dirBuff[16], dirBuff[17], dirBuff[18], dirBuff[19]); + } if (res == nullptr && errno) { return UniError(errno); } else if (res == nullptr) { @@ -205,6 +226,9 @@ napi_value DirNExporter::Read(napi_env env, napi_callback_info info) napi_value DirNExporter::ReadSync(napi_env env, napi_callback_info info) { + char dirBuff[DIR_BUFF_LEN]; + (void)memset_s(dirBuff, DIR_BUFF_LEN, 0x00, DIR_BUFF_LEN); + NFuncArg funcArg(env, info); if (!funcArg.InitArgs(NARG_CNT::ZERO)) { UniError(EINVAL).ThrowErr(env, "Number of arguments unmatched"); @@ -216,6 +240,14 @@ napi_value DirNExporter::ReadSync(napi_env env, napi_callback_info info) UniError(EBADF).ThrowErr(env, "Dir has been closed yet"); return nullptr; } + DIR *dir = dirEntity->dir_.get(); + if (EOK == memcpy_s(dirBuff, DIR_BUFF_LEN, dir, DIR_BUFF_LEN -1)) { + HILOGE("[0]struct DIR member fd = %{public}02x-%{public}02x-%{public}02x-%{public}02x," + "buf_pos = %{public}02x-%{public}02x-%{public}02x-%{public}02x," + "buf_end = %{public}02x-%{public}02x-%{public}02x-%{public}02x", + dirBuff[8], dirBuff[9], dirBuff[10], dirBuff[11], dirBuff[12], dirBuff[13], + dirBuff[14], dirBuff[15], dirBuff[16], dirBuff[17], dirBuff[18], dirBuff[19]); + } struct dirent tmpDirent; { @@ -223,7 +255,19 @@ napi_value DirNExporter::ReadSync(napi_env env, napi_callback_info info) errno = 0; dirent *res = nullptr; do { - res = readdir(dirEntity->dir_.get()); + res = readdir(dir); + if (res != nullptr) { + HILOGE("res filelength = %{public}u, type = %{public}d", res->d_reclen, res->d_type); + } + + if (EOK == memcpy_s(dirBuff, DIR_BUFF_LEN, dir, DIR_BUFF_LEN - 1)) { + HILOGE("struct DIR member fd = %{public}02x-%{public}02x-%{public}02x-%{public}02x," + "buf_pos = %{public}02x-%{public}02x-%{public}02x-%{public}02x," + "buf_end = %{public}02x-%{public}02x-%{public}02x-%{public}02x", + dirBuff[8], dirBuff[9], dirBuff[10], dirBuff[11], dirBuff[12], dirBuff[13], + dirBuff[14], dirBuff[15], dirBuff[16], dirBuff[17], dirBuff[18], dirBuff[19]); + } + if (res == nullptr && errno) { UniError(errno).ThrowErr(env); return nullptr; 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 a40ed03d2..0d7e2116d 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 @@ -20,6 +20,8 @@ #include "../../common/napi/n_exporter.h" +static constexpr int DIR_BUFF_LEN = 25; + namespace OHOS { namespace DistributedFS { namespace ModuleFileIO { -- Gitee From fe65ff17e59c89fceca6a359c5749c54347354a8 Mon Sep 17 00:00:00 2001 From: zhuhongtao666 Date: Thu, 8 Dec 2022 05:35:27 +0000 Subject: [PATCH 2/3] update interfaces/kits/js/src/mod_fileio/class_dir/dir_n_exporter.h. Signed-off-by: zhuhongtao666 --- interfaces/kits/js/src/mod_fileio/class_dir/dir_n_exporter.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 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 0d7e2116d..3883b665c 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 @@ -20,14 +20,13 @@ #include "../../common/napi/n_exporter.h" -static constexpr int DIR_BUFF_LEN = 25; - namespace OHOS { namespace DistributedFS { namespace ModuleFileIO { class DirNExporter final : public NExporter { public: inline static const std::string className_ = "Dir"; + constexpr int DIR_BUFF_LEN = 25; bool Export() override; std::string GetClassName() override; -- Gitee From e783aa6bdc41755b4d87778a32ac98dc1756834f Mon Sep 17 00:00:00 2001 From: zhuhongtao666 Date: Thu, 8 Dec 2022 05:52:23 +0000 Subject: [PATCH 3/3] update interfaces/kits/js/src/mod_fileio/class_dir/dir_n_exporter.h. Signed-off-by: zhuhongtao666 --- interfaces/kits/js/src/mod_fileio/class_dir/dir_n_exporter.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 3883b665c..f67c114e0 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 @@ -26,7 +26,6 @@ namespace ModuleFileIO { class DirNExporter final : public NExporter { public: inline static const std::string className_ = "Dir"; - constexpr int DIR_BUFF_LEN = 25; bool Export() override; std::string GetClassName() override; @@ -43,6 +42,7 @@ public: ~DirNExporter() override; }; const std::string listfileProcedureName = "fileioDirListFile"; +constexpr int DIR_BUFF_LEN = 25; } // namespace ModuleFileIO } // namespace DistributedFS } // namespace OHOS -- Gitee