1 /*
2 * Copyright (c) 2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "stat_ffi.h"
17 #include "stat_impl.h"
18 #include "macro.h"
19
20 using namespace OHOS::FFI;
21 using namespace OHOS::CJSystemapi;
22 using namespace OHOS::CJSystemapi::FileFs;
23
24 extern "C" {
FfiOHOSStatGetIno(int64_t id)25 int64_t FfiOHOSStatGetIno(int64_t id)
26 {
27 LOGI("FS_TEST:: FfiOHOSStatGetIno");
28 auto instance = FFIData::GetData<StatImpl>(id);
29 if (!instance) {
30 LOGE("StatImpl instance not exist %{public}" PRId64, id);
31 return ERR_INVALID_INSTANCE_CODE;
32 }
33 return instance->GetIno();
34 }
FfiOHOSStatGetMode(int64_t id)35 int64_t FfiOHOSStatGetMode(int64_t id)
36 {
37 LOGI("FS_TEST:: FfiOHOSStatGetMode");
38 auto instance = FFIData::GetData<StatImpl>(id);
39 if (!instance) {
40 LOGE("StatImpl instance not exist %{public}" PRId64, id);
41 return ERR_INVALID_INSTANCE_CODE;
42 }
43 return instance->GetMode();
44 }
FfiOHOSStatGetUid(int64_t id)45 int64_t FfiOHOSStatGetUid(int64_t id)
46 {
47 LOGI("FS_TEST:: FfiOHOSStatGetUid");
48 auto instance = FFIData::GetData<StatImpl>(id);
49 if (!instance) {
50 LOGE("StatImpl instance not exist %{public}" PRId64, id);
51 return ERR_INVALID_INSTANCE_CODE;
52 }
53 return instance->GetUid();
54 }
FfiOHOSStatGetGid(int64_t id)55 int64_t FfiOHOSStatGetGid(int64_t id)
56 {
57 LOGI("FS_TEST:: FfiOHOSStatGetGid");
58 auto instance = FFIData::GetData<StatImpl>(id);
59 if (!instance) {
60 LOGE("StatImpl instance not exist %{public}" PRId64, id);
61 return ERR_INVALID_INSTANCE_CODE;
62 }
63 return instance->GetGid();
64 }
FfiOHOSStatGetSize(int64_t id)65 int64_t FfiOHOSStatGetSize(int64_t id)
66 {
67 LOGI("FS_TEST:: FfiOHOSStatGetSize");
68 auto instance = FFIData::GetData<StatImpl>(id);
69 if (!instance) {
70 LOGE("StatImpl instance not exist %{public}" PRId64, id);
71 return ERR_INVALID_INSTANCE_CODE;
72 }
73 return instance->GetSize();
74 }
FfiOHOSStatGetAtime(int64_t id)75 int64_t FfiOHOSStatGetAtime(int64_t id)
76 {
77 LOGI("FS_TEST:: FfiOHOSStatGetAtime");
78 auto instance = FFIData::GetData<StatImpl>(id);
79 if (!instance) {
80 LOGE("StatImpl instance not exist %{public}" PRId64, id);
81 return ERR_INVALID_INSTANCE_CODE;
82 }
83 return instance->GetAtime();
84 }
FfiOHOSStatGetMtime(int64_t id)85 int64_t FfiOHOSStatGetMtime(int64_t id)
86 {
87 LOGI("FS_TEST:: FfiOHOSStatGetMtime");
88 auto instance = FFIData::GetData<StatImpl>(id);
89 if (!instance) {
90 LOGE("StatImpl instance not exist %{public}" PRId64, id);
91 return ERR_INVALID_INSTANCE_CODE;
92 }
93 return instance->GetMtime();
94 }
FfiOHOSStatGetCtime(int64_t id)95 int64_t FfiOHOSStatGetCtime(int64_t id)
96 {
97 LOGI("FS_TEST:: FfiOHOSStatGetCtime");
98 auto instance = FFIData::GetData<StatImpl>(id);
99 if (!instance) {
100 LOGE("StatImpl instance not exist %{public}" PRId64, id);
101 return ERR_INVALID_INSTANCE_CODE;
102 }
103 return instance->GetCtime();
104 }
105
FfiOHOSStatIsBlockDevice(int64_t id)106 bool FfiOHOSStatIsBlockDevice(int64_t id)
107 {
108 LOGI("FS_TEST:: FfiOHOSStatIsBlockDevice");
109 auto instance = FFIData::GetData<StatImpl>(id);
110 if (!instance) {
111 LOGE("StatImpl instance not exist %{public}" PRId64, id);
112 return ERR_INVALID_INSTANCE_CODE;
113 }
114 return instance->IsBlockDevice();
115 }
116
FfiOHOSStatIsCharacterDevice(int64_t id)117 bool FfiOHOSStatIsCharacterDevice(int64_t id)
118 {
119 LOGI("FS_TEST:: FfiOHOSStatIsCharacterDevice");
120 auto instance = FFIData::GetData<StatImpl>(id);
121 if (!instance) {
122 LOGE("StatImpl instance not exist %{public}" PRId64, id);
123 return ERR_INVALID_INSTANCE_CODE;
124 }
125 return instance->IsCharacterDevice();
126 }
127
FfiOHOSStatIsDirectory(int64_t id)128 bool FfiOHOSStatIsDirectory(int64_t id)
129 {
130 LOGI("FS_TEST:: FfiOHOSStatIsDirectory");
131 auto instance = FFIData::GetData<StatImpl>(id);
132 if (!instance) {
133 LOGE("StatImpl instance not exist %{public}" PRId64, id);
134 return ERR_INVALID_INSTANCE_CODE;
135 }
136 return instance->IsDirectory();
137 }
138
FfiOHOSStatIsFIFO(int64_t id)139 bool FfiOHOSStatIsFIFO(int64_t id)
140 {
141 LOGI("FS_TEST:: FfiOHOSStatIsFIFO");
142 auto instance = FFIData::GetData<StatImpl>(id);
143 if (!instance) {
144 LOGE("StatImpl instance not exist %{public}" PRId64, id);
145 return ERR_INVALID_INSTANCE_CODE;
146 }
147 return instance->IsFIFO();
148 }
149
FfiOHOSStatIsFile(int64_t id)150 bool FfiOHOSStatIsFile(int64_t id)
151 {
152 LOGI("FS_TEST:: FfiOHOSStatIsFile");
153 auto instance = FFIData::GetData<StatImpl>(id);
154 if (!instance) {
155 LOGE("StatImpl instance not exist %{public}" PRId64, id);
156 return ERR_INVALID_INSTANCE_CODE;
157 }
158 return instance->IsFile();
159 }
160
FfiOHOSStatIsSocket(int64_t id)161 bool FfiOHOSStatIsSocket(int64_t id)
162 {
163 LOGI("FS_TEST:: FfiOHOSStatIsSocket");
164 auto instance = FFIData::GetData<StatImpl>(id);
165 if (!instance) {
166 LOGE("StatImpl instance not exist %{public}" PRId64, id);
167 return ERR_INVALID_INSTANCE_CODE;
168 }
169 return instance->IsSocket();
170 }
171
FfiOHOSStatIsSymbolicLink(int64_t id)172 bool FfiOHOSStatIsSymbolicLink(int64_t id)
173 {
174 LOGI("FS_TEST:: FfiOHOSStatIsSymbolicLink");
175 auto instance = FFIData::GetData<StatImpl>(id);
176 if (!instance) {
177 LOGE("StatImpl instance not exist %{public}" PRId64, id);
178 return ERR_INVALID_INSTANCE_CODE;
179 }
180 return instance->IsSymbolicLink();
181 }
182 }