summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc-André Lemburg <mal@egenix.com>2002-12-12 17:37:50 (GMT)
committerMarc-André Lemburg <mal@egenix.com>2002-12-12 17:37:50 (GMT)
commitb28de0d79f6f1bfc7e395a1945167a87bfe95356 (patch)
tree2e4771db60c9a7d0a96b46144944565f30b728ee
parentb69bb3d0193ea4871d2480a58e48224cb728e4d9 (diff)
downloadcpython-b28de0d79f6f1bfc7e395a1945167a87bfe95356.zip
cpython-b28de0d79f6f1bfc7e395a1945167a87bfe95356.tar.gz
cpython-b28de0d79f6f1bfc7e395a1945167a87bfe95356.tar.bz2
Patch to make _codecs a builtin module. This is necessary since
Python 2.3 will support source code encodings which rely on the builtin codecs being available to the parser. Remove struct dependency from codecs.py
-rw-r--r--Lib/codecs.py20
-rw-r--r--Modules/Setup.config.in2
-rw-r--r--Modules/Setup.dist2
-rw-r--r--setup.py2
4 files changed, 17 insertions, 9 deletions
diff --git a/Lib/codecs.py b/Lib/codecs.py
index e7967d8..b377979 100644
--- a/Lib/codecs.py
+++ b/Lib/codecs.py
@@ -7,7 +7,7 @@ Written by Marc-Andre Lemburg (mal@lemburg.com).
"""#"
-import struct, __builtin__
+import __builtin__, sys
### Registry and builtin stateless codec functions
@@ -48,11 +48,21 @@ BOM_UTF32_LE = '\xff\xfe\x00\x00'
# UTF-32, big endian
BOM_UTF32_BE = '\x00\x00\xfe\xff'
-# UTF-16, native endianness
-BOM = BOM_UTF16 = struct.pack('=H', 0xFEFF)
+if sys.byteorder == 'little':
-# UTF-32, native endianness
-BOM_UTF32 = struct.pack('=L', 0x0000FEFF)
+ # UTF-16, native endianness
+ BOM = BOM_UTF16 = BOM_UTF16_LE
+
+ # UTF-32, native endianness
+ BOM_UTF32 = BOM_UTF32_LE
+
+else:
+
+ # UTF-16, native endianness
+ BOM = BOM_UTF16 = BOM_UTF16_BE
+
+ # UTF-32, native endianness
+ BOM_UTF32 = BOM_UTF32_BE
# Old broken names (don't use in new code)
BOM32_LE = BOM_UTF16_LE
diff --git a/Modules/Setup.config.in b/Modules/Setup.config.in
index 14ad6bb..fed62e9 100644
--- a/Modules/Setup.config.in
+++ b/Modules/Setup.config.in
@@ -10,4 +10,4 @@
@USE_SIGNAL_MODULE@signal signalmodule.c
# The rest of the modules previously listed in this file are built
-# by the setup.py script in Python 2.1.
+# by the setup.py script in Python 2.1 and later.
diff --git a/Modules/Setup.dist b/Modules/Setup.dist
index 7b91185..6df361d 100644
--- a/Modules/Setup.dist
+++ b/Modules/Setup.dist
@@ -111,6 +111,7 @@ PYTHONPATH=$(COREPYTHONPATH)
posix posixmodule.c # posix (UNIX) system calls
errno errnomodule.c # posix (UNIX) errno values
_sre _sre.c # Fredrik Lundh's new regular expressions
+_codecs _codecsmodule.c # access to the builtin codecs and codec registry
# The rest of the modules listed in this file are all commented out by
# default. Usually they can be detected and built as dynamically
@@ -163,7 +164,6 @@ GLHACK=-Dclear=__GLclear
#time timemodule.c # -lm # time operations and variables
#operator operator.c # operator.add() and similar goodies
#_weakref _weakref.c # basic weak reference support
-#_codecs _codecsmodule.c # access to the builtin codecs and codec registry
#_testcapi _testcapimodule.c # Python C API test module
#unicodedata unicodedata.c # static Unicode character database
diff --git a/setup.py b/setup.py
index ff7318e..2827af7 100644
--- a/setup.py
+++ b/setup.py
@@ -313,8 +313,6 @@ class PyBuildExt(build_ext):
libraries=math_libs) )
# operator.add() and similar goodies
exts.append( Extension('operator', ['operator.c']) )
- # access to the builtin codecs and codec registry
- exts.append( Extension('_codecs', ['_codecsmodule.c']) )
# Python C API test module
exts.append( Extension('_testcapi', ['_testcapimodule.c']) )
# static Unicode character database