Commit f65e25b6 authored by Georg Brandl's avatar Georg Brandl

Merged revisions...

Merged revisions 86134,86315-86316,86390,86424-86425,86428,86550,86561-86562,86564-86565,86705,86708,86713 via svnmerge from
svn+ssh://svn.python.org/python/branches/py3k

........
  r86134 | georg.brandl | 2010-11-03 08:41:00 +0100 (Mi, 03 Nov 2010) | 1 line

  A newline in lineno output breaks pyframe output.
........
  r86315 | georg.brandl | 2010-11-08 12:05:18 +0100 (Mo, 08 Nov 2010) | 1 line

  Fix latex conversion glitch in property/feature descriptions.
........
  r86316 | georg.brandl | 2010-11-08 12:08:35 +0100 (Mo, 08 Nov 2010) | 1 line

  Fix typo.
........
  r86390 | georg.brandl | 2010-11-10 08:57:10 +0100 (Mi, 10 Nov 2010) | 1 line

  Fix typo.
........
  r86424 | georg.brandl | 2010-11-12 07:19:48 +0100 (Fr, 12 Nov 2010) | 1 line

  Build a PDF of the FAQs too.
........
  r86425 | georg.brandl | 2010-11-12 07:20:12 +0100 (Fr, 12 Nov 2010) | 1 line

  #10008: Fix duplicate index entry.
........
  r86428 | georg.brandl | 2010-11-12 09:09:26 +0100 (Fr, 12 Nov 2010) | 1 line

  Fix weird line block in table.
........
  r86550 | georg.brandl | 2010-11-20 11:24:34 +0100 (Sa, 20 Nov 2010) | 1 line

  Fix rst markup errors.
........
  r86561 | georg.brandl | 2010-11-20 12:47:10 +0100 (Sa, 20 Nov 2010) | 1 line

  #10460: Update indent.pro to match PEP 7 better.
........
  r86562 | georg.brandl | 2010-11-20 14:44:41 +0100 (Sa, 20 Nov 2010) | 1 line

  #10439: document PyCodec C APIs.
........
  r86564 | georg.brandl | 2010-11-20 15:08:53 +0100 (Sa, 20 Nov 2010) | 1 line

  #10460: an even better indent.pro.
........
  r86565 | georg.brandl | 2010-11-20 15:16:17 +0100 (Sa, 20 Nov 2010) | 1 line

  socket.gethostbyname(socket.gethostname()) can fail when host name resolution is not set up correctly; do not fail test_socket if this is the case.
........
  r86705 | georg.brandl | 2010-11-23 08:54:19 +0100 (Di, 23 Nov 2010) | 1 line

  #10468: document Unicode exception creation and access functions.
........
  r86708 | georg.brandl | 2010-11-23 09:37:54 +0100 (Di, 23 Nov 2010) | 2 lines

  #10511: clarification of what heaps are; suggested by Johannes Hoff.
........
  r86713 | georg.brandl | 2010-11-23 19:14:57 +0100 (Di, 23 Nov 2010) | 1 line

  assert.h is also included. Thanks to Savio Sena.
