the json module was added with python2.6, so a regular python 2.5
machine will lack this module and won't probably have the simplejson
module imported by the leapsecond.py script.

Since the only function used is the isotime function, which is
self-contained and quite trivial, only copy this function into the
leapsecond script to avoid the import of the gps.misc module, which
needs simplejson.

Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
---
 leapsecond.py |   27 ++++++++++++++++++++++++---
 1 file changed, 24 insertions(+), 3 deletions(-)

diff --git a/leapsecond.py b/leapsecond.py
index 2059f6c..cdacdb4 100755
--- a/leapsecond.py
+++ b/leapsecond.py
@@ -24,7 +24,6 @@
 # BSD terms apply: see the file COPYING in the distribution root for details.
 #
 import os, urllib, re, random, time, calendar, math, sys
-import gps.misc
 
 __locations = [
     (
@@ -48,6 +47,28 @@ __locations = [
 # between times it might change, in seconds since Unix epoch GMT.
 __cachepath = "/var/run/leapsecond"
 
+def isotime(s):
+    "Convert timestamps in ISO8661 format to and from Unix time."
+    if type(s) == type(1):
+        return time.strftime("%Y-%m-%dT%H:%M:%S", time.gmtime(s))
+    elif type(s) == type(1.0):
+        date = int(s)
+        msec = s - date
+        date = time.strftime("%Y-%m-%dT%H:%M:%S", time.gmtime(s))
+        return date + "." + repr(msec)[3:]
+    elif type(s) == type("") or type(s) == type(u""):
+        if s[-1] == "Z":
+            s = s[:-1]
+        if "." in s:
+            (date, msec) = s.split(".")
+        else:
+            date = s
+            msec = "0"
+        # Note: no leap-second correction!
+        return calendar.timegm(time.strptime(date, "%Y-%m-%dT%H:%M:%S")) + float("0." + msec)
+    else:
+        raise TypeError
+
 def retrieve():
     "Retrieve current leap-second from Web sources."
     random.shuffle(__locations)	# To spread the load
@@ -261,10 +282,10 @@ if __name__ == '__main__':
             print unix_to_rfc822(float(val))
             raise SystemExit, 0
         elif (switch == '-I'):  # Compute Unix time from ISO8601 date
-            print gps.misc.isotime(val)
+            print isotime(val)
             raise SystemExit, 0
         elif (switch == '-O'):  # Compute ISO8601 date from Unix time
-            print gps.misc.isotime(float(val))
+            print isotime(float(val))
             raise SystemExit, 0
 
         print "Current leap second:", retrieve()
-- 
1.7.9.5

