aboutsummaryrefslogtreecommitdiffstats
path: root/package/gpsd/gpsd-05-fix-leapsecond-script-python2.5.patch
blob: 8866b81d314100466869086e63f1323832601030 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
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