1fb726d48Sopenharmony_ci/*
2fb726d48Sopenharmony_ci * Copyright (c) Huawei Technologies Co., Ltd. 2023. All rights reserved.
3fb726d48Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4fb726d48Sopenharmony_ci * you may not use this file except in compliance with the License.
5fb726d48Sopenharmony_ci * You may obtain a copy of the License at
6fb726d48Sopenharmony_ci *
7fb726d48Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0
8fb726d48Sopenharmony_ci *
9fb726d48Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10fb726d48Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11fb726d48Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12fb726d48Sopenharmony_ci * See the License for the specific language governing permissions and
13fb726d48Sopenharmony_ci * limitations under the License.
14fb726d48Sopenharmony_ci */
15fb726d48Sopenharmony_ci
16fb726d48Sopenharmony_ci#ifndef INCLUDE_TUNING_BASE_FILE_UTILS_H
17fb726d48Sopenharmony_ci#define INCLUDE_TUNING_BASE_FILE_UTILS_H
18fb726d48Sopenharmony_ci
19fb726d48Sopenharmony_ci#include <string>
20fb726d48Sopenharmony_ci#include <vector>
21fb726d48Sopenharmony_ci
22fb726d48Sopenharmony_cinamespace SysTuning {
23fb726d48Sopenharmony_cinamespace base {
24fb726d48Sopenharmony_ci#define TS_PERMISSION_RW 0600
25fb726d48Sopenharmony_ci#define TS_PERMISSION_RWX 777
26fb726d48Sopenharmony_ciconstexpr uint32_t K_FILE_MODE_INVALID = 0xFFFFFFFF;
27fb726d48Sopenharmony_cienum TraceParserStatus {
28fb726d48Sopenharmony_ci    TRACE_PARSER_NORMAL = 0,
29fb726d48Sopenharmony_ci    TRACE_PARSER_FILE_TYPE_ERROR = 1,
30fb726d48Sopenharmony_ci    TRACE_PARSE_ERROR = 2,
31fb726d48Sopenharmony_ci    TRACE_PARSER_ABNORMAL = 3
32fb726d48Sopenharmony_ci};
33fb726d48Sopenharmony_ci
34fb726d48Sopenharmony_civoid SetAnalysisResult(TraceParserStatus stat);
35fb726d48Sopenharmony_ci
36fb726d48Sopenharmony_ciTraceParserStatus GetAnalysisResult();
37fb726d48Sopenharmony_ci
38fb726d48Sopenharmony_cissize_t Read(int32_t fd, uint8_t *dst, size_t dstSize);
39fb726d48Sopenharmony_ci
40fb726d48Sopenharmony_ciint32_t OpenFile(const std::string &path, int32_t flags, uint32_t mode = K_FILE_MODE_INVALID);
41fb726d48Sopenharmony_ci
42fb726d48Sopenharmony_cistd::string GetExecutionDirectoryPath();
43fb726d48Sopenharmony_ci
44fb726d48Sopenharmony_ci#if defined(is_linux) || defined(_WIN32)
45fb726d48Sopenharmony_cistd::vector<std::string> GetFilesNameFromDir(const std::string &path, bool onlyFileName = true);
46fb726d48Sopenharmony_ci#endif
47fb726d48Sopenharmony_ci
48fb726d48Sopenharmony_cibool UnZipFile(const std::string &zipFile, std::string &traceFile);
49fb726d48Sopenharmony_ci
50fb726d48Sopenharmony_cibool LocalUnzip(const std::string &zipFile, const std::string &dstDir);
51fb726d48Sopenharmony_ci} // namespace base
52fb726d48Sopenharmony_ci} // namespace SysTuning
53fb726d48Sopenharmony_ci#endif // INCLUDE_TUNING_BASE_FILE_UTILS_H_
54