diff options
author | bescoto <bescoto@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109> | 2003-08-31 21:03:53 +0000 |
---|---|---|
committer | bescoto <bescoto@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109> | 2003-08-31 21:03:53 +0000 |
commit | 98a31c8656bb61659e1eea4f649d51a214ce806d (patch) | |
tree | 0eaefd821a87b34fc5af6f588acdb83bd46c0928 /rdiff-backup/rdiff_backup/Time.py | |
parent | 4e1720ac15bc0579b9701231b2e4a3f196bc9b7b (diff) | |
download | rdiff-backup-98a31c8656bb61659e1eea4f649d51a214ce806d.tar.gz |
Added session number like '3B' to general time specification
git-svn-id: http://svn.savannah.nongnu.org/svn/rdiff-backup/trunk@415 2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109
Diffstat (limited to 'rdiff-backup/rdiff_backup/Time.py')
-rw-r--r-- | rdiff-backup/rdiff_backup/Time.py | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/rdiff-backup/rdiff_backup/Time.py b/rdiff-backup/rdiff_backup/Time.py index 289df0a..e3a6173 100644 --- a/rdiff-backup/rdiff_backup/Time.py +++ b/rdiff-backup/rdiff_backup/Time.py @@ -19,7 +19,7 @@ """Provide time related exceptions and functions""" -import time, types, re +import time, types, re, sys import Globals @@ -28,6 +28,7 @@ class TimeException(Exception): pass _interval_conv_dict = {"s": 1, "m": 60, "h": 3600, "D": 86400, "W": 7*86400, "M": 30*86400, "Y": 365*86400} _integer_regexp = re.compile("^[0-9]+$") +_session_regexp = re.compile("^[0-9]+B$") _interval_regexp = re.compile("^([0-9]+)([smhDWMY])") _genstr_date_regexp1 = re.compile("^(?P<year>[0-9]{4})[-/]" "(?P<month>[0-9]{1,2})[-/](?P<day>[0-9]{1,2})$") @@ -174,8 +175,27 @@ def cmp(time1, time2): elif time1 == time2: return 0 else: return 1 -def genstrtotime(timestr, curtime = None): - """Convert a generic time string to a time in seconds""" +def time_from_session(session_num, rp = None): + """Return time in seconds of given backup + + The current mirror is session_num 0, the next oldest increment has + number 1, etc. Requires that the Globals.rbdir directory be set. + + """ + session_times = Globals.rbdir.conn.restore.MirrorStruct \ + .get_increment_times() + session_times.sort() + if len(session_times) < session_num: + return session_times[0] # Use oldest if two few backups + return session_times[-session_num-1] + +def genstrtotime(timestr, curtime = None, rp = None): + """Convert a generic time string to a time in seconds + + rp is used when the time is of the form "4B" or similar. Then the + times of the increments of that particular file are used. + + """ if curtime is None: curtime = globals()['curtime'] if timestr == "now": return curtime @@ -196,6 +216,10 @@ the day).""" % timestr) t = stringtotime(timestr) or stringtotime(timestr+gettzd()) if t: return t + # Test for time given as number of backups, like 3B + if _session_regexp.search(timestr): + return time_from_session(int(timestr[:-1]), rp) + try: # test for an interval, like "2 days ago" return curtime - intstringtoseconds(timestr) except TimeException: pass @@ -209,3 +233,4 @@ the day).""" % timestr) t = stringtotime(timestr) if t: return t else: error() + |