summaryrefslogtreecommitdiff
path: root/Demo/rpc
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1996-07-21 02:09:54 +0000
committerGuido van Rossum <guido@python.org>1996-07-21 02:09:54 +0000
commitacadc9d6f7826160eec2fb5c753c418a9949f49a (patch)
tree4387543e7154e833c67fdf429282e97bf3cedec9 /Demo/rpc
parent41e17c41299cefa557790e5f432c266b637b19c6 (diff)
downloadcpython-acadc9d6f7826160eec2fb5c753c418a9949f49a.tar.gz
add mac compatibility
Diffstat (limited to 'Demo/rpc')
-rw-r--r--Demo/rpc/rpc.py30
1 files changed, 29 insertions, 1 deletions
diff --git a/Demo/rpc/rpc.py b/Demo/rpc/rpc.py
index 83cc954b3d..f44b3e4426 100644
--- a/Demo/rpc/rpc.py
+++ b/Demo/rpc/rpc.py
@@ -163,9 +163,37 @@ def make_auth_unix_default():
except ImportError:
uid = gid = 0
import time
- return make_auth_unix(int(time.time()), \
+ return make_auth_unix(int(time.time()-unix_epoch()), \
socket.gethostname(), uid, gid, [])
+_unix_epoch = -1
+def unix_epoch():
+ """Very painful calculation of when the Unix Epoch is.
+
+ This is defined as the return value of time.time() on Jan 1st,
+ 1970, 00:00:00 GMT.
+
+ On a Unix system, this should always return 0.0. On a Mac, the
+ calculations are needed -- and hard because of integer overflow
+ and other limitations.
+
+ """
+ global _unix_epoch
+ if _unix_epoch >= 0: return _unix_epoch
+ import time
+ now = time.time()
+ localt = time.localtime(now) # (y, m, d, hh, mm, ss, ..., ..., ...)
+ gmt = time.gmtime(now)
+ offset = time.mktime(localt) - time.mktime(gmt)
+ y, m, d, hh, mm, ss = 1970, 1, 1, 0, 0, 0
+ offset, ss = divmod(ss + offset, 60)
+ offset, mm = divmod(mm + offset, 60)
+ offset, hh = divmod(hh + offset, 24)
+ d = d + offset
+ _unix_epoch = time.mktime((y, m, d, hh, mm, ss, 0, 0, 0))
+ print "Unix epoch:", time.ctime(_unix_epoch)
+ return _unix_epoch
+
# Common base class for clients