diff options
Diffstat (limited to 'xbmc/linux/LinuxTimezone.cpp')
-rw-r--r-- | xbmc/linux/LinuxTimezone.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/xbmc/linux/LinuxTimezone.cpp b/xbmc/linux/LinuxTimezone.cpp index 8e2bf2b4b4..8ca969c6e7 100644 --- a/xbmc/linux/LinuxTimezone.cpp +++ b/xbmc/linux/LinuxTimezone.cpp @@ -27,6 +27,9 @@ #ifdef __APPLE__ #include "OSXGNUReplacements.h" #endif +#ifdef __FreeBSD__ +#include "freebsd/FreeBSDGNUReplacements.h" +#endif #include "Util.h" @@ -36,6 +39,7 @@ CLinuxTimezone::CLinuxTimezone() : m_IsDST(0) { char* line = NULL; size_t linelen = 0; + int nameonfourthfield = 0; CStdString s; vector<CStdString> tokens; @@ -91,6 +95,11 @@ CLinuxTimezone::CLinuxTimezone() : m_IsDST(0) // Load countries fp = fopen("/usr/share/zoneinfo/iso3166.tab", "r"); + if (!fp) + { + fp = fopen("/usr/share/misc/iso3166", "r"); + nameonfourthfield = 1; + } if (fp) { CStdString countryCode; @@ -111,6 +120,16 @@ CLinuxTimezone::CLinuxTimezone() : m_IsDST(0) int i = 2; while (s[i] == ' ' || s[i] == '\t') i++; + if (nameonfourthfield) + { + // skip three letter + while (s[i] != ' ' && s[i] != '\t') i++; + while (s[i] == ' ' || s[i] == '\t') i++; + // skip number + while (s[i] != ' ' && s[i] != '\t') i++; + while (s[i] == ' ' || s[i] == '\t') i++; + } + countryCode = s.Left(2); countryName = s.Mid(i); |