From: Avery Pennarun Date: Sun, 20 Mar 2011 09:07:03 +0000 (-0700) Subject: A bunch of IOError->OSError conversions. X-Git-Tag: bup-0.25-rc1~50 X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=bup.git;a=commitdiff_plain;h=d8f0c19a879089a45ea9697ed3bef796ebe11007 A bunch of IOError->OSError conversions. Some of our replacement functions were throwing IOError when the function they replaced would throw OSError. This was particularly noticeable with utime() on MacOS, since it caused a unit test failure. Signed-off-by: Avery Pennarun --- diff --git a/cmd/save-cmd.py b/cmd/save-cmd.py index a340dfb..b25b5ac 100755 --- a/cmd/save-cmd.py +++ b/cmd/save-cmd.py @@ -256,10 +256,7 @@ for (transname,ent) in r.filter(extra, wantrecurse=wantrecurse_during): if stat.S_ISREG(ent.mode): try: f = hashsplit.open_noatime(ent.name) - except IOError, e: - add_error(e) - lastskip_name = ent.name - except OSError, e: + except (IOError, OSError), e: add_error(e) lastskip_name = ent.name else: @@ -267,7 +264,7 @@ for (transname,ent) in r.filter(extra, wantrecurse=wantrecurse_during): (mode, id) = hashsplit.split_to_blob_or_tree( w.new_blob, w.new_tree, [f], keep_boundaries=False) - except IOError, e: + except (IOError, OSError), e: add_error('%s: %s' % (ent.name, e)) lastskip_name = ent.name else: @@ -276,10 +273,7 @@ for (transname,ent) in r.filter(extra, wantrecurse=wantrecurse_during): elif stat.S_ISLNK(ent.mode): try: rl = os.readlink(ent.name) - except OSError, e: - add_error(e) - lastskip_name = ent.name - except IOError, e: + except (OSError, IOError), e: add_error(e) lastskip_name = ent.name else: diff --git a/cmd/xstat-cmd.py b/cmd/xstat-cmd.py index 888dc09..6b371c6 100755 --- a/cmd/xstat-cmd.py +++ b/cmd/xstat-cmd.py @@ -74,7 +74,7 @@ for flag, value in flags: for path in remainder: try: m = metadata.from_path(path, archive_path = path) - except IOError, e: + except (OSError,IOError), e: if e.errno == errno.ENOENT: add_error(e) continue diff --git a/lib/bup/_helpers.c b/lib/bup/_helpers.c index a5bc16d..b60b11a 100644 --- a/lib/bup/_helpers.c +++ b/lib/bup/_helpers.c @@ -612,7 +612,7 @@ static PyObject *open_noatime(PyObject *self, PyObject *args) fd = open(filename, attrs); } if (fd < 0) - return PyErr_SetFromErrnoWithFilename(PyExc_IOError, filename); + return PyErr_SetFromErrnoWithFilename(PyExc_OSError, filename); return Py_BuildValue("i", fd); } @@ -643,14 +643,14 @@ static PyObject *bup_get_linux_file_attr(PyObject *self, PyObject *args) fd = open(path, O_RDONLY | O_NONBLOCK | O_LARGEFILE | O_NOFOLLOW); if (fd == -1) - return PyErr_SetFromErrnoWithFilename(PyExc_IOError, path); + return PyErr_SetFromErrnoWithFilename(PyExc_OSError, path); attr = 0; rc = ioctl(fd, FS_IOC_GETFLAGS, &attr); if (rc == -1) { close(fd); - return PyErr_SetFromErrnoWithFilename(PyExc_IOError, path); + return PyErr_SetFromErrnoWithFilename(PyExc_OSError, path); } close(fd); @@ -670,13 +670,13 @@ static PyObject *bup_set_linux_file_attr(PyObject *self, PyObject *args) fd = open(path, O_RDONLY | O_NONBLOCK | O_LARGEFILE | O_NOFOLLOW); if (fd == -1) - return PyErr_SetFromErrnoWithFilename(PyExc_IOError, path); + return PyErr_SetFromErrnoWithFilename(PyExc_OSError, path); rc = ioctl(fd, FS_IOC_SETFLAGS, &attr); if (rc == -1) { close(fd); - return PyErr_SetFromErrnoWithFilename(PyExc_IOError, path); + return PyErr_SetFromErrnoWithFilename(PyExc_OSError, path); } close(fd); @@ -753,7 +753,7 @@ static PyObject *bup_utimensat(PyObject *self, PyObject *args) rc = utimensat(dirfd, path, ts, flags); if (rc != 0) - return PyErr_SetFromErrnoWithFilename(PyExc_IOError, path); + return PyErr_SetFromErrnoWithFilename(PyExc_OSError, path); return Py_BuildValue("i", 1); } @@ -776,7 +776,7 @@ static PyObject *bup_stat(PyObject *self, PyObject *args) struct stat st; rc = stat(filename, &st); if (rc != 0) - return PyErr_SetFromErrnoWithFilename(PyExc_IOError, filename); + return PyErr_SetFromErrnoWithFilename(PyExc_OSError, filename); return Py_BuildValue("kkkkkkkk" "(ll)" @@ -811,7 +811,7 @@ static PyObject *bup_lstat(PyObject *self, PyObject *args) struct stat st; rc = lstat(filename, &st); if (rc != 0) - return PyErr_SetFromErrnoWithFilename(PyExc_IOError, filename); + return PyErr_SetFromErrnoWithFilename(PyExc_OSError, filename); return Py_BuildValue("kkkkkkkk" "(ll)" @@ -845,7 +845,7 @@ static PyObject *bup_fstat(PyObject *self, PyObject *args) struct stat st; rc = fstat(fd, &st); if (rc != 0) - return PyErr_SetFromErrno(PyExc_IOError); + return PyErr_SetFromErrno(PyExc_OSError); return Py_BuildValue("kkkkkkkk" "(ll)" diff --git a/lib/bup/metadata.py b/lib/bup/metadata.py index 8d00120..8b50a80 100644 --- a/lib/bup/metadata.py +++ b/lib/bup/metadata.py @@ -243,7 +243,7 @@ class Metadata: st = None try: st = lstat(path) - except IOError, e: + except OSError, e: if e.errno != errno.ENOENT: raise if st: @@ -280,7 +280,7 @@ class Metadata: if stat.S_ISLNK(self.mode): try: lutime(path, (self.atime, self.mtime)) - except IOError, e: + except OSError, e: if e.errno == errno.EACCES: raise ApplyError('lutime: %s' % e) else: @@ -288,7 +288,7 @@ class Metadata: else: try: utime(path, (self.atime, self.mtime)) - except IOError, e: + except OSError, e: if e.errno == errno.EACCES: raise ApplyError('utime: %s' % e) else: @@ -441,7 +441,7 @@ class Metadata: attr = get_linux_file_attr(path) if attr != 0: self.linux_attr = attr - except IOError, e: + except OSError, e: if e.errno == errno.EACCES: add_error('read Linux attr: %s' % e) elif e.errno == errno.ENOTTY: # Inappropriate ioctl for device.