--- .classpath +++ .classpath @@ -35,8 +35,11 @@ - - + + + + + --- build.xml +++ build.xml @@ -208,9 +208,11 @@ - - - + + + + + --- src/org/python/core/Py.java +++ src/org/python/core/Py.java @@ -130,6 +130,14 @@ return OSError(errno, Py.newString(filename)); } + public static PyException OSError(jnr.constants.Constant errno, PyObject filename) { + int value = errno.intValue(); + // Pass to strerror because constantine currently lacks Errno descriptions on + // Windows, and strerror falls back to Linux's + PyObject args = new PyTuple(Py.newInteger(value), PosixModule.strerror(value), filename); + return new PyException(Py.OSError, args); + } + public static PyObject NotImplementedError; public static PyException NotImplementedError(String message) { return new PyException(Py.NotImplementedError, message); --- src/org/python/core/PySystemState.java +++ src/org/python/core/PySystemState.java @@ -27,7 +27,7 @@ import java.util.jar.JarEntry; import java.util.jar.JarFile; -import org.jruby.ext.posix.util.Platform; +import jnr.posix.util.Platform; import org.python.Version; import org.python.core.adapter.ClassicPyObjectAdapter; import org.python.core.adapter.ExtensiblePyObjectAdapter; --- src/org/python/core/io/FileIO.java +++ src/org/python/core/io/FileIO.java @@ -13,7 +13,7 @@ import java.nio.channels.FileChannel; import com.kenai.constantine.platform.Errno; -import org.jruby.ext.posix.util.Platform; +import jnr.posix.util.Platform; import org.python.core.Py; import org.python.core.PyString; import org.python.core.util.RelativeFile; --- src/org/python/core/util/PlatformUtil.java +++ src/org/python/core/util/PlatformUtil.java @@ -1,7 +1,7 @@ /* Copyright (c) 2009 Jython project */ package org.python.core.util; -import org.jruby.ext.posix.util.Platform; +import jnr.posix.util.Platform; /** * Methods for testing the platform/operating system that we are on. --- src/org/python/modules/errno.java +++ src/org/python/modules/errno.java @@ -4,7 +4,7 @@ import com.kenai.constantine.Constant; import com.kenai.constantine.ConstantSet; import com.kenai.constantine.platform.Errno; -import org.jruby.ext.posix.util.Platform; +import jnr.posix.util.Platform; import org.python.core.ClassDictInit; import org.python.core.Py; import org.python.core.PyDictionary; --- src/org/python/modules/posix/PosixModule.java +++ src/org/python/modules/posix/PosixModule.java @@ -17,10 +17,10 @@ import java.util.Iterator; import java.util.Map; -import org.jruby.ext.posix.FileStat; -import org.jruby.ext.posix.POSIX; -import org.jruby.ext.posix.POSIXFactory; -import org.jruby.ext.posix.util.Platform; +import jnr.posix.FileStat; +import jnr.posix.POSIX; +import jnr.posix.POSIXFactory; +import jnr.posix.util.Platform; import org.python.core.ClassDictInit; import org.python.core.Py; --- src/org/python/modules/posix/PyStatResult.java +++ src/org/python/modules/posix/PyStatResult.java @@ -1,7 +1,7 @@ /* Copyright (c) Jython Developers */ package org.python.modules.posix; -import org.jruby.ext.posix.FileStat; +import jnr.posix.FileStat; import org.python.core.ArgParser; import org.python.core.Py; --- src/org/python/modules/posix/PythonPOSIXHandler.java +++ src/org/python/modules/posix/PythonPOSIXHandler.java @@ -1,26 +1,26 @@ /* Copyright (c) Jython Developers */ package org.python.modules.posix; -import com.kenai.constantine.platform.Errno; - import java.io.File; import java.io.InputStream; import java.io.PrintStream; -import org.jruby.ext.posix.POSIX; -import org.jruby.ext.posix.POSIXHandler; +import jnr.constants.platform.Errno; +import jnr.posix.POSIX; +import jnr.posix.POSIXHandler; import org.python.core.imp; import org.python.core.Options; import org.python.core.Py; import org.python.core.PyObject; + /** * Jython specific hooks for our underlying POSIX library. */ public class PythonPOSIXHandler implements POSIXHandler { - public void error(Errno error, String extraData) { + public void error(Errno error, String extraData) { // XXX: extraData (filename) could have been unicode! // http://bugs.jython.org/issue1825 throw Py.OSError(error, Py.newString(extraData)); --- tests/java/org/python/core/PySystemStateTest.java +++ tests/java/org/python/core/PySystemStateTest.java @@ -7,7 +7,7 @@ import junit.framework.TestCase; -import org.jruby.ext.posix.util.Platform; +import jnr.posix.util.Platform; public class PySystemStateTest extends TestCase {