summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorben <ben@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109>2002-10-05 07:37:32 +0000
committerben <ben@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109>2002-10-05 07:37:32 +0000
commita957d24412318bdd6dba162e4bc51680ad118036 (patch)
treeaf1ccb4bccd9d2facd79d10c1a4110c9d747752c
parent23864c166d3cd702158733118f5e388c97cbf5d7 (diff)
downloadrdiff-backup-a957d24412318bdd6dba162e4bc51680ad118036.tar.gz
Added David S.'s major/minor patch in cmodule.c,
SetConnections.py now normalizes rpaths, log.py now returns LoggerError if can't open logfile, Main.py catches logger error if can't open restore log git-svn-id: http://svn.savannah.nongnu.org/svn/rdiff-backup/trunk@216 2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109
-rw-r--r--rdiff-backup/rdiff_backup/Main.py15
-rw-r--r--rdiff-backup/rdiff_backup/SetConnections.py4
-rw-r--r--rdiff-backup/rdiff_backup/cmodule.c4
-rw-r--r--rdiff-backup/rdiff_backup/log.py11
-rw-r--r--rdiff-backup/src/Main.py15
-rw-r--r--rdiff-backup/src/SetConnections.py4
-rw-r--r--rdiff-backup/src/cmodule.c4
-rw-r--r--rdiff-backup/src/log.py11
8 files changed, 48 insertions, 20 deletions
diff --git a/rdiff-backup/rdiff_backup/Main.py b/rdiff-backup/rdiff_backup/Main.py
index 5569bbe..963f4ce 100644
--- a/rdiff-backup/rdiff_backup/Main.py
+++ b/rdiff-backup/rdiff_backup/Main.py
@@ -390,13 +390,24 @@ def RestoreAsOf(rpin, target):
def restore_common(rpin, target, time):
"""Restore operation common to Restore and RestoreAsOf"""
- Log("Starting Restore", 5)
mirror_root, index = restore_get_root(rpin)
mirror = mirror_root.new_index(index)
inc_rpath = datadir.append_path('increments', index)
restore_init_select(mirror_root, target)
- Log.open_logfile(datadir.append("restore.log"))
+ restore_start_log(rpin, target, time)
Restore.Restore(inc_rpath, mirror, target, time)
+ Log("Restore ended", 4)
+
+def restore_start_log(rpin, target, time):
+ """Open restore log file, log initial message"""
+ try: Log.open_logfile(datadir.append("restore.log"))
+ except LoggerError, e: Log("Warning, " + str(e), 2)
+
+ # Log following message at file verbosity 3, but term verbosity 4
+ log_message = ("Starting restore of %s to %s as it was as of %s." %
+ (rpin.path, target.path, Time.timetopretty(time)))
+ if Log.term_verbosity >= 4: Log.log_to_term(log_message, 4)
+ if Log.verbosity >= 3: Log.log_to_file(log_message)
def restore_check_paths(rpin, rpout, restoreasof = None):
"""Check paths and return pair of corresponding rps"""
diff --git a/rdiff-backup/rdiff_backup/SetConnections.py b/rdiff-backup/rdiff_backup/SetConnections.py
index 073c652..2647dc6 100644
--- a/rdiff-backup/rdiff_backup/SetConnections.py
+++ b/rdiff-backup/rdiff_backup/SetConnections.py
@@ -55,11 +55,11 @@ def get_cmd_pairs(arglist, remote_schema = None, remote_cmd = None):
return cmdpairs
def cmdpair2rp(cmd_pair):
- """Return RPath from cmd_pair (remote_cmd, filename)"""
+ """Return normalized RPath from cmd_pair (remote_cmd, filename)"""
cmd, filename = cmd_pair
if cmd: conn = init_connection(cmd)
else: conn = Globals.local_connection
- return RPath(conn, filename)
+ return RPath(conn, filename).normalize()
def desc2cmd_pairs(desc_pair):
"""Return pair (remote_cmd, filename) from desc_pair"""
diff --git a/rdiff-backup/rdiff_backup/cmodule.c b/rdiff-backup/rdiff_backup/cmodule.c
index c54166d..b9e3e3e 100644
--- a/rdiff-backup/rdiff_backup/cmodule.c
+++ b/rdiff-backup/rdiff_backup/cmodule.c
@@ -129,12 +129,12 @@ static PyObject *c_make_file_dict(self, args)
char devtype[2];
#if defined(HAVE_LONG_LONG) && !defined(MS_WINDOWS)
LONG_LONG devnums = (LONG_LONG)sbuf.st_rdev;
- PyObject *major_num = PyLong_FromLongLong(devnums >> 8);
+ PyObject *major_num = PyLong_FromLongLong(major(devnums));
#else
long int devnums = (long)sbuf.st_dev;
PyObject *major_num = PyInt_FromLong(devnums >> 8);
#endif
- int minor_num = (int)(devnums & 0xff);
+ int minor_num = (int)(minor(devnums));
if S_ISCHR(mode) strcpy(devtype, "c");
else strcpy(devtype, "b");
return_val = Py_BuildValue("{s:s,s:O,s:l,s:l,s:l,s:O,s:O,s:l,s:N}",
diff --git a/rdiff-backup/rdiff_backup/log.py b/rdiff-backup/rdiff_backup/log.py
index 39918e0..1e5998e 100644
--- a/rdiff-backup/rdiff_backup/log.py
+++ b/rdiff-backup/rdiff_backup/log.py
@@ -37,7 +37,7 @@ class Logger:
try: self.term_verbosity = int(termverb_string)
except ValueError:
Log.FatalError("Terminal verbosity must be a number, received "
- "'%s' insteaxd." % termverb_string)
+ "'%s' instead." % termverb_string)
self.termverbset = 1
def open_logfile(self, rpath):
@@ -48,9 +48,9 @@ class Logger:
"""
assert not self.log_file_open
+ rpath.conn.Log.open_logfile_local(rpath)
for conn in Globals.connections:
conn.Log.open_logfile_allconn(rpath.conn)
- rpath.conn.Log.open_logfile_local(rpath)
def open_logfile_allconn(self, log_file_conn):
"""Run on all connections to signal log file is open"""
@@ -59,10 +59,13 @@ class Logger:
def open_logfile_local(self, rpath):
"""Open logfile locally - should only be run on one connection"""
- assert self.log_file_conn is Globals.local_connection
+ assert rpath.conn is Globals.local_connection
+ try: self.logfp = rpath.open("a")
+ except (OSError, IOError), e:
+ raise LoggerError("Unable to open logfile %s: %s"
+ % (rpath.path, e))
self.log_file_local = 1
self.logrp = rpath
- self.logfp = rpath.open("a")
def close_logfile(self):
"""Close logfile and inform all connections"""
diff --git a/rdiff-backup/src/Main.py b/rdiff-backup/src/Main.py
index 5569bbe..963f4ce 100644
--- a/rdiff-backup/src/Main.py
+++ b/rdiff-backup/src/Main.py
@@ -390,13 +390,24 @@ def RestoreAsOf(rpin, target):
def restore_common(rpin, target, time):
"""Restore operation common to Restore and RestoreAsOf"""
- Log("Starting Restore", 5)
mirror_root, index = restore_get_root(rpin)
mirror = mirror_root.new_index(index)
inc_rpath = datadir.append_path('increments', index)
restore_init_select(mirror_root, target)
- Log.open_logfile(datadir.append("restore.log"))
+ restore_start_log(rpin, target, time)
Restore.Restore(inc_rpath, mirror, target, time)
+ Log("Restore ended", 4)
+
+def restore_start_log(rpin, target, time):
+ """Open restore log file, log initial message"""
+ try: Log.open_logfile(datadir.append("restore.log"))
+ except LoggerError, e: Log("Warning, " + str(e), 2)
+
+ # Log following message at file verbosity 3, but term verbosity 4
+ log_message = ("Starting restore of %s to %s as it was as of %s." %
+ (rpin.path, target.path, Time.timetopretty(time)))
+ if Log.term_verbosity >= 4: Log.log_to_term(log_message, 4)
+ if Log.verbosity >= 3: Log.log_to_file(log_message)
def restore_check_paths(rpin, rpout, restoreasof = None):
"""Check paths and return pair of corresponding rps"""
diff --git a/rdiff-backup/src/SetConnections.py b/rdiff-backup/src/SetConnections.py
index 073c652..2647dc6 100644
--- a/rdiff-backup/src/SetConnections.py
+++ b/rdiff-backup/src/SetConnections.py
@@ -55,11 +55,11 @@ def get_cmd_pairs(arglist, remote_schema = None, remote_cmd = None):
return cmdpairs
def cmdpair2rp(cmd_pair):
- """Return RPath from cmd_pair (remote_cmd, filename)"""
+ """Return normalized RPath from cmd_pair (remote_cmd, filename)"""
cmd, filename = cmd_pair
if cmd: conn = init_connection(cmd)
else: conn = Globals.local_connection
- return RPath(conn, filename)
+ return RPath(conn, filename).normalize()
def desc2cmd_pairs(desc_pair):
"""Return pair (remote_cmd, filename) from desc_pair"""
diff --git a/rdiff-backup/src/cmodule.c b/rdiff-backup/src/cmodule.c
index c54166d..b9e3e3e 100644
--- a/rdiff-backup/src/cmodule.c
+++ b/rdiff-backup/src/cmodule.c
@@ -129,12 +129,12 @@ static PyObject *c_make_file_dict(self, args)
char devtype[2];
#if defined(HAVE_LONG_LONG) && !defined(MS_WINDOWS)
LONG_LONG devnums = (LONG_LONG)sbuf.st_rdev;
- PyObject *major_num = PyLong_FromLongLong(devnums >> 8);
+ PyObject *major_num = PyLong_FromLongLong(major(devnums));
#else
long int devnums = (long)sbuf.st_dev;
PyObject *major_num = PyInt_FromLong(devnums >> 8);
#endif
- int minor_num = (int)(devnums & 0xff);
+ int minor_num = (int)(minor(devnums));
if S_ISCHR(mode) strcpy(devtype, "c");
else strcpy(devtype, "b");
return_val = Py_BuildValue("{s:s,s:O,s:l,s:l,s:l,s:O,s:O,s:l,s:N}",
diff --git a/rdiff-backup/src/log.py b/rdiff-backup/src/log.py
index 39918e0..1e5998e 100644
--- a/rdiff-backup/src/log.py
+++ b/rdiff-backup/src/log.py
@@ -37,7 +37,7 @@ class Logger:
try: self.term_verbosity = int(termverb_string)
except ValueError:
Log.FatalError("Terminal verbosity must be a number, received "
- "'%s' insteaxd." % termverb_string)
+ "'%s' instead." % termverb_string)
self.termverbset = 1
def open_logfile(self, rpath):
@@ -48,9 +48,9 @@ class Logger:
"""
assert not self.log_file_open
+ rpath.conn.Log.open_logfile_local(rpath)
for conn in Globals.connections:
conn.Log.open_logfile_allconn(rpath.conn)
- rpath.conn.Log.open_logfile_local(rpath)
def open_logfile_allconn(self, log_file_conn):
"""Run on all connections to signal log file is open"""
@@ -59,10 +59,13 @@ class Logger:
def open_logfile_local(self, rpath):
"""Open logfile locally - should only be run on one connection"""
- assert self.log_file_conn is Globals.local_connection
+ assert rpath.conn is Globals.local_connection
+ try: self.logfp = rpath.open("a")
+ except (OSError, IOError), e:
+ raise LoggerError("Unable to open logfile %s: %s"
+ % (rpath.path, e))
self.log_file_local = 1
self.logrp = rpath
- self.logfp = rpath.open("a")
def close_logfile(self):
"""Close logfile and inform all connections"""