From: Hokwon Song Date: Fri, 31 May 2013 01:06:23 +0000 (+0900) Subject: [DCM-1855] Fix to get the system tz. X-Git-Tag: accepted/tizen/20130912.081851^2~277^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=93f7de08f79d24118d6aa93d26fd972c3c7d3f11;p=platform%2Fframework%2Fnative%2Fappfw.git [DCM-1855] Fix to get the system tz. Change-Id: I7820bac27a5d3abaf38139dd8551e00f7042646c Signed-off-by: Hokwon Song --- diff --git a/src/locales/FLcl_LocaleManagerImpl.cpp b/src/locales/FLcl_LocaleManagerImpl.cpp index a378dd5..e1b7b1b 100644 --- a/src/locales/FLcl_LocaleManagerImpl.cpp +++ b/src/locales/FLcl_LocaleManagerImpl.cpp @@ -26,6 +26,7 @@ #include #include #include +#include #include #include @@ -52,6 +53,17 @@ struct FreeXmlDoc } }; +struct FreeCharPtr +{ + void operator ()(char* p) + { + if (p != null) + { + free(p); + } + } +}; + namespace Tizen { namespace Locales { static const char* LANGUAGE_LIST_FILE_PATH ="/opt/data/setting/langlist.xml"; @@ -205,7 +217,7 @@ _LocaleManagerImpl::GetAvailableLanguagesN(void) { if (cur_node->type == XML_ELEMENT_NODE) { - std::unique_ptr < char > pLocId((char*)xmlGetProp(cur_node, (const xmlChar *)"id")); + std::unique_ptr < char, FreeCharPtr > pLocId((char*)xmlGetProp(cur_node, (const xmlChar *)"id")); Locale loc = _LocaleImpl(pLocId.get()).GetOspLocale(); std::unique_ptr pLanguageLocaleID(new (std::nothrow) String(loc.GetLanguageCodeString())); SysTryReturn(NID_LCL, pLanguageLocaleID, null, E_OUT_OF_MEMORY,"[%s] Memory allocation failed",GetErrorMessage(E_OUT_OF_MEMORY)); @@ -247,7 +259,7 @@ _LocaleManagerImpl::GetAvailableLanguageLocalesN(void) { if (cur_node->type == XML_ELEMENT_NODE) { - std::unique_ptr< char > pLocId((char*)xmlGetProp(cur_node, (const xmlChar *)"id")); + std::unique_ptr< char, FreeCharPtr> pLocId((char*)xmlGetProp(cur_node, (const xmlChar *)"id")); Locale loc = _LocaleImpl(pLocId.get()).GetOspLocale(); if (_LocaleImpl::IsSupported(loc)) { @@ -371,15 +383,9 @@ _LocaleManagerImpl::GetAvailableTimeZonesN(int rawOffset) TimeZone _LocaleManagerImpl::GetSystemTimeZone(void) { - char tz[PATH_MAX + 1]; - int len = readlink("/opt/etc/localtime", tz, PATH_MAX); - - SysTryReturn(NID_LCL, len > 0, TimeZone(-1, ""), E_SYSTEM, "It is failed to get System Time Zone"); - tz[len] = '\0'; - SysTryReturn(NID_LCL, len > 20, TimeZone(-1, ""), E_SYSTEM, "It is failed to get System Time Zone"); - - String tzId(tz + 20); - SysLog(NID_LCL, "System TimeZone id [%ls]", tzId.GetPointer()); + std::unique_ptr< char, FreeCharPtr> tzId(vconf_get_str(VCONFKEY_SETAPPL_TIMEZONE_ID)); + SysTryReturn(NID_LCL, tzId, TimeZone(-1, ""), E_SYSTEM, "It is failed to get System Time Zone"); + SysLog(NID_LCL, "System TimeZone id [%s]", tzId.get()); TimeZone timeZone; DateTime utcTime; @@ -389,7 +395,7 @@ _LocaleManagerImpl::GetSystemTimeZone(void) pGmTime = gmtime(&currTime); utcTime.SetValue(pGmTime->tm_year + 1900, pGmTime->tm_mon + 1, pGmTime->tm_mday, pGmTime->tm_hour, pGmTime->tm_min, pGmTime->tm_sec); - result r = Tizen::Locales::TimeZone::GetTimeZone(tzId, utcTime, timeZone); + result r = Tizen::Locales::TimeZone::GetTimeZone(String(tzId.get()), utcTime, timeZone); SysTryReturn(NID_LCL, r == E_SUCCESS, TimeZone(-1, ""), r, "[%s] error occurs.", GetErrorMessage(r)); return timeZone; }