........
parent e553046b
.. _codec-registry:
Codec registry and support functions
====================================
.. cfunction:: int PyCodec_Register(PyObject *search_function)
Register a new codec search function.
As side effect, this tries to load the :mod:`encodings` package, if not yet
done, to make sure that it is always first in the list of search functions.
.. cfunction:: int PyCodec_KnownEncoding(const char *encoding)
Return ``1`` or ``0`` depending on whether there is a registered codec for
the given *encoding*.
.. cfunction:: PyObject* PyCodec_Encode(PyObject *object, const char *encoding, const char *errors)
Generic codec based encoding API.
*object* is passed through the encoder function found for the given
*encoding* using the error handling method defined by *errors*. *errors* may
be *NULL* to use the default method defined for the codec. Raises a
:exc:`LookupError` if no encoder can be found.
.. cfunction:: PyObject* PyCodec_Decode(PyObject *object, const char *encoding, const char *errors)
Generic codec based decoding API.
*object* is passed through the decoder function found for the given
*encoding* using the error handling method defined by *errors*. *errors* may
be *NULL* to use the default method defined for the codec. Raises a
:exc:`LookupError` if no encoder can be found.
Codec lookup API
----------------
In the following functions, the *encoding* string is looked up converted to all
lower-case characters, which makes encodings looked up through this mechanism
effectively case-insensitive. If no codec is found, a :exc:`KeyError` is set
and *NULL* returned.
.. cfunction:: PyObject* PyCodec_Encoder(const char *encoding)
Get an encoder function for the given *encoding*.
.. cfunction:: PyObject* PyCodec_Decoder(const char *encoding)
Get a decoder function for the given *encoding*.
.. cfunction:: PyObject* PyCodec_IncrementalEncoder(const char *encoding, const char *errors)
Get an :class:`IncrementalEncoder` object for the given *encoding*.
.. cfunction:: PyObject* PyCodec_IncrementalDecoder(const char *encoding, const char *errors)
Get an :class:`IncrementalDecoder` object for the given *encoding*.
.. cfunction:: PyObject* PyCodec_StreamReader(const char *encoding, PyObject *stream, const char *errors)
Get a :class:`StreamReader` factory function for the given *encoding*.
.. cfunction:: PyObject* PyCodec_StreamWriter(const char *encoding, PyObject *stream, const char *errors)
Get a :class:`StreamWriter` factory function for the given *encoding*.
Registry API for Unicode encoding error handlers
------------------------------------------------
.. cfunction:: int PyCodec_RegisterError(const char *name, PyObject *error)
Register the error handling callback function *error* under the given *name*.
This callback function will be called by a codec when it encounters
unencodable characters/undecodable bytes and *name* is specified as the error
parameter in the call to the encode/decode function.
The callback gets a single argument, an instance of
:exc:`UnicodeEncodeError`, :exc:`UnicodeDecodeError` or
:exc:`UnicodeTranslateError` that holds information about the problematic
sequence of characters or bytes and their offset in the original string (see
:ref:`unicodeexceptions` for functions to extract this information). The
callback must either raise the given exception, or return a two-item tuple
containing the replacement for the problematic sequence, and an integer
giving the offset in the original string at which encoding/decoding should be
resumed.
Return ``0`` on success, ``-1`` on error.
.. cfunction:: PyObject* PyCodec_LookupError(const char *name)
Lookup the error handling callback function registered under *name*. As a
special case *NULL* can be passed, in which case the error handling callback
for "strict" will be returned.
.. cfunction:: PyObject* PyCodec_StrictErrors(PyObject *exc)
Raise *exc* as an exception.
.. cfunction:: PyObject* PyCodec_IgnoreErrors(PyObject *exc)
Ignore the unicode error, skipping the faulty input.
.. cfunction:: PyObject* PyCodec_ReplaceErrors(PyObject *exc)
Replace the unicode encode error with ``?`` or ``U+FFFD``.
.. cfunction:: PyObject* PyCodec_XMLCharRefReplaceErrors(PyObject *exc)
Replace the unicode encode error with XML character references.
.. cfunction:: PyObject* PyCodec_BackslashReplaceErrors(PyObject *exc)
Replace the unicode encode error with backslash escapes (``\x``, ``\u`` and
``\U``).
...@@ -446,6 +446,83 @@ Exception Objects ...@@ -446,6 +446,83 @@ Exception Objects
This steals a reference to *ctx*. This steals a reference to *ctx*.
.. _unicodeexceptions:
Unicode Exception Objects
=========================
The following functions are used to create and modify Unicode exceptions from C.
.. cfunction:: PyObject* PyUnicodeDecodeError_Create(const char *encoding, const char *object, Py_ssize_t length, Py_ssize_t start, Py_ssize_t end, const char *reason)
Create a :class:`UnicodeDecodeError` object with the attributes *encoding*,
*object*, *length*, *start*, *end* and *reason*.
.. cfunction:: PyObject* PyUnicodeEncodeError_Create(const char *encoding, const Py_UNICODE *object, Py_ssize_t length, Py_ssize_t start, Py_ssize_t end, const char *reason)
Create a :class:`UnicodeEncodeError` object with the attributes *encoding*,
*object*, *length*, *start*, *end* and *reason*.
.. cfunction:: PyObject* PyUnicodeTranslateError_Create(const Py_UNICODE *object, Py_ssize_t length, Py_ssize_t start, Py_ssize_t end, const char *reason)
Create a :class:`UnicodeTranslateError` object with the attributes *object*,
*length*, *start*, *end* and *reason*.
.. cfunction:: PyObject* PyUnicodeDecodeError_GetEncoding(PyObject *exc)
PyObject* PyUnicodeEncodeError_GetEncoding(PyObject *exc)
Return the *encoding* attribute of the given exception object.
.. cfunction:: PyObject* PyUnicodeDecodeError_GetObject(PyObject *exc)
PyObject* PyUnicodeEncodeError_GetObject(PyObject *exc)
PyObject* PyUnicodeTranslateError_GetObject(PyObject *exc)
Return the *object* attribute of the given exception object.
.. cfunction:: int PyUnicodeDecodeError_GetStart(PyObject *exc, Py_ssize_t *start)
int PyUnicodeEncodeError_GetStart(PyObject *exc, Py_ssize_t *start)
int PyUnicodeTranslateError_GetStart(PyObject *exc, Py_ssize_t *start)
Get the *start* attribute of the given exception object and place it into
*\*start*. *start* must not be *NULL*. Return ``0`` on success, ``-1`` on
failure.
.. cfunction:: int PyUnicodeDecodeError_SetStart(PyObject *exc, Py_ssize_t start)
int PyUnicodeEncodeError_SetStart(PyObject *exc, Py_ssize_t start)
int PyUnicodeTranslateError_SetStart(PyObject *exc, Py_ssize_t start)
Set the *start* attribute of the given exception object to *start*. Return
``0`` on success, ``-1`` on failure.
.. cfunction:: int PyUnicodeDecodeError_GetEnd(PyObject *exc, Py_ssize_t *end)
int PyUnicodeEncodeError_GetEnd(PyObject *exc, Py_ssize_t *end)
int PyUnicodeTranslateError_GetEnd(PyObject *exc, Py_ssize_t *end)
Get the *end* attribute of the given exception object and place it into
*\*end*. *end* must not be *NULL*. Return ``0`` on success, ``-1`` on
failure.
.. cfunction:: int PyUnicodeDecodeError_SetEnd(PyObject *exc, Py_ssize_t end)
int PyUnicodeEncodeError_SetEnd(PyObject *exc, Py_ssize_t end)
int PyUnicodeTranslateError_SetEnd(PyObject *exc, Py_ssize_t end)
Set the *end* attribute of the given exception object to *end*. Return ``0``
on success, ``-1`` on failure.
.. cfunction:: PyObject* PyUnicodeDecodeError_GetReason(PyObject *exc)
PyObject* PyUnicodeEncodeError_GetReason(PyObject *exc)
PyObject* PyUnicodeTranslateError_GetReason(PyObject *exc)
Return the *reason* attribute of the given exception object.
.. cfunction:: int PyUnicodeDecodeError_SetReason(PyObject *exc, const char *reason)
int PyUnicodeEncodeError_SetReason(PyObject *exc, const char *reason)
int PyUnicodeTranslateError_SetReason(PyObject *exc, const char *reason)
Set the *reason* attribute of the given exception object to *reason*. Return
``0`` on success, ``-1`` on failure.
Recursion Control Recursion Control
================= =================
......
...@@ -41,8 +41,8 @@ included in your code by the following line:: ...@@ -41,8 +41,8 @@ included in your code by the following line::
#include "Python.h" #include "Python.h"
This implies inclusion of the following standard headers: ``<stdio.h>``, This implies inclusion of the following standard headers: ``<stdio.h>``,
``<string.h>``, ``<errno.h>``, ``<limits.h>``, and ``<stdlib.h>`` (if ``<string.h>``, ``<errno.h>``, ``<limits.h>``, ``<assert.h>`` and ``<stdlib.h>``
available). (if available).
.. note:: .. note::
......
...@@ -18,3 +18,4 @@ and parsing function arguments and constructing Python values from C values. ...@@ -18,3 +18,4 @@ and parsing function arguments and constructing Python values from C values.
arg.rst arg.rst
conversion.rst conversion.rst
reflection.rst reflection.rst
codec.rst
...@@ -129,6 +129,8 @@ latex_documents = [ ...@@ -129,6 +129,8 @@ latex_documents = [
'Python Tutorial', _stdauthor, 'manual'), 'Python Tutorial', _stdauthor, 'manual'),
('using/index', 'using.tex', ('using/index', 'using.tex',
'Python Setup and Usage', _stdauthor, 'manual'), 'Python Setup and Usage', _stdauthor, 'manual'),
('faq/index', 'faq.tex',
'Python Frequently Asked Questions', _stdauthor, 'manual'),
('whatsnew/' + version, 'whatsnew.tex', ('whatsnew/' + version, 'whatsnew.tex',
'What\'s New in Python', 'A. M. Kuchling', 'howto'), 'What\'s New in Python', 'A. M. Kuchling', 'howto'),
] ]
......
...@@ -11,11 +11,12 @@ ...@@ -11,11 +11,12 @@
This module provides an implementation of the heap queue algorithm, also known This module provides an implementation of the heap queue algorithm, also known
as the priority queue algorithm. as the priority queue algorithm.
Heaps are arrays for which ``heap[k] <= heap[2*k+1]`` and ``heap[k] <= Heaps are binary trees for which every parent node has a value less than or
heap[2*k+2]`` for all *k*, counting elements from zero. For the sake of equal to any of its children. This implementation uses arrays for which
comparison, non-existing elements are considered to be infinite. The ``heap[k] <= heap[2*k+1]`` and ``heap[k] <= heap[2*k+2]`` for all *k*, counting
interesting property of a heap is that ``heap[0]`` is always its smallest elements from zero. For the sake of comparison, non-existing elements are
element. considered to be infinite. The interesting property of a heap is that its
smallest element is always the root, ``heap[0]``.
The API below differs from textbook heap algorithms in two aspects: (a) We use The API below differs from textbook heap algorithms in two aspects: (a) We use
zero-based indexing. This makes the relationship between the index for a node zero-based indexing. This makes the relationship between the index for a node
......
...@@ -67,7 +67,6 @@ Iterator Arguments Resu ...@@ -67,7 +67,6 @@ Iterator Arguments Resu
:func:`permutations` p[, r] r-length tuples, all possible orderings, no repeated elements :func:`permutations` p[, r] r-length tuples, all possible orderings, no repeated elements
:func:`combinations` p, r r-length tuples, in sorted order, no repeated elements :func:`combinations` p, r r-length tuples, in sorted order, no repeated elements
:func:`combinations_with_replacement` p, r r-length tuples, in sorted order, with repeated elements :func:`combinations_with_replacement` p, r r-length tuples, in sorted order, with repeated elements
|
``product('ABCD', repeat=2)`` ``AA AB AC AD BA BB BC BD CA CB CC CD DA DB DC DD`` ``product('ABCD', repeat=2)`` ``AA AB AC AD BA BB BC BD CA CB CC CD DA DB DC DD``
``permutations('ABCD', 2)`` ``AB AC AD BA BC BD CA CB CD DA DB DC`` ``permutations('ABCD', 2)`` ``AB AC AD BA BC BD CA CB CD DA DB DC``
``combinations('ABCD', 2)`` ``AB AC AD BC BD CD`` ``combinations('ABCD', 2)`` ``AB AC AD BC BD CD``
......
...@@ -49,52 +49,57 @@ for the feature and property names. ...@@ -49,52 +49,57 @@ for the feature and property names.
.. data:: feature_namespaces .. data:: feature_namespaces
Value: ``"http://xml.org/sax/features/namespaces"`` --- true: Perform Namespace | value: ``"http://xml.org/sax/features/namespaces"``
processing. --- false: Optionally do not perform Namespace processing (implies | true: Perform Namespace processing.
namespace-prefixes; default). --- access: (parsing) read-only; (not parsing) | false: Optionally do not perform Namespace processing (implies
read/write namespace-prefixes; default).
| access: (parsing) read-only; (not parsing) read/write
.. data:: feature_namespace_prefixes .. data:: feature_namespace_prefixes
Value: ``"http://xml.org/sax/features/namespace-prefixes"`` --- true: Report | value: ``"http://xml.org/sax/features/namespace-prefixes"``
the original prefixed names and attributes used for Namespace | true: Report the original prefixed names and attributes used for Namespace
declarations. --- false: Do not report attributes used for Namespace declarations.
declarations, and optionally do not report original prefixed names | false: Do not report attributes used for Namespace declarations, and
(default). --- access: (parsing) read-only; (not parsing) read/write optionally do not report original prefixed names (default).
| access: (parsing) read-only; (not parsing) read/write
.. data:: feature_string_interning .. data:: feature_string_interning
Value: ``"http://xml.org/sax/features/string-interning"`` --- true: All element | value: ``"http://xml.org/sax/features/string-interning"``
names, prefixes, attribute names, Namespace URIs, and local names are interned | true: All element names, prefixes, attribute names, Namespace URIs, and
using the built-in intern function. --- false: Names are not necessarily local names are interned using the built-in intern function.
interned, although they may be (default). --- access: (parsing) read-only; (not | false: Names are not necessarily interned, although they may be (default).
parsing) read/write | access: (parsing) read-only; (not parsing) read/write
.. data:: feature_validation .. data:: feature_validation
Value: ``"http://xml.org/sax/features/validation"`` --- true: Report all | value: ``"http://xml.org/sax/features/validation"``
validation errors (implies external-general-entities and | true: Report all validation errors (implies external-general-entities and
external-parameter-entities). --- false: Do not report validation errors. --- external-parameter-entities).
access: (parsing) read-only; (not parsing) read/write | false: Do not report validation errors.
| access: (parsing) read-only; (not parsing) read/write
.. data:: feature_external_ges .. data:: feature_external_ges
Value: ``"http://xml.org/sax/features/external-general-entities"`` --- true: | value: ``"http://xml.org/sax/features/external-general-entities"``
Include all external general (text) entities. --- false: Do not include | true: Include all external general (text) entities.
external general entities. --- access: (parsing) read-only; (not parsing) | false: Do not include external general entities.
read/write | access: (parsing) read-only; (not parsing) read/write
.. data:: feature_external_pes .. data:: feature_external_pes
Value: ``"http://xml.org/sax/features/external-parameter-entities"`` --- true: | value: ``"http://xml.org/sax/features/external-parameter-entities"``
Include all external parameter entities, including the external DTD subset. --- | true: Include all external parameter entities, including the external DTD
false: Do not include any external parameter entities, even the external DTD subset.
subset. --- access: (parsing) read-only; (not parsing) read/write | false: Do not include any external parameter entities, even the external
DTD subset.
| access: (parsing) read-only; (not parsing) read/write
.. data:: all_features .. data:: all_features
...@@ -104,34 +109,38 @@ for the feature and property names. ...@@ -104,34 +109,38 @@ for the feature and property names.
.. data:: property_lexical_handler .. data:: property_lexical_handler
Value: ``"http://xml.org/sax/properties/lexical-handler"`` --- data type: | value: ``"http://xml.org/sax/properties/lexical-handler"``
xml.sax.sax2lib.LexicalHandler (not supported in Python 2) --- description: An | data type: xml.sax.sax2lib.LexicalHandler (not supported in Python 2)
optional extension handler for lexical events like comments. --- access: | description: An optional extension handler for lexical events like
read/write comments.
| access: read/write
.. data:: property_declaration_handler .. data:: property_declaration_handler
Value: ``"http://xml.org/sax/properties/declaration-handler"`` --- data type: | value: ``"http://xml.org/sax/properties/declaration-handler"``
xml.sax.sax2lib.DeclHandler (not supported in Python 2) --- description: An | data type: xml.sax.sax2lib.DeclHandler (not supported in Python 2)
optional extension handler for DTD-related events other than notations and | description: An optional extension handler for DTD-related events other
unparsed entities. --- access: read/write than notations and unparsed entities.
| access: read/write
.. data:: property_dom_node .. data:: property_dom_node
Value: ``"http://xml.org/sax/properties/dom-node"`` --- data type: | value: ``"http://xml.org/sax/properties/dom-node"``
org.w3c.dom.Node (not supported in Python 2) --- description: When parsing, | data type: org.w3c.dom.Node (not supported in Python 2)
the current DOM node being visited if this is a DOM iterator; when not parsing, | description: When parsing, the current DOM node being visited if this is
the root DOM node for iteration. --- access: (parsing) read-only; (not parsing) a DOM iterator; when not parsing, the root DOM node for iteration.
read/write | access: (parsing) read-only; (not parsing) read/write
.. data:: property_xml_string .. data:: property_xml_string
Value: ``"http://xml.org/sax/properties/xml-string"`` --- data type: String --- | value: ``"http://xml.org/sax/properties/xml-string"``
description: The literal string of characters that was the source for the | data type: String
current event. --- access: read-only | description: The literal string of characters that was the source for the
current event.
| access: read-only
.. data:: all_properties .. data:: all_properties
......
...@@ -36,6 +36,7 @@ The module defines the following items: ...@@ -36,6 +36,7 @@ The module defines the following items:
.. class:: ZipFile .. class:: ZipFile
:noindex:
The class for reading and writing ZIP files. See section The class for reading and writing ZIP files. See section
:ref:`zipfile-objects` for constructor details. :ref:`zipfile-objects` for constructor details.
......
...@@ -379,7 +379,7 @@ Here is a brief demonstration:: ...@@ -379,7 +379,7 @@ Here is a brief demonstration::
>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'} >>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket) # show that duplicates have been removed >>> print(basket) # show that duplicates have been removed
{'orange', 'bananna', 'pear', 'apple'} {'orange', 'banana', 'pear', 'apple'}
>>> 'orange' in basket # fast membership testing >>> 'orange' in basket # fast membership testing
True True
>>> 'crabgrass' in basket >>> 'crabgrass' in basket
......
...@@ -144,7 +144,7 @@ PyAPI_FUNC(PyObject *) PyCodec_StreamWriter( ...@@ -144,7 +144,7 @@ PyAPI_FUNC(PyObject *) PyCodec_StreamWriter(
/* Unicode encoding error handling callback registry API */ /* Unicode encoding error handling callback registry API */
/* Register the error handling callback function error under the name /* Register the error handling callback function error under the given
name. This function will be called by the codec when it encounters name. This function will be called by the codec when it encounters
unencodable characters/undecodable bytes and doesn't know the unencodable characters/undecodable bytes and doesn't know the
callback name, when name is specified as the error parameter callback name, when name is specified as the error parameter
...@@ -152,8 +152,8 @@ PyAPI_FUNC(PyObject *) PyCodec_StreamWriter( ...@@ -152,8 +152,8 @@ PyAPI_FUNC(PyObject *) PyCodec_StreamWriter(
Return 0 on success, -1 on error */ Return 0 on success, -1 on error */
PyAPI_FUNC(int) PyCodec_RegisterError(const char *name, PyObject *error); PyAPI_FUNC(int) PyCodec_RegisterError(const char *name, PyObject *error);
/* Lookup the error handling callback function registered under the /* Lookup the error handling callback function registered under the given
name error. As a special case NULL can be passed, in which case name. As a special case NULL can be passed, in which case
the error handling callback for "strict" will be returned. */ the error handling callback for "strict" will be returned. */
PyAPI_FUNC(PyObject *) PyCodec_LookupError(const char *name); PyAPI_FUNC(PyObject *) PyCodec_LookupError(const char *name);
...@@ -163,7 +163,7 @@ PyAPI_FUNC(PyObject *) PyCodec_StrictErrors(PyObject *exc); ...@@ -163,7 +163,7 @@ PyAPI_FUNC(PyObject *) PyCodec_StrictErrors(PyObject *exc);
/* ignore the unicode error, skipping the faulty input */ /* ignore the unicode error, skipping the faulty input */
PyAPI_FUNC(PyObject *) PyCodec_IgnoreErrors(PyObject *exc); PyAPI_FUNC(PyObject *) PyCodec_IgnoreErrors(PyObject *exc);
/* replace the unicode error with ? or U+FFFD */ /* replace the unicode encode error with ? or U+FFFD */
PyAPI_FUNC(PyObject *) PyCodec_ReplaceErrors(PyObject *exc); PyAPI_FUNC(PyObject *) PyCodec_ReplaceErrors(PyObject *exc);
/* replace the unicode encode error with XML character references */ /* replace the unicode encode error with XML character references */
......
...@@ -522,7 +522,11 @@ class GeneralModuleTests(unittest.TestCase): ...@@ -522,7 +522,11 @@ class GeneralModuleTests(unittest.TestCase):
# XXX(nnorwitz): http://tinyurl.com/os5jz seems to indicate # XXX(nnorwitz): http://tinyurl.com/os5jz seems to indicate
# it reasonable to get the host's addr in addition to 0.0.0.0. # it reasonable to get the host's addr in addition to 0.0.0.0.
# At least for eCos. This is required for the S/390 to pass. # At least for eCos. This is required for the S/390 to pass.
my_ip_addr = socket.gethostbyname(socket.gethostname()) try:
my_ip_addr = socket.gethostbyname(socket.gethostname())
except socket.error:
# Probably name lookup wasn't set up right; skip this test
return
self.assertTrue(name[0] in ("0.0.0.0", my_ip_addr), '%s invalid' % name[0]) self.assertTrue(name[0] in ("0.0.0.0", my_ip_addr), '%s invalid' % name[0])
self.assertEqual(name[1], port) self.assertEqual(name[1], port)
......
...@@ -67,7 +67,7 @@ define lineno ...@@ -67,7 +67,7 @@ define lineno
set $__p = $__p + 1 set $__p = $__p + 1
end end
end end
printf "%d\n", $__li printf "%d", $__li
end end
# print the current frame - verbose # print the current frame - verbose
......
-sob --blank-lines-after-declarations
-nbad --blank-lines-after-procedures
-bap --braces-after-func-def-line
-br --braces-on-if-line
-nce --braces-on-struct-decl-line
-ncs --break-after-boolean-operator
-npcs --comment-indentation25
-i8 --comment-line-length79
-ip8 --continue-at-parentheses
-c25 --dont-cuddle-do-while
--dont-cuddle-else
--indent-level4
--line-length79
--no-space-after-casts
--no-space-after-function-call-names
--no-space-after-parentheses
--no-tabs
--procnames-start-lines
--space-after-for
--space-after-if
--space-after-while
--swallow-optional-blank-lines
-T PyCFunction
-T PyObject -T PyObject
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment