From bb6399b87e947c2c766b83fac45c5e6c451fc774 Mon Sep 17 00:00:00 2001 From: Cao Chuan Date: Mon, 27 Feb 2023 09:42:47 +0800 Subject: [PATCH 1/5] modify format code Signed-off-by: Cao Chuan --- .../kits/js/src/mod_fs/class_watcher/watcher_n_exporter.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 54dbd91b8..077e90ba4 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 @@ -44,7 +44,7 @@ public: static napi_value Constructor(napi_env env, napi_callback_info info); static napi_value Start(napi_env env, napi_callback_info info); static napi_value Stop(napi_env env, napi_callback_info info); - static void WatcherCallback(napi_env env, NRef & callback, const std::string &fileName, const uint32_t &event, + static void WatcherCallback(napi_env env, NRef &callback, const std::string &fileName, const uint32_t &event, const uint32_t &cookie); WatcherNExporter(napi_env env, napi_value exports); -- Gitee From 11d73522a210cd6f55ec639c1e62c066cfe95cb2 Mon Sep 17 00:00:00 2001 From: Cao Chuan Date: Thu, 2 Mar 2023 17:20:28 +0800 Subject: [PATCH 2/5] modify bug Signed-off-by: Cao Chuan --- .../src/mod_fs/class_watcher/watcher_entity.cpp | 17 ++++++++--------- .../kits/js/src/mod_fs/properties/watcher.cpp | 5 +++++ 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/interfaces/kits/js/src/mod_fs/class_watcher/watcher_entity.cpp b/interfaces/kits/js/src/mod_fs/class_watcher/watcher_entity.cpp index a8b24e3fe..c79cf35b6 100644 --- a/interfaces/kits/js/src/mod_fs/class_watcher/watcher_entity.cpp +++ b/interfaces/kits/js/src/mod_fs/class_watcher/watcher_entity.cpp @@ -50,6 +50,10 @@ bool FileWatcher::StartNotify(WatcherInfoArg &arg) bool FileWatcher::StopNotify(const WatcherInfoArg &arg) { run_ = false; + if (arg.events == IN_DELETE_SELF) { + close(arg.fd); + return true; + } if (inotify_rm_watch(arg.fd, arg.wd) == -1) { HILOGE("Failed to stop notify fail errCode:%{public}d", errno); return false; @@ -58,16 +62,11 @@ bool FileWatcher::StopNotify(const WatcherInfoArg &arg) return true; } -void FileWatcher::HandleEvent(WatcherInfoArg &arg, - const struct inotify_event *event, - WatcherCallback callback) +void FileWatcher::HandleEvent(WatcherInfoArg &arg, const struct inotify_event *event, WatcherCallback callback) { - if (event->wd != arg.wd) { - return; - } - std::string filename = arg.filename; - if ((event->name)[0] != '\0') { - filename += event->name; + if (event->len > 0) { + fileName.append(std::string("/")); + fileName.append(std::string(event->name)); } callback(arg.env, arg.nRef, filename, event->mask, event->cookie); } diff --git a/interfaces/kits/js/src/mod_fs/properties/watcher.cpp b/interfaces/kits/js/src/mod_fs/properties/watcher.cpp index 985ae117f..45e72c264 100644 --- a/interfaces/kits/js/src/mod_fs/properties/watcher.cpp +++ b/interfaces/kits/js/src/mod_fs/properties/watcher.cpp @@ -82,6 +82,11 @@ napi_value Watcher::CreateWatcher(napi_env env, napi_callback_info info) return nullptr; } + if (!NVal(env, funcArg[NARG_POS::THIRD]).TypeIs(napi_function)) { + NError(EINVAL).ThrowErr(env); + return nullptr; + } + watcherEntity->data_ = std::make_unique(NVal(env, funcArg[NARG_POS::THIRD])); watcherEntity->data_->events = events; watcherEntity->data_->env = env; -- Gitee From b37c3e335e9bce808de16c162a5bc1cf61c04bd1 Mon Sep 17 00:00:00 2001 From: Cao Chuan Date: Thu, 2 Mar 2023 17:28:04 +0800 Subject: [PATCH 3/5] modify bug Signed-off-by: Cao Chuan --- interfaces/kits/js/src/mod_fs/class_watcher/watcher_entity.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/interfaces/kits/js/src/mod_fs/class_watcher/watcher_entity.cpp b/interfaces/kits/js/src/mod_fs/class_watcher/watcher_entity.cpp index c79cf35b6..d68686ca5 100644 --- a/interfaces/kits/js/src/mod_fs/class_watcher/watcher_entity.cpp +++ b/interfaces/kits/js/src/mod_fs/class_watcher/watcher_entity.cpp @@ -64,6 +64,9 @@ bool FileWatcher::StopNotify(const WatcherInfoArg &arg) void FileWatcher::HandleEvent(WatcherInfoArg &arg, const struct inotify_event *event, WatcherCallback callback) { + if (event->wd != arg.wd) { + return; + } if (event->len > 0) { fileName.append(std::string("/")); fileName.append(std::string(event->name)); -- Gitee From 0d70360c766fa8753a4f6370b9e35953098f6aee Mon Sep 17 00:00:00 2001 From: Cao Chuan Date: Thu, 2 Mar 2023 17:49:27 +0800 Subject: [PATCH 4/5] modify bug Signed-off-by: Cao Chuan --- interfaces/kits/js/src/mod_fs/class_watcher/watcher_entity.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/interfaces/kits/js/src/mod_fs/class_watcher/watcher_entity.cpp b/interfaces/kits/js/src/mod_fs/class_watcher/watcher_entity.cpp index d68686ca5..8aa43b699 100644 --- a/interfaces/kits/js/src/mod_fs/class_watcher/watcher_entity.cpp +++ b/interfaces/kits/js/src/mod_fs/class_watcher/watcher_entity.cpp @@ -67,6 +67,7 @@ void FileWatcher::HandleEvent(WatcherInfoArg &arg, const struct inotify_event *e if (event->wd != arg.wd) { return; } + std::string filename = arg.filename; if (event->len > 0) { fileName.append(std::string("/")); fileName.append(std::string(event->name)); -- Gitee From a227687b9fb74493607a97ed8cbdb6d368a7bcad Mon Sep 17 00:00:00 2001 From: caochuan Date: Thu, 2 Mar 2023 10:11:59 +0000 Subject: [PATCH 5/5] modify build error Signed-off-by: caochuan --- .../kits/js/src/mod_fs/class_watcher/watcher_entity.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interfaces/kits/js/src/mod_fs/class_watcher/watcher_entity.cpp b/interfaces/kits/js/src/mod_fs/class_watcher/watcher_entity.cpp index 8aa43b699..1500dfcfd 100644 --- a/interfaces/kits/js/src/mod_fs/class_watcher/watcher_entity.cpp +++ b/interfaces/kits/js/src/mod_fs/class_watcher/watcher_entity.cpp @@ -67,12 +67,12 @@ void FileWatcher::HandleEvent(WatcherInfoArg &arg, const struct inotify_event *e if (event->wd != arg.wd) { return; } - std::string filename = arg.filename; + std::string fileName = arg.filename; if (event->len > 0) { fileName.append(std::string("/")); fileName.append(std::string(event->name)); } - callback(arg.env, arg.nRef, filename, event->mask, event->cookie); + callback(arg.env, arg.nRef, fileName, event->mask, event->cookie); } void FileWatcher::GetNotifyEvent(WatcherInfoArg &arg, WatcherCallback callback) -- Gitee