diff --git a/interfaces/kits/js/src/mod_fileio/class_file/file_n_exporter.cpp b/interfaces/kits/js/src/mod_fileio/class_file/file_n_exporter.cpp index cc805b835c182d80de4c27ac7f28f2681535298b..76f5123343e2ff51b6fed4a01f67c87e41b78157 100644 --- a/interfaces/kits/js/src/mod_fileio/class_file/file_n_exporter.cpp +++ b/interfaces/kits/js/src/mod_fileio/class_file/file_n_exporter.cpp @@ -62,34 +62,6 @@ napi_value FileNExporter::GetFD(napi_env env, napi_callback_info info) return NVal::CreateInt32(env, rafEntity->fd_.get()->GetFD()).val_; } -napi_value FileNExporter::GetPath(napi_env env, napi_callback_info info) -{ - NFuncArg funcArg(env, info); - if (!funcArg.InitArgs(NARG_CNT::ZERO)) { - UniError(EINVAL).ThrowErr(env); - return nullptr; - } - auto rafEntity = GetFileEntity(env, funcArg.GetThisVar()); - if (!rafEntity) { - return nullptr; - } - return NVal::CreateUTF8String(env, rafEntity->path_).val_; -} - -napi_value FileNExporter::GetUri(napi_env env, napi_callback_info info) -{ - NFuncArg funcArg(env, info); - if (!funcArg.InitArgs(NARG_CNT::ZERO)) { - UniError(EINVAL).ThrowErr(env); - return nullptr; - } - auto rafEntity = GetFileEntity(env, funcArg.GetThisVar()); - if (!rafEntity) { - return nullptr; - } - return NVal::CreateUTF8String(env, rafEntity->uri_).val_; -} - napi_value FileNExporter::Constructor(napi_env env, napi_callback_info info) { NFuncArg funcArg(env, info); @@ -109,8 +81,7 @@ napi_value FileNExporter::Constructor(napi_env env, napi_callback_info info) bool FileNExporter::Export() { vector props = { - NVal::DeclareNapiGetter("fd", GetFD), - NVal::DeclareNapiGetter("path", GetPath), + NVal::DeclareNapiGetter("fd", GetFD) }; string className = GetClassName(); diff --git a/interfaces/kits/js/src/mod_fileio/class_file/file_n_exporter.h b/interfaces/kits/js/src/mod_fileio/class_file/file_n_exporter.h index ffa96ed6ddba5898be6c1368d035366568a8d426..1c898cdef614bae667a3db735059e9ab4824d4bf 100644 --- a/interfaces/kits/js/src/mod_fileio/class_file/file_n_exporter.h +++ b/interfaces/kits/js/src/mod_fileio/class_file/file_n_exporter.h @@ -31,8 +31,6 @@ public: static napi_value Constructor(napi_env env, napi_callback_info cbinfo); static napi_value GetFD(napi_env env, napi_callback_info cbinfo); - static napi_value GetPath(napi_env env, napi_callback_info cbinfo); - static napi_value GetUri(napi_env env, napi_callback_info cbinfo); FileNExporter(napi_env env, napi_value exports); ~FileNExporter() override; diff --git a/interfaces/kits/js/src/mod_fileio/common_func.cpp b/interfaces/kits/js/src/mod_fileio/common_func.cpp index 1d098f6f1e08ead9856dc4edd0eb5a71aeece622..71f72ef48f1d68e990fca207e8133f3b7292167a 100644 --- a/interfaces/kits/js/src/mod_fileio/common_func.cpp +++ b/interfaces/kits/js/src/mod_fileio/common_func.cpp @@ -40,12 +40,10 @@ static tuple GetActualBuf(napi_env env, void *rawBuf, int64_t if (op.HasProp("offset")) { tie(succ, opOffset) = op.GetProp("offset").ToInt64(); if (!succ || opOffset < 0) { - HILOGE("Invalid option.offset, positive integer is desired"); - UniError(EINVAL).ThrowErr(env); + UniError(EINVAL).ThrowErr(env, "Invalid option.offset, positive integer is desired"); return { false, nullptr, opOffset }; } else if (opOffset > bufLen) { - HILOGE("Invalid option.offset, buffer limit exceeded"); - UniError(EINVAL).ThrowErr(env); + UniError(EINVAL).ThrowErr(env, "Invalid option.offset, buffer limit exceeded"); return { false, nullptr, opOffset }; } else { realBuf = static_cast(rawBuf) + opOffset; @@ -62,6 +60,33 @@ static tuple GetActualLen(napi_env env, int64_t bufLen, int64_t bu bool succ = false; int64_t retLen; + if (op.HasProp("length")) { + int64_t opLength; + tie(succ, opLength) = op.GetProp("length").ToInt64(); + if (!succ) { + UniError(EINVAL).ThrowErr(env, "Invalid option.length, expect integer"); + return { false, 0 }; + } + if (opLength < 0) { + retLen = bufLen - bufOff; + } else if (opLength > bufLen - bufOff) { + UniError(EINVAL).ThrowErr(env, "Invalid option.length, buffer limit exceeded"); + return { false, 0 }; + } else { + retLen = opLength; + } + } else { + retLen = bufLen - bufOff; + } + + return { true, retLen }; +} + +static tuple GetActualLenV9(napi_env env, int64_t bufLen, int64_t bufOff, NVal op) +{ + bool succ = false; + int64_t retLen; + if (op.HasProp("length")) { int64_t opLength; tie(succ, opLength) = op.GetProp("length").ToInt64(); @@ -72,7 +97,7 @@ static tuple GetActualLen(napi_env env, int64_t bufLen, int64_t bu } if (opLength < 0) { retLen = bufLen - bufOff; - } else if (opLength + bufOff > bufLen) { + } else if (opLength > bufLen - bufOff) { HILOGE("Invalid option.length, buffer limit exceeded"); UniError(EINVAL).ThrowErr(env); return { false, 0 }; @@ -86,6 +111,7 @@ static tuple GetActualLen(napi_env env, int64_t bufLen, int64_t bu return { true, retLen }; } + int CommonFunc::ConvertJsFlags(int &flags) { static constexpr int USR_O_RDONLY = 00; @@ -151,8 +177,7 @@ tuple CommonFunc::GetReadArg(napi_env int offset = 0; tie(succ, buf, bufLen) = txt.ToArraybuffer(); if (!succ) { - HILOGE("Invalid read buffer, expect arraybuffer"); - UniError(EINVAL).ThrowErr(env); + UniError(EINVAL).ThrowErr(env, "Invalid read buffer, expect arraybuffer"); return { false, nullptr, 0, posAssigned, position, offset }; } @@ -173,8 +198,7 @@ tuple CommonFunc::GetReadArg(napi_env if (succ && position >= 0) { posAssigned = true; } else { - HILOGE("option.position shall be positive number"); - UniError(EINVAL).ThrowErr(env); + UniError(EINVAL).ThrowErr(env, "option.position shall be positive number"); return { false, nullptr, 0, posAssigned, position, offset }; } } @@ -228,8 +252,7 @@ tuple, void *, int64_t, bool, int64_t> CommonFunc::GetW if (!succ) { tie(succ, buf, bufLen) = NVal(env, argWBuf).ToArraybuffer(); if (!succ) { - HILOGE("Illegal write buffer or encoding"); - UniError(EINVAL).ThrowErr(env); + UniError(EINVAL).ThrowErr(env, "Illegal write buffer or encoding"); return { false, nullptr, nullptr, 0, hasPos, retPos }; } } else { @@ -251,8 +274,7 @@ tuple, void *, int64_t, bool, int64_t> CommonFunc::GetW int32_t position = 0; tie(succ, position) = op.GetProp("position").ToInt32(); if (!succ || position < 0) { - HILOGE("option.position shall be positive number"); - UniError(EINVAL).ThrowErr(env); + UniError(EINVAL).ThrowErr(env, "option.position shall be positive number"); return { false, nullptr, nullptr, 0, hasPos, retPos }; } hasPos = true; @@ -281,7 +303,7 @@ tuple CommonFunc::GetReadArgV9(napi_env en return { false, nullptr, 0, posAssigned, position }; } NVal op = NVal(env, option); - tie(succ, retLen) = GetActualLen(env, bufLen, 0, op); + tie(succ, retLen) = GetActualLenV9(env, bufLen, 0, op); if (!succ) { return { false, nullptr, 0, posAssigned, position }; } @@ -324,7 +346,7 @@ tuple, void *, int64_t, bool, int64_t> CommonFunc::GetW } else { buf = bufferGuard.get(); } - tie(succ, retLen) = GetActualLen(env, bufLen, 0, op); + tie(succ, retLen) = GetActualLenV9(env, bufLen, 0, op); if (!succ) { return { false, nullptr, nullptr, 0, hasPos, retPos }; } diff --git a/interfaces/kits/js/src/mod_fileio/properties/open_v9.cpp b/interfaces/kits/js/src/mod_fileio/properties/open_v9.cpp index fb6f45f4e0b5f6ce9b297aa68e7440765209f120..208a938e018ea4400067ae5d25999f65740dd96b 100644 --- a/interfaces/kits/js/src/mod_fileio/properties/open_v9.cpp +++ b/interfaces/kits/js/src/mod_fileio/properties/open_v9.cpp @@ -67,7 +67,7 @@ static NVal InstantiateFile(napi_env env, int fd, string path) auto fdg = make_unique(fd); rafEntity->fd_.swap(fdg); rafEntity->path_ = path; - rafEntity->uri_ = path; + rafEntity->uri_ = ""; return { env, objRAF }; } @@ -133,7 +133,7 @@ napi_value OpenV9::Async(napi_env env, napi_callback_info info) } arg->fd = open_req.result; arg->path = path; - arg->uri = path; + arg->uri = ""; uv_fs_req_cleanup(&open_req); return UniError(ERRNO_NOERR); }; diff --git a/interfaces/kits/js/src/mod_fileio/properties/prop_n_exporter_v9.cpp b/interfaces/kits/js/src/mod_fileio/properties/prop_n_exporter_v9.cpp index 37fde834801800e486a7a7b6f6d89230ce3a98f2..dfc8b234bcb4f35bf0e9d9e83052c59f8af5bd3c 100644 --- a/interfaces/kits/js/src/mod_fileio/properties/prop_n_exporter_v9.cpp +++ b/interfaces/kits/js/src/mod_fileio/properties/prop_n_exporter_v9.cpp @@ -80,9 +80,9 @@ struct AsyncIOReadArg { static UniError ReadExec(shared_ptr arg, void *buf, size_t len, int fd, size_t position) { if (position == (size_t)INVALID_POSITION) { - arg->lenRead = write(fd, buf, len); + arg->lenRead = read(fd, buf, len); } else { - arg->lenRead = pwrite(fd, buf, len, position); + arg->lenRead = pread(fd, buf, len, position); } if (arg->lenRead == -1) { diff --git a/interfaces/kits/js/src/mod_securitylabel/securitylabel_n_exporter.cpp b/interfaces/kits/js/src/mod_securitylabel/securitylabel_n_exporter.cpp index 1e0ac78f6267c3b7d9df52da13d246b7b8acaa93..88ee86e8355434ac23486371078b5728640ecab5 100644 --- a/interfaces/kits/js/src/mod_securitylabel/securitylabel_n_exporter.cpp +++ b/interfaces/kits/js/src/mod_securitylabel/securitylabel_n_exporter.cpp @@ -61,7 +61,7 @@ napi_value SetSecurityLabel(napi_env env, napi_callback_info info) auto cbExec = [pathString, dataLevelString](napi_env env) -> UniError { bool ret = SecurityLabel::SetSecurityLabel(pathString, dataLevelString); if (!ret) { - return UniError(-1); + return UniError(errno); } else { return UniError(ERRNO_NOERR); } @@ -116,7 +116,7 @@ napi_value SetSecurityLabelSync(napi_env env, napi_callback_info info) bool ret = SecurityLabel::SetSecurityLabel(path.get(), dataLevel.get()); if (!ret) { - return UniError(-1).GetNapiErr(env); + return UniError(errno).GetNapiErr(env); } return NVal::CreateUndefined(env).val_;