summaryrefslogtreecommitdiffstats
path: root/nikola/packages
diff options
context:
space:
mode:
Diffstat (limited to 'nikola/packages')
-rw-r--r--nikola/packages/__init__.py1
-rw-r--r--nikola/packages/tzlocal/darwin.py13
-rw-r--r--nikola/packages/tzlocal/unix.py2
3 files changed, 13 insertions, 3 deletions
diff --git a/nikola/packages/__init__.py b/nikola/packages/__init__.py
index e69de29..0a704f5 100644
--- a/nikola/packages/__init__.py
+++ b/nikola/packages/__init__.py
@@ -0,0 +1 @@
+# Packages vendored in by Nikola.
diff --git a/nikola/packages/tzlocal/darwin.py b/nikola/packages/tzlocal/darwin.py
index 8aeee51..8bfe807 100644
--- a/nikola/packages/tzlocal/darwin.py
+++ b/nikola/packages/tzlocal/darwin.py
@@ -1,17 +1,26 @@
from __future__ import with_statement
import os
import dateutil.tz
+import subprocess
_cache_tz = None
def _get_localzone():
- tzname = os.popen("systemsetup -gettimezone").read().replace("Time Zone: ", "").strip()
+ tzname = subprocess.check_output(["systemsetup", "-gettimezone"]).decode('utf-8')
+ tzname = tzname.replace("Time Zone: ", "")
+ # OS X 10.9+, this command is root-only
+ if 'exiting!' in tzname:
+ tzname = ''
+
if not tzname:
# link will be something like /usr/share/zoneinfo/America/Los_Angeles.
link = os.readlink("/etc/localtime")
- tzname = link[link.rfind('/', 0, link.rfind('/')) + 1:]
+ tzname = link.split('zoneinfo/')[-1]
+ tzname = tzname.strip()
try:
+ # test the name
+ assert tzname
dateutil.tz.gettz(tzname)
return tzname
except:
diff --git a/nikola/packages/tzlocal/unix.py b/nikola/packages/tzlocal/unix.py
index 8e913b8..4cd3752 100644
--- a/nikola/packages/tzlocal/unix.py
+++ b/nikola/packages/tzlocal/unix.py
@@ -30,7 +30,7 @@ def _get_localzone():
try:
# link will be something like /usr/share/zoneinfo/America/Los_Angeles.
link = os.readlink('/etc/localtime')
- tz = link[link.rfind('/', 0, link.rfind('/')) + 1:]
+ tz = link.split('zoneinfo/')[-1]
if tz:
dateutil.tz.gettz(tz)