16f2c2defSopenharmony_ci/*
26f2c2defSopenharmony_ci * Copyright (c) 2020 Huawei Device Co., Ltd.
36f2c2defSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
46f2c2defSopenharmony_ci * you may not use this file except in compliance with the License.
56f2c2defSopenharmony_ci * You may obtain a copy of the License at
66f2c2defSopenharmony_ci *
76f2c2defSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
86f2c2defSopenharmony_ci *
96f2c2defSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
106f2c2defSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
116f2c2defSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
126f2c2defSopenharmony_ci * See the License for the specific language governing permissions and
136f2c2defSopenharmony_ci * limitations under the License.
146f2c2defSopenharmony_ci */
156f2c2defSopenharmony_ci
166f2c2defSopenharmony_ci#include "hiview_config.h"
176f2c2defSopenharmony_ci#include "hiview_def.h"
186f2c2defSopenharmony_ci#include "hiview_event.h"
196f2c2defSopenharmony_ci#include "hiview_file.h"
206f2c2defSopenharmony_ci#include "hiview_log.h"
216f2c2defSopenharmony_ci#include "hiview_util.h"
226f2c2defSopenharmony_ci#include "ohos_types.h"
236f2c2defSopenharmony_ci#include "securec.h"
246f2c2defSopenharmony_ci
256f2c2defSopenharmony_cistatic uint32 GetDefineFileVersion(uint8 type)
266f2c2defSopenharmony_ci{
276f2c2defSopenharmony_ci    switch (type) {
286f2c2defSopenharmony_ci        case HIVIEW_UE_EVENT_FILE:
296f2c2defSopenharmony_ci            return HIVIEW_UE_EVENT_VER;
306f2c2defSopenharmony_ci        case HIVIEW_STAT_EVENT_FILE:
316f2c2defSopenharmony_ci            return HIVIEW_STATIC_EVENT_VER;
326f2c2defSopenharmony_ci        case HIVIEW_FAULT_EVENT_FILE:
336f2c2defSopenharmony_ci            return HIVIEW_FAULT_EVENT_VER;
346f2c2defSopenharmony_ci        default:
356f2c2defSopenharmony_ci            // non-event file
366f2c2defSopenharmony_ci            return 0;
376f2c2defSopenharmony_ci    }
386f2c2defSopenharmony_ci}
396f2c2defSopenharmony_ci
406f2c2defSopenharmony_ciboolean InitHiviewFile(HiviewFile *fp, HiviewFileType type, uint32 size)
416f2c2defSopenharmony_ci{
426f2c2defSopenharmony_ci    if (fp == NULL || fp->path == NULL) {
436f2c2defSopenharmony_ci        return FALSE;
446f2c2defSopenharmony_ci    }
456f2c2defSopenharmony_ci
466f2c2defSopenharmony_ci    fp->fhandle = HIVIEW_FileOpen(fp->path);
476f2c2defSopenharmony_ci    if (fp->fhandle < 0) {
486f2c2defSopenharmony_ci        int32 errnoRecord = (int32)errno;
496f2c2defSopenharmony_ci        uint16 hieventID = 1;
506f2c2defSopenharmony_ci        HiEvent *hievent = HIEVENT_CREATE(HIEVENT_FAULT, hieventID, 2); // 2 params
516f2c2defSopenharmony_ci        HIEVENT_PUT_INT_VALUE(hievent, 0, (int32)type);
526f2c2defSopenharmony_ci        HIEVENT_PUT_INT_VALUE(hievent, 1, errnoRecord);
536f2c2defSopenharmony_ci        HIEVENT_REPORT(hievent);
546f2c2defSopenharmony_ci        return FALSE;
556f2c2defSopenharmony_ci    }
566f2c2defSopenharmony_ci
576f2c2defSopenharmony_ci    HiviewFileHeader *pHeader = &(fp->header);
586f2c2defSopenharmony_ci    FileHeaderCommon *pCommon = &(pHeader->common);
596f2c2defSopenharmony_ci    pCommon->type = (uint8)type;
606f2c2defSopenharmony_ci    pHeader->size = size + sizeof(HiviewFileHeader);
616f2c2defSopenharmony_ci    fp->configSize = size;
626f2c2defSopenharmony_ci    // Create file for the first time
636f2c2defSopenharmony_ci    if (ReadFileHeader(fp) == FALSE) {
646f2c2defSopenharmony_ci        switch (pCommon->type) {
656f2c2defSopenharmony_ci            case HIVIEW_LOG_TEXT_FILE:
666f2c2defSopenharmony_ci                pCommon->prefix = HIVIEW_FILE_HEADER_PREFIX_TEXT;
676f2c2defSopenharmony_ci                break;
686f2c2defSopenharmony_ci            case HIVIEW_LOG_BIN_FILE:
696f2c2defSopenharmony_ci                pCommon->prefix = HIVIEW_FILE_HEADER_PREFIX_LOG;
706f2c2defSopenharmony_ci                break;
716f2c2defSopenharmony_ci            case HIVIEW_FAULT_EVENT_FILE:
726f2c2defSopenharmony_ci            case HIVIEW_UE_EVENT_FILE:
736f2c2defSopenharmony_ci            case HIVIEW_STAT_EVENT_FILE:
746f2c2defSopenharmony_ci                pCommon->prefix = HIVIEW_FILE_HEADER_PREFIX_EVENT;
756f2c2defSopenharmony_ci                break;
766f2c2defSopenharmony_ci            default:
776f2c2defSopenharmony_ci                break;
786f2c2defSopenharmony_ci        }
796f2c2defSopenharmony_ci        pCommon->codeMainVersion = HIVIEW_FILE_HEADER_MAIN_VERSION;
806f2c2defSopenharmony_ci        pCommon->codeSubVersion = HIVIEW_FILE_HEADER_SUB_VERSION;
816f2c2defSopenharmony_ci        pCommon->defineFileVersion = GetDefineFileVersion(pCommon->type);
826f2c2defSopenharmony_ci        pHeader->createTime = (uint32)(HIVIEW_GetCurrentTime() / MS_PER_SECOND);
836f2c2defSopenharmony_ci        pHeader->rCursor = sizeof(HiviewFileHeader);
846f2c2defSopenharmony_ci        pHeader->wCursor = sizeof(HiviewFileHeader);
856f2c2defSopenharmony_ci        if (WriteFileHeader(fp) == FALSE) {
866f2c2defSopenharmony_ci            return FALSE;
876f2c2defSopenharmony_ci        }
886f2c2defSopenharmony_ci    } else {
896f2c2defSopenharmony_ci        // Version number may change after system upgrade
906f2c2defSopenharmony_ci        pCommon->codeMainVersion = HIVIEW_FILE_HEADER_MAIN_VERSION;
916f2c2defSopenharmony_ci        pCommon->codeSubVersion = HIVIEW_FILE_HEADER_SUB_VERSION;
926f2c2defSopenharmony_ci        pCommon->defineFileVersion = GetDefineFileVersion(pCommon->type);
936f2c2defSopenharmony_ci    }
946f2c2defSopenharmony_ci    HILOG_INFO(HILOG_MODULE_HIVIEW, "InitHiviewFile for type %d success", (int32)type);
956f2c2defSopenharmony_ci    return TRUE;
966f2c2defSopenharmony_ci}
976f2c2defSopenharmony_ci
986f2c2defSopenharmony_ciboolean WriteFileHeader(HiviewFile *fp)
996f2c2defSopenharmony_ci{
1006f2c2defSopenharmony_ci    if (fp == NULL || fp->fhandle < 0) {
1016f2c2defSopenharmony_ci        return FALSE;
1026f2c2defSopenharmony_ci    }
1036f2c2defSopenharmony_ci
1046f2c2defSopenharmony_ci    int32 ret;
1056f2c2defSopenharmony_ci    if (HIVIEW_FileSeek(fp->fhandle, 0, HIVIEW_SEEK_SET) >= 0) {
1066f2c2defSopenharmony_ci        HiviewFileHeader tmpHeader = fp->header;
1076f2c2defSopenharmony_ci#if LITTLE_ENDIAN_SYSTEM
1086f2c2defSopenharmony_ci        tmpHeader.common.prefix = Change32Endian(tmpHeader.common.prefix);
1096f2c2defSopenharmony_ci        tmpHeader.common.defineFileVersion = Change32Endian(tmpHeader.common.defineFileVersion);
1106f2c2defSopenharmony_ci        tmpHeader.createTime = Change32Endian(tmpHeader.createTime);
1116f2c2defSopenharmony_ci#endif
1126f2c2defSopenharmony_ci        ret = HIVIEW_FileWrite(fp->fhandle, (uint8 *)&(tmpHeader), sizeof(HiviewFileHeader));
1136f2c2defSopenharmony_ci        if (ret == sizeof(HiviewFileHeader)) {
1146f2c2defSopenharmony_ci            return TRUE;
1156f2c2defSopenharmony_ci        }
1166f2c2defSopenharmony_ci    }
1176f2c2defSopenharmony_ci
1186f2c2defSopenharmony_ci    return FALSE;
1196f2c2defSopenharmony_ci}
1206f2c2defSopenharmony_ci
1216f2c2defSopenharmony_ciboolean ReadFileHeader(HiviewFile *fp)
1226f2c2defSopenharmony_ci{
1236f2c2defSopenharmony_ci    HiviewFileHeader h = { 0 };
1246f2c2defSopenharmony_ci
1256f2c2defSopenharmony_ci    if (fp == NULL || fp->fhandle < 0) {
1266f2c2defSopenharmony_ci        return FALSE;
1276f2c2defSopenharmony_ci    }
1286f2c2defSopenharmony_ci
1296f2c2defSopenharmony_ci    int32 ret;
1306f2c2defSopenharmony_ci    if (HIVIEW_FileSeek(fp->fhandle, 0, HIVIEW_SEEK_SET) < 0) {
1316f2c2defSopenharmony_ci        return FALSE;
1326f2c2defSopenharmony_ci    }
1336f2c2defSopenharmony_ci    ret = HIVIEW_FileRead(fp->fhandle, (uint8 *)&h, sizeof(HiviewFileHeader));
1346f2c2defSopenharmony_ci#if LITTLE_ENDIAN_SYSTEM
1356f2c2defSopenharmony_ci    h.common.prefix = Change32Endian(h.common.prefix);
1366f2c2defSopenharmony_ci    h.common.defineFileVersion = Change32Endian(h.common.defineFileVersion);
1376f2c2defSopenharmony_ci    h.createTime = Change32Endian(h.createTime);
1386f2c2defSopenharmony_ci#endif
1396f2c2defSopenharmony_ci    h.wCursor = HIVIEW_FileSize(fp->fhandle);
1406f2c2defSopenharmony_ci    h.rCursor = sizeof(HiviewFileHeader);
1416f2c2defSopenharmony_ci    if ((ret == sizeof(HiviewFileHeader)) &&
1426f2c2defSopenharmony_ci        ((h.common.prefix & 0xFFFFFF00) == HIVIEW_FILE_HEADER_PREFIX_MASK) &&
1436f2c2defSopenharmony_ci        (h.wCursor >= sizeof(HiviewFileHeader))) {
1446f2c2defSopenharmony_ci        (void)memcpy_s(&(fp->header), sizeof(HiviewFileHeader), (void *)&h, sizeof(HiviewFileHeader));
1456f2c2defSopenharmony_ci        return TRUE;
1466f2c2defSopenharmony_ci    } else {
1476f2c2defSopenharmony_ci        return FALSE;
1486f2c2defSopenharmony_ci    }
1496f2c2defSopenharmony_ci}
1506f2c2defSopenharmony_ci
1516f2c2defSopenharmony_ciint32 WriteToFile(HiviewFile *fp, const uint8 *data, uint32 len)
1526f2c2defSopenharmony_ci{
1536f2c2defSopenharmony_ci    if (fp == NULL || fp->fhandle < 0 || len == 0) {
1546f2c2defSopenharmony_ci        return 0;
1556f2c2defSopenharmony_ci    }
1566f2c2defSopenharmony_ci    int32 wLen = 0;
1576f2c2defSopenharmony_ci    HiviewFileHeader *h = &(fp->header);
1586f2c2defSopenharmony_ci    // overflow
1596f2c2defSopenharmony_ci    if (h->wCursor + len > h->size) {
1606f2c2defSopenharmony_ci        ProcFile(fp, fp->outPath, HIVIEW_FILE_RENAME);
1616f2c2defSopenharmony_ci        if (fp->pFunc != NULL) {
1626f2c2defSopenharmony_ci            fp->pFunc(fp->outPath, h->common.type, HIVIEW_FILE_FULL);
1636f2c2defSopenharmony_ci        }
1646f2c2defSopenharmony_ci    }
1656f2c2defSopenharmony_ci    if (HIVIEW_FileSeek(fp->fhandle, h->wCursor, HIVIEW_SEEK_SET) < 0) {
1666f2c2defSopenharmony_ci        return 0;
1676f2c2defSopenharmony_ci    }
1686f2c2defSopenharmony_ci    if ((int32)len == HIVIEW_FileWrite(fp->fhandle, data, len)) {
1696f2c2defSopenharmony_ci        h->wCursor += len;
1706f2c2defSopenharmony_ci        wLen += len;
1716f2c2defSopenharmony_ci    }
1726f2c2defSopenharmony_ci    return wLen;
1736f2c2defSopenharmony_ci}
1746f2c2defSopenharmony_ci
1756f2c2defSopenharmony_ciint32 ReadFromFile(HiviewFile *fp, uint8 *data, uint32 readLen)
1766f2c2defSopenharmony_ci{
1776f2c2defSopenharmony_ci    if (fp == NULL || data == NULL || fp->fhandle < 0 || readLen == 0) {
1786f2c2defSopenharmony_ci        return 0;
1796f2c2defSopenharmony_ci    }
1806f2c2defSopenharmony_ci
1816f2c2defSopenharmony_ci    HiviewFileHeader* h = &(fp->header);
1826f2c2defSopenharmony_ci    uint32 wCursor = h->wCursor;
1836f2c2defSopenharmony_ci    uint32 rCursor = h->rCursor;
1846f2c2defSopenharmony_ci    if (wCursor < readLen) {
1856f2c2defSopenharmony_ci        return 0;
1866f2c2defSopenharmony_ci    }
1876f2c2defSopenharmony_ci    int32 rLen = (readLen <= (wCursor - rCursor)) ? readLen : (wCursor - rCursor);
1886f2c2defSopenharmony_ci    if (HIVIEW_FileSeek(fp->fhandle, rCursor, HIVIEW_SEEK_SET) < 0) {
1896f2c2defSopenharmony_ci        return 0;
1906f2c2defSopenharmony_ci    }
1916f2c2defSopenharmony_ci    if ((int32)rLen == HIVIEW_FileRead(fp->fhandle, data, rLen)) {
1926f2c2defSopenharmony_ci        h->rCursor += rLen;
1936f2c2defSopenharmony_ci    } else {
1946f2c2defSopenharmony_ci        rLen = 0;
1956f2c2defSopenharmony_ci    }
1966f2c2defSopenharmony_ci    return rLen;
1976f2c2defSopenharmony_ci}
1986f2c2defSopenharmony_ci
1996f2c2defSopenharmony_ciuint32 GetFileUsedSize(HiviewFile *fp)
2006f2c2defSopenharmony_ci{
2016f2c2defSopenharmony_ci    if (fp == NULL || fp->fhandle < 0) {
2026f2c2defSopenharmony_ci        return 0;
2036f2c2defSopenharmony_ci    }
2046f2c2defSopenharmony_ci    return fp->header.wCursor;
2056f2c2defSopenharmony_ci}
2066f2c2defSopenharmony_ci
2076f2c2defSopenharmony_ciuint32 GetFileFreeSize(HiviewFile *fp)
2086f2c2defSopenharmony_ci{
2096f2c2defSopenharmony_ci    if (fp == NULL || fp->fhandle < 0) {
2106f2c2defSopenharmony_ci        return 0;
2116f2c2defSopenharmony_ci    }
2126f2c2defSopenharmony_ci
2136f2c2defSopenharmony_ci    return (fp->header.size - fp->header.wCursor);
2146f2c2defSopenharmony_ci}
2156f2c2defSopenharmony_ci
2166f2c2defSopenharmony_ciint32 CloseHiviewFile(HiviewFile *fp)
2176f2c2defSopenharmony_ci{
2186f2c2defSopenharmony_ci    if (fp != NULL && fp->fhandle > 0) {
2196f2c2defSopenharmony_ci        int32 ret = HIVIEW_FileClose(fp->fhandle);
2206f2c2defSopenharmony_ci        fp->fhandle = -1;
2216f2c2defSopenharmony_ci        UnRegisterFileWatcher(fp, NULL);
2226f2c2defSopenharmony_ci        return ret;
2236f2c2defSopenharmony_ci    }
2246f2c2defSopenharmony_ci    return -1;
2256f2c2defSopenharmony_ci}
2266f2c2defSopenharmony_ci
2276f2c2defSopenharmony_ciint8 ProcFile(HiviewFile *fp, const char *dest, FileProcMode mode)
2286f2c2defSopenharmony_ci{
2296f2c2defSopenharmony_ci    if (fp == NULL || fp->fhandle < 0) {
2306f2c2defSopenharmony_ci        return -1;
2316f2c2defSopenharmony_ci    }
2326f2c2defSopenharmony_ci
2336f2c2defSopenharmony_ci    if (HIVIEW_MutexLockOrWait(fp->mutex, OUT_PATH_WAIT_TIMEOUT) != 0) {
2346f2c2defSopenharmony_ci        HIVIEW_UartPrint("Procfile failed, get lock fail");
2356f2c2defSopenharmony_ci        return -1;
2366f2c2defSopenharmony_ci    }
2376f2c2defSopenharmony_ci    switch (mode) {
2386f2c2defSopenharmony_ci        case HIVIEW_FILE_COPY: {
2396f2c2defSopenharmony_ci            HIVIEW_FileClose(fp->fhandle);
2406f2c2defSopenharmony_ci            int32 ret = HIVIEW_FileCopy(fp->path, dest);
2416f2c2defSopenharmony_ci            fp->fhandle = HIVIEW_FileOpen(fp->path);
2426f2c2defSopenharmony_ci            if (ret != 0 || fp->fhandle < 0) {
2436f2c2defSopenharmony_ci                int32 errnoRecord = (int32)errno;
2446f2c2defSopenharmony_ci                HIVIEW_MutexUnlock(fp->mutex);
2456f2c2defSopenharmony_ci                uint16 hieventID = 1;
2466f2c2defSopenharmony_ci                HiEvent *hievent = HIEVENT_CREATE(HIEVENT_FAULT, hieventID, 2); // 2 params
2476f2c2defSopenharmony_ci                HIEVENT_PUT_INT_VALUE(hievent, 0, (int32)fp->header.common.type);
2486f2c2defSopenharmony_ci                HIEVENT_PUT_INT_VALUE(hievent, 1, errnoRecord);
2496f2c2defSopenharmony_ci                HIEVENT_REPORT(hievent);
2506f2c2defSopenharmony_ci                HIVIEW_UartPrint("Procfile failed, type : HIVIEW_FILE_COPY");
2516f2c2defSopenharmony_ci                return -1;
2526f2c2defSopenharmony_ci            }
2536f2c2defSopenharmony_ci            break;
2546f2c2defSopenharmony_ci        }
2556f2c2defSopenharmony_ci        case HIVIEW_FILE_RENAME: {
2566f2c2defSopenharmony_ci            HIVIEW_FileClose(fp->fhandle);
2576f2c2defSopenharmony_ci            uint8 type = fp->header.common.type;
2586f2c2defSopenharmony_ci            uint32 size = fp->configSize;
2596f2c2defSopenharmony_ci            int32 ret = HIVIEW_FileMove(fp->path, dest);
2606f2c2defSopenharmony_ci            if (InitHiviewFile(fp, (HiviewFileType)type, size) == FALSE || ret != 0) {
2616f2c2defSopenharmony_ci                HIVIEW_MutexUnlock(fp->mutex);
2626f2c2defSopenharmony_ci                HIVIEW_UartPrint("Procfile failed, type : HIVIEW_FILE_RENAME");
2636f2c2defSopenharmony_ci                return -1;
2646f2c2defSopenharmony_ci            }
2656f2c2defSopenharmony_ci            break;
2666f2c2defSopenharmony_ci        }
2676f2c2defSopenharmony_ci        default:
2686f2c2defSopenharmony_ci            HIVIEW_MutexUnlock(fp->mutex);
2696f2c2defSopenharmony_ci            HIVIEW_UartPrint("Procfile failed, type : Unknown type");
2706f2c2defSopenharmony_ci            return -1;
2716f2c2defSopenharmony_ci    }
2726f2c2defSopenharmony_ci    HIVIEW_MutexUnlock(fp->mutex);
2736f2c2defSopenharmony_ci    return 0;
2746f2c2defSopenharmony_ci}
2756f2c2defSopenharmony_ci
2766f2c2defSopenharmony_ciint IsValidPath(const char *path)
2776f2c2defSopenharmony_ci{
2786f2c2defSopenharmony_ci    if (strcmp(path, HIVIEW_FILE_PATH_LOG) == 0 ||
2796f2c2defSopenharmony_ci        strcmp(path, HIVIEW_FILE_PATH_UE_EVENT) == 0 ||
2806f2c2defSopenharmony_ci        strcmp(path, HIVIEW_FILE_PATH_FAULT_EVENT) == 0 ||
2816f2c2defSopenharmony_ci        strcmp(path, HIVIEW_FILE_PATH_STAT_EVENT) == 0 ||
2826f2c2defSopenharmony_ci        strcmp(path, HIVIEW_FILE_OUT_PATH_LOG) == 0 ||
2836f2c2defSopenharmony_ci        strcmp(path, HIVIEW_FILE_OUT_PATH_UE_EVENT) == 0 ||
2846f2c2defSopenharmony_ci        strcmp(path, HIVIEW_FILE_OUT_PATH_FAULT_EVENT) == 0 ||
2856f2c2defSopenharmony_ci        strcmp(path, HIVIEW_FILE_OUT_PATH_STAT_EVENT) == 0) {
2866f2c2defSopenharmony_ci            return -1;
2876f2c2defSopenharmony_ci    }
2886f2c2defSopenharmony_ci    return 0;
2896f2c2defSopenharmony_ci}
2906f2c2defSopenharmony_ci
2916f2c2defSopenharmony_civoid RegisterFileWatcher(HiviewFile *fp, FileProc func, const char *path)
2926f2c2defSopenharmony_ci{
2936f2c2defSopenharmony_ci    if (fp == NULL || func == NULL) {
2946f2c2defSopenharmony_ci        return;
2956f2c2defSopenharmony_ci    }
2966f2c2defSopenharmony_ci    fp->pFunc = func;
2976f2c2defSopenharmony_ci    if (path == NULL || IsValidPath(path) != 0) {
2986f2c2defSopenharmony_ci        return;
2996f2c2defSopenharmony_ci    }
3006f2c2defSopenharmony_ci
3016f2c2defSopenharmony_ci    int len = strlen(path) + 1;
3026f2c2defSopenharmony_ci    char* tmp = (char*)HIVIEW_MemAlloc(MEM_POOL_HIVIEW_ID, len);
3036f2c2defSopenharmony_ci    if (tmp == NULL) {
3046f2c2defSopenharmony_ci        return;
3056f2c2defSopenharmony_ci    }
3066f2c2defSopenharmony_ci    if (strcpy_s(tmp, len, path) != EOK) {
3076f2c2defSopenharmony_ci        HIVIEW_MemFree(MEM_POOL_HIVIEW_ID, tmp);
3086f2c2defSopenharmony_ci        return;
3096f2c2defSopenharmony_ci    }
3106f2c2defSopenharmony_ci    fp->outPath = tmp;
3116f2c2defSopenharmony_ci}
3126f2c2defSopenharmony_ci
3136f2c2defSopenharmony_civoid UnRegisterFileWatcher(HiviewFile *fp, FileProc func)
3146f2c2defSopenharmony_ci{
3156f2c2defSopenharmony_ci    (void)func;
3166f2c2defSopenharmony_ci    fp->pFunc = NULL;
3176f2c2defSopenharmony_ci    if (IsValidPath(fp->outPath) == 0) {
3186f2c2defSopenharmony_ci        HIVIEW_MemFree(MEM_POOL_HIVIEW_ID, fp->outPath);
3196f2c2defSopenharmony_ci    }
3206f2c2defSopenharmony_ci    switch (fp->header.common.type) {
3216f2c2defSopenharmony_ci        case HIVIEW_FAULT_EVENT_FILE:
3226f2c2defSopenharmony_ci            fp->outPath = HIVIEW_FILE_OUT_PATH_FAULT_EVENT;
3236f2c2defSopenharmony_ci            break;
3246f2c2defSopenharmony_ci        case HIVIEW_UE_EVENT_FILE:
3256f2c2defSopenharmony_ci            fp->outPath = HIVIEW_FILE_OUT_PATH_UE_EVENT;
3266f2c2defSopenharmony_ci            break;
3276f2c2defSopenharmony_ci        case HIVIEW_STAT_EVENT_FILE:
3286f2c2defSopenharmony_ci            fp->outPath = HIVIEW_FILE_OUT_PATH_STAT_EVENT;
3296f2c2defSopenharmony_ci            break;
3306f2c2defSopenharmony_ci        case HIVIEW_LOG_TEXT_FILE:
3316f2c2defSopenharmony_ci        case HIVIEW_LOG_BIN_FILE:
3326f2c2defSopenharmony_ci            fp->outPath = HIVIEW_FILE_OUT_PATH_LOG;
3336f2c2defSopenharmony_ci            break;
3346f2c2defSopenharmony_ci        default:
3356f2c2defSopenharmony_ci            break;
3366f2c2defSopenharmony_ci    }
3376f2c2defSopenharmony_ci}
338