[pypy-svn] r72955 - in pypy/trunk/pypy: interpreter module/mmap module/posix
fijal at codespeak.net
fijal at codespeak.net
Sat Mar 27 16:42:16 CET 2010
Author: fijal
Date: Sat Mar 27 16:42:15 2010
New Revision: 72955
Modified:
pypy/trunk/pypy/interpreter/error.py
pypy/trunk/pypy/module/mmap/interp_mmap.py
pypy/trunk/pypy/module/posix/interp_posix.py
Log:
Simplify a bit error handling. Leverage the fact that OSError can accept
filename as 3rd arg
Modified: pypy/trunk/pypy/interpreter/error.py
==============================================================================
--- pypy/trunk/pypy/interpreter/error.py (original)
+++ pypy/trunk/pypy/interpreter/error.py Sat Mar 27 16:42:15 2010
@@ -358,8 +358,8 @@
space.wrap(msg))
return OperationError(exc, w_error)
-def wrap_oserror(space, e, exception_name='w_OSError'):
- assert isinstance(e, OSError)
+def wrap_oserror(space, e, filename=None, exception_name='w_OSError'):
+ assert isinstance(e, OSError)
if _WINDOWS and isinstance(e, WindowsError):
return wrap_windowserror(space, e)
@@ -370,15 +370,10 @@
except ValueError:
msg = 'error %d' % errno
exc = getattr(space, exception_name)
- w_error = space.call_function(exc,
- space.wrap(errno),
- space.wrap(msg))
+ if filename is not None:
+ w_error = space.call_function(exc, space.wrap(errno),
+ space.wrap(msg), space.wrap(filename))
+ else:
+ w_error = space.call_function(exc, space.wrap(errno), space.wrap(msg))
return OperationError(exc, w_error)
-wrap_oserror._annspecialcase_ = 'specialize:arg(2)'
-
-def wrap_oserror_filename(space, e, filename, exception_name='w_OSError'):
- operr = wrap_oserror(space, e, exception_name)
- space.setattr(operr.get_w_value(space), space.wrap('filename'),
- space.wrap(filename))
- return operr
-wrap_oserror_filename._annspecialcase_ = 'specialize:arg(3)'
+wrap_oserror._annspecialcase_ = 'specialize:arg(3)'
Modified: pypy/trunk/pypy/module/mmap/interp_mmap.py
==============================================================================
--- pypy/trunk/pypy/module/mmap/interp_mmap.py (original)
+++ pypy/trunk/pypy/module/mmap/interp_mmap.py Sat Mar 27 16:42:15 2010
@@ -57,7 +57,8 @@
try:
return self.space.wrap(self.mmap.file_size())
except OSError, e:
- raise wrap_oserror(self.space, e, 'w_EnvironmentError')
+ raise wrap_oserror(self.space, e,
+ exception_name='w_EnvironmentError')
descr_size.unwrap_spec = ['self']
def write(self, data):
@@ -87,7 +88,8 @@
raise OperationError(self.space.w_ValueError,
self.space.wrap(v.message))
except OSError, e:
- raise wrap_oserror(self.space, e, 'w_EnvironmentError')
+ raise wrap_oserror(self.space, e,
+ exception_name='w_EnvironmentError')
flush.unwrap_spec = ['self', int, int]
def move(self, dest, src, count):
@@ -104,7 +106,8 @@
try:
self.mmap.resize(newsize)
except OSError, e:
- raise wrap_oserror(self.space, e, 'w_EnvironmentError')
+ raise wrap_oserror(self.space, e,
+ exception_name='w_EnvironmentError')
resize.unwrap_spec = ['self', int]
def __len__(self):
@@ -224,7 +227,7 @@
return space.wrap(W_MMap(space, rmmap.mmap(fileno, length,
flags, prot, access)))
except OSError, e:
- raise wrap_oserror(space, e, 'w_EnvironmentError')
+ raise wrap_oserror(space, e, exception_name='w_EnvironmentError')
except RValueError, e:
raise OperationError(space.w_ValueError, space.wrap(e.message))
except RTypeError, e:
@@ -238,7 +241,7 @@
return space.wrap(W_MMap(space, rmmap.mmap(fileno, length,
tagname, access)))
except OSError, e:
- raise wrap_oserror(space, e, 'w_EnvironmentError')
+ raise wrap_oserror(space, e, exception_name='w_EnvironmentError')
except RValueError, e:
raise OperationError(space.w_ValueError, space.wrap(e.message))
except RTypeError, e:
Modified: pypy/trunk/pypy/module/posix/interp_posix.py
==============================================================================
--- pypy/trunk/pypy/module/posix/interp_posix.py (original)
+++ pypy/trunk/pypy/module/posix/interp_posix.py Sat Mar 27 16:42:15 2010
@@ -3,7 +3,6 @@
from pypy.rlib.rarithmetic import r_longlong
from pypy.rlib.unroll import unrolling_iterable
from pypy.interpreter.error import OperationError, wrap_oserror
-from pypy.interpreter.error import wrap_oserror_filename
from pypy.rpython.module.ll_os import RegisterOs
from pypy.rpython.module import ll_os_stat
from pypy.rpython.lltypesystem import rffi, lltype
@@ -19,7 +18,7 @@
try:
fd = os.open(fname, flag, mode)
except OSError, e:
- raise wrap_oserror_filename(space, e, fname)
+ raise wrap_oserror(space, e, fname)
return space.wrap(fd)
open.unwrap_spec = [ObjSpace, str, "c_int", "c_int"]
@@ -178,7 +177,7 @@
try:
st = os.stat(path)
except OSError, e:
- raise wrap_oserror_filename(space, e, path)
+ raise wrap_oserror(space, e, path)
else:
return build_stat_result(space, st)
stat.unwrap_spec = [ObjSpace, str]
@@ -188,7 +187,7 @@
try:
st = os.lstat(path)
except OSError, e:
- raise wrap_oserror_filename(space, e, path)
+ raise wrap_oserror(space, e, path)
else:
return build_stat_result(space, st)
lstat.unwrap_spec = [ObjSpace, str]
@@ -245,7 +244,7 @@
try:
ok = os.access(path, mode)
except OSError, e:
- raise wrap_oserror_filename(space, e, path)
+ raise wrap_oserror(space, e, path)
else:
return space.wrap(ok)
access.unwrap_spec = [ObjSpace, str, "c_int"]
@@ -284,7 +283,7 @@
try:
os.unlink(path)
except OSError, e:
- raise wrap_oserror_filename(space, e, path)
+ raise wrap_oserror(space, e, path)
unlink.unwrap_spec = [ObjSpace, str]
def remove(space, path):
@@ -292,7 +291,7 @@
try:
os.unlink(path)
except OSError, e:
- raise wrap_oserror_filename(space, e, path)
+ raise wrap_oserror(space, e, path)
remove.unwrap_spec = [ObjSpace, str]
def _getfullpathname(space, path):
@@ -301,7 +300,7 @@
try:
fullpath = posix._getfullpathname(path)
except OSError, e:
- raise wrap_oserror_filename(space, e, path)
+ raise wrap_oserror(space, e, path)
else:
return space.wrap(fullpath)
_getfullpathname.unwrap_spec = [ObjSpace, str]
@@ -327,7 +326,7 @@
try:
os.chdir(path)
except OSError, e:
- raise wrap_oserror_filename(space, e, path)
+ raise wrap_oserror(space, e, path)
chdir.unwrap_spec = [ObjSpace, str]
def mkdir(space, path, mode=0777):
@@ -335,7 +334,7 @@
try:
os.mkdir(path, mode)
except OSError, e:
- raise wrap_oserror_filename(space, e, path)
+ raise wrap_oserror(space, e, path)
mkdir.unwrap_spec = [ObjSpace, str, "c_int"]
def rmdir(space, path):
@@ -343,7 +342,7 @@
try:
os.rmdir(path)
except OSError, e:
- raise wrap_oserror_filename(space, e, path)
+ raise wrap_oserror(space, e, path)
rmdir.unwrap_spec = [ObjSpace, str]
def strerror(space, errno):
@@ -421,7 +420,7 @@
try:
result = os.listdir(dirname)
except OSError, e:
- raise wrap_oserror_filename(space, e, dirname)
+ raise wrap_oserror(space, e, dirname)
result_w = [space.wrap(s) for s in result]
return space.newlist(result_w)
listdir.unwrap_spec = [ObjSpace, str]
@@ -440,7 +439,7 @@
try:
os.chmod(path, mode)
except OSError, e:
- raise wrap_oserror_filename(space, e, path)
+ raise wrap_oserror(space, e, path)
chmod.unwrap_spec = [ObjSpace, str, "c_int"]
def rename(space, old, new):
@@ -502,7 +501,7 @@
try:
result = os.readlink(path)
except OSError, e:
- raise wrap_oserror_filename(space, e, path)
+ raise wrap_oserror(space, e, path)
return space.wrap(result)
readlink.unwrap_spec = [ObjSpace, str]
@@ -589,7 +588,7 @@
os.utime(path, None)
return
except OSError, e:
- raise wrap_oserror_filename(space, e, path)
+ raise wrap_oserror(space, e, path)
try:
msg = "utime() arg 2 must be a tuple (atime, mtime) or None"
args_w = space.fixedview(w_tuple)
@@ -599,7 +598,7 @@
modtime = space.float_w(args_w[1])
os.utime(path, (actime, modtime))
except OSError, e:
- raise wrap_oserror_filename(space, e, path)
+ raise wrap_oserror(space, e, path)
except OperationError, e:
if not e.match(space, space.w_TypeError):
raise
@@ -695,7 +694,7 @@
try:
os.chroot(path)
except OSError, e:
- raise wrap_oserror_filename(space, e, path)
+ raise wrap_oserror(space, e, path)
return space.w_None
chroot.unwrap_spec = [ObjSpace, str]
@@ -864,7 +863,7 @@
try:
os.chown(path, uid, gid)
except OSError, e:
- raise wrap_oserror_filename(space, e, path)
+ raise wrap_oserror(space, e, path)
return space.w_None
chown.unwrap_spec = [ObjSpace, str, "c_nonnegint", "c_nonnegint"]
More information about the Pypy-commit
mailing list