Several changes to support inclusion of filename in relevent
exceptions: posix_error_with_filename(): New function which calls PyErr_SetFromErrnoWithFilename() The following methods have been changed to call posix_error_with_filename(): posix_1str() posix_strint() posix_strintint() posix_do_stat() posix_mkdir() posix_utime() posix_readlink() posix_open() INITFUNC(): os.error (nee PosixError) is PyExc_OSError
This commit is contained in:
parent
52ddc0e756
commit
d58d7647f3
|
@ -325,10 +325,18 @@ static PyObject *PosixError; /* Exception posix.error */
|
||||||
|
|
||||||
/* Set a POSIX-specific error from errno, and return NULL */
|
/* Set a POSIX-specific error from errno, and return NULL */
|
||||||
|
|
||||||
static PyObject * posix_error()
|
static PyObject *
|
||||||
|
posix_error()
|
||||||
{
|
{
|
||||||
return PyErr_SetFromErrno(PosixError);
|
return PyErr_SetFromErrno(PosixError);
|
||||||
}
|
}
|
||||||
|
static PyObject *
|
||||||
|
posix_error_with_filename(name)
|
||||||
|
char* name;
|
||||||
|
{
|
||||||
|
return PyErr_SetFromErrnoWithFilename(PosixError, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#if defined(PYOS_OS2)
|
#if defined(PYOS_OS2)
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
|
@ -420,7 +428,7 @@ posix_1str(args, func)
|
||||||
res = (*func)(path1);
|
res = (*func)(path1);
|
||||||
Py_END_ALLOW_THREADS
|
Py_END_ALLOW_THREADS
|
||||||
if (res < 0)
|
if (res < 0)
|
||||||
return posix_error();
|
return posix_error_with_filename(path1);
|
||||||
Py_INCREF(Py_None);
|
Py_INCREF(Py_None);
|
||||||
return Py_None;
|
return Py_None;
|
||||||
}
|
}
|
||||||
|
@ -438,6 +446,7 @@ posix_2str(args, func)
|
||||||
res = (*func)(path1, path2);
|
res = (*func)(path1, path2);
|
||||||
Py_END_ALLOW_THREADS
|
Py_END_ALLOW_THREADS
|
||||||
if (res != 0)
|
if (res != 0)
|
||||||
|
/* XXX how to report both path1 and path2??? */
|
||||||
return posix_error();
|
return posix_error();
|
||||||
Py_INCREF(Py_None);
|
Py_INCREF(Py_None);
|
||||||
return Py_None;
|
return Py_None;
|
||||||
|
@ -457,7 +466,7 @@ posix_strint(args, func)
|
||||||
res = (*func)(path, i);
|
res = (*func)(path, i);
|
||||||
Py_END_ALLOW_THREADS
|
Py_END_ALLOW_THREADS
|
||||||
if (res < 0)
|
if (res < 0)
|
||||||
return posix_error();
|
return posix_error_with_filename(path);
|
||||||
Py_INCREF(Py_None);
|
Py_INCREF(Py_None);
|
||||||
return Py_None;
|
return Py_None;
|
||||||
}
|
}
|
||||||
|
@ -476,7 +485,7 @@ posix_strintint(args, func)
|
||||||
res = (*func)(path, i, i2);
|
res = (*func)(path, i, i2);
|
||||||
Py_END_ALLOW_THREADS
|
Py_END_ALLOW_THREADS
|
||||||
if (res < 0)
|
if (res < 0)
|
||||||
return posix_error();
|
return posix_error_with_filename(path);
|
||||||
Py_INCREF(Py_None);
|
Py_INCREF(Py_None);
|
||||||
return Py_None;
|
return Py_None;
|
||||||
}
|
}
|
||||||
|
@ -496,7 +505,7 @@ posix_do_stat(self, args, statfunc)
|
||||||
res = (*statfunc)(path, &st);
|
res = (*statfunc)(path, &st);
|
||||||
Py_END_ALLOW_THREADS
|
Py_END_ALLOW_THREADS
|
||||||
if (res != 0)
|
if (res != 0)
|
||||||
return posix_error();
|
return posix_error_with_filename(path);
|
||||||
return Py_BuildValue("(llllllllll)",
|
return Py_BuildValue("(llllllllll)",
|
||||||
(long)st.st_mode,
|
(long)st.st_mode,
|
||||||
(long)st.st_ino,
|
(long)st.st_ino,
|
||||||
|
@ -868,7 +877,7 @@ posix_mkdir(self, args)
|
||||||
#endif
|
#endif
|
||||||
Py_END_ALLOW_THREADS
|
Py_END_ALLOW_THREADS
|
||||||
if (res < 0)
|
if (res < 0)
|
||||||
return posix_error();
|
return posix_error_with_filename(path);
|
||||||
Py_INCREF(Py_None);
|
Py_INCREF(Py_None);
|
||||||
return Py_None;
|
return Py_None;
|
||||||
}
|
}
|
||||||
|
@ -1056,7 +1065,7 @@ posix_utime(self, args)
|
||||||
res = utime(path, UTIME_ARG);
|
res = utime(path, UTIME_ARG);
|
||||||
Py_END_ALLOW_THREADS
|
Py_END_ALLOW_THREADS
|
||||||
if (res < 0)
|
if (res < 0)
|
||||||
return posix_error();
|
return posix_error_with_filename(path);
|
||||||
Py_INCREF(Py_None);
|
Py_INCREF(Py_None);
|
||||||
return Py_None;
|
return Py_None;
|
||||||
#undef UTIME_ARG
|
#undef UTIME_ARG
|
||||||
|
@ -1772,7 +1781,7 @@ posix_readlink(self, args)
|
||||||
n = readlink(path, buf, (int) sizeof buf);
|
n = readlink(path, buf, (int) sizeof buf);
|
||||||
Py_END_ALLOW_THREADS
|
Py_END_ALLOW_THREADS
|
||||||
if (n < 0)
|
if (n < 0)
|
||||||
return posix_error();
|
return posix_error_with_filename(path);
|
||||||
return PyString_FromStringAndSize(buf, n);
|
return PyString_FromStringAndSize(buf, n);
|
||||||
}
|
}
|
||||||
#endif /* HAVE_READLINK */
|
#endif /* HAVE_READLINK */
|
||||||
|
@ -1985,7 +1994,7 @@ posix_open(self, args)
|
||||||
fd = open(file, flag, mode);
|
fd = open(file, flag, mode);
|
||||||
Py_END_ALLOW_THREADS
|
Py_END_ALLOW_THREADS
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
return posix_error();
|
return posix_error_with_filename(file);
|
||||||
return PyInt_FromLong((long)fd);
|
return PyInt_FromLong((long)fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2768,8 +2777,7 @@ INITFUNC()
|
||||||
if (all_ins(d))
|
if (all_ins(d))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* Initialize exception */
|
Py_INCREF(PyExc_OSError);
|
||||||
PosixError = PyErr_NewException("os.error", NULL, NULL);
|
PosixError = PyExc_OSError;
|
||||||
if (PosixError != NULL)
|
PyDict_SetItemString(d, "error", PosixError);
|
||||||
PyDict_SetItemString(d, "error", PosixError);
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue