From: <fwi...@us...> - 2009-04-22 01:47:24
|
Revision: 6250 http://jython.svn.sourceforge.net/jython/?rev=6250&view=rev Author: fwierzbicki Date: 2009-04-22 01:47:20 +0000 (Wed, 22 Apr 2009) Log Message: ----------- Factored out calls like: imp.load("os").__getattr__("isatty").__call__(Py.java2py(fd)).__nonzero__(); into FileUtil#isatty and added a fallback to do a simple isatty check modeled after jna-posix JavaPOSIX#isatty. This allows jython to run without Lib/ which was broken. Modified Paths: -------------- trunk/jython/src/org/python/core/io/FileIO.java trunk/jython/src/org/python/core/io/StreamIO.java trunk/jython/src/org/python/core/util/FileUtil.java trunk/jython/src/org/python/util/jython.java Modified: trunk/jython/src/org/python/core/io/FileIO.java =================================================================== --- trunk/jython/src/org/python/core/io/FileIO.java 2009-04-21 03:13:55 UTC (rev 6249) +++ trunk/jython/src/org/python/core/io/FileIO.java 2009-04-22 01:47:20 UTC (rev 6250) @@ -15,6 +15,7 @@ import com.kenai.constantine.platform.Errno; import org.python.core.imp; import org.python.core.Py; +import org.python.core.util.FileUtil; import org.python.core.util.RelativeFile; /** @@ -181,7 +182,7 @@ return false; } try { - return imp.load("os").invoke("isatty", Py.java2py(file.getFD())).__nonzero__(); + return FileUtil.isatty(file.getFD()); } catch (IOException e) { return false; } Modified: trunk/jython/src/org/python/core/io/StreamIO.java =================================================================== --- trunk/jython/src/org/python/core/io/StreamIO.java 2009-04-21 03:13:55 UTC (rev 6249) +++ trunk/jython/src/org/python/core/io/StreamIO.java 2009-04-22 01:47:20 UTC (rev 6250) @@ -18,6 +18,7 @@ import org.python.core.Py; import org.python.core.imp; +import org.python.core.util.FileUtil; /** * Raw I/O implementation for simple streams. @@ -217,7 +218,7 @@ return false; } - return imp.load("os").__getattr__("isatty").__call__(Py.java2py(fd)).__nonzero__(); + return FileUtil.isatty(fd); } /** {@inheritDoc} */ Modified: trunk/jython/src/org/python/core/util/FileUtil.java =================================================================== --- trunk/jython/src/org/python/core/util/FileUtil.java 2009-04-21 03:13:55 UTC (rev 6249) +++ trunk/jython/src/org/python/core/util/FileUtil.java 2009-04-22 01:47:20 UTC (rev 6250) @@ -2,10 +2,14 @@ package org.python.core.util; import java.io.ByteArrayOutputStream; +import java.io.FileDescriptor; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import org.python.core.imp; +import org.python.core.Py; +import org.python.core.PyException; import org.python.core.PyFile; /** @@ -60,4 +64,18 @@ } return out.toByteArray(); } + + public static boolean isatty(FileDescriptor fd) { + boolean atty = false; + try { + atty = imp.load("os").__getattr__("isatty").__call__(Py.java2py(fd)).__nonzero__(); + } catch (PyException e) { + //Weak isatty check copied from jna-posix JavaPOSIX class + return (fd == FileDescriptor.in + || fd == FileDescriptor.out + || fd == FileDescriptor.err); + } + return atty; + } + } Modified: trunk/jython/src/org/python/util/jython.java =================================================================== --- trunk/jython/src/org/python/util/jython.java 2009-04-21 03:13:55 UTC (rev 6249) +++ trunk/jython/src/org/python/util/jython.java 2009-04-22 01:47:20 UTC (rev 6250) @@ -24,6 +24,7 @@ import org.python.core.PyStringMap; import org.python.core.PySystemState; import org.python.core.imp; +import org.python.core.util.FileUtil; import org.python.core.util.RelativeFile; import org.python.modules._systemrestart; import org.python.modules.thread.thread; @@ -220,7 +221,7 @@ } catch (java.io.FileNotFoundException e) { throw Py.IOError(e); } - if (imp.load("os").__getattr__("isatty").__call__(Py.java2py(file.getFD())).__nonzero__()) { + if (FileUtil.isatty(file.getFD())) { opts.interactive = true; interp.interact(null, new PyFile(file)); System.exit(0); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |