Author: Philip Jenvey <pjen...@underboss.org> Branch: py3k Changeset: r84651:5dc9fc79b7b8 Date: 2016-05-23 20:08 -0700 http://bitbucket.org/pypy/pypy/changeset/5dc9fc79b7b8/
Log: fallback to a/mtime_s to basic utime when ns is specified, fixup lutimes diff --git a/pypy/module/posix/interp_posix.py b/pypy/module/posix/interp_posix.py --- a/pypy/module/posix/interp_posix.py +++ b/pypy/module/posix/interp_posix.py @@ -1448,43 +1448,32 @@ # see comment above raise wrap_oserror(space, e) - if not follow_symlinks: - if not rposix.HAVE_LUTIMES: - raise argument_unavailable(space, "utime", "follow_symlinks") + if (rposix.HAVE_LUTIMES and + (dir_fd == DEFAULT_DIR_FD and not follow_symlinks)): path_b = path.as_bytes if path_b is None: raise oefmt(space.w_NotImplementedError, "utime: unsupported value for 'path'") try: - rposix.lutimes(path_b, (atime_s, atime_ns)) + if now: + rposix.lutimes(path_b, None) + else: + rposix.lutimes(path_b, (atime_s, atime_ns)) return except OSError as e: # see comment above raise wrap_oserror(space, e) - if not space.is_w(w_ns, space.w_None): - raise oefmt(space.w_NotImplementedError, - "utime: 'ns' unsupported on this platform on PyPy") - if now: - try: + # XXX: missing utime_dir_fd support + + if not follow_symlinks: + raise argument_unavailable(space, "utime", "follow_symlinks") + + try: + if now: call_rposix(utime_now, path, None) - return - except OSError as e: - # see comment above - raise wrap_oserror(space, e) - try: - msg = "utime() arg 2 must be a tuple (atime, mtime) or None" - args_w = space.fixedview(w_times) - if len(args_w) != 2: - raise oefmt(space.w_TypeError, msg) - actime = space.float_w(args_w[0], allow_conversion=False) - modtime = space.float_w(args_w[1], allow_conversion=False) - except OperationError as e: - if not e.match(space, space.w_TypeError): - raise - raise oefmt(space.w_TypeError, msg) - try: - call_rposix(rposix.utime, path, (actime, modtime)) + else: + call_rposix(rposix.utime, path, (atime_s, mtime_s)) except OSError as e: # see comment above raise wrap_oserror(space, e) _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit