From 7a1c7918e0459909673bec6da6a94e57ec96a1e8 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Sun, 21 Jul 1996 02:09:54 +0000 Subject: [PATCH] add mac compatibility --- Demo/rpc/rpc.py | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) 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 -- 2.50.1