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 20using namespace OHOS::FFI; 21using namespace OHOS::CJSystemapi; 22using namespace OHOS::CJSystemapi::FileFs; 23 24extern "C" { 25int64_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} 35int64_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} 45int64_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} 55int64_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} 65int64_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} 75int64_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} 85int64_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} 95int64_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 106bool 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 117bool 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 128bool 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 139bool 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 150bool 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 161bool 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 172bool 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}