1 /* 2 * Copyright (c) 2022 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 "init_data.h" 17 #include <cstring> 18 #include <mutex> 19 20 namespace { 21 const char* g_hwDirectory = "/system/usr/ohos_icu"; 22 static int status = 0; 23 std::mutex dataMutex; 24 } 25 26 /** 27 * set icu data files to hwDirectory 28 */ SetHwIcuDirectory()29void SetHwIcuDirectory() 30 { 31 std::lock_guard<std::mutex> lock(dataMutex); 32 if (status != 0) { 33 return; 34 } 35 u_setDataDirectory(g_hwDirectory); 36 status = 1; 37 } 38 GetIcuVersion()39extern "C" const char* GetIcuVersion() 40 { 41 const char* icuVerion = U_ICU_VERSION_SHORT; 42 return icuVerion; 43 } 44 SetOhosIcuDirectory()45extern "C" void SetOhosIcuDirectory() 46 { 47 std::lock_guard<std::mutex> lock(dataMutex); 48 const char* currDir = u_getDataDirectory(); 49 if (strncmp(currDir, g_hwDirectory, strlen(g_hwDirectory)) == 0) { 50 return; 51 } 52 u_setDataDirectory(g_hwDirectory); 53 } 54