From: ChangGyu Choi Date: Thu, 25 May 2023 05:00:15 +0000 (+0900) Subject: Fix file not found exception X-Git-Tag: submit/tizen/20230525.150959~1^2~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=351bba62fc2170783a06904c8363efab0c9368f8;p=platform%2Fcore%2Fcsapi%2Ftizenfx.git Fix file not found exception When ini file does not exist, LibIniParser.Load() makes error logs. This patch is to remove this case. After applying this patch, we can expect performance improvement by loading the dictionary only once for the first time. Signed-off-by: ChangGyu Choi --- diff --git a/src/Tizen.Applications.Common/Tizen.Applications/CultureInfoHelper.cs b/src/Tizen.Applications.Common/Tizen.Applications/CultureInfoHelper.cs index 3bd8e98fe..fa42c77c0 100755 --- a/src/Tizen.Applications.Common/Tizen.Applications/CultureInfoHelper.cs +++ b/src/Tizen.Applications.Common/Tizen.Applications/CultureInfoHelper.cs @@ -15,32 +15,63 @@ */ using System; +using System.IO; using System.Runtime.InteropServices; namespace Tizen.Applications { + internal static class CultureInfoHelper { - private const string _pathCultureInfoIni = "/usr/share/dotnet.tizen/framework/i18n/CultureInfo.ini"; - - public static string GetCultureName(string locale) + private class CultureInfoManager { - IntPtr dictionary = Interop.LibIniParser.Load(_pathCultureInfoIni); - if (dictionary == IntPtr.Zero) + private static CultureInfoManager _inst; + private const string _pathCultureInfoIni = "/usr/share/dotnet.tizen/framework/i18n/CultureInfo.ini"; + private static IntPtr _dictionary = IntPtr.Zero; + + public static CultureInfoManager GetInst() { - return string.Empty; + return _inst; } - string cultureName = string.Empty; - string key = "CultureInfo:" + locale.ToLowerInvariant(); - IntPtr value = Interop.LibIniParser.GetString(dictionary, key, IntPtr.Zero); - if (value != IntPtr.Zero) + private CultureInfoManager() { - cultureName = Marshal.PtrToStringAnsi(value); + if (File.Exists(_pathCultureInfoIni)) + { + _dictionary = Interop.LibIniParser.Load(_pathCultureInfoIni); + } } - Interop.LibIniParser.FreeDict(dictionary); - return cultureName; + ~CultureInfoManager() + { + if (_dictionary != IntPtr.Zero) + { + Interop.LibIniParser.FreeDict(_dictionary); + } + } + + public string GetCultureName(string locale) + { + if (_dictionary == IntPtr.Zero) + { + return string.Empty; + } + + string cultureName = string.Empty; + string key = "CultureInfo:" + locale.ToLowerInvariant(); + IntPtr value = Interop.LibIniParser.GetString(_dictionary, key, IntPtr.Zero); + if (value != IntPtr.Zero) + { + cultureName = Marshal.PtrToStringAnsi(value); + } + + return cultureName; + } + } + + public static string GetCultureName(string locale) + { + return CultureInfoManager.GetInst().GetCultureName(locale); } } }