TimeZone
_LocaleManagerImpl::GetSystemTimeZone(void)
{
- 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());
+ char pTZPath[256] = {0,};
+ char* pTZID = null;
+ bool isDeleted = false;
+ ssize_t nLen = readlink("/opt/etc/localtime", pTZPath, sizeof(pTZPath)-1);
+
+ if (nLen > 20)
+ {
+ pTZPath[nLen] = '\0';
+ pTZID = &pTZPath[20];
+ }
+ else
+ {
+ pTZID = vconf_get_str(VCONFKEY_SETAPPL_TIMEZONE_ID);
+ SysTryReturn(NID_LCL, pTZID, TimeZone(-1, ""), E_SYSTEM, "It is failed to get System Time Zone.");
+ isDeleted = true;
+ }
TimeZone timeZone;
DateTime utcTime;
utcTime.SetValue(gmTime.tm_year + 1900, gmTime.tm_mon + 1, gmTime.tm_mday, gmTime.tm_hour, gmTime.tm_min, gmTime.tm_sec);
- result r = Tizen::Locales::TimeZone::GetTimeZone(String(tzId.get()), utcTime, timeZone);
+ result r = Tizen::Locales::TimeZone::GetTimeZone(String(pTZID), utcTime, timeZone);
+ if (isDeleted)
+ {
+ delete pTZID;
+ }
SysTryReturn(NID_LCL, r == E_SUCCESS, TimeZone(-1, ""), r, "[%s] error occurs.", GetErrorMessage(r));
return timeZone;
}