diff --git a/interfaces/kits/js/src/mod_fs/common_func.cpp b/interfaces/kits/js/src/mod_fs/common_func.cpp index 4118a6f1f230215193607b8cdf5fd10c448df88e..5c1dd83d12212df38e84445c212e96acac1df003 100644 --- a/interfaces/kits/js/src/mod_fs/common_func.cpp +++ b/interfaces/kits/js/src/mod_fs/common_func.cpp @@ -30,6 +30,7 @@ #include "class_file/file_n_exporter.h" #include "class_stream/stream_entity.h" #include "class_stream/stream_n_exporter.h" +#include "parameter.h" #endif #include "filemgmt_libhilog.h" #include "filemgmt_libn.h" @@ -106,6 +107,19 @@ void InitWhenceType(napi_env env, napi_value exports) } } +#if !defined(WIN_PLATFORM) && !defined(IOS_PLATFORM) +string GetDeviceType() +{ + char deviceType[BUFFER_1K]; + int32_t ret = GetParameter("const.product.devicetype", "0", deviceType, BUFFER_1K); + if (ret < 0) { + HILOGE("Get deviceType fail. %{public}d", ret); + return ""; + } + return string(deviceType, ret); +} +#endif + static tuple GetActualLen(napi_env env, size_t bufLen, size_t bufOff, NVal op) { bool succ = false; diff --git a/interfaces/kits/js/src/mod_fs/common_func.h b/interfaces/kits/js/src/mod_fs/common_func.h index e9afb302bba91d6028ddd62a6f61d4e8235a30b7..fffcf75e599673e80c71b0a5fa582b0a2624b663 100644 --- a/interfaces/kits/js/src/mod_fs/common_func.h +++ b/interfaces/kits/js/src/mod_fs/common_func.h @@ -51,6 +51,7 @@ constexpr unsigned int USR_SYNC = 04010000; const double NS = 1e9; const double MS = 1e3; +const int BUFFER_1K = 1024; struct FileInfo { bool isPath = false; @@ -60,7 +61,9 @@ struct FileInfo { void InitOpenMode(napi_env env, napi_value exports); void InitWhenceType(napi_env env, napi_value exports); - +#if !defined(WIN_PLATFORM) && !defined(IOS_PLATFORM) +std::string GetDeviceType(); +#endif struct CommonFunc { static unsigned int ConvertJsFlags(unsigned int &flags); static LibN::NVal InstantiateStat(napi_env env, const uv_stat_t &buf); diff --git a/interfaces/kits/js/src/mod_fs/module.cpp b/interfaces/kits/js/src/mod_fs/module.cpp index 16795efec583b0f2b3dd5b955270db23773d2639..4448c18a25e8c43244aec43d464438a9f4fe45ab 100644 --- a/interfaces/kits/js/src/mod_fs/module.cpp +++ b/interfaces/kits/js/src/mod_fs/module.cpp @@ -25,6 +25,7 @@ #include "class_readeriterator/readeriterator_n_exporter.h" #include "class_stream/stream_n_exporter.h" #include "class_watcher/watcher_n_exporter.h" +#include "parameter.h" #endif #include "filemgmt_libhilog.h" #include "properties/prop_n_exporter.h" @@ -47,6 +48,9 @@ static napi_value Export(napi_env env, napi_value exports) products.emplace_back(make_unique(env, exports)); products.emplace_back(make_unique(env, exports)); products.emplace_back(make_unique(env, exports)); + if (GetDeviceType() == "2in1") { + PropNExporter::dirPermission_ = 0771; + } #endif for (auto &&product : products) { #ifdef WIN_PLATFORM diff --git a/interfaces/kits/js/src/mod_fs/properties/prop_n_exporter.cpp b/interfaces/kits/js/src/mod_fs/properties/prop_n_exporter.cpp index b631e7814f8b85fe989108a8a40499fd6a46cb2f..92f918e5fe4f9c1a817f14c8b197db4fddca6413 100644 --- a/interfaces/kits/js/src/mod_fs/properties/prop_n_exporter.cpp +++ b/interfaces/kits/js/src/mod_fs/properties/prop_n_exporter.cpp @@ -240,7 +240,7 @@ static int MkdirCore(const string &path) HILOGE("Failed to request heap memory."); return ENOMEM; } - return uv_fs_mkdir(nullptr, mkdir_req.get(), path.c_str(), DIR_DEFAULT_PERM, nullptr); + return uv_fs_mkdir(nullptr, mkdir_req.get(), path.c_str(), PropNExporter::dirPermission_, nullptr); } static NError MkdirExec(const string &path, bool recursion, bool hasOption) diff --git a/interfaces/kits/js/src/mod_fs/properties/prop_n_exporter.h b/interfaces/kits/js/src/mod_fs/properties/prop_n_exporter.h index 7333185a47f364daa192c25adf8dc2b976664d73..a3567fe5e3ce29225384b72d138bba57fb9bfab7 100755 --- a/interfaces/kits/js/src/mod_fs/properties/prop_n_exporter.h +++ b/interfaces/kits/js/src/mod_fs/properties/prop_n_exporter.h @@ -48,6 +48,7 @@ struct AsyncIOReadArg { class PropNExporter final : public NExporter { public: inline static const std::string className_ = "__properities__"; + inline static int dirPermission_ = 0770; static napi_value AccessSync(napi_env env, napi_callback_info info); static napi_value MkdirSync(napi_env env, napi_callback_info info); @@ -70,7 +71,6 @@ public: ~PropNExporter() override; }; -constexpr int DIR_DEFAULT_PERM = 0770; const std::string PROCEDURE_ACCESS_NAME = "FileIOAccess"; const std::string PROCEDURE_UNLINK_NAME = "FileIOUnlink"; const std::string PROCEDURE_MKDIR_NAME = "FileIOMkdir";