mirror of https://github.com/python/cpython
Remove RISCOS support
This commit is contained in:
parent
c5aba17447
commit
7a98be2efb
|
@ -64,7 +64,7 @@ module.
|
||||||
|
|
||||||
The name of the operating system dependent module imported. The following names
|
The name of the operating system dependent module imported. The following names
|
||||||
have currently been registered: ``'posix'``, ``'nt'``, ``'mac'``, ``'os2'``,
|
have currently been registered: ``'posix'``, ``'nt'``, ``'mac'``, ``'os2'``,
|
||||||
``'ce'``, ``'java'``, ``'riscos'``.
|
``'ce'``, ``'java'``.
|
||||||
|
|
||||||
|
|
||||||
.. data:: path
|
.. data:: path
|
||||||
|
@ -1058,9 +1058,6 @@ Files and Directories
|
||||||
On Mac OS systems, the following attributes may also be available:
|
On Mac OS systems, the following attributes may also be available:
|
||||||
:attr:`st_rsize`, :attr:`st_creator`, :attr:`st_type`.
|
:attr:`st_rsize`, :attr:`st_creator`, :attr:`st_type`.
|
||||||
|
|
||||||
On RISCOS systems, the following attributes are also available: :attr:`st_ftype`
|
|
||||||
(file type), :attr:`st_attrs` (attributes), :attr:`st_obtype` (object type).
|
|
||||||
|
|
||||||
.. index:: module: stat
|
.. index:: module: stat
|
||||||
|
|
||||||
For backward compatibility, the return value of :func:`stat` is also accessible
|
For backward compatibility, the return value of :func:`stat` is also accessible
|
||||||
|
|
|
@ -23,13 +23,6 @@ extern "C" {
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef RISCOS
|
|
||||||
#define SEP '.'
|
|
||||||
#define MAXPATHLEN 256
|
|
||||||
#define DELIM ','
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* Filename separator */
|
/* Filename separator */
|
||||||
#ifndef SEP
|
#ifndef SEP
|
||||||
#define SEP '/'
|
#define SEP '/'
|
||||||
|
|
|
@ -261,11 +261,6 @@ typedef Py_intptr_t Py_ssize_t;
|
||||||
#define HAVE_FSTAT
|
#define HAVE_FSTAT
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef RISCOS
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include "unixstuff.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HAVE_SYS_STAT_H
|
#ifdef HAVE_SYS_STAT_H
|
||||||
#if defined(PYOS_OS2) && defined(PYCC_GCC)
|
#if defined(PYOS_OS2) && defined(PYCC_GCC)
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
@ -677,8 +672,7 @@ extern double hypot(double, double);
|
||||||
* Hide GCC attributes from compilers that don't support them.
|
* Hide GCC attributes from compilers that don't support them.
|
||||||
*/
|
*/
|
||||||
#if (!defined(__GNUC__) || __GNUC__ < 2 || \
|
#if (!defined(__GNUC__) || __GNUC__ < 2 || \
|
||||||
(__GNUC__ == 2 && __GNUC_MINOR__ < 7) ) && \
|
(__GNUC__ == 2 && __GNUC_MINOR__ < 7) )
|
||||||
!defined(RISCOS)
|
|
||||||
#define Py_GCC_ATTRIBUTE(x)
|
#define Py_GCC_ATTRIBUTE(x)
|
||||||
#else
|
#else
|
||||||
#define Py_GCC_ATTRIBUTE(x) __attribute__(x)
|
#define Py_GCC_ATTRIBUTE(x) __attribute__(x)
|
||||||
|
|
|
@ -9,9 +9,6 @@ from distutils.errors import DistutilsOptionError
|
||||||
|
|
||||||
|
|
||||||
# Extension for Python source files.
|
# Extension for Python source files.
|
||||||
if hasattr(os, 'extsep'):
|
|
||||||
PYTHON_SOURCE_EXTENSION = os.extsep + "py"
|
|
||||||
else:
|
|
||||||
PYTHON_SOURCE_EXTENSION = ".py"
|
PYTHON_SOURCE_EXTENSION = ".py"
|
||||||
|
|
||||||
class install_lib (Command):
|
class install_lib (Command):
|
||||||
|
|
|
@ -51,14 +51,14 @@ class _Database(UserDict.DictMixin):
|
||||||
# where key is the string key, pos is the offset into the dat
|
# where key is the string key, pos is the offset into the dat
|
||||||
# file of the associated value's first byte, and siz is the number
|
# file of the associated value's first byte, and siz is the number
|
||||||
# of bytes in the associated value.
|
# of bytes in the associated value.
|
||||||
self._dirfile = filebasename + _os.extsep + 'dir'
|
self._dirfile = filebasename + '.dir'
|
||||||
|
|
||||||
# The data file is a binary file pointed into by the directory
|
# The data file is a binary file pointed into by the directory
|
||||||
# file, and holds the values associated with keys. Each value
|
# file, and holds the values associated with keys. Each value
|
||||||
# begins at a _BLOCKSIZE-aligned byte offset, and is a raw
|
# begins at a _BLOCKSIZE-aligned byte offset, and is a raw
|
||||||
# binary 8-bit string value.
|
# binary 8-bit string value.
|
||||||
self._datfile = filebasename + _os.extsep + 'dat'
|
self._datfile = filebasename + '.dat'
|
||||||
self._bakfile = filebasename + _os.extsep + 'bak'
|
self._bakfile = filebasename + '.bak'
|
||||||
|
|
||||||
# The index is an in-memory dict, mirroring the directory file.
|
# The index is an in-memory dict, mirroring the directory file.
|
||||||
self._index = None # maps keys to (pos, siz) pairs
|
self._index = None # maps keys to (pos, siz) pairs
|
||||||
|
|
|
@ -315,7 +315,7 @@ class FileInput:
|
||||||
else:
|
else:
|
||||||
if self._inplace:
|
if self._inplace:
|
||||||
self._backupfilename = (
|
self._backupfilename = (
|
||||||
self._filename + (self._backup or os.extsep+"bak"))
|
self._filename + (self._backup or ".bak"))
|
||||||
try: os.unlink(self._backupfilename)
|
try: os.unlink(self._backupfilename)
|
||||||
except os.error: pass
|
except os.error: pass
|
||||||
# The next few lines may raise IOError
|
# The next few lines may raise IOError
|
||||||
|
|
|
@ -7,7 +7,6 @@ This exports:
|
||||||
- os.curdir is a string representing the current directory ('.' or ':')
|
- os.curdir is a string representing the current directory ('.' or ':')
|
||||||
- os.pardir is a string representing the parent directory ('..' or '::')
|
- os.pardir is a string representing the parent directory ('..' or '::')
|
||||||
- os.sep is the (or a most common) pathname separator ('/' or ':' or '\\')
|
- os.sep is the (or a most common) pathname separator ('/' or ':' or '\\')
|
||||||
- os.extsep is the extension separator ('.' or '/')
|
|
||||||
- os.altsep is the alternate pathname separator (None or '/')
|
- os.altsep is the alternate pathname separator (None or '/')
|
||||||
- os.pathsep is the component separator used in $PATH etc
|
- os.pathsep is the component separator used in $PATH etc
|
||||||
- os.linesep is the line separator in text files ('\r' or '\n' or '\r\n')
|
- os.linesep is the line separator in text files ('\r' or '\n' or '\r\n')
|
||||||
|
@ -131,8 +130,7 @@ else:
|
||||||
raise ImportError, 'no os specific module found'
|
raise ImportError, 'no os specific module found'
|
||||||
|
|
||||||
sys.modules['os.path'] = path
|
sys.modules['os.path'] = path
|
||||||
from os.path import (curdir, pardir, sep, pathsep, defpath, extsep, altsep,
|
from os.path import curdir, pardir, sep, pathsep, defpath, altsep, devnull
|
||||||
devnull)
|
|
||||||
|
|
||||||
del _names
|
del _names
|
||||||
|
|
||||||
|
|
|
@ -510,10 +510,8 @@ def extend_path(path, name):
|
||||||
return path
|
return path
|
||||||
|
|
||||||
pname = os.path.join(*name.split('.')) # Reconstitute as relative path
|
pname = os.path.join(*name.split('.')) # Reconstitute as relative path
|
||||||
# Just in case os.extsep != '.'
|
sname_pkg = name + ".pkg"
|
||||||
sname = os.extsep.join(name.split('.'))
|
init_py = "__init__.py"
|
||||||
sname_pkg = sname + os.extsep + "pkg"
|
|
||||||
init_py = "__init__" + os.extsep + "py"
|
|
||||||
|
|
||||||
path = path[:] # Start with a copy of the existing path
|
path = path[:] # Start with a copy of the existing path
|
||||||
|
|
||||||
|
|
|
@ -167,7 +167,7 @@ def addsitedir(sitedir, known_paths=None):
|
||||||
return
|
return
|
||||||
names.sort()
|
names.sort()
|
||||||
for name in names:
|
for name in names:
|
||||||
if name.endswith(os.extsep + "pth"):
|
if name.endswith(".pth"):
|
||||||
addpackage(sitedir, name, known_paths)
|
addpackage(sitedir, name, known_paths)
|
||||||
if reset:
|
if reset:
|
||||||
known_paths = None
|
known_paths = None
|
||||||
|
|
|
@ -509,7 +509,7 @@ def findtests(testdir=None, stdtests=STDTESTS, nottests=NOTTESTS):
|
||||||
names = os.listdir(testdir)
|
names = os.listdir(testdir)
|
||||||
tests = []
|
tests = []
|
||||||
for name in names:
|
for name in names:
|
||||||
if name[:5] == "test_" and name[-3:] == os.extsep+"py":
|
if name[:5] == "test_" and name[-3:] == ".py":
|
||||||
modname = name[:-3]
|
modname = name[:-3]
|
||||||
if modname not in stdtests and modname not in nottests:
|
if modname not in stdtests and modname not in nottests:
|
||||||
tests.append(modname)
|
tests.append(modname)
|
||||||
|
@ -799,7 +799,7 @@ def findtestdir():
|
||||||
return testdir
|
return testdir
|
||||||
|
|
||||||
def removepy(name):
|
def removepy(name):
|
||||||
if name.endswith(os.extsep + "py"):
|
if name.endswith(".py"):
|
||||||
name = name[:-3]
|
name = name[:-3]
|
||||||
return name
|
return name
|
||||||
|
|
||||||
|
|
|
@ -155,7 +155,7 @@ class ExceptionTests(unittest.TestCase):
|
||||||
exc, err, tb = sys.exc_info()
|
exc, err, tb = sys.exc_info()
|
||||||
co = tb.tb_frame.f_code
|
co = tb.tb_frame.f_code
|
||||||
self.assertEquals(co.co_name, "test_capi1")
|
self.assertEquals(co.co_name, "test_capi1")
|
||||||
self.assert_(co.co_filename.endswith('test_exceptions'+os.extsep+'py'))
|
self.assert_(co.co_filename.endswith('test_exceptions.py'))
|
||||||
else:
|
else:
|
||||||
self.fail("Expected exception")
|
self.fail("Expected exception")
|
||||||
|
|
||||||
|
@ -167,7 +167,7 @@ class ExceptionTests(unittest.TestCase):
|
||||||
exc, err, tb = sys.exc_info()
|
exc, err, tb = sys.exc_info()
|
||||||
co = tb.tb_frame.f_code
|
co = tb.tb_frame.f_code
|
||||||
self.assertEquals(co.co_name, "__init__")
|
self.assertEquals(co.co_name, "__init__")
|
||||||
self.assert_(co.co_filename.endswith('test_exceptions'+os.extsep+'py'))
|
self.assert_(co.co_filename.endswith('test_exceptions.py'))
|
||||||
co2 = tb.tb_frame.f_back.f_code
|
co2 = tb.tb_frame.f_back.f_code
|
||||||
self.assertEquals(co2.co_name, "test_capi2")
|
self.assertEquals(co2.co_name, "test_capi2")
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -10,10 +10,10 @@ from test.test_support import unlink
|
||||||
|
|
||||||
|
|
||||||
def remove_files(name):
|
def remove_files(name):
|
||||||
for f in (name + os.extsep + "py",
|
for f in (name + ".py",
|
||||||
name + os.extsep + "pyc",
|
name + ".pyc",
|
||||||
name + os.extsep + "pyo",
|
name + ".pyo",
|
||||||
name + os.extsep + "pyw",
|
name + ".pyw",
|
||||||
name + "$py.class"):
|
name + "$py.class"):
|
||||||
if os.path.exists(f):
|
if os.path.exists(f):
|
||||||
os.remove(f)
|
os.remove(f)
|
||||||
|
@ -39,11 +39,11 @@ class ImportTest(unittest.TestCase):
|
||||||
def test_with_extension(ext):
|
def test_with_extension(ext):
|
||||||
# ext normally ".py"; perhaps ".pyw"
|
# ext normally ".py"; perhaps ".pyw"
|
||||||
source = TESTFN + ext
|
source = TESTFN + ext
|
||||||
pyo = TESTFN + os.extsep + "pyo"
|
pyo = TESTFN + ".pyo"
|
||||||
if sys.platform.startswith('java'):
|
if sys.platform.startswith('java'):
|
||||||
pyc = TESTFN + "$py.class"
|
pyc = TESTFN + "$py.class"
|
||||||
else:
|
else:
|
||||||
pyc = TESTFN + os.extsep + "pyc"
|
pyc = TESTFN + ".pyc"
|
||||||
|
|
||||||
f = open(source, "w")
|
f = open(source, "w")
|
||||||
print("# This tests Python's ability to import a", ext, "file.", file=f)
|
print("# This tests Python's ability to import a", ext, "file.", file=f)
|
||||||
|
@ -71,7 +71,7 @@ class ImportTest(unittest.TestCase):
|
||||||
|
|
||||||
sys.path.insert(0, os.curdir)
|
sys.path.insert(0, os.curdir)
|
||||||
try:
|
try:
|
||||||
test_with_extension(os.extsep + "py")
|
test_with_extension(".py")
|
||||||
if sys.platform.startswith("win"):
|
if sys.platform.startswith("win"):
|
||||||
for ext in ".PY", ".Py", ".pY", ".pyw", ".PYW", ".pYw":
|
for ext in ".PY", ".Py", ".pY", ".pyw", ".PYW", ".pYw":
|
||||||
test_with_extension(ext)
|
test_with_extension(ext)
|
||||||
|
@ -86,7 +86,7 @@ class ImportTest(unittest.TestCase):
|
||||||
|
|
||||||
def test_module_with_large_stack(self, module='longlist'):
|
def test_module_with_large_stack(self, module='longlist'):
|
||||||
# create module w/list of 65000 elements to test bug #561858
|
# create module w/list of 65000 elements to test bug #561858
|
||||||
filename = module + os.extsep + 'py'
|
filename = module + '.py'
|
||||||
|
|
||||||
# create a file with a list of 65000 elements
|
# create a file with a list of 65000 elements
|
||||||
f = open(filename, 'w+')
|
f = open(filename, 'w+')
|
||||||
|
@ -110,13 +110,13 @@ class ImportTest(unittest.TestCase):
|
||||||
|
|
||||||
# cleanup
|
# cleanup
|
||||||
del sys.path[-1]
|
del sys.path[-1]
|
||||||
for ext in 'pyc', 'pyo':
|
for ext in '.pyc', '.pyo':
|
||||||
fname = module + os.extsep + ext
|
fname = module + ext
|
||||||
if os.path.exists(fname):
|
if os.path.exists(fname):
|
||||||
os.unlink(fname)
|
os.unlink(fname)
|
||||||
|
|
||||||
def test_failing_import_sticks(self):
|
def test_failing_import_sticks(self):
|
||||||
source = TESTFN + os.extsep + "py"
|
source = TESTFN + ".py"
|
||||||
f = open(source, "w")
|
f = open(source, "w")
|
||||||
print("a = 1/0", file=f)
|
print("a = 1/0", file=f)
|
||||||
f.close()
|
f.close()
|
||||||
|
|
|
@ -1687,7 +1687,7 @@ class MaildirTestCase(unittest.TestCase):
|
||||||
t = int(time.time() % 1000000)
|
t = int(time.time() % 1000000)
|
||||||
pid = self._counter
|
pid = self._counter
|
||||||
self._counter += 1
|
self._counter += 1
|
||||||
filename = os.extsep.join((str(t), str(pid), "myhostname", "mydomain"))
|
filename = ".".join((str(t), str(pid), "myhostname", "mydomain"))
|
||||||
tmpname = os.path.join(self._dir, "tmp", filename)
|
tmpname = os.path.join(self._dir, "tmp", filename)
|
||||||
newname = os.path.join(self._dir, dir, filename)
|
newname = os.path.join(self._dir, dir, filename)
|
||||||
fp = open(tmpname, "w")
|
fp = open(tmpname, "w")
|
||||||
|
|
|
@ -20,7 +20,7 @@ if __name__ == "__main__":
|
||||||
base = sys.argv[0]
|
base = sys.argv[0]
|
||||||
else:
|
else:
|
||||||
base = __file__
|
base = __file__
|
||||||
tstfile = os.path.join(os.path.dirname(base), "test"+os.extsep+"xml")
|
tstfile = os.path.join(os.path.dirname(base), "test.xml")
|
||||||
del base
|
del base
|
||||||
|
|
||||||
# The tests of DocumentType importing use these helpers to construct
|
# The tests of DocumentType importing use these helpers to construct
|
||||||
|
|
|
@ -5,7 +5,7 @@ import sys
|
||||||
import os
|
import os
|
||||||
from unicodedata import normalize
|
from unicodedata import normalize
|
||||||
|
|
||||||
TESTDATAFILE = "NormalizationTest" + os.extsep + "txt"
|
TESTDATAFILE = "NormalizationTest.txt"
|
||||||
TESTDATAURL = "http://www.unicode.org/Public/4.1.0/ucd/" + TESTDATAFILE
|
TESTDATAURL = "http://www.unicode.org/Public/4.1.0/ucd/" + TESTDATAFILE
|
||||||
|
|
||||||
class RangeError(Exception):
|
class RangeError(Exception):
|
||||||
|
|
|
@ -45,7 +45,7 @@ class MaildirTestCase(unittest.TestCase):
|
||||||
t = int(time.time() % 1000000)
|
t = int(time.time() % 1000000)
|
||||||
pid = self._counter
|
pid = self._counter
|
||||||
self._counter += 1
|
self._counter += 1
|
||||||
filename = os.extsep.join((str(t), str(pid), "myhostname", "mydomain"))
|
filename = ".".join((str(t), str(pid), "myhostname", "mydomain"))
|
||||||
tmpname = os.path.join(self._dir, "tmp", filename)
|
tmpname = os.path.join(self._dir, "tmp", filename)
|
||||||
newname = os.path.join(self._dir, dir, filename)
|
newname = os.path.join(self._dir, dir, filename)
|
||||||
fp = open(tmpname, "w")
|
fp = open(tmpname, "w")
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# Test packages (dotted-name import)
|
# Test packages (dotted-name import)
|
||||||
|
|
||||||
import sys, os, tempfile, traceback
|
import sys, os, tempfile, traceback
|
||||||
from os import mkdir, rmdir, extsep # Can't test if these fail
|
from os import mkdir, rmdir # Can't test if these fail
|
||||||
del mkdir, rmdir
|
del mkdir, rmdir
|
||||||
from test.test_support import verify, verbose, TestFailed
|
from test.test_support import verify, verbose, TestFailed
|
||||||
|
|
||||||
|
@ -77,15 +77,15 @@ def runtest(hier, code):
|
||||||
# Test descriptions
|
# Test descriptions
|
||||||
|
|
||||||
tests = [
|
tests = [
|
||||||
("t1", [("t1", None), ("t1 __init__"+os.extsep+"py", "")], "import t1"),
|
("t1", [("t1", None), ("t1 __init__.py", "")], "import t1"),
|
||||||
|
|
||||||
("t2", [
|
("t2", [
|
||||||
("t2", None),
|
("t2", None),
|
||||||
("t2 __init__"+os.extsep+"py", "'doc for t2'; print(__name__, 'loading')"),
|
("t2 __init__.py", "'doc for t2'; print(__name__, 'loading')"),
|
||||||
("t2 sub", None),
|
("t2 sub", None),
|
||||||
("t2 sub __init__"+os.extsep+"py", ""),
|
("t2 sub __init__.py", ""),
|
||||||
("t2 sub subsub", None),
|
("t2 sub subsub", None),
|
||||||
("t2 sub subsub __init__"+os.extsep+"py", "print(__name__, 'loading'); spam = 1"),
|
("t2 sub subsub __init__.py", "print(__name__, 'loading'); spam = 1"),
|
||||||
],
|
],
|
||||||
"""
|
"""
|
||||||
import t2
|
import t2
|
||||||
|
@ -111,11 +111,11 @@ print(dir())
|
||||||
|
|
||||||
("t3", [
|
("t3", [
|
||||||
("t3", None),
|
("t3", None),
|
||||||
("t3 __init__"+os.extsep+"py", "print(__name__, 'loading')"),
|
("t3 __init__.py", "print(__name__, 'loading')"),
|
||||||
("t3 sub", None),
|
("t3 sub", None),
|
||||||
("t3 sub __init__"+os.extsep+"py", ""),
|
("t3 sub __init__.py", ""),
|
||||||
("t3 sub subsub", None),
|
("t3 sub subsub", None),
|
||||||
("t3 sub subsub __init__"+os.extsep+"py", "print(__name__, 'loading'); spam = 1"),
|
("t3 sub subsub __init__.py", "print(__name__, 'loading'); spam = 1"),
|
||||||
],
|
],
|
||||||
"""
|
"""
|
||||||
import t3.sub.subsub
|
import t3.sub.subsub
|
||||||
|
@ -123,15 +123,15 @@ print(t3.__name__, t3.sub.__name__, t3.sub.subsub.__name__)
|
||||||
"""),
|
"""),
|
||||||
|
|
||||||
("t4", [
|
("t4", [
|
||||||
("t4"+os.extsep+"py", "print('THIS SHOULD NOT BE PRINTED (t4"+os.extsep+"py)')"),
|
("t4.py", "print('THIS SHOULD NOT BE PRINTED (t4.py)')"),
|
||||||
("t4", None),
|
("t4", None),
|
||||||
("t4 __init__"+os.extsep+"py", "print(__name__, 'loading')"),
|
("t4 __init__.py", "print(__name__, 'loading')"),
|
||||||
("t4 sub"+os.extsep+"py", "print('THIS SHOULD NOT BE PRINTED (sub"+os.extsep+"py)')"),
|
("t4 sub.py", "print('THIS SHOULD NOT BE PRINTED (sub.py)')"),
|
||||||
("t4 sub", None),
|
("t4 sub", None),
|
||||||
("t4 sub __init__"+os.extsep+"py", ""),
|
("t4 sub __init__.py", ""),
|
||||||
("t4 sub subsub"+os.extsep+"py", "print('THIS SHOULD NOT BE PRINTED (subsub"+os.extsep+"py)')"),
|
("t4 sub subsub.py", "print('THIS SHOULD NOT BE PRINTED (subsub.py)')"),
|
||||||
("t4 sub subsub", None),
|
("t4 sub subsub", None),
|
||||||
("t4 sub subsub __init__"+os.extsep+"py", "print(__name__, 'loading'); spam = 1"),
|
("t4 sub subsub __init__.py", "print(__name__, 'loading'); spam = 1"),
|
||||||
],
|
],
|
||||||
"""
|
"""
|
||||||
from t4.sub.subsub import *
|
from t4.sub.subsub import *
|
||||||
|
@ -140,9 +140,9 @@ print("t4.sub.subsub.spam =", spam)
|
||||||
|
|
||||||
("t5", [
|
("t5", [
|
||||||
("t5", None),
|
("t5", None),
|
||||||
("t5 __init__"+os.extsep+"py", "import t5.foo"),
|
("t5 __init__.py", "import t5.foo"),
|
||||||
("t5 string"+os.extsep+"py", "print(__name__, 'loading'); spam = 1"),
|
("t5 string.py", "print(__name__, 'loading'); spam = 1"),
|
||||||
("t5 foo"+os.extsep+"py",
|
("t5 foo.py",
|
||||||
"print(__name__, 'loading'); from . import string; print(string.spam)"),
|
"print(__name__, 'loading'); from . import string; print(string.spam)"),
|
||||||
],
|
],
|
||||||
"""
|
"""
|
||||||
|
@ -157,10 +157,10 @@ print(fixdir(dir(t5.string)))
|
||||||
|
|
||||||
("t6", [
|
("t6", [
|
||||||
("t6", None),
|
("t6", None),
|
||||||
("t6 __init__"+os.extsep+"py", "__all__ = ['spam', 'ham', 'eggs']"),
|
("t6 __init__.py", "__all__ = ['spam', 'ham', 'eggs']"),
|
||||||
("t6 spam"+os.extsep+"py", "print(__name__, 'loading')"),
|
("t6 spam.py", "print(__name__, 'loading')"),
|
||||||
("t6 ham"+os.extsep+"py", "print(__name__, 'loading')"),
|
("t6 ham.py", "print(__name__, 'loading')"),
|
||||||
("t6 eggs"+os.extsep+"py", "print(__name__, 'loading')"),
|
("t6 eggs.py", "print(__name__, 'loading')"),
|
||||||
],
|
],
|
||||||
"""
|
"""
|
||||||
import t6
|
import t6
|
||||||
|
@ -171,15 +171,15 @@ print(dir())
|
||||||
"""),
|
"""),
|
||||||
|
|
||||||
("t7", [
|
("t7", [
|
||||||
("t7"+os.extsep+"py", "print('Importing t7"+os.extsep+"py')"),
|
("t7.py", "print('Importing t7.py')"),
|
||||||
("t7", None),
|
("t7", None),
|
||||||
("t7 __init__"+os.extsep+"py", "print(__name__, 'loading')"),
|
("t7 __init__.py", "print(__name__, 'loading')"),
|
||||||
("t7 sub"+os.extsep+"py", "print('THIS SHOULD NOT BE PRINTED (sub"+os.extsep+"py)')"),
|
("t7 sub.py", "print('THIS SHOULD NOT BE PRINTED (sub.py)')"),
|
||||||
("t7 sub", None),
|
("t7 sub", None),
|
||||||
("t7 sub __init__"+os.extsep+"py", ""),
|
("t7 sub __init__.py", ""),
|
||||||
("t7 sub subsub"+os.extsep+"py", "print('THIS SHOULD NOT BE PRINTED (subsub"+os.extsep+"py)')"),
|
("t7 sub subsub.py", "print('THIS SHOULD NOT BE PRINTED (subsub.py)')"),
|
||||||
("t7 sub subsub", None),
|
("t7 sub subsub", None),
|
||||||
("t7 sub subsub __init__"+os.extsep+"py", "print(__name__, 'loading'); spam = 1"),
|
("t7 sub subsub __init__.py", "print(__name__, 'loading'); spam = 1"),
|
||||||
],
|
],
|
||||||
"""
|
"""
|
||||||
t7, sub, subsub = None, None, None
|
t7, sub, subsub = None, None, None
|
||||||
|
|
|
@ -22,8 +22,8 @@ class TestImport(unittest.TestCase):
|
||||||
self.package_dir = os.path.join(self.test_dir,
|
self.package_dir = os.path.join(self.test_dir,
|
||||||
self.package_name)
|
self.package_name)
|
||||||
os.mkdir(self.package_dir)
|
os.mkdir(self.package_dir)
|
||||||
open(os.path.join(self.package_dir, '__init__'+os.extsep+'py'), 'w')
|
open(os.path.join(self.package_dir, '__init__.py'), 'w')
|
||||||
self.module_path = os.path.join(self.package_dir, 'foo'+os.extsep+'py')
|
self.module_path = os.path.join(self.package_dir, 'foo.py')
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
for file in os.listdir(self.package_dir):
|
for file in os.listdir(self.package_dir):
|
||||||
|
|
|
@ -205,10 +205,10 @@ class LongReprTest(unittest.TestCase):
|
||||||
# Make the package and subpackage
|
# Make the package and subpackage
|
||||||
shutil.rmtree(self.pkgname, ignore_errors=True)
|
shutil.rmtree(self.pkgname, ignore_errors=True)
|
||||||
os.mkdir(self.pkgname)
|
os.mkdir(self.pkgname)
|
||||||
touch(os.path.join(self.pkgname, '__init__'+os.extsep+'py'))
|
touch(os.path.join(self.pkgname, '__init__.py'))
|
||||||
shutil.rmtree(self.subpkgname, ignore_errors=True)
|
shutil.rmtree(self.subpkgname, ignore_errors=True)
|
||||||
os.mkdir(self.subpkgname)
|
os.mkdir(self.subpkgname)
|
||||||
touch(os.path.join(self.subpkgname, '__init__'+os.extsep+'py'))
|
touch(os.path.join(self.subpkgname, '__init__.py'))
|
||||||
# Remember where we are
|
# Remember where we are
|
||||||
self.here = os.getcwd()
|
self.here = os.getcwd()
|
||||||
sys.path.insert(0, self.here)
|
sys.path.insert(0, self.here)
|
||||||
|
@ -228,7 +228,7 @@ class LongReprTest(unittest.TestCase):
|
||||||
|
|
||||||
def test_module(self):
|
def test_module(self):
|
||||||
eq = self.assertEquals
|
eq = self.assertEquals
|
||||||
touch(os.path.join(self.subpkgname, self.pkgname + os.extsep + 'py'))
|
touch(os.path.join(self.subpkgname, self.pkgname + '.py'))
|
||||||
from areallylongpackageandmodulenametotestreprtruncation.areallylongpackageandmodulenametotestreprtruncation import areallylongpackageandmodulenametotestreprtruncation
|
from areallylongpackageandmodulenametotestreprtruncation.areallylongpackageandmodulenametotestreprtruncation import areallylongpackageandmodulenametotestreprtruncation
|
||||||
eq(repr(areallylongpackageandmodulenametotestreprtruncation),
|
eq(repr(areallylongpackageandmodulenametotestreprtruncation),
|
||||||
"<module '%s' from '%s'>" % (areallylongpackageandmodulenametotestreprtruncation.__name__, areallylongpackageandmodulenametotestreprtruncation.__file__))
|
"<module '%s' from '%s'>" % (areallylongpackageandmodulenametotestreprtruncation.__name__, areallylongpackageandmodulenametotestreprtruncation.__file__))
|
||||||
|
@ -236,7 +236,7 @@ class LongReprTest(unittest.TestCase):
|
||||||
|
|
||||||
def test_type(self):
|
def test_type(self):
|
||||||
eq = self.assertEquals
|
eq = self.assertEquals
|
||||||
touch(os.path.join(self.subpkgname, 'foo'+os.extsep+'py'), '''\
|
touch(os.path.join(self.subpkgname, 'foo.py'), '''\
|
||||||
class foo(object):
|
class foo(object):
|
||||||
pass
|
pass
|
||||||
''')
|
''')
|
||||||
|
@ -250,7 +250,7 @@ class foo(object):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def test_class(self):
|
def test_class(self):
|
||||||
touch(os.path.join(self.subpkgname, 'bar'+os.extsep+'py'), '''\
|
touch(os.path.join(self.subpkgname, 'bar.py'), '''\
|
||||||
class bar:
|
class bar:
|
||||||
pass
|
pass
|
||||||
''')
|
''')
|
||||||
|
@ -259,7 +259,7 @@ class bar:
|
||||||
self.assertEquals(repr(bar.bar), "<class '%s.bar'>" % bar.__name__)
|
self.assertEquals(repr(bar.bar), "<class '%s.bar'>" % bar.__name__)
|
||||||
|
|
||||||
def test_instance(self):
|
def test_instance(self):
|
||||||
touch(os.path.join(self.subpkgname, 'baz'+os.extsep+'py'), '''\
|
touch(os.path.join(self.subpkgname, 'baz.py'), '''\
|
||||||
class baz:
|
class baz:
|
||||||
pass
|
pass
|
||||||
''')
|
''')
|
||||||
|
@ -270,7 +270,7 @@ class baz:
|
||||||
|
|
||||||
def test_method(self):
|
def test_method(self):
|
||||||
eq = self.assertEquals
|
eq = self.assertEquals
|
||||||
touch(os.path.join(self.subpkgname, 'qux'+os.extsep+'py'), '''\
|
touch(os.path.join(self.subpkgname, 'qux.py'), '''\
|
||||||
class aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:
|
class aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:
|
||||||
def amethod(self): pass
|
def amethod(self): pass
|
||||||
''')
|
''')
|
||||||
|
|
|
@ -103,14 +103,14 @@ class RunModuleTest(unittest.TestCase):
|
||||||
|
|
||||||
def _add_pkg_dir(self, pkg_dir):
|
def _add_pkg_dir(self, pkg_dir):
|
||||||
os.mkdir(pkg_dir)
|
os.mkdir(pkg_dir)
|
||||||
pkg_fname = os.path.join(pkg_dir, "__init__"+os.extsep+"py")
|
pkg_fname = os.path.join(pkg_dir, "__init__.py")
|
||||||
pkg_file = open(pkg_fname, "w")
|
pkg_file = open(pkg_fname, "w")
|
||||||
pkg_file.close()
|
pkg_file.close()
|
||||||
return pkg_fname
|
return pkg_fname
|
||||||
|
|
||||||
def _make_pkg(self, source, depth):
|
def _make_pkg(self, source, depth):
|
||||||
pkg_name = "__runpy_pkg__"
|
pkg_name = "__runpy_pkg__"
|
||||||
test_fname = "runpy_test"+os.extsep+"py"
|
test_fname = "runpy_test.py"
|
||||||
pkg_dir = sub_dir = tempfile.mkdtemp()
|
pkg_dir = sub_dir = tempfile.mkdtemp()
|
||||||
if verbose: print(" Package tree in:", sub_dir)
|
if verbose: print(" Package tree in:", sub_dir)
|
||||||
sys.path.insert(0, pkg_dir)
|
sys.path.insert(0, pkg_dir)
|
||||||
|
@ -182,7 +182,7 @@ class RunModuleTest(unittest.TestCase):
|
||||||
parent_dir = module_dir
|
parent_dir = module_dir
|
||||||
module_dir = os.path.join(module_dir, pkg_name)
|
module_dir = os.path.join(module_dir, pkg_name)
|
||||||
# Add sibling module
|
# Add sibling module
|
||||||
sibling_fname = os.path.join(module_dir, "sibling"+os.extsep+"py")
|
sibling_fname = os.path.join(module_dir, "sibling.py")
|
||||||
sibling_file = open(sibling_fname, "w")
|
sibling_file = open(sibling_fname, "w")
|
||||||
sibling_file.close()
|
sibling_file.close()
|
||||||
if verbose: print(" Added sibling module:", sibling_fname)
|
if verbose: print(" Added sibling module:", sibling_fname)
|
||||||
|
@ -193,7 +193,7 @@ class RunModuleTest(unittest.TestCase):
|
||||||
cousin_dir = os.path.join(uncle_dir, "cousin")
|
cousin_dir = os.path.join(uncle_dir, "cousin")
|
||||||
self._add_pkg_dir(cousin_dir)
|
self._add_pkg_dir(cousin_dir)
|
||||||
if verbose: print(" Added cousin package:", cousin_dir)
|
if verbose: print(" Added cousin package:", cousin_dir)
|
||||||
nephew_fname = os.path.join(cousin_dir, "nephew"+os.extsep+"py")
|
nephew_fname = os.path.join(cousin_dir, "nephew.py")
|
||||||
nephew_file = open(nephew_fname, "w")
|
nephew_file = open(nephew_fname, "w")
|
||||||
nephew_file.close()
|
nephew_file.close()
|
||||||
if verbose: print(" Added nephew module:", nephew_fname)
|
if verbose: print(" Added nephew module:", nephew_fname)
|
||||||
|
|
|
@ -311,7 +311,7 @@ class XMLFilterBaseTest(unittest.TestCase):
|
||||||
#
|
#
|
||||||
# ===========================================================================
|
# ===========================================================================
|
||||||
|
|
||||||
xml_test_out = open(findfile("test"+os.extsep+"xml"+os.extsep+"out")).read()
|
xml_test_out = open(findfile("test.xml.out")).read()
|
||||||
|
|
||||||
class ExpatReaderTest(XmlTestBase):
|
class ExpatReaderTest(XmlTestBase):
|
||||||
|
|
||||||
|
@ -323,7 +323,7 @@ class ExpatReaderTest(XmlTestBase):
|
||||||
xmlgen = XMLGenerator(result)
|
xmlgen = XMLGenerator(result)
|
||||||
|
|
||||||
parser.setContentHandler(xmlgen)
|
parser.setContentHandler(xmlgen)
|
||||||
parser.parse(open(findfile("test"+os.extsep+"xml")))
|
parser.parse(open(findfile("test.xml")))
|
||||||
|
|
||||||
self.assertEquals(result.getvalue(), xml_test_out)
|
self.assertEquals(result.getvalue(), xml_test_out)
|
||||||
|
|
||||||
|
@ -452,7 +452,7 @@ class ExpatReaderTest(XmlTestBase):
|
||||||
xmlgen = XMLGenerator(result)
|
xmlgen = XMLGenerator(result)
|
||||||
|
|
||||||
parser.setContentHandler(xmlgen)
|
parser.setContentHandler(xmlgen)
|
||||||
parser.parse(findfile("test"+os.extsep+"xml"))
|
parser.parse(findfile("test.xml"))
|
||||||
|
|
||||||
self.assertEquals(result.getvalue(), xml_test_out)
|
self.assertEquals(result.getvalue(), xml_test_out)
|
||||||
|
|
||||||
|
@ -462,7 +462,7 @@ class ExpatReaderTest(XmlTestBase):
|
||||||
xmlgen = XMLGenerator(result)
|
xmlgen = XMLGenerator(result)
|
||||||
|
|
||||||
parser.setContentHandler(xmlgen)
|
parser.setContentHandler(xmlgen)
|
||||||
parser.parse(InputSource(findfile("test"+os.extsep+"xml")))
|
parser.parse(InputSource(findfile("test.xml")))
|
||||||
|
|
||||||
self.assertEquals(result.getvalue(), xml_test_out)
|
self.assertEquals(result.getvalue(), xml_test_out)
|
||||||
|
|
||||||
|
@ -473,7 +473,7 @@ class ExpatReaderTest(XmlTestBase):
|
||||||
|
|
||||||
parser.setContentHandler(xmlgen)
|
parser.setContentHandler(xmlgen)
|
||||||
inpsrc = InputSource()
|
inpsrc = InputSource()
|
||||||
inpsrc.setByteStream(open(findfile("test"+os.extsep+"xml")))
|
inpsrc.setByteStream(open(findfile("test.xml")))
|
||||||
parser.parse(inpsrc)
|
parser.parse(inpsrc)
|
||||||
|
|
||||||
self.assertEquals(result.getvalue(), xml_test_out)
|
self.assertEquals(result.getvalue(), xml_test_out)
|
||||||
|
|
|
@ -70,11 +70,11 @@ def forget(modname):
|
||||||
deleting any .pyc and .pyo files.'''
|
deleting any .pyc and .pyo files.'''
|
||||||
unload(modname)
|
unload(modname)
|
||||||
for dirname in sys.path:
|
for dirname in sys.path:
|
||||||
unlink(os.path.join(dirname, modname + os.extsep + 'pyc'))
|
unlink(os.path.join(dirname, modname + '.pyc'))
|
||||||
# Deleting the .pyo file cannot be within the 'try' for the .pyc since
|
# Deleting the .pyo file cannot be within the 'try' for the .pyc since
|
||||||
# the chance exists that there is no .pyc (and thus the 'try' statement
|
# the chance exists that there is no .pyc (and thus the 'try' statement
|
||||||
# is exited) but there is a .pyo file.
|
# is exited) but there is a .pyo file.
|
||||||
unlink(os.path.join(dirname, modname + os.extsep + 'pyo'))
|
unlink(os.path.join(dirname, modname + '.pyo'))
|
||||||
|
|
||||||
def is_resource_enabled(resource):
|
def is_resource_enabled(resource):
|
||||||
"""Test whether a resource is enabled. Known resources are set by
|
"""Test whether a resource is enabled. Known resources are set by
|
||||||
|
|
|
@ -186,14 +186,14 @@ def test_main():
|
||||||
# This displays the tokenization of tokenize_tests.py to stdout, and
|
# This displays the tokenization of tokenize_tests.py to stdout, and
|
||||||
# regrtest.py checks that this equals the expected output (in the
|
# regrtest.py checks that this equals the expected output (in the
|
||||||
# test/output/ directory).
|
# test/output/ directory).
|
||||||
f = open(findfile('tokenize_tests' + os.extsep + 'txt'))
|
f = open(findfile('tokenize_tests.txt'))
|
||||||
tokenize(f.readline)
|
tokenize(f.readline)
|
||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
# Now run test_roundtrip() over tokenize_test.py too, and over all
|
# Now run test_roundtrip() over tokenize_test.py too, and over all
|
||||||
# (if the "compiler" resource is enabled) or a small random sample (if
|
# (if the "compiler" resource is enabled) or a small random sample (if
|
||||||
# "compiler" is not enabled) of the test*.py files.
|
# "compiler" is not enabled) of the test*.py files.
|
||||||
f = findfile('tokenize_tests' + os.extsep + 'txt')
|
f = findfile('tokenize_tests.txt')
|
||||||
test_roundtrip(f)
|
test_roundtrip(f)
|
||||||
|
|
||||||
testdir = os.path.dirname(f) or os.curdir
|
testdir = os.path.dirname(f) or os.curdir
|
||||||
|
|
|
@ -29,7 +29,7 @@ class TestsWithSourceFile(unittest.TestCase):
|
||||||
def makeTestArchive(self, f, compression):
|
def makeTestArchive(self, f, compression):
|
||||||
# Create the ZIP archive
|
# Create the ZIP archive
|
||||||
zipfp = zipfile.ZipFile(f, "w", compression)
|
zipfp = zipfile.ZipFile(f, "w", compression)
|
||||||
zipfp.write(TESTFN, "another"+os.extsep+"name")
|
zipfp.write(TESTFN, "another.name")
|
||||||
zipfp.write(TESTFN, TESTFN)
|
zipfp.write(TESTFN, TESTFN)
|
||||||
zipfp.writestr("strfile", self.data)
|
zipfp.writestr("strfile", self.data)
|
||||||
zipfp.close()
|
zipfp.close()
|
||||||
|
@ -40,7 +40,7 @@ class TestsWithSourceFile(unittest.TestCase):
|
||||||
# Read the ZIP archive
|
# Read the ZIP archive
|
||||||
zipfp = zipfile.ZipFile(f, "r", compression)
|
zipfp = zipfile.ZipFile(f, "r", compression)
|
||||||
self.assertEqual(zipfp.read(TESTFN), self.data)
|
self.assertEqual(zipfp.read(TESTFN), self.data)
|
||||||
self.assertEqual(zipfp.read("another"+os.extsep+"name"), self.data)
|
self.assertEqual(zipfp.read("another.name"), self.data)
|
||||||
self.assertEqual(zipfp.read("strfile"), self.data)
|
self.assertEqual(zipfp.read("strfile"), self.data)
|
||||||
|
|
||||||
# Print the ZIP directory
|
# Print the ZIP directory
|
||||||
|
@ -64,7 +64,7 @@ class TestsWithSourceFile(unittest.TestCase):
|
||||||
names = zipfp.namelist()
|
names = zipfp.namelist()
|
||||||
self.assertEquals(len(names), 3)
|
self.assertEquals(len(names), 3)
|
||||||
self.assert_(TESTFN in names)
|
self.assert_(TESTFN in names)
|
||||||
self.assert_("another"+os.extsep+"name" in names)
|
self.assert_("another.name" in names)
|
||||||
self.assert_("strfile" in names)
|
self.assert_("strfile" in names)
|
||||||
|
|
||||||
# Check infolist
|
# Check infolist
|
||||||
|
@ -72,13 +72,13 @@ class TestsWithSourceFile(unittest.TestCase):
|
||||||
names = [ i.filename for i in infos ]
|
names = [ i.filename for i in infos ]
|
||||||
self.assertEquals(len(names), 3)
|
self.assertEquals(len(names), 3)
|
||||||
self.assert_(TESTFN in names)
|
self.assert_(TESTFN in names)
|
||||||
self.assert_("another"+os.extsep+"name" in names)
|
self.assert_("another.name" in names)
|
||||||
self.assert_("strfile" in names)
|
self.assert_("strfile" in names)
|
||||||
for i in infos:
|
for i in infos:
|
||||||
self.assertEquals(i.file_size, len(self.data))
|
self.assertEquals(i.file_size, len(self.data))
|
||||||
|
|
||||||
# check getinfo
|
# check getinfo
|
||||||
for nm in (TESTFN, "another"+os.extsep+"name", "strfile"):
|
for nm in (TESTFN, "another.name", "strfile"):
|
||||||
info = zipfp.getinfo(nm)
|
info = zipfp.getinfo(nm)
|
||||||
self.assertEquals(info.filename, nm)
|
self.assertEquals(info.filename, nm)
|
||||||
self.assertEquals(info.file_size, len(self.data))
|
self.assertEquals(info.file_size, len(self.data))
|
||||||
|
@ -105,7 +105,7 @@ class TestsWithSourceFile(unittest.TestCase):
|
||||||
zipdata1.append(read_data)
|
zipdata1.append(read_data)
|
||||||
|
|
||||||
zipdata2 = []
|
zipdata2 = []
|
||||||
zipopen2 = zipfp.open("another"+os.extsep+"name")
|
zipopen2 = zipfp.open("another.name")
|
||||||
while 1:
|
while 1:
|
||||||
read_data = zipopen2.read(256)
|
read_data = zipopen2.read(256)
|
||||||
if not read_data:
|
if not read_data:
|
||||||
|
@ -313,13 +313,13 @@ class TestZip64InSmallFiles(unittest.TestCase):
|
||||||
def largeFileExceptionTest(self, f, compression):
|
def largeFileExceptionTest(self, f, compression):
|
||||||
zipfp = zipfile.ZipFile(f, "w", compression)
|
zipfp = zipfile.ZipFile(f, "w", compression)
|
||||||
self.assertRaises(zipfile.LargeZipFile,
|
self.assertRaises(zipfile.LargeZipFile,
|
||||||
zipfp.write, TESTFN, "another"+os.extsep+"name")
|
zipfp.write, TESTFN, "another.name")
|
||||||
zipfp.close()
|
zipfp.close()
|
||||||
|
|
||||||
def largeFileExceptionTest2(self, f, compression):
|
def largeFileExceptionTest2(self, f, compression):
|
||||||
zipfp = zipfile.ZipFile(f, "w", compression)
|
zipfp = zipfile.ZipFile(f, "w", compression)
|
||||||
self.assertRaises(zipfile.LargeZipFile,
|
self.assertRaises(zipfile.LargeZipFile,
|
||||||
zipfp.writestr, "another"+os.extsep+"name", self.data)
|
zipfp.writestr, "another.name", self.data)
|
||||||
zipfp.close()
|
zipfp.close()
|
||||||
|
|
||||||
def testLargeFileException(self):
|
def testLargeFileException(self):
|
||||||
|
@ -330,7 +330,7 @@ class TestZip64InSmallFiles(unittest.TestCase):
|
||||||
def zipTest(self, f, compression):
|
def zipTest(self, f, compression):
|
||||||
# Create the ZIP archive
|
# Create the ZIP archive
|
||||||
zipfp = zipfile.ZipFile(f, "w", compression, allowZip64=True)
|
zipfp = zipfile.ZipFile(f, "w", compression, allowZip64=True)
|
||||||
zipfp.write(TESTFN, "another"+os.extsep+"name")
|
zipfp.write(TESTFN, "another.name")
|
||||||
zipfp.write(TESTFN, TESTFN)
|
zipfp.write(TESTFN, TESTFN)
|
||||||
zipfp.writestr("strfile", self.data)
|
zipfp.writestr("strfile", self.data)
|
||||||
zipfp.close()
|
zipfp.close()
|
||||||
|
@ -338,7 +338,7 @@ class TestZip64InSmallFiles(unittest.TestCase):
|
||||||
# Read the ZIP archive
|
# Read the ZIP archive
|
||||||
zipfp = zipfile.ZipFile(f, "r", compression)
|
zipfp = zipfile.ZipFile(f, "r", compression)
|
||||||
self.assertEqual(zipfp.read(TESTFN), self.data)
|
self.assertEqual(zipfp.read(TESTFN), self.data)
|
||||||
self.assertEqual(zipfp.read("another"+os.extsep+"name"), self.data)
|
self.assertEqual(zipfp.read("another.name"), self.data)
|
||||||
self.assertEqual(zipfp.read("strfile"), self.data)
|
self.assertEqual(zipfp.read("strfile"), self.data)
|
||||||
|
|
||||||
# Print the ZIP directory
|
# Print the ZIP directory
|
||||||
|
@ -362,7 +362,7 @@ class TestZip64InSmallFiles(unittest.TestCase):
|
||||||
names = zipfp.namelist()
|
names = zipfp.namelist()
|
||||||
self.assertEquals(len(names), 3)
|
self.assertEquals(len(names), 3)
|
||||||
self.assert_(TESTFN in names)
|
self.assert_(TESTFN in names)
|
||||||
self.assert_("another"+os.extsep+"name" in names)
|
self.assert_("another.name" in names)
|
||||||
self.assert_("strfile" in names)
|
self.assert_("strfile" in names)
|
||||||
|
|
||||||
# Check infolist
|
# Check infolist
|
||||||
|
@ -370,13 +370,13 @@ class TestZip64InSmallFiles(unittest.TestCase):
|
||||||
names = [ i.filename for i in infos ]
|
names = [ i.filename for i in infos ]
|
||||||
self.assertEquals(len(names), 3)
|
self.assertEquals(len(names), 3)
|
||||||
self.assert_(TESTFN in names)
|
self.assert_(TESTFN in names)
|
||||||
self.assert_("another"+os.extsep+"name" in names)
|
self.assert_("another.name" in names)
|
||||||
self.assert_("strfile" in names)
|
self.assert_("strfile" in names)
|
||||||
for i in infos:
|
for i in infos:
|
||||||
self.assertEquals(i.file_size, len(self.data))
|
self.assertEquals(i.file_size, len(self.data))
|
||||||
|
|
||||||
# check getinfo
|
# check getinfo
|
||||||
for nm in (TESTFN, "another"+os.extsep+"name", "strfile"):
|
for nm in (TESTFN, "another.name", "strfile"):
|
||||||
info = zipfp.getinfo(nm)
|
info = zipfp.getinfo(nm)
|
||||||
self.assertEquals(info.filename, nm)
|
self.assertEquals(info.filename, nm)
|
||||||
self.assertEquals(info.file_size, len(self.data))
|
self.assertEquals(info.file_size, len(self.data))
|
||||||
|
@ -675,7 +675,7 @@ class TestsWithRandomBinaryFiles(unittest.TestCase):
|
||||||
def makeTestArchive(self, f, compression):
|
def makeTestArchive(self, f, compression):
|
||||||
# Create the ZIP archive
|
# Create the ZIP archive
|
||||||
zipfp = zipfile.ZipFile(f, "w", compression)
|
zipfp = zipfile.ZipFile(f, "w", compression)
|
||||||
zipfp.write(TESTFN, "another"+os.extsep+"name")
|
zipfp.write(TESTFN, "another.name")
|
||||||
zipfp.write(TESTFN, TESTFN)
|
zipfp.write(TESTFN, TESTFN)
|
||||||
zipfp.close()
|
zipfp.close()
|
||||||
|
|
||||||
|
@ -687,7 +687,7 @@ class TestsWithRandomBinaryFiles(unittest.TestCase):
|
||||||
testdata = zipfp.read(TESTFN)
|
testdata = zipfp.read(TESTFN)
|
||||||
self.assertEqual(len(testdata), len(self.data))
|
self.assertEqual(len(testdata), len(self.data))
|
||||||
self.assertEqual(testdata, self.data)
|
self.assertEqual(testdata, self.data)
|
||||||
self.assertEqual(zipfp.read("another"+os.extsep+"name"), self.data)
|
self.assertEqual(zipfp.read("another.name"), self.data)
|
||||||
zipfp.close()
|
zipfp.close()
|
||||||
|
|
||||||
def testStored(self):
|
def testStored(self):
|
||||||
|
@ -708,7 +708,7 @@ class TestsWithRandomBinaryFiles(unittest.TestCase):
|
||||||
zipdata1.append(read_data)
|
zipdata1.append(read_data)
|
||||||
|
|
||||||
zipdata2 = []
|
zipdata2 = []
|
||||||
zipopen2 = zipfp.open("another"+os.extsep+"name")
|
zipopen2 = zipfp.open("another.name")
|
||||||
while 1:
|
while 1:
|
||||||
read_data = zipopen2.read(256)
|
read_data = zipopen2.read(256)
|
||||||
if not read_data:
|
if not read_data:
|
||||||
|
|
|
@ -51,7 +51,7 @@ else:
|
||||||
TESTMOD = "ziptestmodule"
|
TESTMOD = "ziptestmodule"
|
||||||
TESTPACK = "ziptestpackage"
|
TESTPACK = "ziptestpackage"
|
||||||
TESTPACK2 = "ziptestpackage2"
|
TESTPACK2 = "ziptestpackage2"
|
||||||
TEMP_ZIP = os.path.abspath("junk95142" + os.extsep + "zip")
|
TEMP_ZIP = os.path.abspath("junk95142.zip")
|
||||||
|
|
||||||
class UncompressedZipImportTestCase(ImportHooksBaseTestCase):
|
class UncompressedZipImportTestCase(ImportHooksBaseTestCase):
|
||||||
|
|
||||||
|
|
|
@ -30,18 +30,18 @@ def whichdb(filename):
|
||||||
|
|
||||||
# Check for dbm first -- this has a .pag and a .dir file
|
# Check for dbm first -- this has a .pag and a .dir file
|
||||||
try:
|
try:
|
||||||
f = io.open(filename + os.extsep + "pag", "rb")
|
f = io.open(filename + ".pag", "rb")
|
||||||
f.close()
|
f.close()
|
||||||
# dbm linked with gdbm on OS/2 doesn't have .dir file
|
# dbm linked with gdbm on OS/2 doesn't have .dir file
|
||||||
if not (dbm.library == "GNU gdbm" and sys.platform == "os2emx"):
|
if not (dbm.library == "GNU gdbm" and sys.platform == "os2emx"):
|
||||||
f = io.open(filename + os.extsep + "dir", "rb")
|
f = io.open(filename + ".dir", "rb")
|
||||||
f.close()
|
f.close()
|
||||||
return "dbm"
|
return "dbm"
|
||||||
except IOError:
|
except IOError:
|
||||||
# some dbm emulations based on Berkeley DB generate a .db file
|
# some dbm emulations based on Berkeley DB generate a .db file
|
||||||
# some do not, but they should be caught by the dbhash checks
|
# some do not, but they should be caught by the dbhash checks
|
||||||
try:
|
try:
|
||||||
f = io.open(filename + os.extsep + "db", "rb")
|
f = io.open(filename + ".db", "rb")
|
||||||
f.close()
|
f.close()
|
||||||
# guarantee we can actually open the file using dbm
|
# guarantee we can actually open the file using dbm
|
||||||
# kind of overkill, but since we are dealing with emulations
|
# kind of overkill, but since we are dealing with emulations
|
||||||
|
@ -56,12 +56,12 @@ def whichdb(filename):
|
||||||
# Check for dumbdbm next -- this has a .dir and a .dat file
|
# Check for dumbdbm next -- this has a .dir and a .dat file
|
||||||
try:
|
try:
|
||||||
# First check for presence of files
|
# First check for presence of files
|
||||||
os.stat(filename + os.extsep + "dat")
|
os.stat(filename + ".dat")
|
||||||
size = os.stat(filename + os.extsep + "dir").st_size
|
size = os.stat(filename + ".dir").st_size
|
||||||
# dumbdbm files with no keys are empty
|
# dumbdbm files with no keys are empty
|
||||||
if size == 0:
|
if size == 0:
|
||||||
return "dumbdbm"
|
return "dumbdbm"
|
||||||
f = io.open(filename + os.extsep + "dir", "rb")
|
f = io.open(filename + ".dir", "rb")
|
||||||
try:
|
try:
|
||||||
if f.read(1) in (b"'", b'"'):
|
if f.read(1) in (b"'", b'"'):
|
||||||
return "dumbdbm"
|
return "dumbdbm"
|
||||||
|
|
|
@ -2611,7 +2611,7 @@ Library
|
||||||
- The distutils "register" command now uses http://www.python.org/pypi
|
- The distutils "register" command now uses http://www.python.org/pypi
|
||||||
as the default repository. (See PEP 301.)
|
as the default repository. (See PEP 301.)
|
||||||
|
|
||||||
- the platform dependent path related variables sep, altsep, extsep,
|
- the platform dependent path related variables sep, altsep,
|
||||||
pathsep, curdir, pardir and defpath are now defined in the platform
|
pathsep, curdir, pardir and defpath are now defined in the platform
|
||||||
dependent path modules (e.g. ntpath.py) rather than os.py, so these
|
dependent path modules (e.g. ntpath.py) rather than os.py, so these
|
||||||
variables are now available via os.path. They continue to be
|
variables are now available via os.path. They continue to be
|
||||||
|
@ -4196,11 +4196,6 @@ Library
|
||||||
cycles created by casual use of sys.exc_info() no longer cause
|
cycles created by casual use of sys.exc_info() no longer cause
|
||||||
permanent memory leaks (provided garbage collection is enabled).
|
permanent memory leaks (provided garbage collection is enabled).
|
||||||
|
|
||||||
- os.extsep -- a new variable needed by the RISCOS support. It is the
|
|
||||||
separator used by extensions, and is '.' on all platforms except
|
|
||||||
RISCOS, where it is '/'. There is no need to use this variable
|
|
||||||
unless you have a masochistic desire to port your code to RISCOS.
|
|
||||||
|
|
||||||
- mimetypes.py has optional support for non-standard, but commonly
|
- mimetypes.py has optional support for non-standard, but commonly
|
||||||
found types. guess_type() and guess_extension() now accept an
|
found types. guess_type() and guess_extension() now accept an
|
||||||
optional 'strict' flag, defaulting to true, which controls whether
|
optional 'strict' flag, defaulting to true, which controls whether
|
||||||
|
|
|
@ -41,10 +41,6 @@ This software comes with no warranty. Use at your own risk.
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef RISCOS
|
|
||||||
char *strdup(const char *);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
PyDoc_STRVAR(locale__doc__, "Support for POSIX locales.");
|
PyDoc_STRVAR(locale__doc__, "Support for POSIX locales.");
|
||||||
|
|
||||||
static PyObject *Error;
|
static PyObject *Error;
|
||||||
|
|
|
@ -41,15 +41,7 @@ static int orig_argc;
|
||||||
/* command line options */
|
/* command line options */
|
||||||
#define BASE_OPTS "c:dEhim:OStuvVW:xX?"
|
#define BASE_OPTS "c:dEhim:OStuvVW:xX?"
|
||||||
|
|
||||||
#ifndef RISCOS
|
|
||||||
#define PROGRAM_OPTS BASE_OPTS
|
#define PROGRAM_OPTS BASE_OPTS
|
||||||
#else /*RISCOS*/
|
|
||||||
/* extra option saying that we are running under a special task window
|
|
||||||
frontend; especially my_readline will behave different */
|
|
||||||
#define PROGRAM_OPTS BASE_OPTS "w"
|
|
||||||
/* corresponding flag */
|
|
||||||
extern int Py_RISCOSWimpFlag;
|
|
||||||
#endif /*RISCOS*/
|
|
||||||
|
|
||||||
/* Short usage message (with %s for argv0) */
|
/* Short usage message (with %s for argv0) */
|
||||||
static char *usage_line =
|
static char *usage_line =
|
||||||
|
@ -227,10 +219,6 @@ Py_Main(int argc, char **argv)
|
||||||
orig_argc = argc; /* For Py_GetArgcArgv() */
|
orig_argc = argc; /* For Py_GetArgcArgv() */
|
||||||
orig_argv = argv;
|
orig_argv = argv;
|
||||||
|
|
||||||
#ifdef RISCOS
|
|
||||||
Py_RISCOSWimpFlag = 0;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
PySys_ResetWarnOptions();
|
PySys_ResetWarnOptions();
|
||||||
|
|
||||||
while ((c = _PyOS_GetOpt(argc, argv, PROGRAM_OPTS)) != EOF) {
|
while ((c = _PyOS_GetOpt(argc, argv, PROGRAM_OPTS)) != EOF) {
|
||||||
|
@ -295,12 +283,6 @@ Py_Main(int argc, char **argv)
|
||||||
Py_VerboseFlag++;
|
Py_VerboseFlag++;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#ifdef RISCOS
|
|
||||||
case 'w':
|
|
||||||
Py_RISCOSWimpFlag = 1;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
case 'x':
|
case 'x':
|
||||||
skipfirstline = 1;
|
skipfirstline = 1;
|
||||||
break;
|
break;
|
||||||
|
@ -513,10 +495,6 @@ Py_Main(int argc, char **argv)
|
||||||
WaitForThreadShutdown();
|
WaitForThreadShutdown();
|
||||||
|
|
||||||
Py_Finalize();
|
Py_Finalize();
|
||||||
#ifdef RISCOS
|
|
||||||
if (Py_RISCOSWimpFlag)
|
|
||||||
fprintf(stderr, "\x0cq\x0c"); /* make frontend quit */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __INSURE__
|
#ifdef __INSURE__
|
||||||
/* Insure++ is a memory analysis tool that aids in discovering
|
/* Insure++ is a memory analysis tool that aids in discovering
|
||||||
|
|
|
@ -251,15 +251,7 @@ typedef size_t socklen_t;
|
||||||
# include <arpa/inet.h>
|
# include <arpa/inet.h>
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
# ifndef RISCOS
|
|
||||||
# include <fcntl.h>
|
# include <fcntl.h>
|
||||||
# else
|
|
||||||
# include <sys/ioctl.h>
|
|
||||||
# include <socklib.h>
|
|
||||||
# define NO_DUP
|
|
||||||
int h_errno; /* not used */
|
|
||||||
# define INET_ADDRSTRLEN 16
|
|
||||||
# endif
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
@ -417,11 +409,6 @@ static PyObject *socket_herror;
|
||||||
static PyObject *socket_gaierror;
|
static PyObject *socket_gaierror;
|
||||||
static PyObject *socket_timeout;
|
static PyObject *socket_timeout;
|
||||||
|
|
||||||
#ifdef RISCOS
|
|
||||||
/* Global variable which is !=0 if Python is running in a RISC OS taskwindow */
|
|
||||||
static int taskwindow;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* A forward reference to the socket type object.
|
/* A forward reference to the socket type object.
|
||||||
The sock_type variable contains pointers to various functions,
|
The sock_type variable contains pointers to various functions,
|
||||||
some of which call new_sockobject(), which uses sock_type, so
|
some of which call new_sockobject(), which uses sock_type, so
|
||||||
|
@ -582,18 +569,6 @@ set_error(void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(RISCOS)
|
|
||||||
if (_inet_error.errnum != NULL) {
|
|
||||||
PyObject *v;
|
|
||||||
v = Py_BuildValue("(is)", errno, _inet_err());
|
|
||||||
if (v != NULL) {
|
|
||||||
PyErr_SetObject(socket_error, v);
|
|
||||||
Py_DECREF(v);
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return PyErr_SetFromErrno(socket_error);
|
return PyErr_SetFromErrno(socket_error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -670,10 +645,8 @@ sendsegmented(int sock_fd, char *buf, int len, int flags)
|
||||||
static int
|
static int
|
||||||
internal_setblocking(PySocketSockObject *s, int block)
|
internal_setblocking(PySocketSockObject *s, int block)
|
||||||
{
|
{
|
||||||
#ifndef RISCOS
|
|
||||||
#ifndef MS_WINDOWS
|
#ifndef MS_WINDOWS
|
||||||
int delay_flag;
|
int delay_flag;
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Py_BEGIN_ALLOW_THREADS
|
Py_BEGIN_ALLOW_THREADS
|
||||||
|
@ -682,7 +655,6 @@ internal_setblocking(PySocketSockObject *s, int block)
|
||||||
setsockopt(s->sock_fd, SOL_SOCKET, SO_NONBLOCK,
|
setsockopt(s->sock_fd, SOL_SOCKET, SO_NONBLOCK,
|
||||||
(void *)(&block), sizeof(int));
|
(void *)(&block), sizeof(int));
|
||||||
#else
|
#else
|
||||||
#ifndef RISCOS
|
|
||||||
#ifndef MS_WINDOWS
|
#ifndef MS_WINDOWS
|
||||||
#if defined(PYOS_OS2) && !defined(PYCC_GCC)
|
#if defined(PYOS_OS2) && !defined(PYCC_GCC)
|
||||||
block = !block;
|
block = !block;
|
||||||
|
@ -702,10 +674,6 @@ internal_setblocking(PySocketSockObject *s, int block)
|
||||||
block = !block;
|
block = !block;
|
||||||
ioctlsocket(s->sock_fd, FIONBIO, (u_long*)&block);
|
ioctlsocket(s->sock_fd, FIONBIO, (u_long*)&block);
|
||||||
#endif /* MS_WINDOWS */
|
#endif /* MS_WINDOWS */
|
||||||
#else /* RISCOS */
|
|
||||||
block = !block;
|
|
||||||
socketioctl(s->sock_fd, FIONBIO, (u_long*)&block);
|
|
||||||
#endif /* RISCOS */
|
|
||||||
#endif /* __BEOS__ */
|
#endif /* __BEOS__ */
|
||||||
Py_END_ALLOW_THREADS
|
Py_END_ALLOW_THREADS
|
||||||
|
|
||||||
|
@ -778,9 +746,6 @@ PyMODINIT_FUNC
|
||||||
init_sockobject(PySocketSockObject *s,
|
init_sockobject(PySocketSockObject *s,
|
||||||
SOCKET_T fd, int family, int type, int proto)
|
SOCKET_T fd, int family, int type, int proto)
|
||||||
{
|
{
|
||||||
#ifdef RISCOS
|
|
||||||
int block = 1;
|
|
||||||
#endif
|
|
||||||
s->sock_fd = fd;
|
s->sock_fd = fd;
|
||||||
s->sock_family = family;
|
s->sock_family = family;
|
||||||
s->sock_type = type;
|
s->sock_type = type;
|
||||||
|
@ -792,10 +757,6 @@ init_sockobject(PySocketSockObject *s,
|
||||||
if (defaulttimeout >= 0.0)
|
if (defaulttimeout >= 0.0)
|
||||||
internal_setblocking(s, 0);
|
internal_setblocking(s, 0);
|
||||||
|
|
||||||
#ifdef RISCOS
|
|
||||||
if (taskwindow)
|
|
||||||
socketioctl(s->sock_fd, 0x80046679, (u_long*)&block);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1700,30 +1661,6 @@ Returns the timeout in floating seconds associated with socket \n\
|
||||||
operations. A timeout of None indicates that timeouts on socket \n\
|
operations. A timeout of None indicates that timeouts on socket \n\
|
||||||
operations are disabled.");
|
operations are disabled.");
|
||||||
|
|
||||||
#ifdef RISCOS
|
|
||||||
/* s.sleeptaskw(1 | 0) method */
|
|
||||||
|
|
||||||
static PyObject *
|
|
||||||
sock_sleeptaskw(PySocketSockObject *s,PyObject *arg)
|
|
||||||
{
|
|
||||||
int block;
|
|
||||||
block = PyInt_AsLong(arg);
|
|
||||||
if (block == -1 && PyErr_Occurred())
|
|
||||||
return NULL;
|
|
||||||
Py_BEGIN_ALLOW_THREADS
|
|
||||||
socketioctl(s->sock_fd, 0x80046679, (u_long*)&block);
|
|
||||||
Py_END_ALLOW_THREADS
|
|
||||||
|
|
||||||
Py_INCREF(Py_None);
|
|
||||||
return Py_None;
|
|
||||||
}
|
|
||||||
PyDoc_STRVAR(sleeptaskw_doc,
|
|
||||||
"sleeptaskw(flag)\n\
|
|
||||||
\n\
|
|
||||||
Allow sleeps in taskwindows.");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* s.setsockopt() method.
|
/* s.setsockopt() method.
|
||||||
With an integer third argument, sets an integer option.
|
With an integer third argument, sets an integer option.
|
||||||
With a string third argument, sets an option from a buffer;
|
With a string third argument, sets an option from a buffer;
|
||||||
|
@ -2749,10 +2686,6 @@ static PyMethodDef sock_methods[] = {
|
||||||
setsockopt_doc},
|
setsockopt_doc},
|
||||||
{"shutdown", (PyCFunction)sock_shutdown, METH_O,
|
{"shutdown", (PyCFunction)sock_shutdown, METH_O,
|
||||||
shutdown_doc},
|
shutdown_doc},
|
||||||
#ifdef RISCOS
|
|
||||||
{"sleeptaskw", (PyCFunction)sock_sleeptaskw, METH_O,
|
|
||||||
sleeptaskw_doc},
|
|
||||||
#endif
|
|
||||||
{NULL, NULL} /* sentinel */
|
{NULL, NULL} /* sentinel */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -2963,11 +2896,7 @@ gethost_common(struct hostent *h, struct sockaddr *addr, int alen, int af)
|
||||||
|
|
||||||
if (h == NULL) {
|
if (h == NULL) {
|
||||||
/* Let's get real error message to return */
|
/* Let's get real error message to return */
|
||||||
#ifndef RISCOS
|
|
||||||
set_herror(h_errno);
|
set_herror(h_errno);
|
||||||
#else
|
|
||||||
PyErr_SetString(socket_error, "host not found");
|
|
||||||
#endif
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4016,24 +3945,6 @@ static PyMethodDef socket_methods[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#ifdef RISCOS
|
|
||||||
#define OS_INIT_DEFINED
|
|
||||||
|
|
||||||
static int
|
|
||||||
os_init(void)
|
|
||||||
{
|
|
||||||
_kernel_swi_regs r;
|
|
||||||
|
|
||||||
r.r[0] = 0;
|
|
||||||
_kernel_swi(0x43380, &r, &r);
|
|
||||||
taskwindow = r.r[0];
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* RISCOS */
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef MS_WINDOWS
|
#ifdef MS_WINDOWS
|
||||||
#define OS_INIT_DEFINED
|
#define OS_INIT_DEFINED
|
||||||
|
|
||||||
|
|
|
@ -87,10 +87,6 @@ static long main_thread;
|
||||||
#include <kernel/OS.h>
|
#include <kernel/OS.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef RISCOS
|
|
||||||
extern int riscos_sleep(double);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Forward declarations */
|
/* Forward declarations */
|
||||||
static int floatsleep(double);
|
static int floatsleep(double);
|
||||||
static double floattime(void);
|
static double floattime(void);
|
||||||
|
@ -983,14 +979,6 @@ floatsleep(double secs)
|
||||||
}
|
}
|
||||||
Py_END_ALLOW_THREADS
|
Py_END_ALLOW_THREADS
|
||||||
}
|
}
|
||||||
#elif defined(RISCOS)
|
|
||||||
if (secs <= 0.0)
|
|
||||||
return 0;
|
|
||||||
Py_BEGIN_ALLOW_THREADS
|
|
||||||
/* This sleep *CAN BE* interrupted. */
|
|
||||||
if ( riscos_sleep(secs) )
|
|
||||||
return -1;
|
|
||||||
Py_END_ALLOW_THREADS
|
|
||||||
#elif defined(PLAN9)
|
#elif defined(PLAN9)
|
||||||
{
|
{
|
||||||
double millisecs = secs * 1000.0;
|
double millisecs = secs * 1000.0;
|
||||||
|
|
|
@ -92,7 +92,6 @@ zipimporter_init(ZipImporter *self, PyObject *args, PyObject *kwds)
|
||||||
path = NULL;
|
path = NULL;
|
||||||
prefix = NULL;
|
prefix = NULL;
|
||||||
for (;;) {
|
for (;;) {
|
||||||
#ifndef RISCOS
|
|
||||||
struct stat statbuf;
|
struct stat statbuf;
|
||||||
int rv;
|
int rv;
|
||||||
|
|
||||||
|
@ -104,15 +103,6 @@ zipimporter_init(ZipImporter *self, PyObject *args, PyObject *kwds)
|
||||||
path = buf;
|
path = buf;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
if (object_exists(buf)) {
|
|
||||||
/* it exists */
|
|
||||||
if (isfile(buf))
|
|
||||||
/* it's a file */
|
|
||||||
path = buf;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
/* back up one path element */
|
/* back up one path element */
|
||||||
p = strrchr(buf, SEP);
|
p = strrchr(buf, SEP);
|
||||||
if (prefix != NULL)
|
if (prefix != NULL)
|
||||||
|
|
|
@ -74,7 +74,7 @@ Notes for some targets:
|
||||||
- zlib doesn't work on HP-UX 9.05 with some versions of /bin/cc. It works with
|
- zlib doesn't work on HP-UX 9.05 with some versions of /bin/cc. It works with
|
||||||
other compilers. Use "make test" to check your compiler.
|
other compilers. Use "make test" to check your compiler.
|
||||||
|
|
||||||
- gzdopen is not supported on RISCOS, BEOS and by some Mac compilers.
|
- gzdopen is not supported on BEOS and by some Mac compilers.
|
||||||
|
|
||||||
- For PalmOs, see http://palmzlib.sourceforge.net/
|
- For PalmOs, see http://palmzlib.sourceforge.net/
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# include <stdlib.h>
|
# include <stdlib.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(VMS) || defined(RISCOS)
|
#if defined(VMS)
|
||||||
# define TESTFILE "foo-gz"
|
# define TESTFILE "foo-gz"
|
||||||
#else
|
#else
|
||||||
# define TESTFILE "foo.gz"
|
# define TESTFILE "foo.gz"
|
||||||
|
|
|
@ -41,11 +41,6 @@
|
||||||
# define unlink delete
|
# define unlink delete
|
||||||
# define GZ_SUFFIX "-gz"
|
# define GZ_SUFFIX "-gz"
|
||||||
#endif
|
#endif
|
||||||
#ifdef RISCOS
|
|
||||||
# define unlink remove
|
|
||||||
# define GZ_SUFFIX "-gz"
|
|
||||||
# define fileno(file) file->__file
|
|
||||||
#endif
|
|
||||||
#if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os
|
#if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os
|
||||||
# include <unix.h> /* for fileno */
|
# include <unix.h> /* for fileno */
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -147,7 +147,7 @@ extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
|
||||||
# define OS_CODE 0x0f
|
# define OS_CODE 0x0f
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(_BEOS_) || defined(RISCOS)
|
#if defined(_BEOS_)
|
||||||
# define fdopen(fd,mode) NULL /* No fdopen() */
|
# define fdopen(fd,mode) NULL /* No fdopen() */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -9,10 +9,6 @@
|
||||||
#include "token.h"
|
#include "token.h"
|
||||||
#include "grammar.h"
|
#include "grammar.h"
|
||||||
|
|
||||||
#ifdef RISCOS
|
|
||||||
#include <unixlib.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
extern int Py_DebugFlag;
|
extern int Py_DebugFlag;
|
||||||
|
|
||||||
grammar *
|
grammar *
|
||||||
|
|
|
@ -126,11 +126,7 @@ intcatcher(int sig)
|
||||||
case 0:
|
case 0:
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
#ifdef RISCOS
|
|
||||||
fprintf(stderr, message);
|
|
||||||
#else
|
|
||||||
write(2, message, strlen(message));
|
write(2, message, strlen(message));
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
interrupted = 0;
|
interrupted = 0;
|
||||||
|
|
|
@ -29,10 +29,6 @@ static PyThread_type_lock _PyOS_ReadlineLock = NULL;
|
||||||
|
|
||||||
int (*PyOS_InputHook)(void) = NULL;
|
int (*PyOS_InputHook)(void) = NULL;
|
||||||
|
|
||||||
#ifdef RISCOS
|
|
||||||
int Py_RISCOSWimpFlag;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* This function restarts a fgets() after an EINTR error occurred
|
/* This function restarts a fgets() after an EINTR error occurred
|
||||||
except if PyOS_InterruptOccurred() returns true. */
|
except if PyOS_InterruptOccurred() returns true. */
|
||||||
|
|
||||||
|
@ -114,17 +110,8 @@ PyOS_StdioReadline(FILE *sys_stdin, FILE *sys_stdout, char *prompt)
|
||||||
if ((p = (char *)PyMem_MALLOC(n)) == NULL)
|
if ((p = (char *)PyMem_MALLOC(n)) == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
fflush(sys_stdout);
|
fflush(sys_stdout);
|
||||||
#ifndef RISCOS
|
|
||||||
if (prompt)
|
if (prompt)
|
||||||
fprintf(stderr, "%s", prompt);
|
fprintf(stderr, "%s", prompt);
|
||||||
#else
|
|
||||||
if (prompt) {
|
|
||||||
if(Py_RISCOSWimpFlag)
|
|
||||||
fprintf(stderr, "\x0cr%s\x0c", prompt);
|
|
||||||
else
|
|
||||||
fprintf(stderr, "%s", prompt);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
fflush(stderr);
|
fflush(stderr);
|
||||||
switch (my_fgets(p, (int)n, sys_stdin)) {
|
switch (my_fgets(p, (int)n, sys_stdin)) {
|
||||||
case 0: /* Normal case */
|
case 0: /* Normal case */
|
||||||
|
|
|
@ -8,10 +8,6 @@
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|
||||||
#ifdef RISCOS
|
|
||||||
#include "unixstuff.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* The default encoding used by the platform file system APIs
|
/* The default encoding used by the platform file system APIs
|
||||||
Can remain NULL for all platforms that don't have such a concept
|
Can remain NULL for all platforms that don't have such a concept
|
||||||
*/
|
*/
|
||||||
|
|
106
Python/import.c
106
Python/import.c
|
@ -94,13 +94,6 @@ struct _inittab *PyImport_Inittab = _PyImport_Inittab;
|
||||||
/* these tables define the module suffixes that Python recognizes */
|
/* these tables define the module suffixes that Python recognizes */
|
||||||
struct filedescr * _PyImport_Filetab = NULL;
|
struct filedescr * _PyImport_Filetab = NULL;
|
||||||
|
|
||||||
#ifdef RISCOS
|
|
||||||
static const struct filedescr _PyImport_StandardFiletab[] = {
|
|
||||||
{"/py", "U", PY_SOURCE},
|
|
||||||
{"/pyc", "rb", PY_COMPILED},
|
|
||||||
{0, 0}
|
|
||||||
};
|
|
||||||
#else
|
|
||||||
static const struct filedescr _PyImport_StandardFiletab[] = {
|
static const struct filedescr _PyImport_StandardFiletab[] = {
|
||||||
{".py", "U", PY_SOURCE},
|
{".py", "U", PY_SOURCE},
|
||||||
#ifdef MS_WINDOWS
|
#ifdef MS_WINDOWS
|
||||||
|
@ -109,7 +102,6 @@ static const struct filedescr _PyImport_StandardFiletab[] = {
|
||||||
{".pyc", "rb", PY_COMPILED},
|
{".pyc", "rb", PY_COMPILED},
|
||||||
{0, 0}
|
{0, 0}
|
||||||
};
|
};
|
||||||
#endif
|
|
||||||
|
|
||||||
static PyTypeObject NullImporterType; /* Forward reference */
|
static PyTypeObject NullImporterType; /* Forward reference */
|
||||||
|
|
||||||
|
@ -144,13 +136,8 @@ _PyImport_Init(void)
|
||||||
if (Py_OptimizeFlag) {
|
if (Py_OptimizeFlag) {
|
||||||
/* Replace ".pyc" with ".pyo" in _PyImport_Filetab */
|
/* Replace ".pyc" with ".pyo" in _PyImport_Filetab */
|
||||||
for (; filetab->suffix != NULL; filetab++) {
|
for (; filetab->suffix != NULL; filetab++) {
|
||||||
#ifndef RISCOS
|
|
||||||
if (strcmp(filetab->suffix, ".pyc") == 0)
|
if (strcmp(filetab->suffix, ".pyc") == 0)
|
||||||
filetab->suffix = ".pyo";
|
filetab->suffix = ".pyo";
|
||||||
#else
|
|
||||||
if (strcmp(filetab->suffix, "/pyc") == 0)
|
|
||||||
filetab->suffix = "/pyo";
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1131,9 +1118,7 @@ find_module(char *fullname, char *subname, PyObject *path, char *buf,
|
||||||
char *filemode;
|
char *filemode;
|
||||||
FILE *fp = NULL;
|
FILE *fp = NULL;
|
||||||
PyObject *path_hooks, *path_importer_cache;
|
PyObject *path_hooks, *path_importer_cache;
|
||||||
#ifndef RISCOS
|
|
||||||
struct stat statbuf;
|
struct stat statbuf;
|
||||||
#endif
|
|
||||||
static struct filedescr fd_frozen = {"", "", PY_FROZEN};
|
static struct filedescr fd_frozen = {"", "", PY_FROZEN};
|
||||||
static struct filedescr fd_builtin = {"", "", C_BUILTIN};
|
static struct filedescr fd_builtin = {"", "", C_BUILTIN};
|
||||||
static struct filedescr fd_package = {"", "", PKG_DIRECTORY};
|
static struct filedescr fd_package = {"", "", PKG_DIRECTORY};
|
||||||
|
@ -1326,25 +1311,6 @@ find_module(char *fullname, char *subname, PyObject *path, char *buf,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
/* XXX How are you going to test for directories? */
|
|
||||||
#ifdef RISCOS
|
|
||||||
if (isdir(buf) &&
|
|
||||||
case_ok(buf, len, namelen, name)) {
|
|
||||||
if (find_init_module(buf)) {
|
|
||||||
return &fd_package;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
char warnstr[MAXPATHLEN+80];
|
|
||||||
sprintf(warnstr, "Not importing directory "
|
|
||||||
"'%.*s': missing __init__.py",
|
|
||||||
MAXPATHLEN, buf);
|
|
||||||
if (PyErr_WarnEx(PyExc_ImportWarning,
|
|
||||||
warnstr, 1)) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
#if defined(PYOS_OS2)
|
#if defined(PYOS_OS2)
|
||||||
/* take a snapshot of the module spec for restoration
|
/* take a snapshot of the module spec for restoration
|
||||||
|
@ -1480,9 +1446,6 @@ PyAPI_FUNC(int) _PyImport_IsScript(struct filedescr * fd)
|
||||||
#define INCL_DOSERRORS
|
#define INCL_DOSERRORS
|
||||||
#define INCL_NOPMAPI
|
#define INCL_NOPMAPI
|
||||||
#include <os2.h>
|
#include <os2.h>
|
||||||
|
|
||||||
#elif defined(RISCOS)
|
|
||||||
#include "oslib/osfscontrol.h"
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -1568,31 +1531,6 @@ case_ok(char *buf, Py_ssize_t len, Py_ssize_t namelen, char *name)
|
||||||
}
|
}
|
||||||
return 0 ; /* Not found */
|
return 0 ; /* Not found */
|
||||||
|
|
||||||
/* RISC OS */
|
|
||||||
#elif defined(RISCOS)
|
|
||||||
char canon[MAXPATHLEN+1]; /* buffer for the canonical form of the path */
|
|
||||||
char buf2[MAXPATHLEN+2];
|
|
||||||
char *nameWithExt = buf+len-namelen;
|
|
||||||
int canonlen;
|
|
||||||
os_error *e;
|
|
||||||
|
|
||||||
if (Py_GETENV("PYTHONCASEOK") != NULL)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
/* workaround:
|
|
||||||
append wildcard, otherwise case of filename wouldn't be touched */
|
|
||||||
strcpy(buf2, buf);
|
|
||||||
strcat(buf2, "*");
|
|
||||||
|
|
||||||
e = xosfscontrol_canonicalise_path(buf2,canon,0,0,MAXPATHLEN+1,&canonlen);
|
|
||||||
canonlen = MAXPATHLEN+1-canonlen;
|
|
||||||
if (e || canonlen<=0 || canonlen>(MAXPATHLEN+1) )
|
|
||||||
return 0;
|
|
||||||
if (strcmp(nameWithExt, canon+canonlen-strlen(nameWithExt))==0)
|
|
||||||
return 1; /* match */
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/* OS/2 */
|
/* OS/2 */
|
||||||
#elif defined(PYOS_OS2)
|
#elif defined(PYOS_OS2)
|
||||||
HDIR hdir = 1;
|
HDIR hdir = 1;
|
||||||
|
@ -1668,38 +1606,6 @@ find_init_module(char *buf)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
#ifdef RISCOS
|
|
||||||
static int
|
|
||||||
find_init_module(buf)
|
|
||||||
char *buf;
|
|
||||||
{
|
|
||||||
int save_len = strlen(buf);
|
|
||||||
int i = save_len;
|
|
||||||
|
|
||||||
if (save_len + 13 >= MAXPATHLEN)
|
|
||||||
return 0;
|
|
||||||
buf[i++] = SEP;
|
|
||||||
strcpy(buf+i, "__init__/py");
|
|
||||||
if (isfile(buf)) {
|
|
||||||
buf[save_len] = '\0';
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Py_OptimizeFlag)
|
|
||||||
strcpy(buf+i, "o");
|
|
||||||
else
|
|
||||||
strcpy(buf+i, "c");
|
|
||||||
if (isfile(buf)) {
|
|
||||||
buf[save_len] = '\0';
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
buf[save_len] = '\0';
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif /*RISCOS*/
|
|
||||||
|
|
||||||
#endif /* HAVE_STAT */
|
#endif /* HAVE_STAT */
|
||||||
|
|
||||||
|
|
||||||
|
@ -3007,7 +2913,6 @@ NullImporter_init(NullImporter *self, PyObject *args, PyObject *kwds)
|
||||||
PyErr_SetString(PyExc_ImportError, "empty pathname");
|
PyErr_SetString(PyExc_ImportError, "empty pathname");
|
||||||
return -1;
|
return -1;
|
||||||
} else {
|
} else {
|
||||||
#ifndef RISCOS
|
|
||||||
struct stat statbuf;
|
struct stat statbuf;
|
||||||
int rv;
|
int rv;
|
||||||
|
|
||||||
|
@ -3021,17 +2926,6 @@ NullImporter_init(NullImporter *self, PyObject *args, PyObject *kwds)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
if (object_exists(path)) {
|
|
||||||
/* it exists */
|
|
||||||
if (isdir(path)) {
|
|
||||||
/* it's a directory */
|
|
||||||
PyErr_SetString(PyExc_ImportError,
|
|
||||||
"existing directory");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1290,11 +1290,7 @@ PySys_SetArgv(int argc, char **argv)
|
||||||
p = strrchr(argv0, SEP);
|
p = strrchr(argv0, SEP);
|
||||||
}
|
}
|
||||||
if (p != NULL) {
|
if (p != NULL) {
|
||||||
#ifndef RISCOS
|
|
||||||
n = p + 1 - argv0;
|
n = p + 1 - argv0;
|
||||||
#else /* don't include trailing separator */
|
|
||||||
n = p - argv0;
|
|
||||||
#endif /* RISCOS */
|
|
||||||
#if SEP == '/' /* Special case for Unix filename syntax */
|
#if SEP == '/' /* Special case for Unix filename syntax */
|
||||||
if (n > 1)
|
if (n > 1)
|
||||||
n--; /* Drop trailing separator */
|
n--; /* Drop trailing separator */
|
||||||
|
|
1
README
1
README
|
@ -1248,7 +1248,6 @@ PCbuild/ Build directory for Microsoft Visual C++
|
||||||
Parser/ The parser and tokenizer and their input handling
|
Parser/ The parser and tokenizer and their input handling
|
||||||
Python/ The byte-compiler and interpreter
|
Python/ The byte-compiler and interpreter
|
||||||
README The file you're reading now
|
README The file you're reading now
|
||||||
RISCOS/ Files specific to RISC OS port
|
|
||||||
Tools/ Some useful programs written in Python
|
Tools/ Some useful programs written in Python
|
||||||
pyconfig.h.in Source from which pyconfig.h is created (GNU autoheader output)
|
pyconfig.h.in Source from which pyconfig.h is created (GNU autoheader output)
|
||||||
configure Configuration shell script (GNU autoconf output)
|
configure Configuration shell script (GNU autoconf output)
|
||||||
|
|
445
RISCOS/Makefile
445
RISCOS/Makefile
|
@ -1,445 +0,0 @@
|
||||||
# RISC OS Python
|
|
||||||
LIBSROOT = $.AcornC_C++.Libraries
|
|
||||||
|
|
||||||
# You may need to change some of the following
|
|
||||||
OSLIB = $(LIBSROOT).OSLib
|
|
||||||
CLIB = $(LIBSROOT).clib
|
|
||||||
TCPIPLIB = $(LIBSROOT).TCPIPLibs
|
|
||||||
DLKLIB = $(LIBSROOT).dlk
|
|
||||||
ZLIB = $(LIBSROOT).zlib
|
|
||||||
BZLIB = $(LIBSROOT).bzlib
|
|
||||||
EXPAT = $(LIBSROOT).expat.lib
|
|
||||||
|
|
||||||
OBJSCAN = $(DLKLIB).objscan
|
|
||||||
MAKEDLK = $(DLKLIB).makedlk
|
|
||||||
|
|
||||||
# change from time to time (don't forget to change !Boot also)
|
|
||||||
TARGET=Python23
|
|
||||||
BUILD=40
|
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# You shouldn't need to change anything below this line
|
|
||||||
#
|
|
||||||
DLKFLAG= -DDLK
|
|
||||||
DLKOBJS = $(DLKLIB).o.dlk_load @.o.linktab
|
|
||||||
|
|
||||||
HEADERS = @,$(TCPIPLIB),@.^.Include,@.^.Modules,@.^.Objects,@.^.Python,$(CLIB),$(OSLIB),$(DLKLIB)
|
|
||||||
|
|
||||||
CFLAGS = -c $(DLKFLAG) -DRISCOS -DHAVE_CONFIG_H -wadP -throwback -APCS 3/32bit/fpe3
|
|
||||||
|
|
||||||
CC = cc $(CFLAGS) -j$(HEADERS)
|
|
||||||
CCEXPAT = cc $(CFLAGS) -j$(HEADERS),$(EXPAT) -DHAVE_EXPAT_H
|
|
||||||
|
|
||||||
LINK = link
|
|
||||||
LINKFLAGS = -aif #-NOUNUSED #-d
|
|
||||||
LOADLIBS = $(TCPIPLIB).o.unixlib $(TCPIPLIB).o.inetlib $(TCPIPLIB).o.socklib $(CLIB).o.Stubs $(OSLIB).o.OSLib32 $(DLKOBJS)
|
|
||||||
|
|
||||||
LIBFILE = libfile -c
|
|
||||||
|
|
||||||
|
|
||||||
.c.o :
|
|
||||||
$(CC) -o $@ $*.c
|
|
||||||
|
|
||||||
MAIN_PYTHON =\
|
|
||||||
@.^.Modules.o.python
|
|
||||||
|
|
||||||
LIB_PYTHON =\
|
|
||||||
@.^.LibPython
|
|
||||||
|
|
||||||
# code for main Python binary
|
|
||||||
MODULES_STATIC =\
|
|
||||||
@.^.Modules.o.main\
|
|
||||||
@.Modules.o.config\
|
|
||||||
@.^.Modules.o.getbuildinfo\
|
|
||||||
@.Modules.o.getpath_riscos\
|
|
||||||
@.Modules.o.riscosmodule\
|
|
||||||
@.^.Modules.o.gcmodule
|
|
||||||
|
|
||||||
|
|
||||||
# dynamic Modules
|
|
||||||
MODULES_DYNAMIC =\
|
|
||||||
@.^.Lib.array/pyd\
|
|
||||||
@.^.Lib.audioop/pyd\
|
|
||||||
@.^.Lib.binascii/pyd\
|
|
||||||
@.^.Lib.bz2/pyd\
|
|
||||||
@.^.Lib.cmath/pyd\
|
|
||||||
@.^.Lib.cPickle/pyd\
|
|
||||||
@.^.Lib.cStringIO/pyd\
|
|
||||||
@.^.Lib.datetime/pyd\
|
|
||||||
@.^.Lib.errno/pyd\
|
|
||||||
@.^.Lib.imageop/pyd\
|
|
||||||
@.^.Lib.itertools/pyd\
|
|
||||||
@.^.Lib.math/pyd\
|
|
||||||
@.^.Lib.md5/pyd\
|
|
||||||
@.^.Lib.operator/pyd\
|
|
||||||
@.^.Lib.parser/pyd\
|
|
||||||
@.^.Lib.rgbimg/pyd\
|
|
||||||
@.^.Lib.sha/pyd\
|
|
||||||
@.^.Lib.signal/pyd\
|
|
||||||
@.^.Lib.struct/pyd\
|
|
||||||
@.^.Lib.time/pyd\
|
|
||||||
@.^.Lib._locale/pyd\
|
|
||||||
@.^.Lib.zlib/pyd\
|
|
||||||
@.^.Lib.select/pyd\
|
|
||||||
@.^.Lib._socket/pyd\
|
|
||||||
@.^.Lib._codecs/pyd\
|
|
||||||
@.^.Lib._weakref/pyd\
|
|
||||||
@.^.Lib._testcapi/pyd\
|
|
||||||
@.^.Lib.unicodedata/pyd\
|
|
||||||
@.^.Lib.pyexpat/pyd\
|
|
||||||
@.^.Lib.plat-riscos.drawf/pyd\
|
|
||||||
@.^.Lib.plat-riscos.swi/pyd\
|
|
||||||
@.^.Lib._sre/pyd\
|
|
||||||
@.^.Lib.xxsubtype/pyd\
|
|
||||||
@.^.Lib._symtable/pyd\
|
|
||||||
@.^.Lib._random/pyd\
|
|
||||||
@.^.Lib.zipimport/pyd\
|
|
||||||
@.^.Lib._csv/pyd
|
|
||||||
|
|
||||||
|
|
||||||
OBJECTS_PYTHON =\
|
|
||||||
@.^.Python.o.traceback\
|
|
||||||
@.^.Python.o.sysmodule\
|
|
||||||
@.^.Python.o.structmember\
|
|
||||||
@.^.Python.o.strdup\
|
|
||||||
@.^.Python.o.sigcheck\
|
|
||||||
@.^.Python.o.pythonrun\
|
|
||||||
@.^.Python.o.pystate\
|
|
||||||
@.^.Python.o.pyfpe\
|
|
||||||
@.^.Python.o.mystrtoul\
|
|
||||||
@.^.Python.o.mysnprintf\
|
|
||||||
@.^.Python.o.modsupport\
|
|
||||||
@.^.Python.o.marshal\
|
|
||||||
@.^.Python.o.importdl\
|
|
||||||
@.^.Python.o.import\
|
|
||||||
@.^.Python.o.graminit\
|
|
||||||
@.^.Python.o.getversion\
|
|
||||||
@.^.Python.o.getplatform\
|
|
||||||
@.^.Python.o.getopt\
|
|
||||||
@.^.Python.o.getcopyright\
|
|
||||||
@.^.Python.o.getcompiler\
|
|
||||||
@.^.Python.o.getargs\
|
|
||||||
@.^.Python.o.frozenmain\
|
|
||||||
@.^.Python.o.frozen\
|
|
||||||
@.^.Python.o.errors\
|
|
||||||
@.^.Python.o.compile\
|
|
||||||
@.^.Python.o.ceval\
|
|
||||||
@.^.Python.o.bltinmodule\
|
|
||||||
@.^.Python.o.exceptions\
|
|
||||||
@.^.Python.o.codecs\
|
|
||||||
@.^.Python.o.symtable\
|
|
||||||
@.^.Python.o.future
|
|
||||||
|
|
||||||
|
|
||||||
OBJECTS_RISCOS = \
|
|
||||||
@.Python.o.dynload_riscos\
|
|
||||||
@.Python.o.getcwd_riscos\
|
|
||||||
@.Python.o.getmtime_riscos\
|
|
||||||
@.o.unixstuff
|
|
||||||
|
|
||||||
|
|
||||||
OBJECTS_OBJECTS =\
|
|
||||||
@.^.Objects.o.typeobject\
|
|
||||||
@.^.Objects.o.tupleobject\
|
|
||||||
@.^.Objects.o.stringobject\
|
|
||||||
@.^.Objects.o.sliceobject\
|
|
||||||
@.^.Objects.o.rangeobject\
|
|
||||||
@.^.Objects.o.object\
|
|
||||||
@.^.Objects.o.obmalloc\
|
|
||||||
@.^.Objects.o.moduleobject\
|
|
||||||
@.^.Objects.o.methodobject\
|
|
||||||
@.^.Objects.o.longobject\
|
|
||||||
@.^.Objects.o.listobject\
|
|
||||||
@.^.Objects.o.boolobject\
|
|
||||||
@.^.Objects.o.iterobject\
|
|
||||||
@.^.Objects.o.funcobject\
|
|
||||||
@.^.Objects.o.frameobject\
|
|
||||||
@.^.Objects.o.floatobject\
|
|
||||||
@.^.Objects.o.fileobject\
|
|
||||||
@.^.Objects.o.enumobject\
|
|
||||||
@.^.Objects.o.dictobject\
|
|
||||||
@.^.Objects.o.complexobject\
|
|
||||||
@.^.Objects.o.cobject\
|
|
||||||
@.^.Objects.o.classobject\
|
|
||||||
@.^.Objects.o.cellobject\
|
|
||||||
@.^.Objects.o.bufferobject\
|
|
||||||
@.^.Objects.o.abstract\
|
|
||||||
@.^.Objects.o.unicodectype\
|
|
||||||
@.^.Objects.o.unicodeobject\
|
|
||||||
@.^.Objects.o.descrobject\
|
|
||||||
@.^.Objects.o.weakrefobject\
|
|
||||||
@.^.Objects.o.structseq
|
|
||||||
|
|
||||||
|
|
||||||
OBJECTS_PARSER =\
|
|
||||||
@.^.Parser.o.tokenizer\
|
|
||||||
@.^.Parser.o.printgrammar\
|
|
||||||
@.^.Parser.o.parsetok\
|
|
||||||
@.^.Parser.o.parser\
|
|
||||||
@.^.Parser.o.node\
|
|
||||||
@.^.Parser.o.myreadline\
|
|
||||||
@.^.Parser.o.metagrammar\
|
|
||||||
@.^.Parser.o.listnode\
|
|
||||||
@.^.Parser.o.intrcheck\
|
|
||||||
@.^.Parser.o.grammar1\
|
|
||||||
@.^.Parser.o.grammar\
|
|
||||||
@.^.Parser.o.firstsets\
|
|
||||||
@.^.Parser.o.bitset\
|
|
||||||
@.^.Parser.o.acceler
|
|
||||||
|
|
||||||
SUPPORT_FILES = @.^.!Boot @.^.!Run @.^.!Sprites @.^.!Sprites22 @.^.AddToPath
|
|
||||||
|
|
||||||
OBJECTS = $(OBJECTS_PYTHON) $(OBJECTS_PARSER) $(MODULES_STATIC) $(OBJECTS_OBJECTS) $(OBJECTS_RISCOS)
|
|
||||||
|
|
||||||
|
|
||||||
all: @.^.$(TARGET) $(MODULES_DYNAMIC) $(SUPPORT_FILES)
|
|
||||||
|
|
||||||
@.^.Modules.o.getbuildinfo: @.^.Modules.c.getbuildinfo
|
|
||||||
$(CC) -DBUILD=$(BUILD) -o @.^.Modules.o.getbuildinfo @.^.Modules.c.getbuildinfo
|
|
||||||
|
|
||||||
|
|
||||||
$(LIB_PYTHON): $(OBJECTS)
|
|
||||||
$(LIBFILE) $(LIB_PYTHON) $(OBJECTS)
|
|
||||||
|
|
||||||
@.^.$(TARGET): o.linktab $(MAIN_PYTHON) $(LIB_PYTHON)
|
|
||||||
$(LINK) -o @.^.$(TARGET) $(MAIN_PYTHON) @.^.LibPython $(LOADLIBS)
|
|
||||||
|
|
||||||
|
|
||||||
#########################################################################
|
|
||||||
# RISC OS support files
|
|
||||||
#
|
|
||||||
@.^.!Boot: support.!Boot
|
|
||||||
copy support.!Boot @.^.!Boot ~C~VF
|
|
||||||
settype @.^.!Boot feb
|
|
||||||
@.^.!Run: support.!Run
|
|
||||||
copy support.!Run @.^.!Run ~C~VF
|
|
||||||
settype @.^.!Run feb
|
|
||||||
@.^.!Sprites: support.!Sprites
|
|
||||||
copy support.!Sprites @.^.!Sprites ~C~VF
|
|
||||||
settype @.^.!Sprites ff9
|
|
||||||
@.^.!Sprites22: support.!Sprites22
|
|
||||||
copy support.!Sprites22 @.^.!Sprites22 ~C~VF
|
|
||||||
settype @.^.!Sprites22 ff9
|
|
||||||
@.^.AddToPath: support.AddToPath
|
|
||||||
copy support.AddToPath @.^.AddToPath ~C~VF
|
|
||||||
settype @.^.AddToPath ffc
|
|
||||||
|
|
||||||
|
|
||||||
#########################################################################
|
|
||||||
# Dynamic Modules
|
|
||||||
#
|
|
||||||
@.^.Lib.array/pyd: @.^.Modules.o.arraymodule s.linktab
|
|
||||||
$(MAKEDLK) -d @.^.Lib.array/pyd -s s.linktab -o @.^.Modules.o.arraymodule -e initarray
|
|
||||||
|
|
||||||
@.^.Lib.audioop/pyd: @.^.Modules.o.audioop # s.linktab
|
|
||||||
$(MAKEDLK) -d @.^.Lib.audioop/pyd -s s.linktab -o @.^.Modules.o.audioop -e initaudioop
|
|
||||||
|
|
||||||
@.^.Lib.binascii/pyd: @.^.Modules.o.binascii s.linktab
|
|
||||||
$(MAKEDLK) -d @.^.Lib.binascii/pyd -s s.linktab -o @.^.Modules.o.binascii -e initbinascii
|
|
||||||
|
|
||||||
@.^.Lib.cmath/pyd: @.^.Modules.o.cmathmodule s.linktab
|
|
||||||
$(MAKEDLK) -d @.^.Lib.cmath/pyd -s s.linktab -o @.^.Modules.o.cmathmodule -e initcmath
|
|
||||||
|
|
||||||
@.^.Lib.cPickle/pyd: @.^.Modules.o.cPickle s.linktab
|
|
||||||
$(MAKEDLK) -d @.^.Lib.cPickle/pyd -s s.linktab -o @.^.Modules.o.cPickle -e initcPickle
|
|
||||||
|
|
||||||
@.^.Lib.cStringIO/pyd: @.^.Modules.o.cStringIO s.linktab
|
|
||||||
$(MAKEDLK) -d @.^.Lib.cStringIO/pyd -s s.linktab -o @.^.Modules.o.cStringIO -e initcStringIO
|
|
||||||
|
|
||||||
@.^.Lib._csv/pyd: @.^.Modules.o._csv s.linktab
|
|
||||||
$(MAKEDLK) -d @.^.Lib._csv/pyd -s s.linktab -o @.^.Modules.o._csv -e init_csv
|
|
||||||
|
|
||||||
@.^.Lib.plat-riscos.drawf/pyd: Modules.o.drawfmodule #s.linktab
|
|
||||||
$(LINK) -aof -o Modules.o.drawflink Modules.o.drawfmodule $(OSLIB).o.OSLIB32
|
|
||||||
$(MAKEDLK) -d @.^.Lib.plat-riscos.drawf/pyd -s s.linktab -o Modules.o.drawflink -e initdrawf
|
|
||||||
|
|
||||||
@.^.Lib.datetime/pyd: @.^.Modules.o.datetimemodule s.linktab
|
|
||||||
$(MAKEDLK) -d @.^.Lib.datetime/pyd -s s.linktab -o @.^.Modules.o.datetimemodule -e initdatetime
|
|
||||||
|
|
||||||
@.^.Lib.errno/pyd: @.^.Modules.o.errnomodule #s.linktab
|
|
||||||
$(MAKEDLK) -d @.^.Lib.errno/pyd -s s.linktab -o @.^.Modules.o.errnomodule -e initerrno
|
|
||||||
|
|
||||||
@.^.Lib.imageop/pyd: @.^.Modules.o.imageop s.linktab
|
|
||||||
$(MAKEDLK) -d @.^.Lib.imageop/pyd -s s.linktab -o @.^.Modules.o.imageop -e initimageop
|
|
||||||
|
|
||||||
@.^.Lib.itertools/pyd: @.^.Modules.o.itertoolsmodule s.linktab
|
|
||||||
$(MAKEDLK) -d @.^.Lib.itertools/pyd -s s.linktab -o @.^.Modules.o.itertoolsmodule -e inititertools
|
|
||||||
|
|
||||||
@.^.Lib.math/pyd: @.^.Modules.o.mathmodule s.linktab
|
|
||||||
$(MAKEDLK) -d @.^.Lib.math/pyd -s s.linktab -o @.^.Modules.o.mathmodule -e initmath
|
|
||||||
|
|
||||||
@.^.Lib.mmap/pyd: @.^.Modules.o.mmapmodule s.linktab
|
|
||||||
$(MAKEDLK) -d @.^.Lib.mmap/pyd -s s.linktab -o @.^.Modules.o.mmapmodule -e initmmap
|
|
||||||
|
|
||||||
@.^.Lib.md5/pyd: @.^.Modules.o.md5c @.^.Modules.o.md5module s.linktab
|
|
||||||
$(LINK) -aof -o @.^.Modules.o.md5link @.^.Modules.o.md5c @.^.Modules.o.md5module
|
|
||||||
$(MAKEDLK) -d @.^.Lib.md5/pyd -s s.linktab -o @.^.Modules.o.md5link -e initmd5
|
|
||||||
|
|
||||||
@.^.Lib.operator/pyd: @.^.Modules.o.operator s.linktab
|
|
||||||
$(MAKEDLK) -d @.^.Lib.operator/pyd -s s.linktab -o @.^.Modules.o.operator -e initoperator
|
|
||||||
|
|
||||||
@.^.Lib.parser/pyd: @.^.Modules.o.parsermodule s.linktab
|
|
||||||
$(MAKEDLK) -d @.^.Lib.parser/pyd -s s.linktab -o @.^.Modules.o.parsermodule -e initparser
|
|
||||||
|
|
||||||
@.^.Lib.rgbimg/pyd: @.^.Modules.o.rgbimgmodule s.linktab
|
|
||||||
$(MAKEDLK) -d @.^.Lib.rgbimg/pyd -s s.linktab -o @.^.Modules.o.rgbimgmodule -e initrgbimg
|
|
||||||
|
|
||||||
@.^.Lib.sha/pyd: @.^.Modules.o.shamodule s.linktab
|
|
||||||
$(MAKEDLK) -d @.^.Lib.sha/pyd -s s.linktab -o @.^.Modules.o.shamodule -e initsha
|
|
||||||
|
|
||||||
@.^.Lib.signal/pyd: @.^.Modules.o.signalmodule s.linktab
|
|
||||||
$(MAKEDLK) -d @.^.Lib.signal/pyd -s s.linktab -o @.^.Modules.o.signalmodule -e initsignal
|
|
||||||
|
|
||||||
@.^.Lib.struct/pyd: @.^.Modules.o.structmodule s.linktab
|
|
||||||
$(MAKEDLK) -d @.^.Lib.struct/pyd -s s.linktab -o @.^.Modules.o.structmodule -e initstruct
|
|
||||||
|
|
||||||
@.^.Lib.plat-riscos.swi/pyd: Modules.o.swimodule s.linktab
|
|
||||||
$(LINK) -aof -o Modules.o.swilink Modules.o.swimodule $(OSLIB).o.OSLIB32
|
|
||||||
$(MAKEDLK) -d @.^.Lib.plat-riscos.swi/pyd -s s.linktab -o Modules.o.swilink -e initswi
|
|
||||||
|
|
||||||
@.^.Lib._locale/pyd: @.^.Modules.o._localemodule s.linktab
|
|
||||||
$(MAKEDLK) -d @.^.Lib._locale/pyd -s s.linktab -o @.^.Modules.o._localemodule -e init_locale
|
|
||||||
|
|
||||||
@.^.Lib._sre/pyd: @.^.Modules.o._sre s.linktab
|
|
||||||
$(MAKEDLK) -d @.^.Lib._sre/pyd -s s.linktab -o @.^.Modules.o._sre -e init_sre
|
|
||||||
|
|
||||||
@.^.Lib._codecs/pyd: @.^.Modules.o._codecsmodule s.linktab
|
|
||||||
$(MAKEDLK) -d @.^.Lib._codecs/pyd -s s.linktab -o @.^.Modules.o._codecsmodule -e init_codecs
|
|
||||||
|
|
||||||
@.^.Lib._weakref/pyd: @.^.Modules.o._weakref s.linktab
|
|
||||||
$(MAKEDLK) -d @.^.Lib._weakref/pyd -s s.linktab -o @.^.Modules.o._weakref -e init_weakref
|
|
||||||
|
|
||||||
@.^.Lib._testcapi/pyd: @.^.Modules.o._testcapimodule s.linktab
|
|
||||||
$(MAKEDLK) -d @.^.Lib._testcapi/pyd -s s.linktab -o @.^.Modules.o._testcapimodule -e init_testcapi
|
|
||||||
|
|
||||||
@.^.Lib.unicodedata/pyd: @.^.Modules.o.unicodedata s.linktab
|
|
||||||
$(MAKEDLK) -d @.^.Lib.unicodedata/pyd -s s.linktab -o @.^.Modules.o.unicodedata -e initunicodedata
|
|
||||||
|
|
||||||
@.^.Lib.xxsubtype/pyd: @.^.Modules.o.xxsubtype s.linktab
|
|
||||||
$(MAKEDLK) -d @.^.Lib.xxsubtype/pyd -s s.linktab -o @.^.Modules.o.xxsubtype -e initxxsubtype
|
|
||||||
|
|
||||||
@.^.Lib._random/pyd: @.^.Modules.o._randommodule s.linktab
|
|
||||||
$(MAKEDLK) -d @.^.Lib._random/pyd -s s.linktab -o @.^.Modules.o._randommodule -e init_random
|
|
||||||
|
|
||||||
@.^.Lib._symtable/pyd: @.^.Modules.o.symtablemodule s.linktab
|
|
||||||
$(MAKEDLK) -d @.^.Lib._symtable/pyd -s s.linktab -o @.^.Modules.o.symtablemodule -e init_symtable
|
|
||||||
|
|
||||||
|
|
||||||
############################################################################
|
|
||||||
# Dynamic Modules with other dependencies
|
|
||||||
#
|
|
||||||
@.^.Lib.select/pyd: @.^.Modules.o.selectmodule s.linktab
|
|
||||||
$(LINK) -aof -o @.^.Modules.o.selectlink @.^.Modules.o.selectmodule $(TCPIPLIB).o.socklib5
|
|
||||||
$(MAKEDLK) -d @.^.Lib.select/pyd -s s.linktab -o @.^.Modules.o.selectlink -e initselect
|
|
||||||
|
|
||||||
@.^.Modules.o.selectmodule: @.^.Modules.c.selectmodule
|
|
||||||
$(CC) -I$(TCPIPLIB).include -o $@ @.^.Modules.c.selectmodule
|
|
||||||
|
|
||||||
@.^.Lib._socket/pyd: @.^.Modules.o.socketmodule s.linktab
|
|
||||||
$(LINK) -aof -o @.^.Modules.o._socketlink @.^.Modules.o.socketmodule $(TCPIPLIB).o.inetlib $(TCPIPLIB).o.unixlib $(TCPIPLIB).o.socklib5
|
|
||||||
$(MAKEDLK) -d @.^.Lib._socket/pyd -s s.linktab -o @.^.Modules.o._socketlink -e init_socket
|
|
||||||
|
|
||||||
@.^.Modules.o.socketmodule: @.^.Modules.c.socketmodule
|
|
||||||
$(CC) -I$(TCPIPLIB).include -o $@ @.^.Modules.c.socketmodule
|
|
||||||
|
|
||||||
|
|
||||||
@.^.Lib.zlib/pyd: @.^.Modules.o.zlibmodule s.linktab
|
|
||||||
$(LINK) -aof -o @.^.Modules.o.zliblink @.^.Modules.o.zlibmodule $(ZLIB).zlib
|
|
||||||
$(MAKEDLK) -d @.^.Lib.zlib/pyd -s s.linktab -o @.^.Modules.o.zliblink -e initzlib
|
|
||||||
|
|
||||||
@.^.Modules.o.zlibmodule: @.^.Modules.c.zlibmodule
|
|
||||||
$(CC) -I$(ZLIB) -o $@ @.^.Modules.c.zlibmodule
|
|
||||||
|
|
||||||
@.^.Lib.bz2/pyd: @.^.Modules.o.bz2module s.linktab
|
|
||||||
$(LINK) -aof -o @.^.Modules.o.bz2link @.^.Modules.o.bz2module $(BZLIB).bzlib
|
|
||||||
$(MAKEDLK) -d @.^.Lib.bz2/pyd -s s.linktab -o @.^.Modules.o.bz2link -e initbz2
|
|
||||||
|
|
||||||
@.^.Modules.o.bz2module: @.^.Modules.c.bz2module
|
|
||||||
$(CC) -I$(BZLIB) -o $@ @.^.Modules.c.bz2module
|
|
||||||
|
|
||||||
@.^.Lib.time/pyd: @.^.Modules.o.timemodule s.linktab @.o.sleep
|
|
||||||
$(LINK) -aof -o @.^.Modules.o.timelink @.^.Modules.o.timemodule @.o.sleep $(OSLIB).o.OSLib32
|
|
||||||
$(MAKEDLK) -d @.^.Lib.time/pyd -s s.linktab -o @.^.Modules.o.timelink -e inittime
|
|
||||||
|
|
||||||
#@.^.Lib.time/pyd: @.Modules.o.timemodule s.linktab
|
|
||||||
# $(LINK) -aof -o @.Modules.o.timelink @.Modules.o.timemodule $(OSLIB).o.OSLib32
|
|
||||||
# $(MAKEDLK) -d @.^.Lib.time/pyd -s s.linktab -o @.Modules.o.timelink -e inittime
|
|
||||||
|
|
||||||
|
|
||||||
@.^.Lib.pyexpat/pyd: @.^.Modules.o.pyexpat s.linktab
|
|
||||||
$(LINK) -aof -o @.^.Modules.o.pyexpatlink @.^.Modules.o.pyexpat $(EXPAT).expat_lib
|
|
||||||
$(MAKEDLK) -d @.^.Lib.pyexpat/pyd -s s.linktab -o @.^.Modules.o.pyexpatlink -e initpyexpat
|
|
||||||
|
|
||||||
@.^.Modules.o.pyexpat: @.^.Modules.c.pyexpat
|
|
||||||
$(CCEXPAT) -o $@ @.^.Modules.c.pyexpat
|
|
||||||
|
|
||||||
@.^.Lib.zipimport/pyd: @.^.Modules.o.zipimport s.linktab
|
|
||||||
$(LINK) -aof -o @.^.Modules.o.zipimportlink @.^.Modules.o.zipimport o.unixstuff $(OSLIB).o.OSLib32
|
|
||||||
$(MAKEDLK) -d @.^.Lib.zipimport/pyd -s s.linktab -o @.^.Modules.o.zipimportlink -e initzipimport
|
|
||||||
|
|
||||||
|
|
||||||
##########################################################################
|
|
||||||
# dynamic linking symbol table
|
|
||||||
#
|
|
||||||
o.linktab: s.linktab
|
|
||||||
ObjAsm -APCS 3/32bit s.linktab o.linktab
|
|
||||||
|
|
||||||
s.linktab: $(OBJECTS)
|
|
||||||
$(OBJSCAN) -s s.linktab -o $(OBJECTS) $(clib).o.stubs
|
|
||||||
|
|
||||||
##########################################################################
|
|
||||||
# special targets
|
|
||||||
#
|
|
||||||
libclean:
|
|
||||||
-wipe @.^.Lib.*/pyc ~C~V
|
|
||||||
-wipe @.^.Lib.*/pyo ~C~V
|
|
||||||
-wipe @.^.Lib.plat-riscos.*/pyc ~C~V
|
|
||||||
-wipe @.^.Lib.plat-riscos.*/pyo ~C~V
|
|
||||||
-wipe @.^.Lib.test.*/pyc ~C~V
|
|
||||||
-wipe @.^.Lib.test.*/pyo ~C~V
|
|
||||||
-wipe @.^.Lib.encodings.*/pyc ~C~V
|
|
||||||
-wipe @.^.Lib.encodings.*/pyo ~C~V
|
|
||||||
-wipe @.^.Lib.curses.*/pyc ~C~V
|
|
||||||
-wipe @.^.Lib.curses.*/pyo ~C~V
|
|
||||||
-wipe @.^.Lib.xml.*/pyc ~C~V
|
|
||||||
-wipe @.^.Lib.xml.*/pyo ~C~V
|
|
||||||
-wipe @.^.Lib.xml.sax.*/pyc ~C~V
|
|
||||||
-wipe @.^.Lib.xml.sax.*/pyo ~C~V
|
|
||||||
-wipe @.^.Lib.xml.dom.*/pyc ~C~V
|
|
||||||
-wipe @.^.Lib.xml.dom.*/pyo ~C~V
|
|
||||||
-wipe @.^.Lib.xml.parsers.*/pyc ~C~V
|
|
||||||
-wipe @.^.Lib.xml.parsers.*/pyo ~C~V
|
|
||||||
|
|
||||||
clean: libclean
|
|
||||||
-wipe @.^.Modules.o.* ~C~V
|
|
||||||
-wipe @.^.Objects.o.* ~C~V
|
|
||||||
-wipe @.^.Parser.o.* ~C~V
|
|
||||||
-wipe @.^.Python.o.* ~C~V
|
|
||||||
-wipe @.Modules.o.* ~C~V
|
|
||||||
-wipe @.Python.o.* ~C~V
|
|
||||||
-wipe @.o.* ~C ~V
|
|
||||||
|
|
||||||
rebuild: clean clean-support
|
|
||||||
remove @.^.$(TARGET)
|
|
||||||
-wipe @.^.Lib.*/pyd ~C ~V
|
|
||||||
-wipe @.^.Lib.plat-riscos.*/pyd ~C~V
|
|
||||||
remove s.linktab
|
|
||||||
remove @.^.LibPython
|
|
||||||
|
|
||||||
clean-support:
|
|
||||||
-wipe @.^.!* ~C~V
|
|
||||||
remove @.^.AddToPath
|
|
||||||
|
|
||||||
cdirs:
|
|
||||||
cdir @.Modules.o
|
|
||||||
cdir @.Python.o
|
|
||||||
cdir @.s
|
|
||||||
cdir @.o
|
|
||||||
cdir @.^.Python.o
|
|
||||||
cdir @.^.Parser.o
|
|
||||||
cdir @.^.Objects.o
|
|
||||||
cdir @.^.Modules.o
|
|
||||||
|
|
||||||
|
|
||||||
# Dynamic dependencies:
|
|
|
@ -1,72 +0,0 @@
|
||||||
/* -*- C -*- ***********************************************
|
|
||||||
Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam,
|
|
||||||
The Netherlands.
|
|
||||||
|
|
||||||
All Rights Reserved
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and distribute this software and its
|
|
||||||
documentation for any purpose and without fee is hereby granted,
|
|
||||||
provided that the above copyright notice appear in all copies and that
|
|
||||||
both that copyright notice and this permission notice appear in
|
|
||||||
supporting documentation, and that the names of Stichting Mathematisch
|
|
||||||
Centrum or CWI or Corporation for National Research Initiatives or
|
|
||||||
CNRI not be used in advertising or publicity pertaining to
|
|
||||||
distribution of the software without specific, written prior
|
|
||||||
permission.
|
|
||||||
|
|
||||||
While CWI is the initial source for this software, a modified version
|
|
||||||
is made available by the Corporation for National Research Initiatives
|
|
||||||
(CNRI) at the Internet address ftp://ftp.python.org.
|
|
||||||
|
|
||||||
STICHTING MATHEMATISCH CENTRUM AND CNRI DISCLAIM ALL WARRANTIES WITH
|
|
||||||
REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH
|
|
||||||
CENTRUM OR CNRI BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
|
|
||||||
DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
|
|
||||||
PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
|
||||||
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
||||||
PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
|
|
||||||
******************************************************************/
|
|
||||||
|
|
||||||
/* Module configuration */
|
|
||||||
|
|
||||||
/* !!! !!! !!! This file is edited by the makesetup script !!! !!! !!! */
|
|
||||||
|
|
||||||
/* This file contains the table of built-in modules.
|
|
||||||
See init_builtin() in import.c. */
|
|
||||||
|
|
||||||
#include "Python.h"
|
|
||||||
|
|
||||||
|
|
||||||
/* -- ADDMODULE MARKER 1 -- */
|
|
||||||
|
|
||||||
extern void PyMarshal_Init(void);
|
|
||||||
extern void initimp(void);
|
|
||||||
extern void initgc(void);
|
|
||||||
extern void initriscos(void);
|
|
||||||
extern void initswi(void);
|
|
||||||
|
|
||||||
struct _inittab _PyImport_Inittab[] = {
|
|
||||||
|
|
||||||
{"riscos", initriscos},
|
|
||||||
|
|
||||||
/* -- ADDMODULE MARKER 2 -- */
|
|
||||||
|
|
||||||
/* This module "lives in" with marshal.c */
|
|
||||||
{"marshal", PyMarshal_Init},
|
|
||||||
|
|
||||||
/* This lives it with import.c */
|
|
||||||
{"imp", initimp},
|
|
||||||
|
|
||||||
/* These entries are here for sys.builtin_module_names */
|
|
||||||
{"__main__", NULL},
|
|
||||||
{"__builtin__", NULL},
|
|
||||||
{"sys", NULL},
|
|
||||||
|
|
||||||
/* This lives in gcmodule.c */
|
|
||||||
{"gc", initgc},
|
|
||||||
|
|
||||||
/* Sentinel */
|
|
||||||
{0, 0}
|
|
||||||
};
|
|
|
@ -1,664 +0,0 @@
|
||||||
/* drawf DrawFile functions */
|
|
||||||
|
|
||||||
#include "oslib/os.h"
|
|
||||||
#include "oslib/osfile.h"
|
|
||||||
#include "oslib/drawfile.h"
|
|
||||||
#include "Python.h"
|
|
||||||
|
|
||||||
#include <limits.h>
|
|
||||||
|
|
||||||
#define PyDrawF_Check(op) ((op)->ob_type == &PyDrawFType)
|
|
||||||
#define HDRSIZE 40
|
|
||||||
#define GRPHDRSIZE 36
|
|
||||||
#define DRAWTYPE 0xaff
|
|
||||||
#define NEXT(d) ((drawfile_object*)((char*)(d)+(d)->size))
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{ PyObject_HEAD
|
|
||||||
drawfile_diagram *drawf;
|
|
||||||
int size; /*length in bytes*/
|
|
||||||
int nobjs; /* no of objects */
|
|
||||||
} PyDrawFObject;
|
|
||||||
|
|
||||||
typedef struct dheader
|
|
||||||
{ char tag [4];
|
|
||||||
int major_version;
|
|
||||||
int minor_version;
|
|
||||||
char source [12];
|
|
||||||
os_box bbox;
|
|
||||||
} dheader;
|
|
||||||
|
|
||||||
static PyObject *DrawFError; /* Exception drawf.error */
|
|
||||||
static os_error *e;
|
|
||||||
static PyTypeObject PyDrawFType;
|
|
||||||
|
|
||||||
static dheader header=
|
|
||||||
{ {'D','r','a','w'},
|
|
||||||
201,0,
|
|
||||||
{'P','y','t','h','o','n',' ',' ',' ',' ',' ',' '},
|
|
||||||
{INT_MAX,INT_MAX,INT_MIN,INT_MIN}
|
|
||||||
};
|
|
||||||
|
|
||||||
static PyObject *drawf_oserror(void)
|
|
||||||
{ PyErr_SetString(DrawFError,e->errmess);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *drawf_error(char *s)
|
|
||||||
{ PyErr_SetString(DrawFError,s);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* DrawFile commands */
|
|
||||||
|
|
||||||
static void countobjs(PyDrawFObject *pd)
|
|
||||||
{ int k=0,q;
|
|
||||||
drawfile_diagram *dd=pd->drawf;
|
|
||||||
drawfile_object *d=dd->objects;
|
|
||||||
char *end=(char*)dd+pd->size;
|
|
||||||
pd->nobjs=-1;
|
|
||||||
while((char*)d<end)
|
|
||||||
{ k++;
|
|
||||||
q=d->size;
|
|
||||||
if(q<=0||q&3) return ;
|
|
||||||
d=NEXT(d);
|
|
||||||
}
|
|
||||||
if ((char*)d==end) pd->nobjs=k;
|
|
||||||
}
|
|
||||||
|
|
||||||
static drawfile_object *findobj(PyDrawFObject *pd,Py_ssize_t n)
|
|
||||||
{ drawfile_diagram *dd=pd->drawf;
|
|
||||||
drawfile_object *d=dd->objects;
|
|
||||||
for(;n>0;n--) d=NEXT(d);
|
|
||||||
return d;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyDrawFObject* new(int size)
|
|
||||||
{ PyDrawFObject *b=PyObject_NEW(PyDrawFObject,&PyDrawFType);
|
|
||||||
if(!b) return NULL;
|
|
||||||
size+=HDRSIZE;
|
|
||||||
b->drawf=malloc(size);
|
|
||||||
if(!b->drawf)
|
|
||||||
{ Py_DECREF(b);
|
|
||||||
return (PyDrawFObject*)PyErr_NoMemory();
|
|
||||||
}
|
|
||||||
b->size=size;
|
|
||||||
return b;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void extend(os_box *b,os_box *c)
|
|
||||||
{ if(b->x0>c->x0) b->x0=c->x0;
|
|
||||||
if(b->y0>c->y0) b->y0=c->y0;
|
|
||||||
if(b->x1<c->x1) b->x1=c->x1;
|
|
||||||
if(b->y1<c->y1) b->y1=c->y1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *DrawF_New(PyObject *self,PyObject *args)
|
|
||||||
{ PyDrawFObject *b;
|
|
||||||
if(!PyArg_ParseTuple(args,"")) return NULL;
|
|
||||||
b=new(0);
|
|
||||||
if(!b) return NULL;
|
|
||||||
*((dheader*)b->drawf)=header;
|
|
||||||
b->nobjs=0;
|
|
||||||
return (PyObject *)b;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *DrawF_Load(PyObject *self,PyObject *args)
|
|
||||||
{ int size;
|
|
||||||
char *fname;
|
|
||||||
PyDrawFObject *b;
|
|
||||||
fileswitch_object_type ot;
|
|
||||||
if(!PyArg_ParseTuple(args,"s",&fname)) return NULL;
|
|
||||||
e=xosfile_read_no_path(fname,&ot,0,0,&size,0);
|
|
||||||
if(e) return drawf_oserror();
|
|
||||||
size-=HDRSIZE;
|
|
||||||
if(ot!=osfile_IS_FILE||size<0||size&3) return drawf_error("Bad draw file");
|
|
||||||
b=new(size);
|
|
||||||
if(!b) return NULL;
|
|
||||||
e=xosfile_load_stamped_no_path(fname,(byte*)(b->drawf),0,0,0,0,0);
|
|
||||||
if(e)
|
|
||||||
{ Py_DECREF(b);
|
|
||||||
return drawf_oserror();
|
|
||||||
}
|
|
||||||
countobjs(b);
|
|
||||||
if(b->nobjs>=0) return (PyObject *)b;
|
|
||||||
Py_DECREF(b);
|
|
||||||
return drawf_error("Corrupt draw file");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static PyObject *DrawF_Save(PyDrawFObject *self,PyObject *arg)
|
|
||||||
{ char *fname;
|
|
||||||
if(!PyArg_ParseTuple(arg,"s",&fname)) return NULL;
|
|
||||||
e=xosfile_save_stamped(fname,DRAWTYPE,
|
|
||||||
(byte*)(self->drawf),(byte*)(self->drawf)+self->size);
|
|
||||||
if (e) return drawf_oserror();
|
|
||||||
Py_INCREF(Py_None);return Py_None;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *DrawF_Render(PyDrawFObject *self,PyObject *arg)
|
|
||||||
{ int flags,trans,clip,flat;
|
|
||||||
if(!PyArg_ParseTuple(arg,"iiii",&flags,&trans,&clip,&flat)) return NULL;
|
|
||||||
e=xdrawfile_render((drawfile_render_flags)flags,self->drawf,self->size,
|
|
||||||
(os_trfm*)trans,(os_box*)clip,flat);
|
|
||||||
if(e) return drawf_oserror();
|
|
||||||
Py_INCREF(Py_None);return Py_None;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *DrawF_Path(PyDrawFObject *self,PyObject *arg)
|
|
||||||
{ PyObject *pl;
|
|
||||||
PyObject *dp=0;
|
|
||||||
os_colour fill;
|
|
||||||
os_colour outline;
|
|
||||||
int width,start=0;
|
|
||||||
drawfile_path_style style;
|
|
||||||
int size=40;
|
|
||||||
int n,i,element_count;
|
|
||||||
drawfile_diagram *diag;
|
|
||||||
drawfile_object *dobj;
|
|
||||||
drawfile_path *dpath;
|
|
||||||
draw_path *thepath;
|
|
||||||
draw_line_style line_style;
|
|
||||||
draw_dash_pattern *dash_pattern=0;
|
|
||||||
os_box *box;
|
|
||||||
long *pe;
|
|
||||||
if(!PyArg_ParseTuple(arg,"O!(iiii)|O!i",&PyList_Type,&pl,(int*)&fill,
|
|
||||||
(int*)&outline,&width,(int*)&style,&PyTuple_Type,&dp,&start)) return NULL;
|
|
||||||
if(dp)
|
|
||||||
{ element_count=PyTuple_Size(dp);
|
|
||||||
size+=4*element_count+8;
|
|
||||||
style.flags|=drawfile_PATH_DASHED;
|
|
||||||
}
|
|
||||||
else style.flags&=~drawfile_PATH_DASHED;
|
|
||||||
n=PyList_Size(pl);
|
|
||||||
size+=4*n+8;
|
|
||||||
for(i=0;i<n;i++) if(!PyInt_Check(PyList_GetItem(pl,i))) size+=4;
|
|
||||||
diag=realloc(self->drawf,self->size+size);
|
|
||||||
if(!diag) return PyErr_NoMemory();
|
|
||||||
self->drawf=diag;
|
|
||||||
dobj=(drawfile_object*)((char*)diag+self->size);
|
|
||||||
dobj->type=drawfile_TYPE_PATH;
|
|
||||||
dobj->size=size;
|
|
||||||
dpath=&dobj->data.path;
|
|
||||||
self->size+=size;
|
|
||||||
self->nobjs++;
|
|
||||||
box=&dpath->bbox;
|
|
||||||
dpath->fill=fill;dpath->outline=outline;
|
|
||||||
dpath->width=width;dpath->style=style;
|
|
||||||
pe=(long*)&(dpath->path);
|
|
||||||
if(dp)
|
|
||||||
{ dash_pattern=&(((drawfile_path_with_pattern*)dpath)->pattern);
|
|
||||||
dash_pattern->start=start;
|
|
||||||
dash_pattern->element_count=element_count;
|
|
||||||
for(i=0;i<element_count;i++)
|
|
||||||
{ dash_pattern->elements[i]=(int)PyInt_AsLong(PyTuple_GetItem(dp,i));
|
|
||||||
}
|
|
||||||
pe+=element_count+2;
|
|
||||||
}
|
|
||||||
thepath=(draw_path*)pe;
|
|
||||||
*pe++=draw_MOVE_TO;
|
|
||||||
for(i=0;i<n;i++)
|
|
||||||
{ PyObject *p=PyList_GetItem(pl,i);
|
|
||||||
if(PyInt_Check(p))
|
|
||||||
*pe++=PyInt_AsLong(p);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
*pe++=PyInt_AsLong(PyTuple_GetItem(p,0));
|
|
||||||
*pe++=PyInt_AsLong(PyTuple_GetItem(p,1));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*pe=draw_END_PATH;
|
|
||||||
line_style.join_style=style.flags&3;
|
|
||||||
line_style.end_cap_style=(style.flags&3)>>2;
|
|
||||||
line_style.start_cap_style=(style.flags&3)>>4;
|
|
||||||
line_style.reserved=0;
|
|
||||||
line_style.mitre_limit=10;
|
|
||||||
line_style.start_cap_width=style.cap_width;
|
|
||||||
line_style.end_cap_width=style.cap_width;
|
|
||||||
line_style.start_cap_length=style.cap_length;
|
|
||||||
line_style.end_cap_length=style.cap_length;
|
|
||||||
e=xdraw_process_path(thepath,0x70000000,0,0,width,&line_style,dash_pattern,
|
|
||||||
(draw_output_path)((char*)box+0x80000000),0);
|
|
||||||
if(e) return drawf_oserror();
|
|
||||||
|
|
||||||
/* draw_process_path seems to have a bug:
|
|
||||||
If the bounding box size is zero, it returns 0x7FFFFFFF, ..., 0x80000000 instead of the
|
|
||||||
correct size. */
|
|
||||||
if (box->x0==0x7FFFFFFF)
|
|
||||||
{
|
|
||||||
/* path has zero extension, so forget it; it would be invisible anyway */
|
|
||||||
self->size-=size;
|
|
||||||
self->nobjs--;
|
|
||||||
diag=realloc(self->drawf,self->size);
|
|
||||||
if(!diag) return PyErr_NoMemory();
|
|
||||||
self->drawf=diag;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
extend(&(diag->bbox),box);
|
|
||||||
Py_INCREF(Py_None);return Py_None;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *DrawF_Text(PyDrawFObject *self,PyObject *arg)
|
|
||||||
{ os_colour fill,bg_hint;
|
|
||||||
drawfile_text_style style;
|
|
||||||
int xsize,ysize,x,y;
|
|
||||||
int size,len;
|
|
||||||
char *text;
|
|
||||||
drawfile_diagram *diag;
|
|
||||||
drawfile_object *dobj;
|
|
||||||
drawfile_text *dtext;
|
|
||||||
os_box *box;
|
|
||||||
if(!PyArg_ParseTuple(arg,"(ii)s(iiiii)",&x,&y,&text,
|
|
||||||
(int*)&fill,(int*)&bg_hint,(int*)&style,&xsize,&ysize)) return NULL;
|
|
||||||
len=strlen(text);
|
|
||||||
size=((len+4)&(~3))+52;
|
|
||||||
diag=realloc(self->drawf,self->size+size);
|
|
||||||
if(!diag) return PyErr_NoMemory();
|
|
||||||
self->drawf=diag;
|
|
||||||
dobj=(drawfile_object*)((char*)diag+self->size);
|
|
||||||
dobj->type=drawfile_TYPE_TEXT;
|
|
||||||
dobj->size=size;
|
|
||||||
dtext=&dobj->data.text;
|
|
||||||
self->size+=size;
|
|
||||||
self->nobjs++;
|
|
||||||
dtext->fill=fill;
|
|
||||||
dtext->bg_hint=bg_hint;
|
|
||||||
dtext->style=style;
|
|
||||||
dtext->xsize=xsize;
|
|
||||||
dtext->ysize=ysize;
|
|
||||||
dtext->base.x=x;
|
|
||||||
dtext->base.y=y;
|
|
||||||
memset(dtext->text,0,(len+4)&(~3));
|
|
||||||
sprintf(dtext->text,"%s",text);
|
|
||||||
box=&(dtext->bbox);
|
|
||||||
box->x0=x;box->y0=y;box->x1=x+len*xsize;box->y1=y+ysize;
|
|
||||||
extend(&(diag->bbox),box);
|
|
||||||
Py_INCREF(Py_None);return Py_None;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *DrawF_TText(PyDrawFObject *self,PyObject *arg)
|
|
||||||
{ os_colour fill,bg_hint;
|
|
||||||
drawfile_text_style style;
|
|
||||||
int xsize,ysize,x,y;
|
|
||||||
int t1,t2,t3,t4,t5,t6;
|
|
||||||
int size,len;
|
|
||||||
char *text;
|
|
||||||
drawfile_diagram *diag;
|
|
||||||
drawfile_object *dobj;
|
|
||||||
drawfile_trfm_text *dtext;
|
|
||||||
os_box *box;
|
|
||||||
t1=1<<16;t2=0;
|
|
||||||
t3=0;t4=1<<16;
|
|
||||||
t5=t6=0;
|
|
||||||
if(!PyArg_ParseTuple(arg,"(ii)s(iiiii)|(iiiiii)",&x,&y,&text,
|
|
||||||
(int*)&fill,(int*)&bg_hint,(int*)&style,&xsize,&ysize,&t1,&t2,&t3,&t4,&t5,&t6)) return NULL;
|
|
||||||
len=strlen(text);
|
|
||||||
size=((len+4)&(~3))+52+28;
|
|
||||||
diag=realloc(self->drawf,self->size+size);
|
|
||||||
if(!diag) return PyErr_NoMemory();
|
|
||||||
self->drawf=diag;
|
|
||||||
dobj=(drawfile_object*)((char*)diag+self->size);
|
|
||||||
dobj->type=drawfile_TYPE_TRFM_TEXT;
|
|
||||||
dobj->size=size;
|
|
||||||
dtext=&dobj->data.trfm_text;
|
|
||||||
self->size+=size;
|
|
||||||
self->nobjs++;
|
|
||||||
dtext->trfm.entries[0][0]=t1;
|
|
||||||
dtext->trfm.entries[0][1]=t2;
|
|
||||||
dtext->trfm.entries[1][0]=t3;
|
|
||||||
dtext->trfm.entries[1][1]=t4;
|
|
||||||
dtext->trfm.entries[2][0]=t5;
|
|
||||||
dtext->trfm.entries[2][1]=t6;
|
|
||||||
dtext->flags=0;
|
|
||||||
dtext->fill=fill;
|
|
||||||
dtext->bg_hint=bg_hint;
|
|
||||||
dtext->style=style;
|
|
||||||
dtext->xsize=xsize;
|
|
||||||
dtext->ysize=ysize;
|
|
||||||
dtext->base.x=x;
|
|
||||||
dtext->base.y=y;
|
|
||||||
memset(dtext->text,0,(len+4)&(~3));
|
|
||||||
sprintf(dtext->text,"%s",text);
|
|
||||||
box=&(dtext->bbox);
|
|
||||||
box->x0=x;box->y0=y;box->x1=x+len*xsize;box->y1=y+ysize;
|
|
||||||
extend(&(diag->bbox),box);
|
|
||||||
Py_INCREF(Py_None);return Py_None;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *DrawF_FontTable(PyDrawFObject *self,PyObject *arg)
|
|
||||||
{ int size=8,n=0;
|
|
||||||
PyObject *d,*key,*value;
|
|
||||||
drawfile_diagram *diag;
|
|
||||||
drawfile_object *dobj;
|
|
||||||
char *dtable;
|
|
||||||
if(!PyArg_ParseTuple(arg,"O!",&PyDict_Type,&d)) return NULL;
|
|
||||||
while(PyDict_Next(d,&n,&key,&value))
|
|
||||||
{ int m=PyString_Size(value);
|
|
||||||
if(m<0||!PyInt_Check(key)) return NULL;
|
|
||||||
size+=m+2;
|
|
||||||
}
|
|
||||||
size=(size+3)&(~3);
|
|
||||||
diag=realloc(self->drawf,self->size+size);
|
|
||||||
if(!diag) return PyErr_NoMemory();
|
|
||||||
self->drawf=diag;
|
|
||||||
dobj=(drawfile_object*)((char*)diag+self->size);
|
|
||||||
dobj->type=drawfile_TYPE_FONT_TABLE;
|
|
||||||
dobj->size=size;
|
|
||||||
dtable=(char*)(&dobj->data.font_table);
|
|
||||||
self->size+=size;
|
|
||||||
self->nobjs++;
|
|
||||||
memset(dtable,0,size-8);
|
|
||||||
n=0;
|
|
||||||
while(PyDict_Next(d,&n,&key,&value))
|
|
||||||
{ int m=PyString_Size(value);
|
|
||||||
*dtable=(char)PyInt_AsLong(key);
|
|
||||||
strcpy(dtable+1,PyString_AsString(value));
|
|
||||||
dtable+=m+2;
|
|
||||||
}
|
|
||||||
Py_INCREF(Py_None);return Py_None;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *DrawF_Group(PyDrawFObject *self,PyObject *arg)
|
|
||||||
{ int size,n;
|
|
||||||
PyDrawFObject *g;
|
|
||||||
char *name="";
|
|
||||||
drawfile_diagram *diag;
|
|
||||||
drawfile_object *dobj;
|
|
||||||
drawfile_group *dgroup;
|
|
||||||
if(!PyArg_ParseTuple(arg,"O!|s",&PyDrawFType,(PyObject*)&g,&name))
|
|
||||||
return NULL;
|
|
||||||
size=g->size-4;
|
|
||||||
diag=realloc(self->drawf,self->size+size);
|
|
||||||
if(!diag) return PyErr_NoMemory();
|
|
||||||
self->drawf=diag;
|
|
||||||
self->nobjs++;
|
|
||||||
dobj=(drawfile_object*)((char*)diag+self->size);
|
|
||||||
self->size+=size;
|
|
||||||
dobj->type=drawfile_TYPE_GROUP;
|
|
||||||
dobj->size=g->size-4;
|
|
||||||
dgroup=&dobj->data.group;
|
|
||||||
dgroup->bbox=g->drawf->bbox;
|
|
||||||
memset(dgroup->name,' ',12);
|
|
||||||
n=strlen(name);
|
|
||||||
if(n>12) n=12;
|
|
||||||
memcpy(dgroup->name,name,n);
|
|
||||||
memcpy((char*)dgroup->objects,(char*)g->drawf+40,g->size-40);
|
|
||||||
extend(&(diag->bbox),&(dgroup->bbox));
|
|
||||||
Py_INCREF(Py_None);return Py_None;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *DrawF_Find(PyDrawFObject *self,PyObject *arg)
|
|
||||||
{ int x,y,n=0;
|
|
||||||
int r=-1;
|
|
||||||
drawfile_object *d;
|
|
||||||
if(!PyArg_ParseTuple(arg,"ii|i",&x,&y,&n)) return NULL;
|
|
||||||
if(n<self->nobjs&&n>=0)
|
|
||||||
{ d=findobj(self,n);
|
|
||||||
while(n<self->nobjs)
|
|
||||||
{ if(x>=d->data.text.bbox.x0&&x<=d->data.text.bbox.x1&&
|
|
||||||
y>=d->data.text.bbox.y0&&y<=d->data.text.bbox.y1) { r=n;break;}
|
|
||||||
n++;
|
|
||||||
d=NEXT(d);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return PyInt_FromLong(r);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static PyObject *DrawF_Box(PyDrawFObject *self,PyObject *arg)
|
|
||||||
{ int n=-1;
|
|
||||||
os_box *box;
|
|
||||||
if(!PyArg_ParseTuple(arg,"|i",&n)) return NULL;
|
|
||||||
if(n>=self->nobjs|n<0) box=&(self->drawf->bbox);
|
|
||||||
else box=&(findobj(self,n)->data.text.bbox);
|
|
||||||
return Py_BuildValue("iiii",box->x0,box->y0,box->x1,box->y1);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void SetBlock(drawfile_object *d,int size,int type,int offset,int value)
|
|
||||||
{ char *end=(char*)d+size;
|
|
||||||
printf("s%d t%d o%d v%d\n",size,type,offset,value);
|
|
||||||
for(;(char*)d<end;d=NEXT(d))
|
|
||||||
if(d->type==type) ((int*)(d))[offset]=value;
|
|
||||||
else if(d->type==drawfile_TYPE_GROUP)
|
|
||||||
SetBlock((drawfile_object*)&d->data.group.objects,
|
|
||||||
d->size,type,offset,value);
|
|
||||||
printf("SetBlock Done\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *SetWord(PyDrawFObject *self,PyObject *arg,int type,int offset)
|
|
||||||
{ int n=PyTuple_Size(arg);
|
|
||||||
int m,value,q;
|
|
||||||
PyObject *par;
|
|
||||||
drawfile_object *e,*d=self->drawf->objects;
|
|
||||||
if(n==0) return drawf_error("Value Required");
|
|
||||||
par=PyTuple_GetItem(arg,0);
|
|
||||||
if(!PyInt_Check(par))
|
|
||||||
{ PyErr_SetString(PyExc_TypeError,"Int Required");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
value=(int)PyInt_AsLong(par);
|
|
||||||
if(n==1) SetBlock(d,self->size-HDRSIZE,type,offset,value);
|
|
||||||
else
|
|
||||||
{ for(m=1;m<n;m++)
|
|
||||||
{ par=PyTuple_GetItem(arg,m);
|
|
||||||
if(!PyInt_Check(par))
|
|
||||||
{ PyErr_SetString(PyExc_TypeError,"Int Required");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
q=(int)PyInt_AsLong(par);
|
|
||||||
if(q<0||q>=self->nobjs)
|
|
||||||
{ PyErr_SetString(PyExc_ValueError,"Object out of range");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
e=d;
|
|
||||||
for(;q>0;q--) e=NEXT(e);
|
|
||||||
if(e->type==type)
|
|
||||||
{ ((int*)(e))[offset]=value;
|
|
||||||
}
|
|
||||||
else if(e->type==drawfile_TYPE_GROUP)
|
|
||||||
SetBlock((drawfile_object*)&e->data.group.objects,
|
|
||||||
e->size-GRPHDRSIZE,type,offset,value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Py_INCREF(Py_None);return Py_None;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *DrawF_PathFill(PyDrawFObject *self,PyObject *arg)
|
|
||||||
{ return SetWord(self,arg,drawfile_TYPE_PATH,6);
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *DrawF_PathColour(PyDrawFObject *self,PyObject *arg)
|
|
||||||
{ return SetWord(self,arg,drawfile_TYPE_PATH,7);
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *DrawF_TextColour(PyDrawFObject *self,PyObject *arg)
|
|
||||||
{ return SetWord(self,arg,drawfile_TYPE_TEXT,6);
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *DrawF_TextBackground(PyDrawFObject *self,PyObject *arg)
|
|
||||||
{ return SetWord(self,arg,drawfile_TYPE_TEXT,7);
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct PyMethodDef PyDrawF_Methods[]=
|
|
||||||
{
|
|
||||||
{ "render",(PyCFunction)DrawF_Render,1},
|
|
||||||
{ "save",(PyCFunction)DrawF_Save,1},
|
|
||||||
{ "path",(PyCFunction)DrawF_Path,1},
|
|
||||||
{ "text",(PyCFunction)DrawF_Text,1},
|
|
||||||
{ "ttext",(PyCFunction)DrawF_TText,1},
|
|
||||||
{ "fonttable",(PyCFunction)DrawF_FontTable,1},
|
|
||||||
{ "group",(PyCFunction)DrawF_Group,1},
|
|
||||||
{ "find",(PyCFunction)DrawF_Find,1},
|
|
||||||
{ "box",(PyCFunction)DrawF_Box,1},
|
|
||||||
{ "pathfill",(PyCFunction)DrawF_PathFill,1},
|
|
||||||
{ "pathcolour",(PyCFunction)DrawF_PathColour,1},
|
|
||||||
{ "textcolour",(PyCFunction)DrawF_TextColour,1},
|
|
||||||
{ "textbackground",(PyCFunction)DrawF_TextBackground,1},
|
|
||||||
{ NULL,NULL} /* sentinel */
|
|
||||||
};
|
|
||||||
|
|
||||||
static int drawf_len(PyDrawFObject *b)
|
|
||||||
{ return b->nobjs;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *drawf_concat(PyDrawFObject *b,PyDrawFObject *c)
|
|
||||||
{ int size=b->size+c->size-2*HDRSIZE;
|
|
||||||
PyDrawFObject *p=new(size);
|
|
||||||
drawfile_diagram *dd;
|
|
||||||
drawfile_object *d;
|
|
||||||
int n;
|
|
||||||
if(!p) return NULL;
|
|
||||||
dd=p->drawf;
|
|
||||||
d=(drawfile_object*)((char*)dd+b->size);
|
|
||||||
memcpy((char*)dd,(char*)(b->drawf),b->size);
|
|
||||||
memcpy(d,(char*)(c->drawf)+HDRSIZE,c->size-HDRSIZE);
|
|
||||||
p->nobjs=b->nobjs+c->nobjs;
|
|
||||||
for(n=c->nobjs;n>0;n--)
|
|
||||||
{ extend(&(dd->bbox),&(d->data.path.bbox));
|
|
||||||
d=NEXT(d);
|
|
||||||
}
|
|
||||||
return (PyObject*)p;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *drawf_repeat(PyDrawFObject *b,Py_ssize_t i)
|
|
||||||
{ PyErr_SetString(PyExc_IndexError,"drawf repetition not implemented");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *drawf_item(PyDrawFObject *b,Py_ssize_t i)
|
|
||||||
{ PyDrawFObject *c;
|
|
||||||
Py_ssize_t size;
|
|
||||||
drawfile_diagram *dd;
|
|
||||||
drawfile_object *d;
|
|
||||||
if(i<0||i>=b->nobjs)
|
|
||||||
{ PyErr_SetString(PyExc_IndexError,"drawf index out of range");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
d=findobj(b,i);
|
|
||||||
size=(char*)findobj(b,i+1)-(char*)d;
|
|
||||||
c=new(size);
|
|
||||||
if(!c) return NULL;
|
|
||||||
dd=c->drawf;
|
|
||||||
*((dheader*)dd)=header;
|
|
||||||
memcpy(dd->objects,d,size);
|
|
||||||
c->nobjs=1;
|
|
||||||
extend(&(dd->bbox),&(d->data.path.bbox));
|
|
||||||
return (PyObject*)c;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *drawf_slice(PyDrawFObject *b,Py_ssize_t i,Py_ssize_t j)
|
|
||||||
{ PyDrawFObject *c;
|
|
||||||
Py_ssize_t size,n;
|
|
||||||
drawfile_diagram *dd;
|
|
||||||
drawfile_object *d;
|
|
||||||
if(i<0||j>b->nobjs)
|
|
||||||
{ PyErr_SetString(PyExc_IndexError,"drawf index out of range");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
d=findobj(b,i);
|
|
||||||
size=(char*)findobj(b,j)-(char*)d;
|
|
||||||
c=new(size);
|
|
||||||
if(!c) return NULL;
|
|
||||||
dd=c->drawf;
|
|
||||||
*((dheader*)dd)=header;
|
|
||||||
memcpy(dd->objects,d,size);
|
|
||||||
c->nobjs=j-i;
|
|
||||||
for(n=j-i;n>0;n--)
|
|
||||||
{ extend(&(dd->bbox),&(d->data.path.bbox));
|
|
||||||
d=NEXT(d);
|
|
||||||
}
|
|
||||||
return (PyObject*)c;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int drawf_ass_item(PyDrawFObject *b,Py_ssize_t i,PyObject *v)
|
|
||||||
{ PyErr_SetString(PyExc_IndexError,"drawf ass not implemented");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
/*{ if(i<0||4*i>=b->length)
|
|
||||||
{ PyErr_SetString(PyExc_IndexError,"drawf index out of range");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if(!PyInt_Check(v))
|
|
||||||
{ PyErr_SetString(PyExc_TypeError,"drawf item must be integer");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
((long*)(b->drawf))[i]=PyInt_AsLong(v);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
static int drawf_ass_slice(PyDrawFObject *b,Py_ssize_t i,Py_ssize_t j,PyObject *v)
|
|
||||||
{ PyErr_SetString(PyExc_IndexError,"drawf ass_slice not implemented");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PySequenceMethods drawf_as_sequence=
|
|
||||||
{ (inquiry)drawf_len,
|
|
||||||
(binaryfunc)drawf_concat,
|
|
||||||
(ssizeargfunc)drawf_repeat,
|
|
||||||
(ssizeargfunc)drawf_item,
|
|
||||||
(ssizessizeargfunc)drawf_slice,
|
|
||||||
(ssizeobjargproc)drawf_ass_item,
|
|
||||||
(ssizessizeobjargproc)drawf_ass_slice,
|
|
||||||
};
|
|
||||||
|
|
||||||
static PyObject *PyDrawF_GetAttr(PyDrawFObject *s,char *name)
|
|
||||||
{
|
|
||||||
if (!strcmp(name, "size")) return PyInt_FromLong((long)s->size);
|
|
||||||
if (!strcmp(name, "start")) return PyInt_FromLong((long)s->drawf);
|
|
||||||
if (!strcmp(name, "__members__"))
|
|
||||||
{ PyObject *list = PyList_New(2);
|
|
||||||
if (list)
|
|
||||||
{ PyList_SetItem(list, 0, PyString_FromString("size"));
|
|
||||||
PyList_SetItem(list, 1, PyString_FromString("start"));
|
|
||||||
if (PyErr_Occurred()) { Py_DECREF(list);list = NULL;}
|
|
||||||
}
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
return Py_FindMethod(PyDrawF_Methods, (PyObject*) s,name);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void PyDrawF_Dealloc(PyDrawFObject *b)
|
|
||||||
{
|
|
||||||
if (b->drawf)
|
|
||||||
;
|
|
||||||
else
|
|
||||||
PyMem_DEL(b->drawf);
|
|
||||||
PyMem_DEL(b);
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyTypeObject PyDrawFType=
|
|
||||||
{ PyObject_HEAD_INIT(&PyType_Type)
|
|
||||||
0, /*ob_size*/
|
|
||||||
"drawf", /*tp_name*/
|
|
||||||
sizeof(PyDrawFObject), /*tp_size*/
|
|
||||||
0, /*tp_itemsize*/
|
|
||||||
/* methods */
|
|
||||||
(destructor)PyDrawF_Dealloc, /*tp_dealloc*/
|
|
||||||
0, /*tp_print*/
|
|
||||||
(getattrfunc)PyDrawF_GetAttr, /*tp_getattr*/
|
|
||||||
0, /*tp_setattr*/
|
|
||||||
0, /*tp_compare*/
|
|
||||||
0, /*tp_repr*/
|
|
||||||
0, /*tp_as_number*/
|
|
||||||
&drawf_as_sequence, /*tp_as_sequence*/
|
|
||||||
0, /*tp_as_mapping*/
|
|
||||||
0, /*tp_hash*/
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static PyMethodDef DrawFMethods[]=
|
|
||||||
{
|
|
||||||
{ "load",DrawF_Load,1},
|
|
||||||
{ "new",DrawF_New,1},
|
|
||||||
{ NULL,NULL} /* Sentinel */
|
|
||||||
};
|
|
||||||
|
|
||||||
void initdrawf()
|
|
||||||
{ PyObject *m, *d;
|
|
||||||
m = Py_InitModule("drawf", DrawFMethods);
|
|
||||||
d = PyModule_GetDict(m);
|
|
||||||
DrawFError=PyString_FromString("drawf.error");
|
|
||||||
PyDict_SetItemString(d,"error",DrawFError);
|
|
||||||
}
|
|
|
@ -1,60 +0,0 @@
|
||||||
#include "Python.h"
|
|
||||||
#include "osdefs.h"
|
|
||||||
|
|
||||||
static char *prefix, *exec_prefix, *progpath, *module_search_path=NULL;
|
|
||||||
|
|
||||||
static void
|
|
||||||
calculate_path()
|
|
||||||
{
|
|
||||||
char *pypath = getenv("Python$Path");
|
|
||||||
if (pypath) {
|
|
||||||
int pathlen = strlen(pypath);
|
|
||||||
module_search_path = malloc(pathlen + 1);
|
|
||||||
if (module_search_path)
|
|
||||||
strncpy(module_search_path, pypath, pathlen + 1);
|
|
||||||
else {
|
|
||||||
fprintf(stderr,
|
|
||||||
"Not enough memory for dynamic PYTHONPATH.\n"
|
|
||||||
"Using default static PYTHONPATH.\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!module_search_path)
|
|
||||||
module_search_path = "<Python$Dir>.Lib";
|
|
||||||
prefix = "<Python$Dir>";
|
|
||||||
exec_prefix = prefix;
|
|
||||||
progpath = Py_GetProgramName();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* External interface */
|
|
||||||
|
|
||||||
char *
|
|
||||||
Py_GetPath()
|
|
||||||
{
|
|
||||||
if (!module_search_path)
|
|
||||||
calculate_path();
|
|
||||||
return module_search_path;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *
|
|
||||||
Py_GetPrefix()
|
|
||||||
{
|
|
||||||
if (!module_search_path)
|
|
||||||
calculate_path();
|
|
||||||
return prefix;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *
|
|
||||||
Py_GetExecPrefix()
|
|
||||||
{
|
|
||||||
if (!module_search_path)
|
|
||||||
calculate_path();
|
|
||||||
return exec_prefix;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *
|
|
||||||
Py_GetProgramFullPath()
|
|
||||||
{
|
|
||||||
if (!module_search_path)
|
|
||||||
calculate_path();
|
|
||||||
return progpath;
|
|
||||||
}
|
|
|
@ -1,603 +0,0 @@
|
||||||
/* RISCOS module implementation */
|
|
||||||
|
|
||||||
#include "oslib/osfscontrol.h"
|
|
||||||
#include "oslib/osgbpb.h"
|
|
||||||
#include "oslib/os.h"
|
|
||||||
#include "oslib/osfile.h"
|
|
||||||
#include "unixstuff.h"
|
|
||||||
|
|
||||||
#include <sys/fcntl.h>
|
|
||||||
|
|
||||||
#include "Python.h"
|
|
||||||
#include "structseq.h"
|
|
||||||
|
|
||||||
#include <errno.h>
|
|
||||||
|
|
||||||
static os_error *e;
|
|
||||||
|
|
||||||
/*static PyObject *RiscosError;*/ /* Exception riscos.error */
|
|
||||||
|
|
||||||
static PyObject *riscos_error(char *s)
|
|
||||||
{
|
|
||||||
PyErr_SetString(PyExc_OSError, s);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *riscos_oserror(void)
|
|
||||||
{
|
|
||||||
return riscos_error(e->errmess);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* RISCOS file commands */
|
|
||||||
|
|
||||||
static PyObject *
|
|
||||||
riscos_remove(PyObject *self, PyObject *args)
|
|
||||||
{
|
|
||||||
char *path1;
|
|
||||||
if (!PyArg_ParseTuple(args, "s:remove", &path1)) return NULL;
|
|
||||||
if (remove(path1)) return PyErr_SetFromErrno(PyExc_OSError);
|
|
||||||
Py_INCREF(Py_None);
|
|
||||||
return Py_None;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *
|
|
||||||
riscos_rename(PyObject *self, PyObject *args)
|
|
||||||
{
|
|
||||||
char *path1, *path2;
|
|
||||||
if (!PyArg_ParseTuple(args, "ss:rename", &path1, &path2))
|
|
||||||
return NULL;
|
|
||||||
if (rename(path1,path2)) return PyErr_SetFromErrno(PyExc_OSError);
|
|
||||||
Py_INCREF(Py_None);
|
|
||||||
return Py_None;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *
|
|
||||||
riscos_system(PyObject *self, PyObject *args)
|
|
||||||
{
|
|
||||||
char *command;
|
|
||||||
if (!PyArg_ParseTuple(args, "s:system", &command)) return NULL;
|
|
||||||
return PyInt_FromLong(system(command));
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *
|
|
||||||
riscos_chdir(PyObject *self, PyObject *args)
|
|
||||||
{
|
|
||||||
char *path;
|
|
||||||
if (!PyArg_ParseTuple(args, "s:chdir", &path)) return NULL;
|
|
||||||
e=xosfscontrol_dir(path);
|
|
||||||
if(e) return riscos_oserror();
|
|
||||||
Py_INCREF(Py_None);
|
|
||||||
return Py_None;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *
|
|
||||||
canon(char *path)
|
|
||||||
{
|
|
||||||
int len;
|
|
||||||
PyObject *obj;
|
|
||||||
char *buf;
|
|
||||||
e=xosfscontrol_canonicalise_path(path,0,0,0,0,&len);
|
|
||||||
if(e) return riscos_oserror();
|
|
||||||
obj=PyString_FromStringAndSize(NULL,-len);
|
|
||||||
if(obj==NULL) return NULL;
|
|
||||||
buf=PyString_AsString(obj);
|
|
||||||
e=xosfscontrol_canonicalise_path(path,buf,0,0,1-len,&len);
|
|
||||||
if(len!=1) return riscos_error("Error expanding path");
|
|
||||||
if(!e) return obj;
|
|
||||||
Py_DECREF(obj);
|
|
||||||
return riscos_oserror();
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *
|
|
||||||
riscos_getcwd(PyObject *self, PyObject *unused)
|
|
||||||
{
|
|
||||||
return canon("@");
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *
|
|
||||||
riscos_expand(PyObject *self, PyObject *args)
|
|
||||||
{
|
|
||||||
char *path;
|
|
||||||
if (!PyArg_ParseTuple(args, "s:expand", &path)) return NULL;
|
|
||||||
return canon(path);
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *
|
|
||||||
riscos_mkdir(PyObject *self, PyObject *args)
|
|
||||||
{
|
|
||||||
char *path;
|
|
||||||
int mode;
|
|
||||||
if (!PyArg_ParseTuple(args, "s|i:mkdir", &path, &mode)) return NULL;
|
|
||||||
e=xosfile_create_dir(path,0);
|
|
||||||
if(e) return riscos_oserror();
|
|
||||||
Py_INCREF(Py_None);
|
|
||||||
return Py_None;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *
|
|
||||||
riscos_listdir(PyObject *self, PyObject *args)
|
|
||||||
{
|
|
||||||
char *path,buf[256];
|
|
||||||
PyObject *d, *v;
|
|
||||||
int c=0,count;
|
|
||||||
if (!PyArg_ParseTuple(args, "s:listdir", &path)) return NULL;
|
|
||||||
d=PyList_New(0);
|
|
||||||
if(!d) return NULL;
|
|
||||||
for(;;)
|
|
||||||
{ e=xosgbpb_dir_entries(path,(osgbpb_string_list*)buf,
|
|
||||||
1,c,256,0,&count,&c);
|
|
||||||
if(e)
|
|
||||||
{ Py_DECREF(d);return riscos_oserror();
|
|
||||||
}
|
|
||||||
if(count)
|
|
||||||
{ v=PyString_FromString(buf);
|
|
||||||
if(!v) { Py_DECREF(d);return 0;}
|
|
||||||
if(PyList_Append(d,v)) {Py_DECREF(d);Py_DECREF(v);return 0;}
|
|
||||||
}
|
|
||||||
if(c==-1) break;
|
|
||||||
}
|
|
||||||
return d;
|
|
||||||
}
|
|
||||||
|
|
||||||
PyDoc_STRVAR(stat_result__doc__,
|
|
||||||
"stat_result: Result from stat or lstat.\n\n\
|
|
||||||
This object may be accessed either as a tuple of\n\
|
|
||||||
(mode,ino,dev,nlink,uid,gid,size,atime,mtime,ctime)\n\
|
|
||||||
or via the attributes st_mode, st_ino, st_dev, st_nlink, st_uid, and so on.\n\
|
|
||||||
\n\
|
|
||||||
RiscOS: The fields st_ftype, st_attrs, and st_obtype are also available.\n\
|
|
||||||
\n\
|
|
||||||
See os.stat for more information.");
|
|
||||||
|
|
||||||
static PyStructSequence_Field stat_result_fields[] = {
|
|
||||||
{ "st_mode", "protection bits" },
|
|
||||||
{ "st_ino", "inode" },
|
|
||||||
{ "st_dev", "device" },
|
|
||||||
{ "st_nlink", "number of hard links" },
|
|
||||||
{ "st_uid", "user ID of owner" },
|
|
||||||
{ "st_gid", "group ID of owner" },
|
|
||||||
{ "st_size", "total size, in bytes" },
|
|
||||||
{ "st_atime", "time of last access" },
|
|
||||||
{ "st_mtime", "time of last modification" },
|
|
||||||
{ "st_ctime", "time of last change" },
|
|
||||||
{ "st_ftype", "file type" },
|
|
||||||
{ "st_attrs", "attributes" },
|
|
||||||
{ "st_obtype", "object type" },
|
|
||||||
{ 0 }
|
|
||||||
};
|
|
||||||
|
|
||||||
static PyStructSequence_Desc stat_result_desc = {
|
|
||||||
"riscos.stat_result",
|
|
||||||
stat_result__doc__,
|
|
||||||
stat_result_fields,
|
|
||||||
13
|
|
||||||
};
|
|
||||||
|
|
||||||
static PyTypeObject StatResultType;
|
|
||||||
|
|
||||||
static PyObject *
|
|
||||||
riscos_stat(PyObject *self, PyObject *args)
|
|
||||||
{
|
|
||||||
PyObject *v;
|
|
||||||
char *path;
|
|
||||||
int ob,len;
|
|
||||||
bits t=0;
|
|
||||||
bits ld,ex,at,ft,mode;
|
|
||||||
if (!PyArg_ParseTuple(args, "s:stat", &path)) return NULL;
|
|
||||||
e=xosfile_read_stamped_no_path(path,&ob,&ld,&ex,&len,&at,&ft);
|
|
||||||
if(e) return riscos_oserror();
|
|
||||||
switch (ob)
|
|
||||||
{ case osfile_IS_FILE:mode=0100000;break; /* OCTAL */
|
|
||||||
case osfile_IS_DIR:mode=040000;break;
|
|
||||||
case osfile_IS_IMAGE:mode=0140000;break;
|
|
||||||
default:return riscos_error("Not found");
|
|
||||||
}
|
|
||||||
if(ft!=-1) t=unixtime(ld,ex);
|
|
||||||
mode|=(at&7)<<6;
|
|
||||||
mode|=((at&112)*9)>>4;
|
|
||||||
|
|
||||||
v = PyStructSequence_New(&StatResultType);
|
|
||||||
|
|
||||||
PyStructSequence_SET_ITEM(v, 0,
|
|
||||||
PyInt_FromLong((long) mode)); /*st_mode*/
|
|
||||||
PyStructSequence_SET_ITEM(v, 1, PyInt_FromLong((long) 0)); /*st_ino*/
|
|
||||||
PyStructSequence_SET_ITEM(v, 2, PyInt_FromLong((long) 0)); /*st_dev*/
|
|
||||||
PyStructSequence_SET_ITEM(v, 3, PyInt_FromLong((long) 0)); /*st_nlink*/
|
|
||||||
PyStructSequence_SET_ITEM(v, 4, PyInt_FromLong((long) 0)); /*st_uid*/
|
|
||||||
PyStructSequence_SET_ITEM(v, 5, PyInt_FromLong((long) 0)); /*st_gid*/
|
|
||||||
PyStructSequence_SET_ITEM(v, 6,
|
|
||||||
PyInt_FromLong((long) len)); /*st_size*/
|
|
||||||
PyStructSequence_SET_ITEM(v, 7, PyInt_FromLong((long) t)); /*st_atime*/
|
|
||||||
PyStructSequence_SET_ITEM(v, 8, PyInt_FromLong((long) t)); /*st_mtime*/
|
|
||||||
PyStructSequence_SET_ITEM(v, 9, PyInt_FromLong((long) t)); /*st_ctime*/
|
|
||||||
PyStructSequence_SET_ITEM(v, 10,
|
|
||||||
PyInt_FromLong((long) ft)); /*file type*/
|
|
||||||
PyStructSequence_SET_ITEM(v, 11,
|
|
||||||
PyInt_FromLong((long) at)); /*attributes*/
|
|
||||||
PyStructSequence_SET_ITEM(v, 12,
|
|
||||||
PyInt_FromLong((long) ob)); /*object type*/
|
|
||||||
|
|
||||||
if (PyErr_Occurred()) {
|
|
||||||
Py_DECREF(v);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *
|
|
||||||
riscos_chmod(PyObject *self,PyObject *args)
|
|
||||||
{
|
|
||||||
char *path;
|
|
||||||
bits mode;
|
|
||||||
bits attr;
|
|
||||||
attr=(mode&0x700)>>8;
|
|
||||||
attr|=(mode&7)<<4;
|
|
||||||
if (!PyArg_ParseTuple(args, "si:chmod", &path,(int*)&mode)) return NULL;
|
|
||||||
e=xosfile_write_attr(path,attr);
|
|
||||||
if(e) return riscos_oserror();
|
|
||||||
Py_INCREF(Py_None);
|
|
||||||
return Py_None;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static PyObject *
|
|
||||||
riscos_utime(PyObject *self, PyObject *args)
|
|
||||||
{
|
|
||||||
char *path;
|
|
||||||
long atime, mtime;
|
|
||||||
PyObject* arg;
|
|
||||||
|
|
||||||
if (!PyArg_ParseTuple(args, "sO:utime", &path, &arg))
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
if (arg == Py_None) {
|
|
||||||
/* optional time values not given */
|
|
||||||
Py_BEGIN_ALLOW_THREADS
|
|
||||||
e=xosfile_stamp(path);
|
|
||||||
Py_END_ALLOW_THREADS
|
|
||||||
if(e) return riscos_oserror();
|
|
||||||
}
|
|
||||||
else if (!PyArg_Parse(arg, "(ll)", &atime, &mtime)) {
|
|
||||||
PyErr_SetString(PyExc_TypeError,
|
|
||||||
"utime() arg 2 must be a tuple (atime, mtime)");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
/* catalogue info*/
|
|
||||||
fileswitch_object_type obj_type;
|
|
||||||
bits load_addr, exec_addr;
|
|
||||||
int size;
|
|
||||||
fileswitch_attr attr;
|
|
||||||
|
|
||||||
/* read old catalogue info */
|
|
||||||
Py_BEGIN_ALLOW_THREADS
|
|
||||||
e=xosfile_read_no_path(path, &obj_type, &load_addr, &exec_addr, &size, &attr);
|
|
||||||
Py_END_ALLOW_THREADS
|
|
||||||
if(e) return riscos_oserror();
|
|
||||||
|
|
||||||
/* check if load and exec address really contain filetype and date */
|
|
||||||
if ( (load_addr & 0xFFF00000U) != 0xFFF00000U)
|
|
||||||
return riscos_error("can't set date for object with load and exec addresses");
|
|
||||||
|
|
||||||
/* convert argument mtime to RISC OS load and exec address */
|
|
||||||
if(acorntime(&exec_addr, &load_addr, (time_t) mtime))
|
|
||||||
return riscos_oserror();
|
|
||||||
|
|
||||||
/* write new load and exec address */
|
|
||||||
Py_BEGIN_ALLOW_THREADS
|
|
||||||
e = xosfile_write(path, load_addr, exec_addr, attr);
|
|
||||||
Py_END_ALLOW_THREADS
|
|
||||||
if(e) return riscos_oserror();
|
|
||||||
}
|
|
||||||
|
|
||||||
Py_INCREF(Py_None);
|
|
||||||
return Py_None;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *
|
|
||||||
riscos_settype(PyObject *self, PyObject *args)
|
|
||||||
{
|
|
||||||
char *path,*name;
|
|
||||||
int type;
|
|
||||||
if (!PyArg_ParseTuple(args, "si:settype", &path,&type))
|
|
||||||
{
|
|
||||||
PyErr_Clear();
|
|
||||||
if (!PyArg_ParseTuple(args, "ss:settype", &path,&name)) return NULL;
|
|
||||||
e=xosfscontrol_file_type_from_string(name,(bits*)&type);
|
|
||||||
if(e) return riscos_oserror();
|
|
||||||
}
|
|
||||||
e=xosfile_set_type(path,type);
|
|
||||||
if(e) return riscos_oserror();
|
|
||||||
Py_INCREF(Py_None);
|
|
||||||
return Py_None;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *
|
|
||||||
riscos_getenv(PyObject *self, PyObject *args)
|
|
||||||
{
|
|
||||||
char *name,*value;
|
|
||||||
if(!PyArg_ParseTuple(args,"s:getenv",&name)) return NULL;
|
|
||||||
value=getenv(name);
|
|
||||||
if(value) return PyString_FromString(value);
|
|
||||||
Py_INCREF(Py_None);
|
|
||||||
return Py_None;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *
|
|
||||||
riscos_putenv(PyObject *self, PyObject *args)
|
|
||||||
{
|
|
||||||
char *name,*value;
|
|
||||||
int len;
|
|
||||||
os_var_type type=os_VARTYPE_LITERAL_STRING;
|
|
||||||
if(!PyArg_ParseTuple(args,"ss|i:putenv",&name,&value,&type)) return NULL;
|
|
||||||
if(type!=os_VARTYPE_STRING&&type!=os_VARTYPE_MACRO&&type!=os_VARTYPE_EXPANDED
|
|
||||||
&&type!=os_VARTYPE_LITERAL_STRING)
|
|
||||||
return riscos_error("Bad putenv type");
|
|
||||||
len=strlen(value);
|
|
||||||
if(type!=os_VARTYPE_LITERAL_STRING) len++;
|
|
||||||
/* Other types need null terminator! */
|
|
||||||
e=xos_set_var_val(name,(byte*)value,len,0,type,0,0);
|
|
||||||
if(e) return riscos_oserror();
|
|
||||||
Py_INCREF(Py_None);
|
|
||||||
return Py_None;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *
|
|
||||||
riscos_delenv(PyObject *self, PyObject *args)
|
|
||||||
{
|
|
||||||
char *name;
|
|
||||||
if(!PyArg_ParseTuple(args,"s:delenv",&name)) return NULL;
|
|
||||||
e=xos_set_var_val(name,NULL,-1,0,0,0,0);
|
|
||||||
if(e) return riscos_oserror();
|
|
||||||
Py_INCREF(Py_None);
|
|
||||||
return Py_None;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *
|
|
||||||
riscos_getenvdict(PyObject *self, PyObject *args)
|
|
||||||
{
|
|
||||||
PyObject *dict;
|
|
||||||
char value[257];
|
|
||||||
char *which="*";
|
|
||||||
int size;
|
|
||||||
char *context=NULL;
|
|
||||||
if(!PyArg_ParseTuple(args,"|s:getenvdict",&which)) return NULL;
|
|
||||||
dict = PyDict_New();
|
|
||||||
if (!dict) return NULL;
|
|
||||||
/* XXX This part ignores errors */
|
|
||||||
while(!xos_read_var_val(which,value,sizeof(value)-1,(int)context,
|
|
||||||
os_VARTYPE_EXPANDED,&size,(int *)&context,0))
|
|
||||||
{ PyObject *v;
|
|
||||||
value[size]='\0';
|
|
||||||
v = PyString_FromString(value);
|
|
||||||
if (v == NULL) continue;
|
|
||||||
PyDict_SetItemString(dict, context, v);
|
|
||||||
Py_DECREF(v);
|
|
||||||
}
|
|
||||||
return dict;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyMethodDef riscos_methods[] = {
|
|
||||||
|
|
||||||
{"unlink", riscos_remove, METH_VARARGS},
|
|
||||||
{"remove", riscos_remove, METH_VARARGS},
|
|
||||||
{"rename", riscos_rename, METH_VARARGS},
|
|
||||||
{"system", riscos_system, METH_VARARGS},
|
|
||||||
{"rmdir", riscos_remove, METH_VARARGS},
|
|
||||||
{"chdir", riscos_chdir, METH_VARARGS},
|
|
||||||
{"getcwd", riscos_getcwd, METH_NOARGS},
|
|
||||||
{"expand", riscos_expand, METH_VARARGS},
|
|
||||||
{"mkdir", riscos_mkdir, METH_VARARGS},
|
|
||||||
{"listdir", riscos_listdir, METH_VARARGS},
|
|
||||||
{"stat", riscos_stat, METH_VARARGS},
|
|
||||||
{"lstat", riscos_stat, METH_VARARGS},
|
|
||||||
{"chmod", riscos_chmod, METH_VARARGS},
|
|
||||||
{"utime", riscos_utime, METH_VARARGS},
|
|
||||||
{"settype", riscos_settype, METH_VARARGS},
|
|
||||||
{"getenv", riscos_getenv, METH_VARARGS},
|
|
||||||
{"putenv", riscos_putenv, METH_VARARGS},
|
|
||||||
{"delenv", riscos_delenv, METH_VARARGS},
|
|
||||||
{"getenvdict", riscos_getenvdict, METH_VARARGS},
|
|
||||||
{NULL, NULL} /* Sentinel */
|
|
||||||
};
|
|
||||||
|
|
||||||
static int
|
|
||||||
ins(PyObject *module, char *symbol, long value)
|
|
||||||
{
|
|
||||||
return PyModule_AddIntConstant(module, symbol, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static int
|
|
||||||
all_ins(PyObject *d)
|
|
||||||
{
|
|
||||||
#ifdef F_OK
|
|
||||||
if (ins(d, "F_OK", (long)F_OK)) return -1;
|
|
||||||
#endif
|
|
||||||
#ifdef R_OK
|
|
||||||
if (ins(d, "R_OK", (long)R_OK)) return -1;
|
|
||||||
#endif
|
|
||||||
#ifdef W_OK
|
|
||||||
if (ins(d, "W_OK", (long)W_OK)) return -1;
|
|
||||||
#endif
|
|
||||||
#ifdef X_OK
|
|
||||||
if (ins(d, "X_OK", (long)X_OK)) return -1;
|
|
||||||
#endif
|
|
||||||
#ifdef NGROUPS_MAX
|
|
||||||
if (ins(d, "NGROUPS_MAX", (long)NGROUPS_MAX)) return -1;
|
|
||||||
#endif
|
|
||||||
#ifdef TMP_MAX
|
|
||||||
if (ins(d, "TMP_MAX", (long)TMP_MAX)) return -1;
|
|
||||||
#endif
|
|
||||||
#ifdef WCONTINUED
|
|
||||||
if (ins(d, "WCONTINUED", (long)WCONTINUED)) return -1;
|
|
||||||
#endif
|
|
||||||
#ifdef WNOHANG
|
|
||||||
if (ins(d, "WNOHANG", (long)WNOHANG)) return -1;
|
|
||||||
#endif
|
|
||||||
#ifdef WUNTRACED
|
|
||||||
if (ins(d, "WUNTRACED", (long)WUNTRACED)) return -1;
|
|
||||||
#endif
|
|
||||||
#ifdef O_RDONLY
|
|
||||||
if (ins(d, "O_RDONLY", (long)O_RDONLY)) return -1;
|
|
||||||
#endif
|
|
||||||
#ifdef O_WRONLY
|
|
||||||
if (ins(d, "O_WRONLY", (long)O_WRONLY)) return -1;
|
|
||||||
#endif
|
|
||||||
#ifdef O_RDWR
|
|
||||||
if (ins(d, "O_RDWR", (long)O_RDWR)) return -1;
|
|
||||||
#endif
|
|
||||||
#ifdef O_NDELAY
|
|
||||||
if (ins(d, "O_NDELAY", (long)O_NDELAY)) return -1;
|
|
||||||
#endif
|
|
||||||
#ifdef O_NONBLOCK
|
|
||||||
if (ins(d, "O_NONBLOCK", (long)O_NONBLOCK)) return -1;
|
|
||||||
#endif
|
|
||||||
#ifdef O_APPEND
|
|
||||||
if (ins(d, "O_APPEND", (long)O_APPEND)) return -1;
|
|
||||||
#endif
|
|
||||||
#ifdef O_DSYNC
|
|
||||||
if (ins(d, "O_DSYNC", (long)O_DSYNC)) return -1;
|
|
||||||
#endif
|
|
||||||
#ifdef O_RSYNC
|
|
||||||
if (ins(d, "O_RSYNC", (long)O_RSYNC)) return -1;
|
|
||||||
#endif
|
|
||||||
#ifdef O_SYNC
|
|
||||||
if (ins(d, "O_SYNC", (long)O_SYNC)) return -1;
|
|
||||||
#endif
|
|
||||||
#ifdef O_NOCTTY
|
|
||||||
if (ins(d, "O_NOCTTY", (long)O_NOCTTY)) return -1;
|
|
||||||
#endif
|
|
||||||
#ifdef O_CREAT
|
|
||||||
if (ins(d, "O_CREAT", (long)O_CREAT)) return -1;
|
|
||||||
#endif
|
|
||||||
#ifdef O_EXCL
|
|
||||||
if (ins(d, "O_EXCL", (long)O_EXCL)) return -1;
|
|
||||||
#endif
|
|
||||||
#ifdef O_TRUNC
|
|
||||||
if (ins(d, "O_TRUNC", (long)O_TRUNC)) return -1;
|
|
||||||
#endif
|
|
||||||
#ifdef O_BINARY
|
|
||||||
if (ins(d, "O_BINARY", (long)O_BINARY)) return -1;
|
|
||||||
#endif
|
|
||||||
#ifdef O_TEXT
|
|
||||||
if (ins(d, "O_TEXT", (long)O_TEXT)) return -1;
|
|
||||||
#endif
|
|
||||||
#ifdef O_LARGEFILE
|
|
||||||
if (ins(d, "O_LARGEFILE", (long)O_LARGEFILE)) return -1;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* MS Windows */
|
|
||||||
#ifdef O_NOINHERIT
|
|
||||||
/* Don't inherit in child processes. */
|
|
||||||
if (ins(d, "O_NOINHERIT", (long)O_NOINHERIT)) return -1;
|
|
||||||
#endif
|
|
||||||
#ifdef _O_SHORT_LIVED
|
|
||||||
/* Optimize for short life (keep in memory). */
|
|
||||||
/* MS forgot to define this one with a non-underscore form too. */
|
|
||||||
if (ins(d, "O_SHORT_LIVED", (long)_O_SHORT_LIVED)) return -1;
|
|
||||||
#endif
|
|
||||||
#ifdef O_TEMPORARY
|
|
||||||
/* Automatically delete when last handle is closed. */
|
|
||||||
if (ins(d, "O_TEMPORARY", (long)O_TEMPORARY)) return -1;
|
|
||||||
#endif
|
|
||||||
#ifdef O_RANDOM
|
|
||||||
/* Optimize for random access. */
|
|
||||||
if (ins(d, "O_RANDOM", (long)O_RANDOM)) return -1;
|
|
||||||
#endif
|
|
||||||
#ifdef O_SEQUENTIAL
|
|
||||||
/* Optimize for sequential access. */
|
|
||||||
if (ins(d, "O_SEQUENTIAL", (long)O_SEQUENTIAL)) return -1;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* GNU extensions. */
|
|
||||||
#ifdef O_DIRECT
|
|
||||||
/* Direct disk access. */
|
|
||||||
if (ins(d, "O_DIRECT", (long)O_DIRECT)) return -1;
|
|
||||||
#endif
|
|
||||||
#ifdef O_DIRECTORY
|
|
||||||
/* Must be a directory. */
|
|
||||||
if (ins(d, "O_DIRECTORY", (long)O_DIRECTORY)) return -1;
|
|
||||||
#endif
|
|
||||||
#ifdef O_NOFOLLOW
|
|
||||||
/* Do not follow links. */
|
|
||||||
if (ins(d, "O_NOFOLLOW", (long)O_NOFOLLOW)) return -1;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* These come from sysexits.h */
|
|
||||||
#ifdef EX_OK
|
|
||||||
if (ins(d, "EX_OK", (long)EX_OK)) return -1;
|
|
||||||
#endif /* EX_OK */
|
|
||||||
#ifdef EX_USAGE
|
|
||||||
if (ins(d, "EX_USAGE", (long)EX_USAGE)) return -1;
|
|
||||||
#endif /* EX_USAGE */
|
|
||||||
#ifdef EX_DATAERR
|
|
||||||
if (ins(d, "EX_DATAERR", (long)EX_DATAERR)) return -1;
|
|
||||||
#endif /* EX_DATAERR */
|
|
||||||
#ifdef EX_NOINPUT
|
|
||||||
if (ins(d, "EX_NOINPUT", (long)EX_NOINPUT)) return -1;
|
|
||||||
#endif /* EX_NOINPUT */
|
|
||||||
#ifdef EX_NOUSER
|
|
||||||
if (ins(d, "EX_NOUSER", (long)EX_NOUSER)) return -1;
|
|
||||||
#endif /* EX_NOUSER */
|
|
||||||
#ifdef EX_NOHOST
|
|
||||||
if (ins(d, "EX_NOHOST", (long)EX_NOHOST)) return -1;
|
|
||||||
#endif /* EX_NOHOST */
|
|
||||||
#ifdef EX_UNAVAILABLE
|
|
||||||
if (ins(d, "EX_UNAVAILABLE", (long)EX_UNAVAILABLE)) return -1;
|
|
||||||
#endif /* EX_UNAVAILABLE */
|
|
||||||
#ifdef EX_SOFTWARE
|
|
||||||
if (ins(d, "EX_SOFTWARE", (long)EX_SOFTWARE)) return -1;
|
|
||||||
#endif /* EX_SOFTWARE */
|
|
||||||
#ifdef EX_OSERR
|
|
||||||
if (ins(d, "EX_OSERR", (long)EX_OSERR)) return -1;
|
|
||||||
#endif /* EX_OSERR */
|
|
||||||
#ifdef EX_OSFILE
|
|
||||||
if (ins(d, "EX_OSFILE", (long)EX_OSFILE)) return -1;
|
|
||||||
#endif /* EX_OSFILE */
|
|
||||||
#ifdef EX_CANTCREAT
|
|
||||||
if (ins(d, "EX_CANTCREAT", (long)EX_CANTCREAT)) return -1;
|
|
||||||
#endif /* EX_CANTCREAT */
|
|
||||||
#ifdef EX_IOERR
|
|
||||||
if (ins(d, "EX_IOERR", (long)EX_IOERR)) return -1;
|
|
||||||
#endif /* EX_IOERR */
|
|
||||||
#ifdef EX_TEMPFAIL
|
|
||||||
if (ins(d, "EX_TEMPFAIL", (long)EX_TEMPFAIL)) return -1;
|
|
||||||
#endif /* EX_TEMPFAIL */
|
|
||||||
#ifdef EX_PROTOCOL
|
|
||||||
if (ins(d, "EX_PROTOCOL", (long)EX_PROTOCOL)) return -1;
|
|
||||||
#endif /* EX_PROTOCOL */
|
|
||||||
#ifdef EX_NOPERM
|
|
||||||
if (ins(d, "EX_NOPERM", (long)EX_NOPERM)) return -1;
|
|
||||||
#endif /* EX_NOPERM */
|
|
||||||
#ifdef EX_CONFIG
|
|
||||||
if (ins(d, "EX_CONFIG", (long)EX_CONFIG)) return -1;
|
|
||||||
#endif /* EX_CONFIG */
|
|
||||||
#ifdef EX_NOTFOUND
|
|
||||||
if (ins(d, "EX_NOTFOUND", (long)EX_NOTFOUND)) return -1;
|
|
||||||
#endif /* EX_NOTFOUND */
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
initriscos()
|
|
||||||
{
|
|
||||||
PyObject *m, *d, *stat_m;
|
|
||||||
|
|
||||||
m = Py_InitModule("riscos", riscos_methods);
|
|
||||||
|
|
||||||
if (all_ins(m))
|
|
||||||
return;
|
|
||||||
|
|
||||||
d = PyModule_GetDict(m);
|
|
||||||
|
|
||||||
Py_INCREF(PyExc_OSError);
|
|
||||||
PyModule_AddObject(m, "error", PyExc_OSError);
|
|
||||||
|
|
||||||
PyStructSequence_InitType(&StatResultType, &stat_result_desc);
|
|
||||||
PyDict_SetItemString(d, "stat_result", (PyObject*) &StatResultType);
|
|
||||||
}
|
|
|
@ -1,575 +0,0 @@
|
||||||
/* swi
|
|
||||||
|
|
||||||
RISC OS swi functions
|
|
||||||
|
|
||||||
1.00 Chris Stretch
|
|
||||||
|
|
||||||
|
|
||||||
1.01 12 May 1999 Laurence Tratt
|
|
||||||
|
|
||||||
* Changed swi.error to be a class based exception rather than string based
|
|
||||||
* Added swi.ArgError which is generated for errors when the user passes invalid arguments to
|
|
||||||
functions etc
|
|
||||||
* Added "errnum" attribute to swi.error, so one can now check to see what the error number was
|
|
||||||
|
|
||||||
1.02 03 March 2002 Dietmar Schwertberger
|
|
||||||
* Added string, integer, integers, tuple and tuples
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "oslib/os.h"
|
|
||||||
#include <kernel.h>
|
|
||||||
#include "Python.h"
|
|
||||||
|
|
||||||
|
|
||||||
#define PyBlock_Check(op) ((op)->ob_type == &PyBlockType)
|
|
||||||
|
|
||||||
|
|
||||||
static PyObject *SwiError; /* Exception swi.error */
|
|
||||||
static PyObject *ArgError; /* Exception swi.ArgError */
|
|
||||||
static os_error *e;
|
|
||||||
|
|
||||||
static PyObject *swi_oserror(void)
|
|
||||||
{ PyErr_SetString(SwiError,e->errmess);
|
|
||||||
PyObject_SetAttrString(PyErr_Occurred(), "errnum", PyInt_FromLong(e->errnum));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *swi_error(char *s)
|
|
||||||
{ PyErr_SetString(ArgError,s);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{ PyObject_HEAD
|
|
||||||
void *block;
|
|
||||||
int length; /*length in bytes*/
|
|
||||||
int heap;
|
|
||||||
} PyBlockObject;
|
|
||||||
|
|
||||||
static PyTypeObject PyBlockType;
|
|
||||||
|
|
||||||
/* block commands */
|
|
||||||
|
|
||||||
static PyObject *PyBlock_New(PyObject *self,PyObject *args)
|
|
||||||
{ int size;
|
|
||||||
PyBlockObject *b;
|
|
||||||
PyObject *init=0;
|
|
||||||
if(!PyArg_ParseTuple(args,"i|O",&size,&init)) return NULL;
|
|
||||||
if(size<1) size=1;
|
|
||||||
b=PyObject_NEW(PyBlockObject,&PyBlockType);
|
|
||||||
if(!b) return NULL;
|
|
||||||
b->block=malloc(4*size);
|
|
||||||
if(!b->block)
|
|
||||||
{ Py_DECREF(b);
|
|
||||||
return PyErr_NoMemory();
|
|
||||||
}
|
|
||||||
b->length=4*size;
|
|
||||||
b->heap=1;
|
|
||||||
if(init)
|
|
||||||
{ if(PyString_Check(init))
|
|
||||||
{ int n=PyString_Size(init);
|
|
||||||
if (n>4*size) n=4*size;
|
|
||||||
memcpy(b->block,PyString_AsString(init),n);
|
|
||||||
memset((char*)b->block+n,0,4*size-n);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{ int n,k;
|
|
||||||
long *p=(long*)b->block;
|
|
||||||
if(!PyList_Check(init)) goto fail;
|
|
||||||
n=PyList_Size(init);
|
|
||||||
if (n>size) n=size;
|
|
||||||
for(k=0;k<n;k++)
|
|
||||||
{ PyObject *q=PyList_GetItem(init,k);
|
|
||||||
if(!PyInt_Check(q)) goto fail;
|
|
||||||
p[k]=PyInt_AsLong(q);
|
|
||||||
}
|
|
||||||
for(;k<size;k++) p[k]=0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return (PyObject *)b;
|
|
||||||
fail:PyErr_SetString(PyExc_TypeError,
|
|
||||||
"block initialiser must be string or list of integers");
|
|
||||||
Py_DECREF(b);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *PyRegister(PyObject *self,PyObject *args)
|
|
||||||
{ int size,ptr;
|
|
||||||
PyBlockObject *b;
|
|
||||||
if(!PyArg_ParseTuple(args,"ii",&size,&ptr)) return NULL;
|
|
||||||
if(size<1) size=1;
|
|
||||||
b=PyObject_NEW(PyBlockObject,&PyBlockType);
|
|
||||||
if(!b) return NULL;
|
|
||||||
b->block=(void*)ptr;
|
|
||||||
b->length=4*size;
|
|
||||||
b->heap=0;
|
|
||||||
return (PyObject *)b;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *PyBlock_ToString(PyBlockObject *self,PyObject *arg)
|
|
||||||
{ int s=0,e=self->length;
|
|
||||||
if(!PyArg_ParseTuple(arg,"|ii",&s,&e)) return NULL;
|
|
||||||
if(s<0||e>self->length||s>e)
|
|
||||||
{ PyErr_SetString(PyExc_IndexError,"block index out of range");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
return PyString_FromStringAndSize((char*)self->block+s,e-s);
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *PyBlock_NullString(PyBlockObject *self,PyObject *arg)
|
|
||||||
{ int s=0,e=self->length,i;
|
|
||||||
char *p=(char*)self->block;
|
|
||||||
if(!PyArg_ParseTuple(arg,"|ii",&s,&e)) return NULL;
|
|
||||||
if(s<0||e>self->length||s>e)
|
|
||||||
{ PyErr_SetString(PyExc_IndexError,"block index out of range");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
for(i=s;i<e;i++) if(p[i]==0) break;
|
|
||||||
return PyString_FromStringAndSize((char*)self->block+s,i-s);
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *PyBlock_CtrlString(PyBlockObject *self,PyObject *arg)
|
|
||||||
{ int s=0,e=self->length,i;
|
|
||||||
char *p=(char*)self->block;
|
|
||||||
if(!PyArg_ParseTuple(arg,"|ii",&s,&e)) return NULL;
|
|
||||||
if(s<0||e>self->length||s>e)
|
|
||||||
{ PyErr_SetString(PyExc_IndexError,"block index out of range");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
for(i=s;i<e;i++) if(p[i]<32) break;
|
|
||||||
return PyString_FromStringAndSize((char*)self->block+s,i-s);
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *PyBlock_PadString(PyBlockObject *self,PyObject *arg)
|
|
||||||
{ int s=0,e=self->length,n,m;
|
|
||||||
char *str;
|
|
||||||
char c;
|
|
||||||
char *p=(char*)self->block;
|
|
||||||
if(!PyArg_ParseTuple(arg,"s#c|ii",&str,&n,&c,&s,&e)) return NULL;
|
|
||||||
if(s<0||e>self->length||s>e)
|
|
||||||
{ PyErr_SetString(PyExc_IndexError,"block index out of range");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
m=e-s;
|
|
||||||
if(n>m) n=m;
|
|
||||||
memcpy(p+s,str,n);memset(p+s+n,c,m-n);
|
|
||||||
Py_INCREF(Py_None);return Py_None;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *PyBlock_BitSet(PyBlockObject *self,PyObject *arg)
|
|
||||||
{ int i,x,y;
|
|
||||||
int *p=(int*)self->block;
|
|
||||||
if(!PyArg_ParseTuple(arg,"iii",&i,&x,&y)) return NULL;
|
|
||||||
if(i<0||i>=self->length/4)
|
|
||||||
{ PyErr_SetString(PyExc_IndexError,"block index out of range");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
p[i]=(p[i]&y)^x;
|
|
||||||
Py_INCREF(Py_None);return Py_None;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *PyBlock_Resize(PyBlockObject *self,PyObject *arg)
|
|
||||||
{ int n;
|
|
||||||
if(!PyArg_ParseTuple(arg,"i",&n)) return NULL;
|
|
||||||
if(n<1) n=1;
|
|
||||||
if(self->heap)
|
|
||||||
{ void *v=realloc(self->block,4*n);
|
|
||||||
if (!v) return PyErr_NoMemory();
|
|
||||||
self->block=v;
|
|
||||||
}
|
|
||||||
self->length=4*n;
|
|
||||||
Py_INCREF(Py_None);return Py_None;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *PyBlock_ToFile(PyBlockObject *self,PyObject *arg)
|
|
||||||
{ int s=0,e=self->length/4;
|
|
||||||
PyObject *f;
|
|
||||||
FILE *fp;
|
|
||||||
if(!PyArg_ParseTuple(arg,"O|ii",&f,&s,&e)) return NULL;
|
|
||||||
fp=PyFile_AsFile(f);
|
|
||||||
if (!fp)
|
|
||||||
{ PyErr_SetString(PyExc_TypeError, "arg must be open file");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
fwrite((int*)(self->block)+s,4,e-s,fp);
|
|
||||||
Py_INCREF(Py_None);return Py_None;
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct PyMethodDef PyBlock_Methods[]=
|
|
||||||
{ { "tostring",(PyCFunction)PyBlock_ToString,1},
|
|
||||||
{ "padstring",(PyCFunction)PyBlock_PadString,1},
|
|
||||||
{ "nullstring",(PyCFunction)PyBlock_NullString,1},
|
|
||||||
{ "ctrlstring",(PyCFunction)PyBlock_CtrlString,1},
|
|
||||||
{ "bitset",(PyCFunction)PyBlock_BitSet,1},
|
|
||||||
{ "resize",(PyCFunction)PyBlock_Resize,1},
|
|
||||||
{ "tofile",(PyCFunction)PyBlock_ToFile,1},
|
|
||||||
{ NULL,NULL} /* sentinel */
|
|
||||||
};
|
|
||||||
|
|
||||||
static int block_len(PyBlockObject *b)
|
|
||||||
{ return b->length/4;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *block_concat(PyBlockObject *b,PyBlockObject *c)
|
|
||||||
{ PyErr_SetString(PyExc_IndexError,"block concatenation not implemented");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *block_repeat(PyBlockObject *b,Py_ssize_t i)
|
|
||||||
{ PyErr_SetString(PyExc_IndexError,"block repetition not implemented");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *block_item(PyBlockObject *b,Py_ssize_t i)
|
|
||||||
{ if(i<0||4*i>=b->length)
|
|
||||||
{ PyErr_SetString(PyExc_IndexError,"block index out of range");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
return PyInt_FromLong(((long*)(b->block))[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *block_slice(PyBlockObject *b,Py_ssize_t i,Py_ssize_t j)
|
|
||||||
{ Py_ssize_t n,k;
|
|
||||||
long *p=b->block;
|
|
||||||
PyObject *result;
|
|
||||||
if(j>b->length/4) j=b->length/4;
|
|
||||||
if(i<0||i>j)
|
|
||||||
{ PyErr_SetString(PyExc_IndexError,"block index out of range");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
n=j-i;
|
|
||||||
result=PyList_New(n);
|
|
||||||
for(k=0;k<n;k++) PyList_SetItem(result,k,PyInt_FromSsize_t(p[i+k]));
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int block_ass_item(PyBlockObject *b,Py_ssize_t i,PyObject *v)
|
|
||||||
{ if(i<0||i>=b->length/4)
|
|
||||||
{ PyErr_SetString(PyExc_IndexError,"block index out of range");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if(!PyInt_Check(v))
|
|
||||||
{ PyErr_SetString(PyExc_TypeError,"block item must be integer");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
((long*)(b->block))[i]=PyInt_AsLong(v);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int block_ass_slice(PyBlockObject *b,Py_ssize_t i,Py_ssize_t j,PyObject *v)
|
|
||||||
{ Py_ssize_t n,k;
|
|
||||||
long *p=b->block;
|
|
||||||
if(j>b->length/4) j=b->length/4;
|
|
||||||
if(i<0||i>j)
|
|
||||||
{ PyErr_SetString(PyExc_IndexError,"block index out of range");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if(!PyList_Check(v)) goto fail;
|
|
||||||
n=PyList_Size(v);
|
|
||||||
if(n>j-i) n=j-i;
|
|
||||||
for(k=0;k<n;k++)
|
|
||||||
{ PyObject *q=PyList_GetItem(v,k);
|
|
||||||
if(!PyInt_Check(q)) goto fail;
|
|
||||||
p[i+k]=PyInt_AsLong(q);
|
|
||||||
}
|
|
||||||
for(;k<j-i;k++) p[i+k]=0;
|
|
||||||
return 0;
|
|
||||||
fail:PyErr_SetString(PyExc_TypeError,"block slice must be integer list");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PySequenceMethods block_as_sequence=
|
|
||||||
{ (inquiry)block_len, /*sq_length*/
|
|
||||||
(binaryfunc)block_concat, /*sq_concat*/
|
|
||||||
(ssizeargfunc)block_repeat, /*sq_repeat*/
|
|
||||||
(ssizeargfunc)block_item, /*sq_item*/
|
|
||||||
(ssizessizeargfunc)block_slice, /*sq_slice*/
|
|
||||||
(ssizeobjargproc)block_ass_item, /*sq_ass_item*/
|
|
||||||
(ssizessizeobjargproc)block_ass_slice, /*sq_ass_slice*/
|
|
||||||
};
|
|
||||||
|
|
||||||
static PyObject *PyBlock_GetAttr(PyBlockObject *s,char *name)
|
|
||||||
{
|
|
||||||
if (!strcmp(name, "length")) return PyInt_FromLong((long)s->length);
|
|
||||||
if (!strcmp(name, "start")) return PyInt_FromLong((long)s->block);
|
|
||||||
if (!strcmp(name,"end")) return PyInt_FromLong(((long)(s->block)+s->length));
|
|
||||||
if (!strcmp(name, "__members__"))
|
|
||||||
{ PyObject *list = PyList_New(3);
|
|
||||||
if (list)
|
|
||||||
{ PyList_SetItem(list, 0, PyString_FromString("length"));
|
|
||||||
PyList_SetItem(list, 1, PyString_FromString("start"));
|
|
||||||
PyList_SetItem(list, 2, PyString_FromString("end"));
|
|
||||||
if (PyErr_Occurred()) { Py_DECREF(list);list = NULL;}
|
|
||||||
}
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
return Py_FindMethod(PyBlock_Methods, (PyObject*) s,name);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void PyBlock_Dealloc(PyBlockObject *b)
|
|
||||||
{
|
|
||||||
if(b->heap) {
|
|
||||||
if (b->heap)
|
|
||||||
;
|
|
||||||
else
|
|
||||||
PyMem_DEL(b->block);
|
|
||||||
}
|
|
||||||
PyMem_DEL(b);
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyTypeObject PyBlockType=
|
|
||||||
{ PyObject_HEAD_INIT(&PyType_Type)
|
|
||||||
0, /*ob_size*/
|
|
||||||
"block", /*tp_name*/
|
|
||||||
sizeof(PyBlockObject), /*tp_size*/
|
|
||||||
0, /*tp_itemsize*/
|
|
||||||
/* methods */
|
|
||||||
(destructor)PyBlock_Dealloc, /*tp_dealloc*/
|
|
||||||
0, /*tp_print*/
|
|
||||||
(getattrfunc)PyBlock_GetAttr, /*tp_getattr*/
|
|
||||||
0, /*tp_setattr*/
|
|
||||||
0, /*tp_compare*/
|
|
||||||
0, /*tp_repr*/
|
|
||||||
0, /*tp_as_number*/
|
|
||||||
&block_as_sequence, /*tp_as_sequence*/
|
|
||||||
0, /*tp_as_mapping*/
|
|
||||||
0, /*tp_hash*/
|
|
||||||
};
|
|
||||||
|
|
||||||
/* swi commands */
|
|
||||||
|
|
||||||
static PyObject *swi_swi(PyObject *self,PyObject *args)
|
|
||||||
{ PyObject *name,*format,*result,*v;
|
|
||||||
int swino,carry,rno=0,j,n;
|
|
||||||
char *swiname,*fmt,*outfmt;
|
|
||||||
_kernel_swi_regs r;
|
|
||||||
PyBlockObject *ao;
|
|
||||||
if(args==NULL||!PyTuple_Check(args)||(n=PyTuple_Size(args))<2)
|
|
||||||
{ PyErr_BadArgument(); return NULL;}
|
|
||||||
name=PyTuple_GetItem(args,0);
|
|
||||||
if(!PyArg_Parse(name,"i",&swino))
|
|
||||||
{ PyErr_Clear();
|
|
||||||
if(!PyArg_Parse(name,"s",&swiname)) return NULL;
|
|
||||||
e=xos_swi_number_from_string(swiname,&swino);
|
|
||||||
if(e) return swi_oserror();
|
|
||||||
}
|
|
||||||
format=PyTuple_GetItem(args,1);
|
|
||||||
if(!PyArg_Parse(format,"s",&fmt)) return NULL;
|
|
||||||
j=2;
|
|
||||||
for(;;fmt++)
|
|
||||||
{ switch(*fmt)
|
|
||||||
{ case '.': rno++;continue;
|
|
||||||
case ';':case 0: goto swicall;
|
|
||||||
case '0':case '1':case '2':case '3':case '4':
|
|
||||||
case '5':case '6':case '7':case '8':case '9':
|
|
||||||
r.r[rno++]=*fmt-'0';continue;
|
|
||||||
case '-':r.r[rno++]=-1;continue;
|
|
||||||
}
|
|
||||||
if(j>=n) return swi_error("Too few arguments");
|
|
||||||
v=PyTuple_GetItem(args,j++);
|
|
||||||
switch(*fmt)
|
|
||||||
{ case 'i':if(!PyArg_Parse(v,"i",&r.r[rno])) return NULL;
|
|
||||||
break;
|
|
||||||
case 's':if(!PyArg_Parse(v,"s",(char**)(&r.r[rno]))) return NULL;
|
|
||||||
break;
|
|
||||||
case 'b':if(!PyArg_Parse(v,"O",(PyObject**)&ao)) return NULL;
|
|
||||||
if(!PyBlock_Check(v)) return swi_error("Not a block");
|
|
||||||
r.r[rno]=(int)(ao->block);
|
|
||||||
break;
|
|
||||||
case 'e':if(!PyArg_Parse(v,"O",(PyObject**)&ao)) return NULL;
|
|
||||||
if(!PyBlock_Check(v)) return swi_error("Not a block");
|
|
||||||
r.r[rno]=(int)(ao->block)+ao->length;
|
|
||||||
break;
|
|
||||||
default:return swi_error("Odd format character");
|
|
||||||
}
|
|
||||||
rno++;
|
|
||||||
}
|
|
||||||
swicall:e=(os_error*)_kernel_swi_c(swino,&r,&r,&carry);
|
|
||||||
if(e) return swi_oserror();
|
|
||||||
if(*fmt==0) { Py_INCREF(Py_None);return Py_None;}
|
|
||||||
n=0;
|
|
||||||
for(outfmt=++fmt;*outfmt;outfmt++) switch(*outfmt)
|
|
||||||
{ case 'i':case 's':case '*':n++;break;
|
|
||||||
case '.':break;
|
|
||||||
default:return swi_error("Odd format character");
|
|
||||||
}
|
|
||||||
if(n==0) { Py_INCREF(Py_None);return Py_None;}
|
|
||||||
if(n!=1)
|
|
||||||
{ result=PyTuple_New(n);
|
|
||||||
if(!result) return NULL;
|
|
||||||
}
|
|
||||||
rno=0;j=0;
|
|
||||||
for(;*fmt;fmt++)
|
|
||||||
{ switch(*fmt)
|
|
||||||
{ case 'i':v=PyInt_FromLong((long)r.r[rno++]); break;
|
|
||||||
case 's':v=PyString_FromString((char*)(r.r[rno++])); break;
|
|
||||||
case '.':rno++; continue;
|
|
||||||
case '*':v=PyInt_FromLong((long)carry); break;
|
|
||||||
}
|
|
||||||
if(!v) goto fail;
|
|
||||||
if(n==1) return v;
|
|
||||||
PyTuple_SetItem(result,j,v);
|
|
||||||
j++;
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
fail:Py_DECREF(result);return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject *swi_string(PyObject *self, PyObject *arg)
|
|
||||||
{ char *s;
|
|
||||||
int l=-1;
|
|
||||||
if(!PyArg_ParseTuple(arg,"i|i",(unsigned int *)&s, &l)) return NULL;
|
|
||||||
if (l==-1)
|
|
||||||
l = strlen(s);
|
|
||||||
return PyString_FromStringAndSize((char*)s, l);
|
|
||||||
}
|
|
||||||
|
|
||||||
static char swi_string__doc__[] =
|
|
||||||
"string(address[, length]) -> string\n\
|
|
||||||
Read a null terminated string from the given address.";
|
|
||||||
|
|
||||||
|
|
||||||
static PyObject *swi_integer(PyObject *self, PyObject *arg)
|
|
||||||
{ int *i;
|
|
||||||
|
|
||||||
if(!PyArg_ParseTuple(arg,"i",(unsigned int *)&i))
|
|
||||||
return NULL;
|
|
||||||
return PyInt_FromLong(*i);
|
|
||||||
}
|
|
||||||
|
|
||||||
static char swi_integer__doc__[] =
|
|
||||||
"integer(address) -> string\n\
|
|
||||||
Read an integer from the given address.";
|
|
||||||
|
|
||||||
|
|
||||||
static PyObject *swi_integers(PyObject *self, PyObject *arg)
|
|
||||||
{ int *i;
|
|
||||||
int c=-1;
|
|
||||||
PyObject *result, *result1;
|
|
||||||
|
|
||||||
if(!PyArg_ParseTuple(arg,"i|i",(unsigned int *)&i, &c)) return NULL;
|
|
||||||
result=PyList_New(0);
|
|
||||||
if (result) {
|
|
||||||
while ( c>0 || (c==-1 && *i) ) {
|
|
||||||
result1 = PyInt_FromLong((long)*i);
|
|
||||||
if (!result1) {
|
|
||||||
Py_DECREF(result);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
if (PyList_Append(result, result1)!=0) {
|
|
||||||
Py_DECREF(result);
|
|
||||||
Py_DECREF(result1);
|
|
||||||
return NULL;
|
|
||||||
};
|
|
||||||
i++;
|
|
||||||
if (c!=-1)
|
|
||||||
c--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
static char swi_integers__doc__[] =
|
|
||||||
"integers(address[, count]) -> string\n\
|
|
||||||
Either read a null terminated list of integers or\n\
|
|
||||||
a list of given length from the given address.";
|
|
||||||
|
|
||||||
|
|
||||||
static PyObject *swi_tuples(PyObject *self, PyObject *arg)
|
|
||||||
{
|
|
||||||
unsigned char *i; /* points to current */
|
|
||||||
int c=-1, l=4, j, zero; /* count, length, index */
|
|
||||||
PyObject *result, *result1, *result11;
|
|
||||||
|
|
||||||
if(!PyArg_ParseTuple(arg,"i|ii",(unsigned int *)&i, &l, &c)) return NULL;
|
|
||||||
result=PyList_New(0);
|
|
||||||
if (result) {
|
|
||||||
while (c) {
|
|
||||||
result1 = PyTuple_New(l);
|
|
||||||
if (!result1) {
|
|
||||||
Py_DECREF(result);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
zero = (c==-1); /* check for zeros? */
|
|
||||||
for(j=0;j<l;j++) {
|
|
||||||
if (zero && *i)
|
|
||||||
zero = 0; /* non-zero found */
|
|
||||||
result11 = PyInt_FromLong((long)(*i));
|
|
||||||
if (!result11) {
|
|
||||||
Py_DECREF(result);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
PyTuple_SetItem(result1, j, result11);
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
if (c==-1 && zero) {
|
|
||||||
Py_DECREF(result1);
|
|
||||||
c = 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (PyList_Append(result, result1)!=0) {
|
|
||||||
Py_DECREF(result1);
|
|
||||||
Py_DECREF(result);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
if (c!=-1)
|
|
||||||
c--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
static char swi_tuples__doc__[] =
|
|
||||||
"tuples(address[, length=4[, count]]) -> string\n\
|
|
||||||
Either read a null terminated list of byte tuples or\n\
|
|
||||||
a list of given length from the given address.";
|
|
||||||
|
|
||||||
|
|
||||||
static PyObject *swi_tuple(PyObject *self, PyObject *arg)
|
|
||||||
{
|
|
||||||
unsigned char *i; /* points to current */
|
|
||||||
int c=1, j;
|
|
||||||
PyObject *result, *result1;
|
|
||||||
|
|
||||||
if(!PyArg_ParseTuple(arg,"i|i",(unsigned int *)&i, &c)) return NULL;
|
|
||||||
result = PyTuple_New(c);
|
|
||||||
if (!result)
|
|
||||||
return NULL;
|
|
||||||
for(j=0;j<c;j++) {
|
|
||||||
result1 = PyInt_FromLong((long)(i[j]));
|
|
||||||
if (!result1) {
|
|
||||||
Py_DECREF(result);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
PyTuple_SetItem(result, j, result1);
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
static char swi_tuple__doc__[] =
|
|
||||||
"tuple(address[, count=1]]) -> tuple\n\
|
|
||||||
Read count bytes from given address.";
|
|
||||||
|
|
||||||
|
|
||||||
static PyMethodDef SwiMethods[]=
|
|
||||||
{ { "swi", swi_swi, METH_VARARGS},
|
|
||||||
{ "block", PyBlock_New, METH_VARARGS},
|
|
||||||
{ "register", PyRegister, METH_VARARGS},
|
|
||||||
{ "string", swi_string, METH_VARARGS, swi_string__doc__},
|
|
||||||
{ "integer", swi_integer, METH_VARARGS, swi_integer__doc__},
|
|
||||||
{ "integers", swi_integers, METH_VARARGS, swi_integers__doc__},
|
|
||||||
{ "tuples", swi_tuples, METH_VARARGS, swi_tuples__doc__},
|
|
||||||
{ "tuple", swi_tuple, METH_VARARGS, swi_tuple__doc__},
|
|
||||||
{ NULL,NULL,0,NULL} /* Sentinel */
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
void initswi()
|
|
||||||
{ PyObject *m, *d;
|
|
||||||
m = Py_InitModule("swi", SwiMethods);
|
|
||||||
d = PyModule_GetDict(m);
|
|
||||||
SwiError=PyErr_NewException("swi.error", NULL, NULL);
|
|
||||||
PyDict_SetItemString(d,"error",SwiError);
|
|
||||||
ArgError=PyErr_NewException("swi.ArgError", NULL, NULL);
|
|
||||||
PyDict_SetItemString(d,"ArgError",ArgError);
|
|
||||||
}
|
|
|
@ -1,63 +0,0 @@
|
||||||
/***********************************************************
|
|
||||||
Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam,
|
|
||||||
The Netherlands.
|
|
||||||
|
|
||||||
All Rights Reserved
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and distribute this software and its
|
|
||||||
documentation for any purpose and without fee is hereby granted,
|
|
||||||
provided that the above copyright notice appear in all copies and that
|
|
||||||
both that copyright notice and this permission notice appear in
|
|
||||||
supporting documentation, and that the names of Stichting Mathematisch
|
|
||||||
Centrum or CWI or Corporation for National Research Initiatives or
|
|
||||||
CNRI not be used in advertising or publicity pertaining to
|
|
||||||
distribution of the software without specific, written prior
|
|
||||||
permission.
|
|
||||||
|
|
||||||
While CWI is the initial source for this software, a modified version
|
|
||||||
is made available by the Corporation for National Research Initiatives
|
|
||||||
(CNRI) at the Internet address ftp://ftp.python.org.
|
|
||||||
|
|
||||||
STICHTING MATHEMATISCH CENTRUM AND CNRI DISCLAIM ALL WARRANTIES WITH
|
|
||||||
REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH
|
|
||||||
CENTRUM OR CNRI BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
|
|
||||||
DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
|
|
||||||
PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
|
||||||
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
||||||
PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
|
|
||||||
******************************************************************/
|
|
||||||
|
|
||||||
/* This module provides the necessary stubs for when dynamic loading is
|
|
||||||
not present. */
|
|
||||||
|
|
||||||
#include "Python.h"
|
|
||||||
#include "importdl.h"
|
|
||||||
|
|
||||||
#include "dlk.h"
|
|
||||||
|
|
||||||
|
|
||||||
const struct filedescr _PyImport_DynLoadFiletab[] = {
|
|
||||||
{"/pyd", "rb", C_EXTENSION},
|
|
||||||
{0, 0}
|
|
||||||
};
|
|
||||||
|
|
||||||
void dynload_init_dummy()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
dl_funcptr _PyImport_GetDynLoadFunc(const char *fqname, const char *shortname,
|
|
||||||
char *pathname, FILE *fp)
|
|
||||||
{
|
|
||||||
int err;
|
|
||||||
char errstr[256];
|
|
||||||
void (*init_function)(void);
|
|
||||||
|
|
||||||
err = dlk_load_no_init(pathname, &init_function);
|
|
||||||
if (err) {
|
|
||||||
PyOS_snprintf(errstr, sizeof(errstr), "dlk failure %d", err);
|
|
||||||
PyErr_SetString(PyExc_ImportError, errstr);
|
|
||||||
}
|
|
||||||
return init_function;
|
|
||||||
}
|
|
|
@ -1,5 +0,0 @@
|
||||||
char *getcwd(char *buf, int size)
|
|
||||||
{
|
|
||||||
buf[0] = '\0';
|
|
||||||
return buf;
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
#define __swi
|
|
||||||
#include "oslib/osfile.h"
|
|
||||||
|
|
||||||
long PyOS_GetLastModificationTime(char *path, FILE *fp)
|
|
||||||
{
|
|
||||||
int obj;
|
|
||||||
bits load, exec, ftype;
|
|
||||||
|
|
||||||
if (xosfile_read_stamped_no_path(path, &obj, &load, &exec, 0, 0, &ftype)) return -1;
|
|
||||||
if (obj != osfile_IS_FILE) return -1;
|
|
||||||
if (ftype == osfile_TYPE_UNTYPED) return -1;
|
|
||||||
|
|
||||||
load &= 0xFF;
|
|
||||||
load -= 51;
|
|
||||||
if (exec < 1855548004U) load--;
|
|
||||||
exec -= 1855548004U;
|
|
||||||
return exec/100+42949672*load+(95*load)/100;
|
|
||||||
}
|
|
|
@ -1,36 +0,0 @@
|
||||||
This directory contains files for the RISC OS port of Python.
|
|
||||||
For more information about RISC OS see http://www.riscos.com/ .
|
|
||||||
|
|
||||||
This port is currently being maintained by Dietmar Schwertberger,
|
|
||||||
dietmar@schwertberger.de .
|
|
||||||
|
|
||||||
On http://www.schwertberger.de you may find compiled versions and libraries
|
|
||||||
as well as RISC OS specific documentation and extensions.
|
|
||||||
|
|
||||||
|
|
||||||
==========================================================================
|
|
||||||
Compiling:
|
|
||||||
|
|
||||||
1. Extract Files from archive directory 'Python-...' to a directory named
|
|
||||||
'!Python'.
|
|
||||||
2. Use a tool like Rename to change filenames from '*/[ch]' into '[ch].*'.
|
|
||||||
3. Create missing directories with 'amu cdirs'.
|
|
||||||
4. Build with 'amu'.
|
|
||||||
|
|
||||||
I've only tested Acorn/Norcroft C/C++ 5.30 and amu.
|
|
||||||
|
|
||||||
Python now uses the 32 bit libraries from Pace as well as the 32 bit
|
|
||||||
version of OSLib.
|
|
||||||
|
|
||||||
You will also need some additional libraries:
|
|
||||||
|
|
||||||
DLK (patched version)
|
|
||||||
http://www.schwertberger.de
|
|
||||||
OSLib
|
|
||||||
http://www.mk-net.demon.co.uk/oslib
|
|
||||||
|
|
||||||
zlib (optional)
|
|
||||||
ftp://ftp.freesoftware.com/pub/infozip/zlib/
|
|
||||||
expat (optional)
|
|
||||||
http://sourceforge.net/projects/expat/
|
|
||||||
(makefile and config.h available from http://www.schwertberger.de/riscos_expat.zip
|
|
|
@ -1,715 +0,0 @@
|
||||||
/* RISCOS/pyconfig.h: Python configuration for RISC OS */
|
|
||||||
|
|
||||||
#ifndef Py_PYCONFIG_H
|
|
||||||
#define Py_PYCONFIG_H
|
|
||||||
|
|
||||||
/* Define if on AIX 3.
|
|
||||||
System headers sometimes define this.
|
|
||||||
We just want to avoid a redefinition error message. */
|
|
||||||
#ifndef _ALL_SOURCE
|
|
||||||
#undef _ALL_SOURCE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Define if type char is unsigned and you are not using gcc. */
|
|
||||||
#ifndef __CHAR_UNSIGNED__
|
|
||||||
#undef __CHAR_UNSIGNED__
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Define to empty if the keyword does not work. */
|
|
||||||
#undef const
|
|
||||||
|
|
||||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
|
||||||
#undef gid_t
|
|
||||||
|
|
||||||
/* Define if your struct tm has tm_zone. */
|
|
||||||
#undef HAVE_TM_ZONE
|
|
||||||
|
|
||||||
/* Define if you don't have tm_zone but do have the external array
|
|
||||||
tzname. */
|
|
||||||
#undef HAVE_TZNAME
|
|
||||||
|
|
||||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
|
||||||
#undef mode_t
|
|
||||||
|
|
||||||
/* Define to `long' if <sys/types.h> doesn't define. */
|
|
||||||
#undef off_t
|
|
||||||
|
|
||||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
|
||||||
#undef pid_t
|
|
||||||
|
|
||||||
/* Define if the system does not provide POSIX.1 features except
|
|
||||||
with this defined. */
|
|
||||||
#undef _POSIX_1_SOURCE
|
|
||||||
|
|
||||||
/* Define if you need to in order for stat and other things to work. */
|
|
||||||
#undef _POSIX_SOURCE
|
|
||||||
|
|
||||||
/* Define as the return type of signal handlers (int or void). */
|
|
||||||
#define RETSIGTYPE void
|
|
||||||
|
|
||||||
/* Define to `unsigned' if <sys/types.h> doesn't define. */
|
|
||||||
#undef size_t
|
|
||||||
|
|
||||||
/* Define if you have the ANSI C header files. */
|
|
||||||
#define STDC_HEADERS 1
|
|
||||||
|
|
||||||
/* Define if you can safely include both <sys/time.h> and <time.h>. */
|
|
||||||
#undef TIME_WITH_SYS_TIME
|
|
||||||
|
|
||||||
/* Define if your <sys/time.h> declares struct tm. */
|
|
||||||
#define TM_IN_SYS_TIME 1
|
|
||||||
|
|
||||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
|
||||||
#undef uid_t
|
|
||||||
|
|
||||||
/* Define if your processor stores words with the most significant
|
|
||||||
byte first (like Motorola and SPARC, unlike Intel and VAX). */
|
|
||||||
#undef WORDS_BIGENDIAN
|
|
||||||
|
|
||||||
/* Define for AIX if your compiler is a genuine IBM xlC/xlC_r
|
|
||||||
and you want support for AIX C++ shared extension modules. */
|
|
||||||
#undef AIX_GENUINE_CPLUSPLUS
|
|
||||||
|
|
||||||
/* Define if your compiler botches static forward declarations
|
|
||||||
(as it does on SCI ODT 3.0) */
|
|
||||||
#undef BAD_STATIC_FORWARD
|
|
||||||
|
|
||||||
/* Define this if you have BeOS threads */
|
|
||||||
#undef BEOS_THREADS
|
|
||||||
|
|
||||||
/* Define if you have the Mach cthreads package */
|
|
||||||
#undef C_THREADS
|
|
||||||
|
|
||||||
/* Define to `long' if <time.h> doesn't define. */
|
|
||||||
#undef clock_t
|
|
||||||
|
|
||||||
/* Defined on Solaris to see additional function prototypes. */
|
|
||||||
#undef __EXTENSIONS__
|
|
||||||
|
|
||||||
/* This must be set to 64 on some systems to enable large file support */
|
|
||||||
#undef _FILE_OFFSET_BITS
|
|
||||||
|
|
||||||
/* Define if getpgrp() must be called as getpgrp(0). */
|
|
||||||
#undef GETPGRP_HAVE_ARG
|
|
||||||
|
|
||||||
/* Define if gettimeofday() does not have second (timezone) argument
|
|
||||||
This is the case on Motorola V4 (R40V4.2) */
|
|
||||||
#undef GETTIMEOFDAY_NO_TZ
|
|
||||||
|
|
||||||
/* Define this if your time.h defines altzone */
|
|
||||||
#undef HAVE_ALTZONE
|
|
||||||
|
|
||||||
/* Define if --enable-ipv6 is specified */
|
|
||||||
#undef ENABLE_IPV6
|
|
||||||
|
|
||||||
/* Define if sockaddr has sa_len member */
|
|
||||||
#undef HAVE_SOCKADDR_SA_LEN
|
|
||||||
|
|
||||||
/* struct addrinfo (netdb.h) */
|
|
||||||
#undef HAVE_ADDRINFO
|
|
||||||
|
|
||||||
/* struct sockaddr_storage (sys/socket.h) */
|
|
||||||
#undef HAVE_SOCKADDR_STORAGE
|
|
||||||
|
|
||||||
/* Defined when any dynamic module loading is enabled */
|
|
||||||
#define HAVE_DYNAMIC_LOADING 1
|
|
||||||
|
|
||||||
/* Define this if you have flockfile(), getc_unlocked(), and funlockfile() */
|
|
||||||
#undef HAVE_GETC_UNLOCKED
|
|
||||||
|
|
||||||
/* Define this if you have some version of gethostbyname_r() */
|
|
||||||
#undef HAVE_GETHOSTBYNAME_R
|
|
||||||
|
|
||||||
/* Define this if you have the 3-arg version of gethostbyname_r() */
|
|
||||||
#undef HAVE_GETHOSTBYNAME_R_3_ARG
|
|
||||||
|
|
||||||
/* Define this if you have the 5-arg version of gethostbyname_r() */
|
|
||||||
#undef HAVE_GETHOSTBYNAME_R_5_ARG
|
|
||||||
|
|
||||||
/* Define this if you have the 6-arg version of gethostbyname_r() */
|
|
||||||
#undef HAVE_GETHOSTBYNAME_R_6_ARG
|
|
||||||
|
|
||||||
/* Defined to enable large file support when an off_t is bigger than a long
|
|
||||||
and long long is available and at least as big as an off_t. You may need
|
|
||||||
to add some flags for configuration and compilation to enable this mode.
|
|
||||||
E.g, for Solaris 2.7:
|
|
||||||
CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" OPT="-O2 $CFLAGS" \
|
|
||||||
configure
|
|
||||||
*/
|
|
||||||
#undef HAVE_LARGEFILE_SUPPORT
|
|
||||||
|
|
||||||
/* Define this if you have the type long long */
|
|
||||||
#define HAVE_LONG_LONG
|
|
||||||
|
|
||||||
/* Define if your compiler supports function prototypes */
|
|
||||||
#define HAVE_PROTOTYPES 1
|
|
||||||
|
|
||||||
/* Define if you have GNU PTH threads */
|
|
||||||
#undef HAVE_PTH
|
|
||||||
|
|
||||||
/* Define if you have readline 4.2 */
|
|
||||||
#undef HAVE_RL_COMPLETION_MATCHES
|
|
||||||
|
|
||||||
/* Define if your compiler supports variable length function prototypes
|
|
||||||
(e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h> */
|
|
||||||
#define HAVE_STDARG_PROTOTYPES 1
|
|
||||||
|
|
||||||
/* Define this if you have the type uintptr_t */
|
|
||||||
#undef HAVE_UINTPTR_T
|
|
||||||
|
|
||||||
/* Define if you have a useable wchar_t type defined in wchar.h; useable
|
|
||||||
means wchar_t must be 16-bit unsigned type. (see
|
|
||||||
Include/unicodeobject.h). */
|
|
||||||
#undef HAVE_USABLE_WCHAR_T
|
|
||||||
|
|
||||||
/* Define if the compiler provides a wchar.h header file. */
|
|
||||||
#undef HAVE_WCHAR_H
|
|
||||||
|
|
||||||
/* This must be defined on some systems to enable large file support */
|
|
||||||
#undef _LARGEFILE_SOURCE
|
|
||||||
|
|
||||||
/* Define as the integral type used for Unicode representation. */
|
|
||||||
#define PY_UNICODE_TYPE unsigned short
|
|
||||||
|
|
||||||
/* Define as the size of the unicode type. */
|
|
||||||
#define Py_UNICODE_SIZE 2
|
|
||||||
|
|
||||||
/* Define if nice() returns success/failure instead of the new priority. */
|
|
||||||
#undef HAVE_BROKEN_NICE
|
|
||||||
|
|
||||||
/* Define if you have POSIX threads */
|
|
||||||
#undef _POSIX_THREADS
|
|
||||||
|
|
||||||
/* Define if you want to build an interpreter with many run-time checks */
|
|
||||||
#undef Py_DEBUG
|
|
||||||
|
|
||||||
/* Define to force use of thread-safe errno, h_errno, and other functions */
|
|
||||||
#undef _REENTRANT
|
|
||||||
|
|
||||||
/* Define if setpgrp() must be called as setpgrp(0, 0). */
|
|
||||||
#undef SETPGRP_HAVE_ARG
|
|
||||||
|
|
||||||
/* Define to empty if the keyword does not work. */
|
|
||||||
#undef signed
|
|
||||||
|
|
||||||
/* Define if i>>j for signed int i does not extend the sign bit
|
|
||||||
when i < 0
|
|
||||||
*/
|
|
||||||
#undef SIGNED_RIGHT_SHIFT_ZERO_FILLS
|
|
||||||
|
|
||||||
/* The number of bytes in an off_t. */
|
|
||||||
#define SIZEOF_OFF_T 4
|
|
||||||
|
|
||||||
/* The number of bytes in a time_t. */
|
|
||||||
#define SIZEOF_TIME_T 4
|
|
||||||
|
|
||||||
/* The number of bytes in a pthread_t. */
|
|
||||||
#undef SIZEOF_PTHREAD_T
|
|
||||||
|
|
||||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
|
||||||
#define socklen_t int
|
|
||||||
|
|
||||||
/* Define if you can safely include both <sys/select.h> and <sys/time.h>
|
|
||||||
(which you can't on SCO ODT 3.0). */
|
|
||||||
#undef SYS_SELECT_WITH_SYS_TIME
|
|
||||||
|
|
||||||
/* Define if a va_list is an array of some kind */
|
|
||||||
#define VA_LIST_IS_ARRAY 1
|
|
||||||
|
|
||||||
/* Define to empty if the keyword does not work. */
|
|
||||||
#undef volatile
|
|
||||||
|
|
||||||
/* Define if you want SIGFPE handled (see Include/pyfpe.h). */
|
|
||||||
#undef WANT_SIGFPE_HANDLER
|
|
||||||
|
|
||||||
/* Define if you want wctype.h functions to be used instead of the
|
|
||||||
one supplied by Python itself. (see Include/unicodectype.h). */
|
|
||||||
#undef WANT_WCTYPE_FUNCTIONS
|
|
||||||
|
|
||||||
/* Define if you want documentation strings in extension modules */
|
|
||||||
#define WITH_DOC_STRINGS 1
|
|
||||||
|
|
||||||
/* Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
|
|
||||||
dynamic linker (dyld) instead of the old-style (NextStep) dynamic
|
|
||||||
linker (rld). Dyld is necessary to support frameworks. */
|
|
||||||
#undef WITH_DYLD
|
|
||||||
|
|
||||||
/* Define if you want to compile in Python-specific mallocs */
|
|
||||||
#define WITH_PYMALLOC 1
|
|
||||||
|
|
||||||
/* Define if you want to produce an OpenStep/Rhapsody framework
|
|
||||||
(shared library plus accessory files). */
|
|
||||||
#undef WITH_NEXT_FRAMEWORK
|
|
||||||
|
|
||||||
/* Define if you want to use MacPython modules on MacOSX in unix-Python */
|
|
||||||
#undef USE_TOOLBOX_OBJECT_GLUE
|
|
||||||
|
|
||||||
/* Define if you want to compile in rudimentary thread support */
|
|
||||||
#undef WITH_THREAD
|
|
||||||
|
|
||||||
/* The number of bytes in a char. */
|
|
||||||
#define SIZEOF_CHAR 1
|
|
||||||
|
|
||||||
/* The number of bytes in a double. */
|
|
||||||
#define SIZEOF_DOUBLE 8
|
|
||||||
|
|
||||||
/* The number of bytes in a float. */
|
|
||||||
#define SIZEOF_FLOAT 4
|
|
||||||
|
|
||||||
/* The number of bytes in a fpos_t. */
|
|
||||||
#undef SIZEOF_FPOS_T
|
|
||||||
|
|
||||||
/* The number of bytes in a int. */
|
|
||||||
#define SIZEOF_INT 4
|
|
||||||
|
|
||||||
/* The number of bytes in a long. */
|
|
||||||
#define SIZEOF_LONG 4
|
|
||||||
|
|
||||||
/* The number of bytes in a long long. */
|
|
||||||
#define SIZEOF_LONG_LONG 8
|
|
||||||
|
|
||||||
/* The number of bytes in a short. */
|
|
||||||
#define SIZEOF_SHORT 2
|
|
||||||
|
|
||||||
/* The number of bytes in a uintptr_t. */
|
|
||||||
#undef SIZEOF_UINTPTR_T
|
|
||||||
|
|
||||||
/* The number of bytes in a void *. */
|
|
||||||
#define SIZEOF_VOID_P 4
|
|
||||||
|
|
||||||
/* The number of bytes in a wchar_t. */
|
|
||||||
#undef SIZEOF_WCHAR_T
|
|
||||||
|
|
||||||
/* Define if you have the _getpty function. */
|
|
||||||
#undef HAVE__GETPTY
|
|
||||||
|
|
||||||
/* Define if you have the alarm function. */
|
|
||||||
#undef HAVE_ALARM
|
|
||||||
|
|
||||||
/* Define if you have the chown function. */
|
|
||||||
#undef HAVE_CHOWN
|
|
||||||
|
|
||||||
/* Define if you have the clock function. */
|
|
||||||
#define HAVE_CLOCK 1
|
|
||||||
|
|
||||||
/* Define if you have the confstr function. */
|
|
||||||
#undef HAVE_CONFSTR
|
|
||||||
|
|
||||||
/* Define if you have the ctermid function. */
|
|
||||||
#undef HAVE_CTERMID
|
|
||||||
|
|
||||||
/* Define if you have the ctermid_r function. */
|
|
||||||
#undef HAVE_CTERMID_R
|
|
||||||
|
|
||||||
/* Define if you have the dlopen function. */
|
|
||||||
#undef HAVE_DLOPEN
|
|
||||||
|
|
||||||
/* Define if you have the dup2 function. */
|
|
||||||
#undef HAVE_DUP2
|
|
||||||
|
|
||||||
/* Define if you have the execv function. */
|
|
||||||
#undef HAVE_EXECV
|
|
||||||
|
|
||||||
/* Define if you have the fdatasync function. */
|
|
||||||
#undef HAVE_FDATASYNC
|
|
||||||
|
|
||||||
/* Define if you have the flock function. */
|
|
||||||
#undef HAVE_FLOCK
|
|
||||||
|
|
||||||
/* Define if you have the fork function. */
|
|
||||||
#undef HAVE_FORK
|
|
||||||
|
|
||||||
/* Define if you have the forkpty function. */
|
|
||||||
#undef HAVE_FORKPTY
|
|
||||||
|
|
||||||
/* Define if you have the fpathconf function. */
|
|
||||||
#undef HAVE_FPATHCONF
|
|
||||||
|
|
||||||
/* Define if you have the fseek64 function. */
|
|
||||||
#undef HAVE_FSEEK64
|
|
||||||
|
|
||||||
/* Define if you have the fseeko function. */
|
|
||||||
#undef HAVE_FSEEKO
|
|
||||||
|
|
||||||
/* Define if you have the fstatvfs function. */
|
|
||||||
#undef HAVE_FSTATVFS
|
|
||||||
|
|
||||||
/* Define if you have the fsync function. */
|
|
||||||
#undef HAVE_FSYNC
|
|
||||||
|
|
||||||
/* Define if you have the ftell64 function. */
|
|
||||||
#undef HAVE_FTELL64
|
|
||||||
|
|
||||||
/* Define if you have the ftello function. */
|
|
||||||
#undef HAVE_FTELLO
|
|
||||||
|
|
||||||
/* Define if you have the ftime function. */
|
|
||||||
#undef HAVE_FTIME
|
|
||||||
|
|
||||||
/* Define if you have the ftruncate function. */
|
|
||||||
#undef HAVE_FTRUNCATE
|
|
||||||
|
|
||||||
/* Define if you have the gai_strerror function. */
|
|
||||||
#undef HAVE_GAI_STRERROR
|
|
||||||
|
|
||||||
/* Define if you have the getaddrinfo function. */
|
|
||||||
#undef HAVE_GETADDRINFO
|
|
||||||
|
|
||||||
/* Define if you have the getcwd function. */
|
|
||||||
#undef HAVE_GETCWD
|
|
||||||
|
|
||||||
/* Define if you have the getgroups function. */
|
|
||||||
#undef HAVE_GETGROUPS
|
|
||||||
|
|
||||||
/* Define if you have the gethostbyname function. */
|
|
||||||
#undef HAVE_GETHOSTBYNAME
|
|
||||||
|
|
||||||
/* Define if you have the getlogin function. */
|
|
||||||
#undef HAVE_GETLOGIN
|
|
||||||
|
|
||||||
/* Define if you have the getnameinfo function. */
|
|
||||||
#undef HAVE_GETNAMEINFO
|
|
||||||
|
|
||||||
/* Define if you have the getpeername function. */
|
|
||||||
#define HAVE_GETPEERNAME
|
|
||||||
|
|
||||||
/* Define if you have the getpgid function. */
|
|
||||||
#undef HAVE_GETPGID
|
|
||||||
|
|
||||||
/* Define if you have the getpgrp function. */
|
|
||||||
#undef HAVE_GETPGRP
|
|
||||||
|
|
||||||
/* Define if you have the getpid function. */
|
|
||||||
#undef HAVE_GETPID
|
|
||||||
|
|
||||||
/* Define if you have the getpriority function. */
|
|
||||||
#undef HAVE_GETPRIORITY
|
|
||||||
|
|
||||||
/* Define if you have the getpwent function. */
|
|
||||||
#undef HAVE_GETPWENT
|
|
||||||
|
|
||||||
/* Define if you have the gettimeofday function. */
|
|
||||||
#undef HAVE_GETTIMEOFDAY
|
|
||||||
|
|
||||||
/* Define if you have the getwd function. */
|
|
||||||
#undef HAVE_GETWD
|
|
||||||
|
|
||||||
/* Define if you have the hstrerror function. */
|
|
||||||
#undef HAVE_HSTRERROR
|
|
||||||
|
|
||||||
/* Define if you have the hypot function. */
|
|
||||||
#define HAVE_HYPOT
|
|
||||||
|
|
||||||
/* Define if you have the inet_pton function. */
|
|
||||||
#define HAVE_INET_PTON 1
|
|
||||||
|
|
||||||
/* Define if you have the kill function. */
|
|
||||||
#undef HAVE_KILL
|
|
||||||
|
|
||||||
/* Define if you have the link function. */
|
|
||||||
#undef HAVE_LINK
|
|
||||||
|
|
||||||
/* Define if you have the lstat function. */
|
|
||||||
#undef HAVE_LSTAT
|
|
||||||
|
|
||||||
/* Define if you have the memmove function. */
|
|
||||||
#define HAVE_MEMMOVE 1
|
|
||||||
|
|
||||||
/* Define if you have the mkfifo function. */
|
|
||||||
#undef HAVE_MKFIFO
|
|
||||||
|
|
||||||
/* Define if you have the mktime function. */
|
|
||||||
#define HAVE_MKTIME 1
|
|
||||||
|
|
||||||
/* Define if you have the mremap function. */
|
|
||||||
#undef HAVE_MREMAP
|
|
||||||
|
|
||||||
/* Define if you have the nice function. */
|
|
||||||
#undef HAVE_NICE
|
|
||||||
|
|
||||||
/* Define if you have the openpty function. */
|
|
||||||
#undef HAVE_OPENPTY
|
|
||||||
|
|
||||||
/* Define if you have the pathconf function. */
|
|
||||||
#undef HAVE_PATHCONF
|
|
||||||
|
|
||||||
/* Define if you have the pause function. */
|
|
||||||
#undef HAVE_PAUSE
|
|
||||||
|
|
||||||
/* Define if you have the plock function. */
|
|
||||||
#undef HAVE_PLOCK
|
|
||||||
|
|
||||||
/* Define if you have the poll function. */
|
|
||||||
#undef HAVE_POLL
|
|
||||||
|
|
||||||
/* Define if you have the pthread_init function. */
|
|
||||||
#undef HAVE_PTHREAD_INIT
|
|
||||||
|
|
||||||
/* Define if you have the putenv function. */
|
|
||||||
#undef HAVE_PUTENV
|
|
||||||
|
|
||||||
/* Define if you have the readlink function. */
|
|
||||||
#undef HAVE_READLINK
|
|
||||||
|
|
||||||
/* Define if you have the select function. */
|
|
||||||
#undef HAVE_SELECT
|
|
||||||
|
|
||||||
/* Define if you have the setegid function. */
|
|
||||||
#undef HAVE_SETEGID
|
|
||||||
|
|
||||||
/* Define if you have the seteuid function. */
|
|
||||||
#undef HAVE_SETEUID
|
|
||||||
|
|
||||||
/* Define if you have the setgid function. */
|
|
||||||
#undef HAVE_SETGID
|
|
||||||
|
|
||||||
/* Define if you have the setlocale function. */
|
|
||||||
#define HAVE_SETLOCALE 1
|
|
||||||
|
|
||||||
/* Define if you have the setpgid function. */
|
|
||||||
#undef HAVE_SETPGID
|
|
||||||
|
|
||||||
/* Define if you have the setpgrp function. */
|
|
||||||
#undef HAVE_SETPGRP
|
|
||||||
|
|
||||||
/* Define if you have the setregid function. */
|
|
||||||
#undef HAVE_SETREGID
|
|
||||||
|
|
||||||
/* Define if you have the setreuid function. */
|
|
||||||
#undef HAVE_SETREUID
|
|
||||||
|
|
||||||
/* Define if you have the setsid function. */
|
|
||||||
#undef HAVE_SETSID
|
|
||||||
|
|
||||||
/* Define if you have the setuid function. */
|
|
||||||
#undef HAVE_SETUID
|
|
||||||
|
|
||||||
/* Define if you have the setvbuf function. */
|
|
||||||
#undef HAVE_SETVBUF
|
|
||||||
|
|
||||||
/* Define if you have the sigaction function. */
|
|
||||||
#undef HAVE_SIGACTION
|
|
||||||
|
|
||||||
/* Define if you have the siginterrupt function. */
|
|
||||||
#undef HAVE_SIGINTERRUPT
|
|
||||||
|
|
||||||
/* Define if you have the sigrelse function. */
|
|
||||||
#undef HAVE_SIGRELSE
|
|
||||||
|
|
||||||
/* Define if you have the snprintf function. */
|
|
||||||
#undef HAVE_SNPRINTF
|
|
||||||
|
|
||||||
/* Define if you have the statvfs function. */
|
|
||||||
#undef HAVE_STATVFS
|
|
||||||
|
|
||||||
/* Define if you have the strdup function. */
|
|
||||||
#define HAVE_STRDUP 1
|
|
||||||
|
|
||||||
/* Define if you have the strerror function. */
|
|
||||||
#define HAVE_STRERROR 1
|
|
||||||
|
|
||||||
/* Define if you have the strftime function. */
|
|
||||||
#define HAVE_STRFTIME 1
|
|
||||||
|
|
||||||
/* Define if you have the symlink function. */
|
|
||||||
#undef HAVE_SYMLINK
|
|
||||||
|
|
||||||
/* Define if you have the sysconf function. */
|
|
||||||
#undef HAVE_SYSCONF
|
|
||||||
|
|
||||||
/* Define if you have the tcgetpgrp function. */
|
|
||||||
#undef HAVE_TCGETPGRP
|
|
||||||
|
|
||||||
/* Define if you have the tcsetpgrp function. */
|
|
||||||
#undef HAVE_TCSETPGRP
|
|
||||||
|
|
||||||
/* Define if you have the tempnam function. */
|
|
||||||
#undef HAVE_TEMPNAM
|
|
||||||
|
|
||||||
/* Define if you have the timegm function. */
|
|
||||||
#undef HAVE_TIMEGM
|
|
||||||
|
|
||||||
/* Define if you have the times function. */
|
|
||||||
#undef HAVE_TIMES
|
|
||||||
|
|
||||||
/* Define if you have the tmpfile function. */
|
|
||||||
#undef HAVE_TMPFILE
|
|
||||||
|
|
||||||
/* Define if you have the tmpnam function. */
|
|
||||||
#undef HAVE_TMPNAM
|
|
||||||
|
|
||||||
/* Define if you have the tmpnam_r function. */
|
|
||||||
#undef HAVE_TMPNAM_R
|
|
||||||
|
|
||||||
/* Define if you have the truncate function. */
|
|
||||||
#undef HAVE_TRUNCATE
|
|
||||||
|
|
||||||
/* Define if you have the uname function. */
|
|
||||||
#undef HAVE_UNAME
|
|
||||||
|
|
||||||
/* Define if you have the waitpid function. */
|
|
||||||
#undef HAVE_WAITPID
|
|
||||||
|
|
||||||
/* Define if you have the <conio.h> header file. */
|
|
||||||
#undef HAVE_CONIO_H
|
|
||||||
|
|
||||||
/* Define if you have the <db.h> header file. */
|
|
||||||
#undef HAVE_DB_H
|
|
||||||
|
|
||||||
/* Define if you have the <db1/ndbm.h> header file. */
|
|
||||||
#undef HAVE_DB1_NDBM_H
|
|
||||||
|
|
||||||
/* Define if you have the <db_185.h> header file. */
|
|
||||||
#undef HAVE_DB_185_H
|
|
||||||
|
|
||||||
/* Define if you have the <direct.h> header file. */
|
|
||||||
#undef HAVE_DIRECT_H
|
|
||||||
|
|
||||||
/* Define if you have the <dirent.h> header file. */
|
|
||||||
#undef HAVE_DIRENT_H
|
|
||||||
|
|
||||||
/* Define if you have the <dlfcn.h> header file. */
|
|
||||||
#undef HAVE_DLFCN_H
|
|
||||||
|
|
||||||
/* Define if you have the <errno.h> header file. */
|
|
||||||
#define HAVE_ERRNO_H 1
|
|
||||||
|
|
||||||
/* Define if you have the <fcntl.h> header file. */
|
|
||||||
#undef HAVE_FCNTL_H
|
|
||||||
|
|
||||||
/* Define if you have the <gdbm/ndbm.h> header file. */
|
|
||||||
#undef HAVE_GDBM_NDBM_H
|
|
||||||
|
|
||||||
/* Define if you have the <io.h> header file. */
|
|
||||||
#undef HAVE_IO_H
|
|
||||||
|
|
||||||
/* Define if you have the <langinfo.h> header file. */
|
|
||||||
#undef HAVE_LANGINFO_H
|
|
||||||
|
|
||||||
/* Define if you have the <libutil.h> header file. */
|
|
||||||
#undef HAVE_LIBUTIL_H
|
|
||||||
|
|
||||||
/* Define if you have the <ncurses.h> header file. */
|
|
||||||
#undef HAVE_NCURSES_H
|
|
||||||
|
|
||||||
/* Define if you have the <ndbm.h> header file. */
|
|
||||||
#undef HAVE_NDBM_H
|
|
||||||
|
|
||||||
/* Define if you have the <ndir.h> header file. */
|
|
||||||
#undef HAVE_NDIR_H
|
|
||||||
|
|
||||||
/* Define if you have the <netpacket/packet.h> header file. */
|
|
||||||
#undef HAVE_NETPACKET_PACKET_H
|
|
||||||
|
|
||||||
/* Define if you have the <poll.h> header file. */
|
|
||||||
#undef HAVE_POLL_H
|
|
||||||
|
|
||||||
/* Define if you have the <process.h> header file. */
|
|
||||||
#undef HAVE_PROCESS_H
|
|
||||||
|
|
||||||
/* Define if you have the <pthread.h> header file. */
|
|
||||||
#undef HAVE_PTHREAD_H
|
|
||||||
|
|
||||||
/* Define if you have the <pty.h> header file. */
|
|
||||||
#undef HAVE_PTY_H
|
|
||||||
|
|
||||||
/* Define if you have the <signal.h> header file. */
|
|
||||||
#define HAVE_SIGNAL_H
|
|
||||||
|
|
||||||
/* Define if you have the <sys/audioio.h> header file. */
|
|
||||||
#undef HAVE_SYS_AUDIOIO_H
|
|
||||||
|
|
||||||
/* Define if you have the <sys/dir.h> header file. */
|
|
||||||
#undef HAVE_SYS_DIR_H
|
|
||||||
|
|
||||||
/* Define if you have the <sys/file.h> header file. */
|
|
||||||
#undef HAVE_SYS_FILE_H
|
|
||||||
|
|
||||||
/* Define if you have the <sys/lock.h> header file. */
|
|
||||||
#undef HAVE_SYS_LOCK_H
|
|
||||||
|
|
||||||
/* Define if you have the <sys/modem.h> header file. */
|
|
||||||
#undef HAVE_SYS_MODEM_H
|
|
||||||
|
|
||||||
/* Define if you have the <sys/ndir.h> header file. */
|
|
||||||
#undef HAVE_SYS_NDIR_H
|
|
||||||
|
|
||||||
/* Define if you have the <sys/param.h> header file. */
|
|
||||||
#undef HAVE_SYS_PARAM_H
|
|
||||||
|
|
||||||
/* Define if you have the <sys/poll.h> header file. */
|
|
||||||
#undef HAVE_SYS_POLL_H
|
|
||||||
|
|
||||||
/* Define if you have the <sys/resource.h> header file. */
|
|
||||||
#undef HAVE_SYS_RESOURCE_H
|
|
||||||
|
|
||||||
/* Define if you have the <sys/select.h> header file. */
|
|
||||||
#undef HAVE_SYS_SELECT_H
|
|
||||||
|
|
||||||
/* Define if you have the <sys/socket.h> header file. */
|
|
||||||
#undef HAVE_SYS_SOCKET_H
|
|
||||||
|
|
||||||
/* Define if you have the <sys/stat.h> header file. */
|
|
||||||
#define HAVE_SYS_STAT_H 1
|
|
||||||
|
|
||||||
/* Define if you have the <sys/time.h> header file. */
|
|
||||||
#undef HAVE_SYS_TIME_H
|
|
||||||
|
|
||||||
/* Define if you have the <sys/times.h> header file. */
|
|
||||||
#undef HAVE_SYS_TIMES_H
|
|
||||||
|
|
||||||
/* Define if you have the <sys/types.h> header file. */
|
|
||||||
#define HAVE_SYS_TYPES_H 1
|
|
||||||
|
|
||||||
/* Define if you have the <sys/un.h> header file. */
|
|
||||||
#undef HAVE_SYS_UN_H
|
|
||||||
|
|
||||||
/* Define if you have the <sys/utsname.h> header file. */
|
|
||||||
#undef HAVE_SYS_UTSNAME_H
|
|
||||||
|
|
||||||
/* Define if you have the <sys/wait.h> header file. */
|
|
||||||
#undef HAVE_SYS_WAIT_H
|
|
||||||
|
|
||||||
/* Define if you have the <termios.h> header file. */
|
|
||||||
#undef HAVE_TERMIOS_H
|
|
||||||
|
|
||||||
/* Define if you have the <thread.h> header file. */
|
|
||||||
#undef HAVE_THREAD_H
|
|
||||||
|
|
||||||
/* Define if you have the <unistd.h> header file. */
|
|
||||||
#define HAVE_UNISTD_H 1
|
|
||||||
|
|
||||||
/* Define if you have the <utime.h> header file. */
|
|
||||||
#undef HAVE_UTIME_H
|
|
||||||
|
|
||||||
/* Define if you have the dl library (-ldl). */
|
|
||||||
#undef HAVE_LIBDL
|
|
||||||
|
|
||||||
/* Define if you have the dld library (-ldld). */
|
|
||||||
#undef HAVE_LIBDLD
|
|
||||||
|
|
||||||
/* Define if you have the ieee library (-lieee). */
|
|
||||||
#undef HAVE_LIBIEEE
|
|
||||||
|
|
||||||
#ifdef __CYGWIN__
|
|
||||||
#ifdef USE_DL_IMPORT
|
|
||||||
#define DL_IMPORT(RTYPE) __declspec(dllimport) RTYPE
|
|
||||||
#define DL_EXPORT(RTYPE) __declspec(dllexport) RTYPE
|
|
||||||
#else
|
|
||||||
#define DL_IMPORT(RTYPE) __declspec(dllexport) RTYPE
|
|
||||||
#define DL_EXPORT(RTYPE) __declspec(dllexport) RTYPE
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Define the macros needed if on a UnixWare 7.x system. */
|
|
||||||
#if defined(__USLC__) && defined(__SCO_VERSION__)
|
|
||||||
#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#define DONT_HAVE_FSTAT 1
|
|
||||||
#define DONT_HAVE_STAT 1
|
|
||||||
|
|
||||||
#define PLATFORM "riscos"
|
|
||||||
|
|
||||||
#endif /* Py_PYCONFIG_H */
|
|
|
@ -1,41 +0,0 @@
|
||||||
#include "oslib/osmodule.h"
|
|
||||||
#include <stdio.h>
|
|
||||||
#include "kernel.h"
|
|
||||||
#include <limits.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include "oslib/taskwindow.h"
|
|
||||||
#include "Python.h"
|
|
||||||
|
|
||||||
|
|
||||||
int riscos_sleep(double delay)
|
|
||||||
{
|
|
||||||
os_t starttime, endtime, time; /* monotonic times (centiseconds) */
|
|
||||||
int *pollword, ret;
|
|
||||||
osbool claimed;
|
|
||||||
|
|
||||||
/* calculate end time */
|
|
||||||
starttime = os_read_monotonic_time();
|
|
||||||
if (starttime + 100.0*delay >INT_MAX)
|
|
||||||
endtime = INT_MAX;
|
|
||||||
else
|
|
||||||
endtime = (os_t)(starttime + 100.0*delay);
|
|
||||||
|
|
||||||
/* allocate (in RMA) and set pollword for xupcall_sleep */
|
|
||||||
pollword = osmodule_alloc(4);
|
|
||||||
*pollword = 1;
|
|
||||||
|
|
||||||
time = starttime;
|
|
||||||
ret = 0;
|
|
||||||
while ( time<endtime && time>=starttime ) {
|
|
||||||
xupcall_sleep (pollword, &claimed);
|
|
||||||
if (PyErr_CheckSignals()) {
|
|
||||||
ret = 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
time = os_read_monotonic_time();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* deallocate pollword */
|
|
||||||
osmodule_free(pollword);
|
|
||||||
return ret;
|
|
||||||
}
|
|
|
@ -1,22 +0,0 @@
|
||||||
set Python$Dir <Obey$Dir>
|
|
||||||
set PythonApp$Path <Obey$Dir>.
|
|
||||||
|
|
||||||
IconSprites <Obey$Dir>.!Sprites
|
|
||||||
|
|
||||||
<Obey$Dir>.AddToPath Python$Path PythonApp:Lib
|
|
||||||
<Obey$Dir>.AddToPath Python$Path PythonApp:Lib.plat-riscos
|
|
||||||
<Obey$Dir>.AddToPath Python$Path PythonApp:Lib.site-packages
|
|
||||||
set Alias$@RunType_ae5 TaskWindow |"python %%*0|" -name |"Python|" -quit -wimpslot 1248k
|
|
||||||
| -display
|
|
||||||
set File$Type_ae5 Python
|
|
||||||
|
|
||||||
| load modules for 32 bit compatibility
|
|
||||||
RMEnsure UtilityModule 3.10 Error This application requires RISC OS 3.10 or later
|
|
||||||
RMEnsure UtilityModule 3.70 RMEnsure CallASWI 0.02 RMLoad System:Modules.CallASWI
|
|
||||||
RMEnsure UtilityModule 3.70 RMEnsure CallASWI 0.02 Error This application requires CallASWI 0.02 or later
|
|
||||||
RMEnsure FPEmulator 4.03 RMLoad System:Modules.FPEmulator
|
|
||||||
RMEnsure FPEmulator 4.03 Error This application requires FPEmulator 4.03 or later
|
|
||||||
RMEnsure SharedCLibrary 5.17 RMLoad System:Modules.CLib
|
|
||||||
RMEnsure SharedCLibrary 5.34 Error This application requires SharedCLibrary 5.34 or later
|
|
||||||
|
|
||||||
set Alias$Python Run <Python$Dir>.python23 %*0
|
|
|
@ -1,2 +0,0 @@
|
||||||
<Obey$Dir>.!Boot
|
|
||||||
TaskWindow "python" -name "Python" -quit -display -wimpslot 1248k
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,74 +0,0 @@
|
||||||
/* Fudge unix isatty and fileno for RISCOS */
|
|
||||||
|
|
||||||
#include "unixstuff.h"
|
|
||||||
#include <math.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include "oslib/osfile.h"
|
|
||||||
|
|
||||||
int fileno(FILE *f)
|
|
||||||
{ return (int)f;
|
|
||||||
}
|
|
||||||
|
|
||||||
int isatty(int fn)
|
|
||||||
{ return (fn==fileno(stdin));
|
|
||||||
}
|
|
||||||
|
|
||||||
bits unixtime(bits ld,bits ex)
|
|
||||||
{ ld&=0xFF;
|
|
||||||
ld-=51;
|
|
||||||
if(ex<1855547904U) ld--;
|
|
||||||
ex-=1855548004U;
|
|
||||||
return ex/100+42949673U*ld-ld/25;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* from RISC OS infozip, preserves filetype in ld */
|
|
||||||
int acorntime(bits *ex, bits *ld, time_t utime)
|
|
||||||
{
|
|
||||||
unsigned timlo; /* 3 lower bytes of acorn file-time plus carry byte */
|
|
||||||
unsigned timhi; /* 2 high bytes of acorn file-time */
|
|
||||||
|
|
||||||
timlo = ((unsigned)utime & 0x00ffffffU) * 100 + 0x00996a00U;
|
|
||||||
timhi = ((unsigned)utime >> 24);
|
|
||||||
timhi = timhi * 100 + 0x0000336eU + (timlo >> 24);
|
|
||||||
if (timhi & 0xffff0000U)
|
|
||||||
return 1; /* calculation overflow, do not change time */
|
|
||||||
|
|
||||||
/* insert the five time bytes into loadaddr and execaddr variables */
|
|
||||||
*ex = (timlo & 0x00ffffffU) | ((timhi & 0x000000ffU) << 24);
|
|
||||||
*ld = (*ld & 0xffffff00U) | ((timhi >> 8) & 0x000000ffU);
|
|
||||||
|
|
||||||
return 0; /* subject to future extension to signal overflow */
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int isdir(char *fn)
|
|
||||||
{ int ob;
|
|
||||||
if(xosfile_read_stamped_no_path(fn,&ob,0,0,0,0,0)) return 0;
|
|
||||||
switch (ob)
|
|
||||||
{ case osfile_IS_DIR:return 1;
|
|
||||||
case osfile_IS_IMAGE:return 1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int isfile(char *fn)
|
|
||||||
{ int ob;
|
|
||||||
if(xosfile_read_stamped_no_path(fn,&ob,0,0,0,0,0)) return 0;
|
|
||||||
switch (ob)
|
|
||||||
{ case osfile_IS_FILE:return 1;
|
|
||||||
case osfile_IS_IMAGE:return 1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int object_exists(char *fn)
|
|
||||||
{ int ob;
|
|
||||||
if(xosfile_read_stamped_no_path(fn,&ob,0,0,0,0,0)) return 0;
|
|
||||||
switch (ob)
|
|
||||||
{ case osfile_IS_FILE:return 1;
|
|
||||||
case osfile_IS_DIR:return 1;
|
|
||||||
case osfile_IS_IMAGE:return 1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,14 +0,0 @@
|
||||||
/* Fudge unix isatty and fileno for RISCOS */
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <time.h>
|
|
||||||
|
|
||||||
int fileno(FILE *f);
|
|
||||||
int isatty(int fn);
|
|
||||||
unsigned int unixtime(unsigned int ld,unsigned int ex);
|
|
||||||
int acorntime(unsigned int *ex, unsigned int *ld, time_t ut);
|
|
||||||
|
|
||||||
int isdir(char *fn);
|
|
||||||
int isfile(char *fn);
|
|
||||||
int object_exists(char *fn);
|
|
||||||
|
|
Loading…
Reference in New Issue