diff --git a/.azure-pipelines/ci.yml b/.azure-pipelines/ci.yml
index 6302b547982118..fb4a2218ddd8d8 100644
--- a/.azure-pipelines/ci.yml
+++ b/.azure-pipelines/ci.yml
@@ -57,7 +57,7 @@ jobs:
variables:
testRunTitle: '$(build.sourceBranchName)-linux'
testRunPlatform: linux
- openssl_version: 1.1.1t
+ openssl_version: 1.1.1u
steps:
- template: ./posix-steps.yml
@@ -83,7 +83,7 @@ jobs:
variables:
testRunTitle: '$(Build.SourceBranchName)-linux-coverage'
testRunPlatform: linux-coverage
- openssl_version: 1.1.1t
+ openssl_version: 1.1.1u
steps:
- template: ./posix-steps.yml
diff --git a/.azure-pipelines/pr.yml b/.azure-pipelines/pr.yml
index 5f7218768c18af..b822d58806b9a6 100644
--- a/.azure-pipelines/pr.yml
+++ b/.azure-pipelines/pr.yml
@@ -57,7 +57,7 @@ jobs:
variables:
testRunTitle: '$(system.pullRequest.TargetBranch)-linux'
testRunPlatform: linux
- openssl_version: 1.1.1t
+ openssl_version: 1.1.1u
steps:
- template: ./posix-steps.yml
@@ -83,7 +83,7 @@ jobs:
variables:
testRunTitle: '$(Build.SourceBranchName)-linux-coverage'
testRunPlatform: linux-coverage
- openssl_version: 1.1.1t
+ openssl_version: 1.1.1u
steps:
- template: ./posix-steps.yml
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 41abddffa5d648..99acce905a8472 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -8,6 +8,7 @@ on:
push:
branches:
- 'main'
+ - '3.12'
- '3.11'
- '3.10'
- '3.9'
@@ -16,6 +17,7 @@ on:
pull_request:
branches:
- 'main'
+ - '3.12'
- '3.11'
- '3.10'
- '3.9'
@@ -37,6 +39,7 @@ jobs:
outputs:
run_tests: ${{ steps.check.outputs.run_tests }}
run_hypothesis: ${{ steps.check.outputs.run_hypothesis }}
+ config_hash: ${{ steps.config_hash.outputs.hash }}
steps:
- uses: actions/checkout@v3
- name: Check for source changes
@@ -72,6 +75,53 @@ jobs:
echo "Run hypothesis tests"
echo "run_hypothesis=true" >> $GITHUB_OUTPUT
fi
+ - name: Compute hash for config cache key
+ id: config_hash
+ run: |
+ echo "hash=${{ hashFiles('configure', 'configure.ac', '.github/workflows/build.yml') }}" >> $GITHUB_OUTPUT
+
+ check_abi:
+ name: 'Check if the ABI has changed'
+ runs-on: ubuntu-22.04
+ needs: check_source
+ if: needs.check_source.outputs.run_tests == 'true'
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions/setup-python@v4
+ - name: Install dependencies
+ run: |
+ sudo ./.github/workflows/posix-deps-apt.sh
+ sudo apt-get install -yq abigail-tools
+ - name: Build CPython
+ env:
+ CFLAGS: -g3 -O0
+ run: |
+ # Build Python with the libpython dynamic library
+ ./configure --enable-shared
+ make -j4
+ - name: Check for changes in the ABI
+ id: check
+ run: |
+ if ! make check-abidump; then
+ echo "Generated ABI file is not up to date."
+ echo "Please add the release manager of this branch as a reviewer of this PR."
+ echo ""
+ echo "The up to date ABI file should be attached to this build as an artifact."
+ echo ""
+ echo "To learn more about this check: https://devguide.python.org/setup/#regenerate-the-abi-dump"
+ echo ""
+ exit 1
+ fi
+ - name: Generate updated ABI files
+ if: ${{ failure() && steps.check.conclusion == 'failure' }}
+ run: |
+ make regen-abidump
+ - uses: actions/upload-artifact@v3
+ name: Publish updated ABI files
+ if: ${{ failure() && steps.check.conclusion == 'failure' }}
+ with:
+ name: abi-data
+ path: ./Doc/data/*.abi
check_generated_files:
name: 'Check if generated files are up to date'
@@ -81,6 +131,11 @@ jobs:
if: needs.check_source.outputs.run_tests == 'true'
steps:
- uses: actions/checkout@v3
+ - name: Restore config.cache
+ uses: actions/cache@v3
+ with:
+ path: config.cache
+ key: ${{ github.job }}-${{ runner.os }}-${{ needs.check_source.outputs.config_hash }}
- uses: actions/setup-python@v3
- name: Install Dependencies
run: sudo ./.github/workflows/posix-deps-apt.sh
@@ -88,16 +143,16 @@ jobs:
run: echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
- name: Configure ccache action
uses: hendrikmuhs/ccache-action@v1.2
- - name: Check Autoconf version 2.69 and aclocal 1.16.3
+ - name: Check Autoconf and aclocal versions
run: |
- grep "Generated by GNU Autoconf 2.69" configure
- grep "aclocal 1.16.3" aclocal.m4
+ grep "Generated by GNU Autoconf 2.71" configure
+ grep "aclocal 1.16.4" aclocal.m4
grep -q "runstatedir" configure
grep -q "PKG_PROG_PKG_CONFIG" aclocal.m4
- name: Configure CPython
run: |
# Build Python with the libpython dynamic library
- ./configure --with-pydebug --enable-shared
+ ./configure --config-cache --with-pydebug --enable-shared
- name: Regenerate autoconf files with container image
run: make regen-configure
- name: Build CPython
@@ -178,6 +233,11 @@ jobs:
PYTHONSTRICTEXTENSIONBUILD: 1
steps:
- uses: actions/checkout@v3
+ - name: Restore config.cache
+ uses: actions/cache@v3
+ with:
+ path: config.cache
+ key: ${{ github.job }}-${{ runner.os }}-${{ needs.check_source.outputs.config_hash }}
- name: Install Homebrew dependencies
run: brew install pkg-config openssl@1.1 xz gdbm tcl-tk
- name: Configure CPython
@@ -186,6 +246,7 @@ jobs:
LDFLAGS="-L$(brew --prefix gdbm)/lib -I$(brew --prefix xz)/lib" \
PKG_CONFIG_PATH="$(brew --prefix tcl-tk)/lib/pkgconfig" \
./configure \
+ --config-cache \
--with-pydebug \
--prefix=/opt/python-dev \
--with-openssl="$(brew --prefix openssl@1.1)"
@@ -203,7 +264,7 @@ jobs:
needs: check_source
if: needs.check_source.outputs.run_tests == 'true'
env:
- OPENSSL_VER: 1.1.1t
+ OPENSSL_VER: 1.1.1u
PYTHONSTRICTEXTENSIONBUILD: 1
steps:
- uses: actions/checkout@v3
@@ -238,9 +299,18 @@ jobs:
run: mkdir -p $CPYTHON_RO_SRCDIR $CPYTHON_BUILDDIR
- name: Bind mount sources read-only
run: sudo mount --bind -o ro $GITHUB_WORKSPACE $CPYTHON_RO_SRCDIR
+ - name: Restore config.cache
+ uses: actions/cache@v3
+ with:
+ path: ${{ env.CPYTHON_BUILDDIR }}/config.cache
+ key: ${{ github.job }}-${{ runner.os }}-${{ needs.check_source.outputs.config_hash }}
- name: Configure CPython out-of-tree
working-directory: ${{ env.CPYTHON_BUILDDIR }}
- run: ../cpython-ro-srcdir/configure --with-pydebug --with-openssl=$OPENSSL_DIR
+ run: |
+ ../cpython-ro-srcdir/configure \
+ --config-cache \
+ --with-pydebug \
+ --with-openssl=$OPENSSL_DIR
- name: Build CPython out-of-tree
working-directory: ${{ env.CPYTHON_BUILDDIR }}
run: make -j4
@@ -263,7 +333,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- openssl_ver: [1.1.1t, 3.0.8, 3.1.0-beta1]
+ openssl_ver: [1.1.1u, 3.0.9, 3.1.1]
env:
OPENSSL_VER: ${{ matrix.openssl_ver }}
MULTISSL_DIR: ${{ github.workspace }}/multissl
@@ -271,6 +341,11 @@ jobs:
LD_LIBRARY_PATH: ${{ github.workspace }}/multissl/openssl/${{ matrix.openssl_ver }}/lib
steps:
- uses: actions/checkout@v3
+ - name: Restore config.cache
+ uses: actions/cache@v3
+ with:
+ path: config.cache
+ key: ${{ github.job }}-${{ runner.os }}-${{ needs.check_source.outputs.config_hash }}
- name: Register gcc problem matcher
run: echo "::add-matcher::.github/problem-matchers/gcc.json"
- name: Install Dependencies
@@ -295,7 +370,7 @@ jobs:
- name: Configure ccache action
uses: hendrikmuhs/ccache-action@v1.2
- name: Configure CPython
- run: ./configure --with-pydebug --with-openssl=$OPENSSL_DIR
+ run: ./configure --config-cache --with-pydebug --with-openssl=$OPENSSL_DIR
- name: Build CPython
run: make -j4
- name: Display build info
@@ -304,13 +379,13 @@ jobs:
run: ./python Lib/test/ssltests.py
test_hypothesis:
- name: "Hypothesis Tests on Ubuntu"
+ name: "Hypothesis tests on Ubuntu"
runs-on: ubuntu-20.04
timeout-minutes: 60
needs: check_source
if: needs.check_source.outputs.run_tests == 'true' && needs.check_source.outputs.run_hypothesis == 'true'
env:
- OPENSSL_VER: 1.1.1t
+ OPENSSL_VER: 1.1.1u
PYTHONSTRICTEXTENSIONBUILD: 1
steps:
- uses: actions/checkout@v3
@@ -345,9 +420,18 @@ jobs:
run: mkdir -p $CPYTHON_RO_SRCDIR $CPYTHON_BUILDDIR
- name: Bind mount sources read-only
run: sudo mount --bind -o ro $GITHUB_WORKSPACE $CPYTHON_RO_SRCDIR
+ - name: Restore config.cache
+ uses: actions/cache@v3
+ with:
+ path: ${{ env.CPYTHON_BUILDDIR }}/config.cache
+ key: ${{ github.job }}-${{ runner.os }}-${{ needs.check_source.outputs.config_hash }}
- name: Configure CPython out-of-tree
working-directory: ${{ env.CPYTHON_BUILDDIR }}
- run: ../cpython-ro-srcdir/configure --with-pydebug --with-openssl=$OPENSSL_DIR
+ run: |
+ ../cpython-ro-srcdir/configure \
+ --config-cache \
+ --with-pydebug \
+ --with-openssl=$OPENSSL_DIR
- name: Build CPython out-of-tree
working-directory: ${{ env.CPYTHON_BUILDDIR }}
run: make -j4
@@ -410,11 +494,16 @@ jobs:
needs: check_source
if: needs.check_source.outputs.run_tests == 'true'
env:
- OPENSSL_VER: 1.1.1t
+ OPENSSL_VER: 1.1.1u
PYTHONSTRICTEXTENSIONBUILD: 1
ASAN_OPTIONS: detect_leaks=0:allocator_may_return_null=1:handle_segv=0
steps:
- uses: actions/checkout@v3
+ - name: Restore config.cache
+ uses: actions/cache@v3
+ with:
+ path: config.cache
+ key: ${{ github.job }}-${{ runner.os }}-${{ needs.check_source.outputs.config_hash }}
- name: Register gcc problem matcher
run: echo "::add-matcher::.github/problem-matchers/gcc.json"
- name: Install Dependencies
@@ -443,7 +532,7 @@ jobs:
- name: Configure ccache action
uses: hendrikmuhs/ccache-action@v1.2
- name: Configure CPython
- run: ./configure --with-address-sanitizer --without-pymalloc
+ run: ./configure --config-cache --with-address-sanitizer --without-pymalloc
- name: Build CPython
run: make -j4
- name: Display build info
diff --git a/.github/workflows/build_msi.yml b/.github/workflows/build_msi.yml
index 2bed09014e0ff2..22f613a88aa11e 100644
--- a/.github/workflows/build_msi.yml
+++ b/.github/workflows/build_msi.yml
@@ -8,12 +8,14 @@ on:
- '3.*'
paths:
- 'Tools/msi/**'
+ - '.github/workflows/build_msi.yml'
pull_request:
branches:
- 'main'
- '3.*'
paths:
- 'Tools/msi/**'
+ - '.github/workflows/build_msi.yml'
permissions:
contents: read
@@ -33,4 +35,4 @@ jobs:
steps:
- uses: actions/checkout@v3
- name: Build CPython installer
- run: .\Tools\msi\build.bat -${{ matrix.type }}
+ run: .\Tools\msi\build.bat --doc -${{ matrix.type }}
diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml
index 3f7550cc72943b..ec900ce68a1dde 100644
--- a/.github/workflows/doc.yml
+++ b/.github/workflows/doc.yml
@@ -5,6 +5,7 @@ on:
#push:
# branches:
# - 'main'
+ # - '3.12'
# - '3.11'
# - '3.10'
# - '3.9'
@@ -15,6 +16,7 @@ on:
pull_request:
branches:
- 'main'
+ - '3.12'
- '3.11'
- '3.10'
- '3.9'
diff --git a/.gitignore b/.gitignore
index ef7642b09bc5d2..bde596a7a0298b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -156,6 +156,3 @@ Python/frozen_modules/MANIFEST
# Ignore ./python binary on Unix but still look into ./Python/ directory.
/python
!/Python/
-
-# main branch only: ABI files are not checked/maintained
-Doc/data/python*.abi
diff --git a/Doc/c-api/exceptions.rst b/Doc/c-api/exceptions.rst
index 4ed96f01dbbc3e..1694aa2db9c9da 100644
--- a/Doc/c-api/exceptions.rst
+++ b/Doc/c-api/exceptions.rst
@@ -60,9 +60,14 @@ Printing and clearing
Call this function **only** when the error indicator is set. Otherwise it
will cause a fatal error!
- If *set_sys_last_vars* is nonzero, the variables :data:`sys.last_type`,
- :data:`sys.last_value` and :data:`sys.last_traceback` will be set to the
- type, value and traceback of the printed exception, respectively.
+ If *set_sys_last_vars* is nonzero, the variable :data:`sys.last_exc` is
+ set to the printed exception. For backwards compatibility, the
+ deprecated variables :data:`sys.last_type`, :data:`sys.last_value` and
+ :data:`sys.last_traceback` are also set to the type, value and traceback
+ of this exception, respectively.
+
+ .. versionchanged:: 3.12
+ The setting of :data:`sys.last_exc` was added.
.. c:function:: void PyErr_Print()
@@ -772,6 +777,18 @@ Exception Objects
Set :attr:`~BaseException.args` of exception *ex* to *args*.
+.. c:function:: PyObject* PyUnstable_Exc_PrepReraiseStar(PyObject *orig, PyObject *excs)
+
+ Implement part of the interpreter's implementation of :keyword:`!except*`.
+ *orig* is the original exception that was caught, and *excs* is the list of
+ the exceptions that need to be raised. This list contains the the unhandled
+ part of *orig*, if any, as well as the exceptions that were raised from the
+ :keyword:`!except*` clauses (so they have a different traceback from *orig*) and
+ those that were reraised (and have the same traceback as *orig*).
+ Return the :exc:`ExceptionGroup` that needs to be reraised in the end, or
+ ``None`` if there is nothing to reraise.
+
+ .. versionadded:: 3.12
.. _unicodeexceptions:
diff --git a/Doc/c-api/marshal.rst b/Doc/c-api/marshal.rst
index 8e25968c6909fd..489f1580a414b2 100644
--- a/Doc/c-api/marshal.rst
+++ b/Doc/c-api/marshal.rst
@@ -25,12 +25,16 @@ unmarshalling. Version 2 uses a binary format for floating point numbers.
the least-significant 32 bits of *value*; regardless of the size of the
native :c:expr:`long` type. *version* indicates the file format.
+ This function can fail, in which case it sets the error indicator.
+ Use :c:func:`PyErr_Occurred` to check for that.
.. c:function:: void PyMarshal_WriteObjectToFile(PyObject *value, FILE *file, int version)
Marshal a Python object, *value*, to *file*.
*version* indicates the file format.
+ This function can fail, in which case it sets the error indicator.
+ Use :c:func:`PyErr_Occurred` to check for that.
.. c:function:: PyObject* PyMarshal_WriteObjectToString(PyObject *value, int version)
diff --git a/Doc/c-api/structures.rst b/Doc/c-api/structures.rst
index aae1b951804491..7ce3578f250792 100644
--- a/Doc/c-api/structures.rst
+++ b/Doc/c-api/structures.rst
@@ -395,7 +395,7 @@ Accessing attributes of extension types
The string should be static, no copy is made of it.
- .. c:member:: Py_ssize_t PyMemberDef.offset
+ .. c:member:: Py_ssize_t offset
The offset in bytes that the member is located on the type’s object struct.
@@ -625,23 +625,23 @@ Defining Getters and Setters
Structure to define property-like access for a type. See also description of
the :c:member:`PyTypeObject.tp_getset` slot.
- .. c:member:: const char* PyGetSetDef.name
+ .. c:member:: const char* name
attribute name
- .. c:member:: getter PyGetSetDef.get
+ .. c:member:: getter get
C function to get the attribute.
- .. c:member:: setter PyGetSetDef.set
+ .. c:member:: setter set
Optional C function to set or delete the attribute, if omitted the attribute is readonly.
- .. c:member:: const char* PyGetSetDef.doc
+ .. c:member:: const char* doc
optional docstring
- .. c:member:: void* PyGetSetDef.closure
+ .. c:member:: void* closure
Optional function pointer, providing additional data for getter and setter.
diff --git a/Doc/c-api/type.rst b/Doc/c-api/type.rst
index fb38935e003336..89cd74335fd770 100644
--- a/Doc/c-api/type.rst
+++ b/Doc/c-api/type.rst
@@ -349,6 +349,15 @@ The following functions and structs are used to create
:c:member:`~PyTypeObject.tp_new` is deprecated and in Python 3.14+ it
will be no longer allowed.
+.. raw:: html
+
+
+
+
+
+
+
+
.. c:type:: PyType_Spec
Structure defining a type's behavior.
@@ -410,12 +419,18 @@ The following functions and structs are used to create
Each slot ID should be specified at most once.
+.. raw:: html
+
+
+
+
+
.. c:type:: PyType_Slot
Structure defining optional functionality of a type, containing a slot ID
and a value pointer.
- .. c:member:: int PyType_Slot.slot
+ .. c:member:: int slot
A slot ID.
@@ -459,7 +474,7 @@ The following functions and structs are used to create
:c:member:`~PyBufferProcs.bf_releasebuffer` are now available
under the limited API.
- .. c:member:: void *PyType_Slot.pfunc
+ .. c:member:: void *pfunc
The desired value of the slot. In most cases, this is a pointer
to a function.
diff --git a/Doc/c-api/veryhigh.rst b/Doc/c-api/veryhigh.rst
index 513856d8a48d70..000a2d3d8790bb 100644
--- a/Doc/c-api/veryhigh.rst
+++ b/Doc/c-api/veryhigh.rst
@@ -167,6 +167,10 @@ the same library that the Python runtime is using.
event loops, as done in the :file:`Modules/_tkinter.c` in the
Python source code.
+ .. versionchanged:: 3.12
+ This function is only called from the
+ :ref:`main interpreter `.
+
.. c:var:: char* (*PyOS_ReadlineFunctionPointer)(FILE *, FILE *, const char *)
@@ -187,6 +191,10 @@ the same library that the Python runtime is using.
:c:func:`PyMem_RawRealloc`, instead of being allocated by
:c:func:`PyMem_Malloc` or :c:func:`PyMem_Realloc`.
+ .. versionchanged:: 3.12
+ This function is only called from the
+ :ref:`main interpreter `.
+
.. c:function:: PyObject* PyRun_String(const char *str, int start, PyObject *globals, PyObject *locals)
This is a simplified interface to :c:func:`PyRun_StringFlags` below, leaving
diff --git a/Doc/data/python3.12.abi b/Doc/data/python3.12.abi
new file mode 100644
index 00000000000000..55d8468d57c05a
--- /dev/null
+++ b/Doc/data/python3.12.abi
@@ -0,0 +1,26422 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Doc/howto/urllib2.rst b/Doc/howto/urllib2.rst
index 61ba6bd7224fcc..86137fb38c9b93 100644
--- a/Doc/howto/urllib2.rst
+++ b/Doc/howto/urllib2.rst
@@ -6,13 +6,6 @@
:Author: `Michael Foord `_
-.. note::
-
- There is a French translation of an earlier revision of this
- HOWTO, available at `urllib2 - Le Manuel manquant
- `_.
-
-
Introduction
============
diff --git a/Doc/library/ast.rst b/Doc/library/ast.rst
index b6b1e076c9f08c..f3b0bf0c4f7779 100644
--- a/Doc/library/ast.rst
+++ b/Doc/library/ast.rst
@@ -481,7 +481,7 @@ Expressions
Comparison operator tokens.
-.. class:: Call(func, args, keywords, starargs, kwargs)
+.. class:: Call(func, args, keywords)
A function call. ``func`` is the function, which will often be a
:class:`Name` or :class:`Attribute` object. Of the arguments:
@@ -491,7 +491,7 @@ Expressions
arguments passed by keyword.
When creating a ``Call`` node, ``args`` and ``keywords`` are required, but
- they can be empty lists. ``starargs`` and ``kwargs`` are optional.
+ they can be empty lists.
.. doctest::
@@ -917,6 +917,25 @@ Statements
type_ignores=[])
+.. class:: TypeAlias(name, type_params, value)
+
+ A :ref:`type alias ` created through the :keyword:`type`
+ statement. ``name`` is the name of the alias, ``type_params`` is a list of
+ :ref:`type parameters `, and ``value`` is the value of the
+ type alias.
+
+ .. doctest::
+
+ >>> print(ast.dump(ast.parse('type Alias = int'), indent=4))
+ Module(
+ body=[
+ TypeAlias(
+ name=Name(id='Alias', ctx=Store()),
+ type_params=[],
+ value=Name(id='int', ctx=Load()))],
+ type_ignores=[])
+
+
Other statements which are only applicable inside functions or loops are
described in other sections.
@@ -1644,11 +1663,88 @@ Pattern matching
value=Constant(value=Ellipsis))])])],
type_ignores=[])
+.. _ast-type-params:
+
+Type parameters
+^^^^^^^^^^^^^^^
+
+:ref:`Type parameters ` can exist on classes, functions, and type
+aliases.
+
+.. class:: TypeVar(name, bound)
+
+ A :class:`typing.TypeVar`. ``name`` is the name of the type variable.
+ ``bound`` is the bound or constraints, if any. If ``bound`` is a :class:`Tuple`,
+ it represents constraints; otherwise it represents the bound.
+
+ .. doctest::
+
+ >>> print(ast.dump(ast.parse("type Alias[T: int] = list[T]"), indent=4))
+ Module(
+ body=[
+ TypeAlias(
+ name=Name(id='Alias', ctx=Store()),
+ type_params=[
+ TypeVar(
+ name='T',
+ bound=Name(id='int', ctx=Load()))],
+ value=Subscript(
+ value=Name(id='list', ctx=Load()),
+ slice=Name(id='T', ctx=Load()),
+ ctx=Load()))],
+ type_ignores=[])
+
+.. class:: ParamSpec(name)
+
+ A :class:`typing.ParamSpec`. ``name`` is the name of the parameter specification.
+
+ .. doctest::
+
+ >>> print(ast.dump(ast.parse("type Alias[**P] = Callable[P, int]"), indent=4))
+ Module(
+ body=[
+ TypeAlias(
+ name=Name(id='Alias', ctx=Store()),
+ type_params=[
+ ParamSpec(name='P')],
+ value=Subscript(
+ value=Name(id='Callable', ctx=Load()),
+ slice=Tuple(
+ elts=[
+ Name(id='P', ctx=Load()),
+ Name(id='int', ctx=Load())],
+ ctx=Load()),
+ ctx=Load()))],
+ type_ignores=[])
+
+.. class:: TypeVarTuple(name)
+
+ A :class:`typing.TypeVarTuple`. ``name`` is the name of the type variable tuple.
+
+ .. doctest::
+
+ >>> print(ast.dump(ast.parse("type Alias[*Ts] = tuple[*Ts]"), indent=4))
+ Module(
+ body=[
+ TypeAlias(
+ name=Name(id='Alias', ctx=Store()),
+ type_params=[
+ TypeVarTuple(name='Ts')],
+ value=Subscript(
+ value=Name(id='tuple', ctx=Load()),
+ slice=Tuple(
+ elts=[
+ Starred(
+ value=Name(id='Ts', ctx=Load()),
+ ctx=Load())],
+ ctx=Load()),
+ ctx=Load()))],
+ type_ignores=[])
Function and class definitions
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-.. class:: FunctionDef(name, args, body, decorator_list, returns, type_comment)
+.. class:: FunctionDef(name, args, body, decorator_list, returns, type_comment, type_params)
A function definition.
@@ -1658,6 +1754,7 @@ Function and class definitions
* ``decorator_list`` is the list of decorators to be applied, stored outermost
first (i.e. the first in the list will be applied last).
* ``returns`` is the return annotation.
+ * ``type_params`` is a list of :ref:`type parameters `.
.. attribute:: type_comment
@@ -1724,7 +1821,6 @@ Function and class definitions
body=[
FunctionDef(
name='f',
- type_params=[],
args=arguments(
posonlyargs=[],
args=[
@@ -1749,7 +1845,8 @@ Function and class definitions
decorator_list=[
Name(id='decorator1', ctx=Load()),
Name(id='decorator2', ctx=Load())],
- returns=Constant(value='return annotation'))],
+ returns=Constant(value='return annotation'),
+ type_params=[])],
type_ignores=[])
@@ -1820,7 +1917,7 @@ Function and class definitions
type_ignores=[])
-.. class:: ClassDef(name, bases, keywords, starargs, kwargs, body, decorator_list)
+.. class:: ClassDef(name, bases, keywords, body, decorator_list, type_params)
A class definition.
@@ -1829,12 +1926,10 @@ Function and class definitions
* ``keywords`` is a list of :class:`keyword` nodes, principally for 'metaclass'.
Other keywords will be passed to the metaclass, as per `PEP-3115
`_.
- * ``starargs`` and ``kwargs`` are each a single node, as in a function call.
- starargs will be expanded to join the list of base classes, and kwargs will
- be passed to the metaclass.
* ``body`` is a list of nodes representing the code within the class
definition.
* ``decorator_list`` is a list of nodes, as in :class:`FunctionDef`.
+ * ``type_params`` is a list of :ref:`type parameters `.
.. doctest::
@@ -1848,7 +1943,6 @@ Function and class definitions
body=[
ClassDef(
name='Foo',
- type_params=[],
bases=[
Name(id='base1', ctx=Load()),
Name(id='base2', ctx=Load())],
@@ -1860,13 +1954,14 @@ Function and class definitions
Pass()],
decorator_list=[
Name(id='decorator1', ctx=Load()),
- Name(id='decorator2', ctx=Load())])],
+ Name(id='decorator2', ctx=Load())],
+ type_params=[])],
type_ignores=[])
Async and await
^^^^^^^^^^^^^^^
-.. class:: AsyncFunctionDef(name, args, body, decorator_list, returns, type_comment)
+.. class:: AsyncFunctionDef(name, args, body, decorator_list, returns, type_comment, type_params)
An ``async def`` function definition. Has the same fields as
:class:`FunctionDef`.
@@ -1887,7 +1982,6 @@ Async and await
body=[
AsyncFunctionDef(
name='f',
- type_params=[],
args=arguments(
posonlyargs=[],
args=[],
@@ -1901,7 +1995,8 @@ Async and await
func=Name(id='other_func', ctx=Load()),
args=[],
keywords=[])))],
- decorator_list=[])],
+ decorator_list=[],
+ type_params=[])],
type_ignores=[])
diff --git a/Doc/library/atexit.rst b/Doc/library/atexit.rst
index a2bd85b31c9a8d..3dbef69580d9b3 100644
--- a/Doc/library/atexit.rst
+++ b/Doc/library/atexit.rst
@@ -48,6 +48,16 @@ a cleanup function is undefined.
This function returns *func*, which makes it possible to use it as a
decorator.
+ .. warning::
+ Starting new threads or calling :func:`os.fork` from a registered
+ function can lead to race condition between the main Python
+ runtime thread freeing thread states while internal :mod:`threading`
+ routines or the new process try to use that state. This can lead to
+ crashes rather than clean shutdown.
+
+ .. versionchanged:: 3.12
+ Attempts to start a new thread or :func:`os.fork` a new process
+ in a registered function now leads to :exc:`RuntimeError`.
.. function:: unregister(func)
diff --git a/Doc/library/dis.rst b/Doc/library/dis.rst
index 4762fb50437460..9b90f1ef23d92c 100644
--- a/Doc/library/dis.rst
+++ b/Doc/library/dis.rst
@@ -188,9 +188,9 @@ operation is being performed, so the intermediate analysis object isn't useful:
For a module, it disassembles all functions. For a class, it disassembles
all methods (including class and static methods). For a code object or
sequence of raw bytecode, it prints one line per bytecode instruction.
- It also recursively disassembles nested code objects (the code of
- comprehensions, generator expressions and nested functions, and the code
- used for building nested classes).
+ It also recursively disassembles nested code objects. These can include
+ generator expressions, nested functions, the bodies of nested classes,
+ and the code objects used for :ref:`annotation scopes `.
Strings are first compiled to code objects with the :func:`compile`
built-in function before being disassembled. If no object is provided, this
function disassembles the last traceback.
@@ -926,6 +926,27 @@ iterations of the loop.
.. opcode:: LOAD_NAME (namei)
Pushes the value associated with ``co_names[namei]`` onto the stack.
+ The name is looked up within the locals, then the globals, then the builtins.
+
+
+.. opcode:: LOAD_LOCALS
+
+ Pushes a reference to the locals dictionary onto the stack. This is used
+ to prepare namespace dictionaries for :opcode:`LOAD_FROM_DICT_OR_DEREF`
+ and :opcode:`LOAD_FROM_DICT_OR_GLOBALS`.
+
+ .. versionadded:: 3.12
+
+
+.. opcode:: LOAD_FROM_DICT_OR_GLOBALS (i)
+
+ Pops a mapping off the stack and looks up the value for ``co_names[namei]``.
+ If the name is not found there, looks it up in the globals and then the builtins,
+ similar to :opcode:`LOAD_GLOBAL`.
+ This is used for loading global variables in
+ :ref:`annotation scopes ` within class bodies.
+
+ .. versionadded:: 3.12
.. opcode:: BUILD_TUPLE (count)
@@ -1243,16 +1264,17 @@ iterations of the loop.
``i`` is no longer offset by the length of ``co_varnames``.
-.. opcode:: LOAD_CLASSDEREF (i)
+.. opcode:: LOAD_FROM_DICT_OR_DEREF (i)
- Much like :opcode:`LOAD_DEREF` but first checks the locals dictionary before
- consulting the cell. This is used for loading free variables in class
- bodies.
-
- .. versionadded:: 3.4
+ Pops a mapping off the stack and looks up the name associated with
+ slot ``i`` of the "fast locals" storage in this mapping.
+ If the name is not found there, loads it from the cell contained in
+ slot ``i``, similar to :opcode:`LOAD_DEREF`. This is used for loading
+ free variables in class bodies (which previously used
+ :opcode:`!LOAD_CLASSDEREF`) and in
+ :ref:`annotation scopes ` within class bodies.
- .. versionchanged:: 3.11
- ``i`` is no longer offset by the length of ``co_varnames``.
+ .. versionadded:: 3.12
.. opcode:: STORE_DEREF (i)
@@ -1504,13 +1526,45 @@ iterations of the loop.
The operand determines which intrinsic function is called:
- * ``0`` Not valid
- * ``1`` Prints the argument to standard out. Used in the REPL.
- * ``2`` Performs ``import *`` for the named module.
- * ``3`` Extracts the return value from a ``StopIteration`` exception.
- * ``4`` Wraps an aync generator value
- * ``5`` Performs the unary ``+`` operation
- * ``6`` Converts a list to a tuple
+ +-----------------------------------+-----------------------------------+
+ | Operand | Description |
+ +===================================+===================================+
+ | ``INTRINSIC_1_INVALID`` | Not valid |
+ +-----------------------------------+-----------------------------------+
+ | ``INTRINSIC_PRINT`` | Prints the argument to standard |
+ | | out. Used in the REPL. |
+ +-----------------------------------+-----------------------------------+
+ | ``INTRINSIC_IMPORT_STAR`` | Performs ``import *`` for the |
+ | | named module. |
+ +-----------------------------------+-----------------------------------+
+ | ``INTRINSIC_STOPITERATION_ERROR`` | Extracts the return value from a |
+ | | ``StopIteration`` exception. |
+ +-----------------------------------+-----------------------------------+
+ | ``INTRINSIC_ASYNC_GEN_WRAP`` | Wraps an aync generator value |
+ +-----------------------------------+-----------------------------------+
+ | ``INTRINSIC_UNARY_POSITIVE`` | Performs the unary ``+`` |
+ | | operation |
+ +-----------------------------------+-----------------------------------+
+ | ``INTRINSIC_LIST_TO_TUPLE`` | Converts a list to a tuple |
+ +-----------------------------------+-----------------------------------+
+ | ``INTRINSIC_TYPEVAR`` | Creates a :class:`typing.TypeVar` |
+ +-----------------------------------+-----------------------------------+
+ | ``INTRINSIC_PARAMSPEC`` | Creates a |
+ | | :class:`typing.ParamSpec` |
+ +-----------------------------------+-----------------------------------+
+ | ``INTRINSIC_TYPEVARTUPLE`` | Creates a |
+ | | :class:`typing.TypeVarTuple` |
+ +-----------------------------------+-----------------------------------+
+ | ``INTRINSIC_SUBSCRIPT_GENERIC`` | Returns :class:`typing.Generic` |
+ | | subscripted with the argument |
+ +-----------------------------------+-----------------------------------+
+ | ``INTRINSIC_TYPEALIAS`` | Creates a |
+ | | :class:`typing.TypeAliasType`; |
+ | | used in the :keyword:`type` |
+ | | statement. The argument is a tuple|
+ | | of the type alias's name, |
+ | | type parameters, and value. |
+ +-----------------------------------+-----------------------------------+
.. versionadded:: 3.12
@@ -1522,8 +1576,25 @@ iterations of the loop.
The operand determines which intrinsic function is called:
- * ``0`` Not valid
- * ``1`` Calculates the :exc:`ExceptionGroup` to raise from a ``try-except*``.
+ +----------------------------------------+-----------------------------------+
+ | Operand | Description |
+ +========================================+===================================+
+ | ``INTRINSIC_2_INVALID`` | Not valid |
+ +----------------------------------------+-----------------------------------+
+ | ``INTRINSIC_PREP_RERAISE_STAR`` | Calculates the |
+ | | :exc:`ExceptionGroup` to raise |
+ | | from a ``try-except*``. |
+ +----------------------------------------+-----------------------------------+
+ | ``INTRINSIC_TYPEVAR_WITH_BOUND`` | Creates a :class:`typing.TypeVar` |
+ | | with a bound. |
+ +----------------------------------------+-----------------------------------+
+ | ``INTRINSIC_TYPEVAR_WITH_CONSTRAINTS`` | Creates a |
+ | | :class:`typing.TypeVar` with |
+ | | constraints. |
+ +----------------------------------------+-----------------------------------+
+ | ``INTRINSIC_SET_FUNCTION_TYPE_PARAMS`` | Sets the ``__type_params__`` |
+ | | attribute of a function. |
+ +----------------------------------------+-----------------------------------+
.. versionadded:: 3.12
diff --git a/Doc/library/itertools.rst b/Doc/library/itertools.rst
index a0d794017e2602..b3decaef9c49d1 100644
--- a/Doc/library/itertools.rst
+++ b/Doc/library/itertools.rst
@@ -147,10 +147,10 @@ loops that truncate the stream.
>>> list(accumulate(data, max)) # running maximum
[3, 4, 6, 6, 6, 9, 9, 9, 9, 9]
- # Amortize a 5% loan of 1000 with 4 annual payments of 90
- >>> cashflows = [1000, -90, -90, -90, -90]
- >>> list(accumulate(cashflows, lambda bal, pmt: bal*1.05 + pmt))
- [1000, 960.0, 918.0, 873.9000000000001, 827.5950000000001]
+ # Amortize a 5% loan of 1000 with 10 annual payments of 90
+ >>> account_update = lambda bal, pmt: round(bal * 1.05) + pmt
+ >>> list(accumulate(repeat(-90, 10), account_update, initial=1_000))
+ [1000, 960, 918, 874, 828, 779, 728, 674, 618, 559, 497]
See :func:`functools.reduce` for a similar function that returns only the
final accumulated value.
@@ -951,7 +951,10 @@ which incur interpreter overhead.
nexts = cycle(islice(nexts, num_active))
def partition(pred, iterable):
- "Use a predicate to partition entries into false entries and true entries"
+ """Partition entries into false entries and true entries.
+
+ If *pred* is slow, consider wrapping it with functools.lru_cache().
+ """
# partition(is_odd, range(10)) --> 0 2 4 6 8 and 1 3 5 7 9
t1, t2 = tee(iterable)
return filterfalse(pred, t1), filter(pred, t2)
@@ -1031,7 +1034,7 @@ The following recipes have a more mathematical flavor:
return chain.from_iterable(combinations(s, r) for r in range(len(s)+1))
def sieve(n):
- "Primes less than n"
+ "Primes less than n."
# sieve(30) --> 2 3 5 7 11 13 17 19 23 29
data = bytearray((0, 1)) * (n // 2)
data[:3] = 0, 0, 0
@@ -1068,7 +1071,7 @@ The following recipes have a more mathematical flavor:
def matmul(m1, m2):
"Multiply two matrices."
- # matmul([(7, 5), (3, 5)], [[2, 5], [7, 9]]) --> (49, 80), (41, 60)
+ # matmul([(7, 5), (3, 5)], [(2, 5), (7, 9)]) --> (49, 80), (41, 60)
n = len(m2[0])
return batched(starmap(math.sumprod, product(m1, transpose(m2))), n)
@@ -1109,6 +1112,17 @@ The following recipes have a more mathematical flavor:
powers = map(pow, repeat(x), reversed(range(n)))
return math.sumprod(coefficients, powers)
+ def polynomial_derivative(coefficients):
+ """Compute the first derivative of a polynomial.
+
+ f(x) = x³ -4x² -17x + 60
+ f'(x) = 3x² -8x -17
+ """
+ # polynomial_derivative([1, -4, -17, 60]) -> [3, -8, -17]
+ n = len(coefficients)
+ powers = reversed(range(1, n))
+ return list(map(operator.mul, coefficients, powers))
+
def nth_combination(iterable, r, index):
"Equivalent to list(combinations(iterable, r))[index]"
pool = tuple(iterable)
@@ -1297,6 +1311,9 @@ The following recipes have a more mathematical flavor:
>>> all(factored(x) == expanded(x) for x in range(-10, 11))
True
+ >>> polynomial_derivative([1, -4, -17, 60])
+ [3, -8, -17]
+
>>> list(iter_index('AABCADEAF', 'A'))
[0, 1, 4, 7]
>>> list(iter_index('AABCADEAF', 'B'))
diff --git a/Doc/library/json.rst b/Doc/library/json.rst
index 00f585124a86b3..ef58dd09423640 100644
--- a/Doc/library/json.rst
+++ b/Doc/library/json.rst
@@ -552,21 +552,21 @@ Exceptions
AttrDict(mapping, **kwargs)
AttrDict(iterable, **kwargs)
- Subclass of :class:`dict` object that also supports attribute style dotted access.
+ Subclass of :class:`dict` that also supports attribute style dotted access.
This class is intended for use with the :attr:`object_hook` in
- :func:`json.load` and :func:`json.loads`::
+ :func:`json.load` and :func:`json.loads`:
.. doctest::
- >>> json_string = '{"mercury": 88, "venus": 225, "earth": 365, "mars": 687}'
- >>> orbital_period = json.loads(json_string, object_hook=AttrDict)
- >>> orbital_period['earth'] # Dict style lookup
- 365
- >>> orbital_period.earth # Attribute style lookup
- 365
- >>> orbital_period.keys() # All dict methods are present
- dict_keys(['mercury', 'venus', 'earth', 'mars'])
+ >>> json_string = '{"mercury": 88, "venus": 225, "earth": 365, "mars": 687}'
+ >>> orbital_period = json.loads(json_string, object_hook=AttrDict)
+ >>> orbital_period['earth'] # Dict style lookup
+ 365
+ >>> orbital_period.earth # Attribute style lookup
+ 365
+ >>> orbital_period.keys() # All dict methods are present
+ dict_keys(['mercury', 'venus', 'earth', 'mars'])
Attribute style access only works for keys that are valid attribute
names. In contrast, dictionary style access works for all keys. For
diff --git a/Doc/library/os.path.rst b/Doc/library/os.path.rst
index 7881c52db87090..3a668e28f2e268 100644
--- a/Doc/library/os.path.rst
+++ b/Doc/library/os.path.rst
@@ -304,6 +304,24 @@ the :mod:`glob` module.)
Accepts a :term:`path-like object`.
+.. function:: isdevdrive(path)
+
+ Return ``True`` if pathname *path* is located on a Windows Dev Drive.
+ A Dev Drive is optimized for developer scenarios, and offers faster
+ performance for reading and writing files. It is recommended for use for
+ source code, temporary build directories, package caches, and other
+ IO-intensive operations.
+
+ May raise an error for an invalid path, for example, one without a
+ recognizable drive, but returns ``False`` on platforms that do not support
+ Dev Drives. See `the Windows documentation `_
+ for information on enabling and creating Dev Drives.
+
+ .. availability:: Windows.
+
+ .. versionadded:: 3.12
+
+
.. function:: join(path, *paths)
Join one or more path segments intelligently. The return value is the
diff --git a/Doc/library/pathlib.rst b/Doc/library/pathlib.rst
index 627f2df9263dec..39b9eb84e7e068 100644
--- a/Doc/library/pathlib.rst
+++ b/Doc/library/pathlib.rst
@@ -569,6 +569,13 @@ Pure paths provide the following methods and properties:
>>> PurePath('a/b.py').match('/*.py')
False
+ The *pattern* may be another path object; this speeds up matching the same
+ pattern against multiple files::
+
+ >>> pattern = PurePath('*.py')
+ >>> PurePath('a/b.py').match(pattern)
+ True
+
As with other methods, case-sensitivity follows platform defaults::
>>> PurePosixPath('b.py').match('*.PY')
diff --git a/Doc/library/socket.rst b/Doc/library/socket.rst
index 13a82cf82d5908..5f795af42b812e 100644
--- a/Doc/library/socket.rst
+++ b/Doc/library/socket.rst
@@ -436,7 +436,8 @@ Constants
``TCP_FASTOPEN_CONNECT``, ``TCP_ULP``, ``TCP_MD5SIG_EXT``,
``TCP_FASTOPEN_KEY``, ``TCP_FASTOPEN_NO_COOKIE``,
``TCP_ZEROCOPY_RECEIVE``, ``TCP_INQ``, ``TCP_TX_DELAY``.
- Added ``IP_PKTINFO``.
+ Added ``IP_PKTINFO``, ``IP_UNBLOCK_SOURCE``, ``IP_BLOCK_SOURCE``,
+ ``IP_ADD_SOURCE_MEMBERSHIP``, ``IP_DROP_SOURCE_MEMBERSHIP``.
.. data:: AF_CAN
PF_CAN
@@ -1526,7 +1527,7 @@ to sockets.
Return ``True`` if socket is in blocking mode, ``False`` if in
non-blocking.
- This is equivalent to checking ``socket.gettimeout() == 0``.
+ This is equivalent to checking ``socket.gettimeout() != 0``.
.. versionadded:: 3.7
diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst
index 9203afbf6a4e8a..fdef5314b9a4ef 100644
--- a/Doc/library/stdtypes.rst
+++ b/Doc/library/stdtypes.rst
@@ -5476,6 +5476,14 @@ types, where they are relevant. Some of these are not reported by the
.. versionadded:: 3.3
+.. attribute:: definition.__type_params__
+
+ The :ref:`type parameters ` of generic classes, functions,
+ and :ref:`type aliases `.
+
+ .. versionadded:: 3.12
+
+
.. attribute:: class.__mro__
This attribute is a tuple of classes that are considered when looking for
diff --git a/Doc/library/subprocess.rst b/Doc/library/subprocess.rst
index 53dfbf827260c9..738e611c05adbf 100644
--- a/Doc/library/subprocess.rst
+++ b/Doc/library/subprocess.rst
@@ -57,10 +57,13 @@ underlying :class:`Popen` interface can be used directly.
and combine both streams into one, use ``stdout=PIPE`` and ``stderr=STDOUT``
instead of *capture_output*.
- The *timeout* argument is passed to :meth:`Popen.communicate`. If the timeout
- expires, the child process will be killed and waited for. The
- :exc:`TimeoutExpired` exception will be re-raised after the child process
- has terminated.
+ A *timeout* may be specified in seconds, it is internally passed on to
+ :meth:`Popen.communicate`. If the timeout expires, the child process will be
+ killed and waited for. The :exc:`TimeoutExpired` exception will be
+ re-raised after the child process has terminated. The initial process
+ creation itself cannot be interrupted on many platform APIs so you are not
+ guaranteed to see a timeout exception until at least after however long
+ process creation takes.
The *input* argument is passed to :meth:`Popen.communicate` and thus to the
subprocess's stdin. If used it must be a byte sequence, or a string if
@@ -734,7 +737,7 @@ arguments.
code.
All of the functions and methods that accept a *timeout* parameter, such as
-:func:`call` and :meth:`Popen.communicate` will raise :exc:`TimeoutExpired` if
+:func:`run` and :meth:`Popen.communicate` will raise :exc:`TimeoutExpired` if
the timeout expires before the process exits.
Exceptions defined in this module all inherit from :exc:`SubprocessError`.
diff --git a/Doc/library/traceback.rst b/Doc/library/traceback.rst
index 5c0e261b90763c..36171a3b5a610d 100644
--- a/Doc/library/traceback.rst
+++ b/Doc/library/traceback.rst
@@ -86,10 +86,9 @@ The module defines the following functions:
.. function:: print_last(limit=None, file=None, chain=True)
- This is a shorthand for ``print_exception(sys.last_type, sys.last_value,
- sys.last_traceback, limit, file, chain)``. In general it will work only
- after an exception has reached an interactive prompt (see
- :data:`sys.last_type`).
+ This is a shorthand for ``print_exception(sys.last_exc, limit, file,
+ chain)``. In general it will work only after an exception has reached
+ an interactive prompt (see :data:`sys.last_exc`).
.. function:: print_stack(f=None, limit=None, file=None)
@@ -218,7 +217,7 @@ The module also defines the following classes:
:class:`TracebackException` objects are created from actual exceptions to
capture data for later printing in a lightweight fashion.
-.. class:: TracebackException(exc_type, exc_value, exc_traceback, *, limit=None, lookup_lines=True, capture_locals=False, compact=False)
+.. class:: TracebackException(exc_type, exc_value, exc_traceback, *, limit=None, lookup_lines=True, capture_locals=False, compact=False, max_group_width=15, max_group_depth=10)
Capture an exception for later rendering. *limit*, *lookup_lines* and
*capture_locals* are as for the :class:`StackSummary` class.
@@ -230,6 +229,12 @@ capture data for later printing in a lightweight fashion.
Note that when locals are captured, they are also shown in the traceback.
+ *max_group_width* and *max_group_depth* control the formatting of exception
+ groups (see :exc:`BaseExceptionGroup`). The depth refers to the nesting
+ level of the group, and the width refers to the size of a single exception
+ group's exceptions array. The formatted output is truncated when either
+ limit is exceeded.
+
.. attribute:: __cause__
A :class:`TracebackException` of the original ``__cause__``.
@@ -238,6 +243,14 @@ capture data for later printing in a lightweight fashion.
A :class:`TracebackException` of the original ``__context__``.
+ .. attribute:: exceptions
+
+ If ``self`` represents an :exc:`ExceptionGroup`, this field holds a list of
+ :class:`TracebackException` instances representing the nested exceptions.
+ Otherwise it is ``None``.
+
+ .. versionadded:: 3.11
+
.. attribute:: __suppress_context__
The ``__suppress_context__`` value from the original exception.
@@ -266,6 +279,13 @@ capture data for later printing in a lightweight fashion.
For syntax errors - the line number where the error occurred.
+ .. attribute:: end_lineno
+
+ For syntax errors - the end line number where the error occurred.
+ Can be ``None`` if not present.
+
+ .. versionadded:: 3.10
+
.. attribute:: text
For syntax errors - the text where the error occurred.
@@ -274,6 +294,13 @@ capture data for later printing in a lightweight fashion.
For syntax errors - the offset into the text where the error occurred.
+ .. attribute:: end_offset
+
+ For syntax errors - the end offset into the text where the error occurred.
+ Can be ``None`` if not present.
+
+ .. versionadded:: 3.10
+
.. attribute:: msg
For syntax errors - the compiler error message.
@@ -323,6 +350,9 @@ capture data for later printing in a lightweight fashion.
.. versionchanged:: 3.10
Added the *compact* parameter.
+ .. versionchanged:: 3.11
+ Added the *max_group_width* and *max_group_depth* parameters.
+
:class:`StackSummary` Objects
-----------------------------
diff --git a/Doc/library/typing.rst b/Doc/library/typing.rst
index c90cb411acde07..a4bba7b5ad630b 100644
--- a/Doc/library/typing.rst
+++ b/Doc/library/typing.rst
@@ -101,6 +101,8 @@ annotations. These include:
* :pep:`692`: Using ``TypedDict`` for more precise ``**kwargs`` typing
*Introducing* a new way of typing ``**kwargs`` with :data:`Unpack` and
:data:`TypedDict`
+* :pep:`695`: Type Parameter Syntax
+ *Introducing* builtin syntax for creating generic functions, classes, and type aliases.
* :pep:`698`: Adding an override decorator to typing
*Introducing* the :func:`@override` decorator
@@ -109,10 +111,12 @@ annotations. These include:
Type aliases
============
-A type alias is defined by assigning the type to the alias. In this example,
-``Vector`` and ``list[float]`` will be treated as interchangeable synonyms::
+A type alias is defined using the :keyword:`type` statement, which creates
+an instance of :class:`TypeAliasType`. In this example,
+``Vector`` and ``list[float]`` will be treated equivalently by static type
+checkers::
- Vector = list[float]
+ type Vector = list[float]
def scale(scalar: float, vector: Vector) -> Vector:
return [scalar * num for num in vector]
@@ -124,9 +128,9 @@ Type aliases are useful for simplifying complex type signatures. For example::
from collections.abc import Sequence
- ConnectionOptions = dict[str, str]
- Address = tuple[str, int]
- Server = tuple[Address, ConnectionOptions]
+ type ConnectionOptions = dict[str, str]
+ type Address = tuple[str, int]
+ type Server = tuple[Address, ConnectionOptions]
def broadcast_message(message: str, servers: Sequence[Server]) -> None:
...
@@ -141,6 +145,18 @@ Type aliases are useful for simplifying complex type signatures. For example::
Note that ``None`` as a type hint is a special case and is replaced by
``type(None)``.
+The :keyword:`type` statement is new in Python 3.12. For backwards
+compatibility, type aliases can also be created through simple assignment::
+
+ Vector = list[float]
+
+Or marked with :data:`TypeAlias` to make it explicit that this is a type alias,
+not a normal variable assignment::
+
+ from typing import TypeAlias
+
+ Vector: TypeAlias = list[float]
+
.. _distinct:
NewType
@@ -206,7 +222,7 @@ See :pep:`484` for more details.
.. note::
Recall that the use of a type alias declares two types to be *equivalent* to
- one another. Doing ``Alias = Original`` will make the static type checker
+ one another. Doing ``type Alias = Original`` will make the static type checker
treat ``Alias`` as being *exactly equivalent* to ``Original`` in all cases.
This is useful when you want to simplify complex type signatures.
@@ -282,19 +298,26 @@ subscription to denote expected types for container elements.
def notify_by_email(employees: Sequence[Employee],
overrides: Mapping[str, str]) -> None: ...
-Generics can be parameterized by using a factory available in typing
-called :class:`TypeVar`.
+Generics can be parameterized by using :ref:`type parameter syntax `::
-::
+ from collections.abc import Sequence
+
+ def first[T](l: Sequence[T]) -> T: # Generic function
+ return l[0]
+
+Or by using the :class:`TypeVar` factory directly::
from collections.abc import Sequence
from typing import TypeVar
- T = TypeVar('T') # Declare type variable
+ U = TypeVar('U') # Declare type variable
- def first(l: Sequence[T]) -> T: # Generic function
+ def first(l: Sequence[U]) -> U: # Generic function
return l[0]
+.. versionchanged:: 3.12
+ Syntactic support for generics is new in Python 3.12.
+
.. _user-defined-generics:
User-defined generic types
@@ -304,12 +327,9 @@ A user-defined class can be defined as a generic class.
::
- from typing import TypeVar, Generic
from logging import Logger
- T = TypeVar('T')
-
- class LoggedVar(Generic[T]):
+ class LoggedVar[T]:
def __init__(self, value: T, name: str, logger: Logger) -> None:
self.name = name
self.logger = logger
@@ -326,12 +346,23 @@ A user-defined class can be defined as a generic class.
def log(self, message: str) -> None:
self.logger.info('%s: %s', self.name, message)
-``Generic[T]`` as a base class defines that the class ``LoggedVar`` takes a
-single type parameter ``T`` . This also makes ``T`` valid as a type within the
-class body.
+This syntax indicates that the class ``LoggedVar`` is parameterised around a
+single :class:`type variable ` ``T`` . This also makes ``T`` valid as
+a type within the class body.
+
+Generic classes implicitly inherit from :class:`Generic`. For compatibility
+with Python 3.11 and lower, it is also possible to inherit explicitly from
+:class:`Generic` to indicate a generic class::
-The :class:`Generic` base class defines :meth:`~object.__class_getitem__` so
-that ``LoggedVar[T]`` is valid as a type::
+ from typing import TypeVar, Generic
+
+ T = TypeVar('T')
+
+ class LoggedVar(Generic[T]):
+ ...
+
+Generic classes have :meth:`~object.__class_getitem__` methods, meaning they
+can be parameterised at runtime (e.g. ``LoggedVar[int]`` below)::
from collections.abc import Iterable
@@ -344,11 +375,14 @@ A generic type can have any number of type variables. All varieties of
from typing import TypeVar, Generic, Sequence
- T = TypeVar('T', contravariant=True)
- B = TypeVar('B', bound=Sequence[bytes], covariant=True)
- S = TypeVar('S', int, str)
+ class WeirdTrio[T, B: Sequence[bytes], S: (int, str)]:
+ ...
+
+ OldT = TypeVar('OldT', contravariant=True)
+ OldB = TypeVar('OldB', bound=Sequence[bytes], covariant=True)
+ OldS = TypeVar('OldS', int, str)
- class WeirdTrio(Generic[T, B, S]):
+ class OldWeirdTrio(Generic[OldT, OldB, OldS]):
...
Each type variable argument to :class:`Generic` must be distinct.
@@ -357,29 +391,26 @@ This is thus invalid::
from typing import TypeVar, Generic
...
+ class Pair[M, M]: # SyntaxError
+ ...
+
T = TypeVar('T')
class Pair(Generic[T, T]): # INVALID
...
-You can use multiple inheritance with :class:`Generic`::
+Generic classes can also inherit from other classes::
from collections.abc import Sized
- from typing import TypeVar, Generic
-
- T = TypeVar('T')
- class LinkedList(Sized, Generic[T]):
+ class LinkedList[T](Sized):
...
-When inheriting from generic classes, some type variables could be fixed::
+When inheriting from generic classes, some type parameters could be fixed::
from collections.abc import Mapping
- from typing import TypeVar
-
- T = TypeVar('T')
- class MyDict(Mapping[str, T]):
+ class MyDict[T](Mapping[str, T]):
...
In this case ``MyDict`` has a single parameter, ``T``.
@@ -392,49 +423,66 @@ not generic but implicitly inherits from ``Iterable[Any]``::
class MyIterable(Iterable): # Same as Iterable[Any]
-User defined generic type aliases are also supported. Examples::
+User-defined generic type aliases are also supported. Examples::
from collections.abc import Iterable
- from typing import TypeVar
- S = TypeVar('S')
- Response = Iterable[S] | int
+
+ type Response[S] = Iterable[S] | int
# Return type here is same as Iterable[str] | int
def response(query: str) -> Response[str]:
...
- T = TypeVar('T', int, float, complex)
- Vec = Iterable[tuple[T, T]]
+ type Vec[T] = Iterable[tuple[T, T]]
- def inproduct(v: Vec[T]) -> T: # Same as Iterable[tuple[T, T]]
+ def inproduct[T: (int, float, complex)](v: Vec[T]) -> T: # Same as Iterable[tuple[T, T]]
return sum(x*y for x, y in v)
+For backward compatibility, generic type aliases can also be created
+through a simple assignment::
+
+ from collections.abc import Iterable
+ from typing import TypeVar
+
+ S = TypeVar("S")
+ Response = Iterable[S] | int
+
.. versionchanged:: 3.7
:class:`Generic` no longer has a custom metaclass.
+.. versionchanged:: 3.12
+ Syntactic support for generics and type aliases is new in version 3.12.
+ Previously, generic classes had to explicitly inherit from :class:`Generic`
+ or contain a type variable in one of their bases.
+
User-defined generics for parameter expressions are also supported via parameter
-specification variables in the form ``Generic[P]``. The behavior is consistent
+specification variables in the form ``[**P]``. The behavior is consistent
with type variables' described above as parameter specification variables are
treated by the typing module as a specialized type variable. The one exception
to this is that a list of types can be used to substitute a :class:`ParamSpec`::
- >>> from typing import Generic, ParamSpec, TypeVar
-
- >>> T = TypeVar('T')
- >>> P = ParamSpec('P')
-
- >>> class Z(Generic[T, P]): ...
+ >>> class Z[T, **P]: ... # T is a TypeVar; P is a ParamSpec
...
>>> Z[int, [dict, float]]
__main__.Z[int, [dict, float]]
+Classes generic over a :class:`ParamSpec` can also be created using explicit
+inheritance from :class:`Generic`. In this case, ``**`` is not used::
+
+ from typing import ParamSpec, Generic
-Furthermore, a generic with only one parameter specification variable will accept
+ P = ParamSpec('P')
+
+ class Z(Generic[P]):
+ ...
+
+Another difference between :class:`TypeVar` and :class:`ParamSpec` is that a
+generic with only one parameter specification variable will accept
parameter lists in the forms ``X[[Type1, Type2, ...]]`` and also
``X[Type1, Type2, ...]`` for aesthetic reasons. Internally, the latter is converted
to the former, so the following are equivalent::
- >>> class X(Generic[P]): ...
+ >>> class X[**P]: ...
...
>>> X[int, str]
__main__.X[[int, str]]
@@ -670,20 +718,20 @@ These can be used as types in annotations and do not support ``[]``.
This can be used to define a function that should never be
called, or a function that never returns::
- from typing import Never
+ from typing import Never
- def never_call_me(arg: Never) -> None:
- pass
+ def never_call_me(arg: Never) -> None:
+ pass
- def int_or_str(arg: int | str) -> None:
- never_call_me(arg) # type checker error
- match arg:
- case int():
- print("It's an int")
- case str():
- print("It's a str")
- case _:
- never_call_me(arg) # ok, arg is of type Never
+ def int_or_str(arg: int | str) -> None:
+ never_call_me(arg) # type checker error
+ match arg:
+ case int():
+ print("It's an int")
+ case str():
+ print("It's a str")
+ case _:
+ never_call_me(arg) # ok, arg is of type Never
.. versionadded:: 3.11
@@ -717,9 +765,9 @@ These can be used as types in annotations and do not support ``[]``.
from typing import Self
class Foo:
- def return_self(self) -> Self:
- ...
- return self
+ def return_self(self) -> Self:
+ ...
+ return self
This annotation is semantically equivalent to the following,
@@ -730,16 +778,16 @@ These can be used as types in annotations and do not support ``[]``.
Self = TypeVar("Self", bound="Foo")
class Foo:
- def return_self(self: Self) -> Self:
- ...
- return self
+ def return_self(self: Self) -> Self:
+ ...
+ return self
In general if something currently follows the pattern of::
class Foo:
- def return_self(self) -> "Foo":
- ...
- return self
+ def return_self(self) -> "Foo":
+ ...
+ return self
You should use :data:`Self` as calls to ``SubclassOfFoo.return_self`` would have
``Foo`` as the return type and not ``SubclassOfFoo``.
@@ -767,6 +815,15 @@ These can be used as types in annotations and do not support ``[]``.
.. versionadded:: 3.10
+ .. deprecated:: 3.12
+ :data:`TypeAlias` is deprecated in favor of the :keyword:`type` statement,
+ which creates instances of :class:`TypeAliasType`.
+ Note that while :data:`TypeAlias` and :class:`TypeAliasType` serve
+ similar purposes and have similar names, they are distinct and the
+ latter is not the type of the former.
+ Removal of :data:`TypeAlias` is not currently planned, but users
+ are encouraged to migrate to :keyword:`type` statements.
+
Special forms
"""""""""""""
@@ -1255,8 +1312,8 @@ These can be used as types in annotations using ``[]``, each having a unique syn
from typing import TypedDict, Unpack
class Movie(TypedDict):
- name: str
- year: int
+ name: str
+ year: int
# This function expects two keyword arguments - `name` of type `str`
# and `year` of type `int`.
@@ -1266,213 +1323,327 @@ These can be used as types in annotations using ``[]``, each having a unique syn
.. versionadded:: 3.11
-Building generic types
-""""""""""""""""""""""
+Building generic types and type aliases
+"""""""""""""""""""""""""""""""""""""""
-These are not used in annotations. They are building blocks for creating generic types.
+The following objects are not used directly in annotations. Instead, they are building blocks
+for creating generic types and type aliases.
+
+These objects can be created through special syntax
+(:ref:`type parameter lists ` and the :keyword:`type` statement).
+For compatibility with Python 3.11 and earlier, they can also be created
+without the dedicated syntax, as documented below.
.. class:: Generic
Abstract base class for generic types.
- A generic type is typically declared by inheriting from an
- instantiation of this class with one or more type variables.
- For example, a generic mapping type might be defined as::
+ A generic type is typically declared by adding a list of type parameters
+ after the class name::
- class Mapping(Generic[KT, VT]):
+ class Mapping[KT, VT]:
def __getitem__(self, key: KT) -> VT:
...
# Etc.
- This class can then be used as follows::
+ Such a class implicitly inherits from ``Generic``.
+ The runtime semantics of this syntax are discussed in the
+ :ref:`Language Reference `.
- X = TypeVar('X')
- Y = TypeVar('Y')
+ This class can then be used as follows::
- def lookup_name(mapping: Mapping[X, Y], key: X, default: Y) -> Y:
+ def lookup_name[X, Y](mapping: Mapping[X, Y], key: X, default: Y) -> Y:
try:
return mapping[key]
except KeyError:
return default
-.. class:: TypeVar
+ Here the brackets after the function name indicate a
+ :ref:`generic function `.
+
+ For backwards compatibility, generic classes can also be
+ declared by explicitly inheriting from
+ ``Generic``. In this case, the type parameters must be declared
+ separately::
- Type variable.
+ KT = TypeVar('KT')
+ VT = TypeVar('VT')
- Usage::
+ class Mapping(Generic[KT, VT]):
+ def __getitem__(self, key: KT) -> VT:
+ ...
+ # Etc.
+
+.. class:: TypeVar(name, *constraints, bound=None, covariant=False, contravariant=False, infer_variance=False)
+
+ Type variable.
+
+ The preferred way to construct a type variable is via the dedicated syntax
+ for :ref:`generic functions `,
+ :ref:`generic classes `, and
+ :ref:`generic type aliases `::
+
+ class Sequence[T]: # T is a TypeVar
+ ...
+
+ This syntax can also be used to create bound and constrained type
+ variables::
+
+ class StrSequence[S: str]: # S is a TypeVar bound to str
+ ...
+
+
+ class StrOrBytesSequence[A: (str, bytes)]: # A is a TypeVar constrained to str or bytes
+ ...
+
+ However, if desired, reusable type variables can also be constructed manually, like so::
T = TypeVar('T') # Can be anything
S = TypeVar('S', bound=str) # Can be any subtype of str
A = TypeVar('A', str, bytes) # Must be exactly str or bytes
- Type variables exist primarily for the benefit of static type
- checkers. They serve as the parameters for generic types as well
- as for generic function definitions. See :class:`Generic` for more
- information on generic types. Generic functions work as follows::
+ Type variables exist primarily for the benefit of static type
+ checkers. They serve as the parameters for generic types as well
+ as for generic function and type alias definitions.
+ See :class:`Generic` for more
+ information on generic types. Generic functions work as follows::
- def repeat(x: T, n: int) -> Sequence[T]:
- """Return a list containing n references to x."""
- return [x]*n
+ def repeat[T](x: T, n: int) -> Sequence[T]:
+ """Return a list containing n references to x."""
+ return [x]*n
- def print_capitalized(x: S) -> S:
- """Print x capitalized, and return x."""
- print(x.capitalize())
- return x
+ def print_capitalized[S: str](x: S) -> S:
+ """Print x capitalized, and return x."""
+ print(x.capitalize())
+ return x
- def concatenate(x: A, y: A) -> A:
- """Add two strings or bytes objects together."""
- return x + y
+ def concatenate[A: (str, bytes)](x: A, y: A) -> A:
+ """Add two strings or bytes objects together."""
+ return x + y
- Note that type variables can be *bound*, *constrained*, or neither, but
- cannot be both bound *and* constrained.
+ Note that type variables can be *bound*, *constrained*, or neither, but
+ cannot be both bound *and* constrained.
- Bound type variables and constrained type variables have different
- semantics in several important ways. Using a *bound* type variable means
- that the ``TypeVar`` will be solved using the most specific type possible::
+ The variance of type variables is inferred by type checkers when they are created
+ through the :ref:`type parameter syntax ` or when
+ ``infer_variance=True`` is passed.
+ Manually created type variables may be explicitly marked covariant or contravariant by passing
+ ``covariant=True`` or ``contravariant=True``.
+ By default, manually created type variables are invariant.
+ See :pep:`484` and :pep:`695` for more details.
- x = print_capitalized('a string')
- reveal_type(x) # revealed type is str
+ Bound type variables and constrained type variables have different
+ semantics in several important ways. Using a *bound* type variable means
+ that the ``TypeVar`` will be solved using the most specific type possible::
- class StringSubclass(str):
- pass
+ x = print_capitalized('a string')
+ reveal_type(x) # revealed type is str
- y = print_capitalized(StringSubclass('another string'))
- reveal_type(y) # revealed type is StringSubclass
+ class StringSubclass(str):
+ pass
- z = print_capitalized(45) # error: int is not a subtype of str
+ y = print_capitalized(StringSubclass('another string'))
+ reveal_type(y) # revealed type is StringSubclass
- Type variables can be bound to concrete types, abstract types (ABCs or
- protocols), and even unions of types::
+ z = print_capitalized(45) # error: int is not a subtype of str
- U = TypeVar('U', bound=str|bytes) # Can be any subtype of the union str|bytes
- V = TypeVar('V', bound=SupportsAbs) # Can be anything with an __abs__ method
+ Type variables can be bound to concrete types, abstract types (ABCs or
+ protocols), and even unions of types::
-.. _typing-constrained-typevar:
+ # Can be anything with an __abs__ method
+ def print_abs[T: SupportsAbs](arg: T) -> None:
+ print("Absolute value:", abs(arg))
- Using a *constrained* type variable, however, means that the ``TypeVar``
- can only ever be solved as being exactly one of the constraints given::
+ U = TypeVar('U', bound=str|bytes) # Can be any subtype of the union str|bytes
+ V = TypeVar('V', bound=SupportsAbs) # Can be anything with an __abs__ method
- a = concatenate('one', 'two')
- reveal_type(a) # revealed type is str
+ .. _typing-constrained-typevar:
- b = concatenate(StringSubclass('one'), StringSubclass('two'))
- reveal_type(b) # revealed type is str, despite StringSubclass being passed in
+ Using a *constrained* type variable, however, means that the ``TypeVar``
+ can only ever be solved as being exactly one of the constraints given::
- c = concatenate('one', b'two') # error: type variable 'A' can be either str or bytes in a function call, but not both
+ a = concatenate('one', 'two')
+ reveal_type(a) # revealed type is str
- At runtime, ``isinstance(x, T)`` will raise :exc:`TypeError`. In general,
- :func:`isinstance` and :func:`issubclass` should not be used with types.
+ b = concatenate(StringSubclass('one'), StringSubclass('two'))
+ reveal_type(b) # revealed type is str, despite StringSubclass being passed in
- Type variables may be marked covariant or contravariant by passing
- ``covariant=True`` or ``contravariant=True``. See :pep:`484` for more
- details. By default, type variables are invariant.
+ c = concatenate('one', b'two') # error: type variable 'A' can be either str or bytes in a function call, but not both
-.. class:: TypeVarTuple
+ At runtime, ``isinstance(x, T)`` will raise :exc:`TypeError`.
- Type variable tuple. A specialized form of :class:`type variable `
- that enables *variadic* generics.
+ .. attribute:: __name__
- A normal type variable enables parameterization with a single type. A type
- variable tuple, in contrast, allows parameterization with an
- *arbitrary* number of types by acting like an *arbitrary* number of type
- variables wrapped in a tuple. For example::
+ The name of the type variable.
- T = TypeVar('T')
- Ts = TypeVarTuple('Ts')
+ .. attribute:: __covariant__
- def move_first_element_to_last(tup: tuple[T, *Ts]) -> tuple[*Ts, T]:
- return (*tup[1:], tup[0])
+ Whether the type var has been explicitly marked as covariant.
- # T is bound to int, Ts is bound to ()
- # Return value is (1,), which has type tuple[int]
- move_first_element_to_last(tup=(1,))
+ .. attribute:: __contravariant__
- # T is bound to int, Ts is bound to (str,)
- # Return value is ('spam', 1), which has type tuple[str, int]
- move_first_element_to_last(tup=(1, 'spam'))
+ Whether the type var has been explicitly marked as contravariant.
- # T is bound to int, Ts is bound to (str, float)
- # Return value is ('spam', 3.0, 1), which has type tuple[str, float, int]
- move_first_element_to_last(tup=(1, 'spam', 3.0))
+ .. attribute:: __infer_variance__
- # This fails to type check (and fails at runtime)
- # because tuple[()] is not compatible with tuple[T, *Ts]
- # (at least one element is required)
- move_first_element_to_last(tup=())
+ Whether the type variable's variance should be inferred by type checkers.
- Note the use of the unpacking operator ``*`` in ``tuple[T, *Ts]``.
- Conceptually, you can think of ``Ts`` as a tuple of type variables
- ``(T1, T2, ...)``. ``tuple[T, *Ts]`` would then become
- ``tuple[T, *(T1, T2, ...)]``, which is equivalent to
- ``tuple[T, T1, T2, ...]``. (Note that in older versions of Python, you might
- see this written using :data:`Unpack ` instead, as
- ``Unpack[Ts]``.)
+ .. versionadded:: 3.12
- Type variable tuples must *always* be unpacked. This helps distinguish type
- variable tuples from normal type variables::
+ .. attribute:: __bound__
- x: Ts # Not valid
- x: tuple[Ts] # Not valid
- x: tuple[*Ts] # The correct way to do it
+ The bound of the type variable, if any.
- Type variable tuples can be used in the same contexts as normal type
- variables. For example, in class definitions, arguments, and return types::
+ .. versionchanged:: 3.12
- Shape = TypeVarTuple('Shape')
- class Array(Generic[*Shape]):
- def __getitem__(self, key: tuple[*Shape]) -> float: ...
- def __abs__(self) -> "Array[*Shape]": ...
- def get_shape(self) -> tuple[*Shape]: ...
+ For type variables created through :ref:`type parameter syntax `,
+ the bound is evaluated only when the attribute is accessed, not when
+ the type variable is created (see :ref:`lazy-evaluation`).
- Type variable tuples can be happily combined with normal type variables::
+ .. attribute:: __constraints__
- DType = TypeVar('DType')
+ A tuple containing the constraints of the type variable, if any.
- class Array(Generic[DType, *Shape]): # This is fine
- pass
+ .. versionchanged:: 3.12
- class Array2(Generic[*Shape, DType]): # This would also be fine
- pass
+ For type variables created through :ref:`type parameter syntax `,
+ the constraints are evaluated only when the attribute is accessed, not when
+ the type variable is created (see :ref:`lazy-evaluation`).
- float_array_1d: Array[float, Height] = Array() # Totally fine
- int_array_2d: Array[int, Height, Width] = Array() # Yup, fine too
+ .. versionchanged:: 3.12
- However, note that at most one type variable tuple may appear in a single
- list of type arguments or type parameters::
+ Type variables can now be declared using the
+ :ref:`type parameter ` syntax introduced by :pep:`695`.
+ The ``infer_variance`` parameter was added.
- x: tuple[*Ts, *Ts] # Not valid
- class Array(Generic[*Shape, *Shape]): # Not valid
- pass
+.. class:: TypeVarTuple(name)
- Finally, an unpacked type variable tuple can be used as the type annotation
- of ``*args``::
+ Type variable tuple. A specialized form of :class:`type variable `
+ that enables *variadic* generics.
- def call_soon(
- callback: Callable[[*Ts], None],
- *args: *Ts
- ) -> None:
- ...
- callback(*args)
+ Type variable tuples can be declared in :ref:`type parameter lists `
+ using a single asterisk (``*``) before the name::
- In contrast to non-unpacked annotations of ``*args`` - e.g. ``*args: int``,
- which would specify that *all* arguments are ``int`` - ``*args: *Ts``
- enables reference to the types of the *individual* arguments in ``*args``.
- Here, this allows us to ensure the types of the ``*args`` passed
- to ``call_soon`` match the types of the (positional) arguments of
- ``callback``.
+ def move_first_element_to_last[T, *Ts](tup: tuple[T, *Ts]) -> tuple[*Ts, T]:
+ return (*tup[1:], tup[0])
- See :pep:`646` for more details on type variable tuples.
+ Or by explicitly invoking the ``TypeVarTuple`` constructor::
+
+ T = TypeVar("T")
+ Ts = TypeVarTuple("Ts")
- .. versionadded:: 3.11
+ def move_first_element_to_last(tup: tuple[T, *Ts]) -> tuple[*Ts, T]:
+ return (*tup[1:], tup[0])
+
+ A normal type variable enables parameterization with a single type. A type
+ variable tuple, in contrast, allows parameterization with an
+ *arbitrary* number of types by acting like an *arbitrary* number of type
+ variables wrapped in a tuple. For example::
+
+ # T is bound to int, Ts is bound to ()
+ # Return value is (1,), which has type tuple[int]
+ move_first_element_to_last(tup=(1,))
+
+ # T is bound to int, Ts is bound to (str,)
+ # Return value is ('spam', 1), which has type tuple[str, int]
+ move_first_element_to_last(tup=(1, 'spam'))
+
+ # T is bound to int, Ts is bound to (str, float)
+ # Return value is ('spam', 3.0, 1), which has type tuple[str, float, int]
+ move_first_element_to_last(tup=(1, 'spam', 3.0))
+
+ # This fails to type check (and fails at runtime)
+ # because tuple[()] is not compatible with tuple[T, *Ts]
+ # (at least one element is required)
+ move_first_element_to_last(tup=())
+
+ Note the use of the unpacking operator ``*`` in ``tuple[T, *Ts]``.
+ Conceptually, you can think of ``Ts`` as a tuple of type variables
+ ``(T1, T2, ...)``. ``tuple[T, *Ts]`` would then become
+ ``tuple[T, *(T1, T2, ...)]``, which is equivalent to
+ ``tuple[T, T1, T2, ...]``. (Note that in older versions of Python, you might
+ see this written using :data:`Unpack ` instead, as
+ ``Unpack[Ts]``.)
+
+ Type variable tuples must *always* be unpacked. This helps distinguish type
+ variable tuples from normal type variables::
+
+ x: Ts # Not valid
+ x: tuple[Ts] # Not valid
+ x: tuple[*Ts] # The correct way to do it
+
+ Type variable tuples can be used in the same contexts as normal type
+ variables. For example, in class definitions, arguments, and return types::
+
+ class Array[*Shape]:
+ def __getitem__(self, key: tuple[*Shape]) -> float: ...
+ def __abs__(self) -> "Array[*Shape]": ...
+ def get_shape(self) -> tuple[*Shape]: ...
+
+ Type variable tuples can be happily combined with normal type variables::
+
+ DType = TypeVar('DType')
+
+ class Array[DType, *Shape]: # This is fine
+ pass
+
+ class Array2[*Shape, DType]: # This would also be fine
+ pass
+
+ float_array_1d: Array[float, Height] = Array() # Totally fine
+ int_array_2d: Array[int, Height, Width] = Array() # Yup, fine too
+
+ However, note that at most one type variable tuple may appear in a single
+ list of type arguments or type parameters::
+
+ x: tuple[*Ts, *Ts] # Not valid
+ class Array[*Shape, *Shape]: # Not valid
+ pass
+
+ Finally, an unpacked type variable tuple can be used as the type annotation
+ of ``*args``::
+
+ def call_soon[*Ts](
+ callback: Callable[[*Ts], None],
+ *args: *Ts
+ ) -> None:
+ ...
+ callback(*args)
+
+ In contrast to non-unpacked annotations of ``*args`` - e.g. ``*args: int``,
+ which would specify that *all* arguments are ``int`` - ``*args: *Ts``
+ enables reference to the types of the *individual* arguments in ``*args``.
+ Here, this allows us to ensure the types of the ``*args`` passed
+ to ``call_soon`` match the types of the (positional) arguments of
+ ``callback``.
+
+ See :pep:`646` for more details on type variable tuples.
+
+ .. attribute:: __name__
+
+ The name of the type variable tuple.
+
+ .. versionadded:: 3.11
+
+ .. versionchanged:: 3.12
+
+ Type variable tuples can now be declared using the
+ :ref:`type parameter ` syntax introduced by :pep:`695`.
.. class:: ParamSpec(name, *, bound=None, covariant=False, contravariant=False)
Parameter specification variable. A specialized version of
:class:`type variables `.
- Usage::
+ In :ref:`type parameter lists `, parameter specifications
+ can be declared with two asterisks (``**``)::
+
+ type IntFunc[**P] = Callable[P, int]
+
+ For compatibility with Python 3.11 and earlier, ``ParamSpec`` objects
+ can also be created as follows::
P = ParamSpec('P')
@@ -1489,13 +1660,9 @@ These are not used in annotations. They are building blocks for creating generic
new callable returned by it have inter-dependent type parameters::
from collections.abc import Callable
- from typing import TypeVar, ParamSpec
import logging
- T = TypeVar('T')
- P = ParamSpec('P')
-
- def add_logging(f: Callable[P, T]) -> Callable[P, T]:
+ def add_logging[T, **P](f: Callable[P, T]) -> Callable[P, T]:
'''A type-safe decorator to add logging to a function.'''
def inner(*args: P.args, **kwargs: P.kwargs) -> T:
logging.info(f'{f.__name__} was called')
@@ -1530,6 +1697,10 @@ These are not used in annotations. They are building blocks for creating generic
``P.args`` and ``P.kwargs`` are instances respectively of
:class:`ParamSpecArgs` and :class:`ParamSpecKwargs`.
+ .. attribute:: __name__
+
+ The name of the parameter specification.
+
Parameter specification variables created with ``covariant=True`` or
``contravariant=True`` can be used to declare covariant or contravariant
generic types. The ``bound`` argument is also accepted, similar to
@@ -1538,6 +1709,11 @@ These are not used in annotations. They are building blocks for creating generic
.. versionadded:: 3.10
+ .. versionchanged:: 3.12
+
+ Parameter specifications can now be declared using the
+ :ref:`type parameter ` syntax introduced by :pep:`695`.
+
.. note::
Only parameter specification variables defined in global scope can
be pickled.
@@ -1565,6 +1741,67 @@ These are not used in annotations. They are building blocks for creating generic
.. versionadded:: 3.10
+.. class:: TypeAliasType(name, value, *, type_params=())
+
+ The type of type aliases created through the :keyword:`type` statement.
+
+ Example::
+
+ >>> type Alias = int
+ >>> type(Alias)
+
+
+ .. versionadded:: 3.12
+
+ .. attribute:: __name__
+
+ The name of the type alias::
+
+ >>> type Alias = int
+ >>> Alias.__name__
+ 'Alias'
+
+ .. attribute:: __module__
+
+ The module in which the type alias was defined::
+
+ >>> type Alias = int
+ >>> Alias.__module__
+ '__main__'
+
+ .. attribute:: __type_params__
+
+ The type parameters of the type alias, or an empty tuple if the alias is
+ not generic:
+
+ .. doctest::
+
+ >>> type ListOrSet[T] = list[T] | set[T]
+ >>> ListOrSet.__type_params__
+ (T,)
+ >>> type NotGeneric = int
+ >>> NotGeneric.__type_params__
+ ()
+
+ .. attribute:: __value__
+
+ The type alias's value. This is :ref:`lazily evaluated `,
+ so names used in the definition of the alias are not resolved until the
+ ``__value__`` attribute is accessed:
+
+ .. doctest::
+
+ >>> type Mutually = Recursive
+ >>> type Recursive = Mutually
+ >>> Mutually
+ Mutually
+ >>> Recursive
+ Recursive
+ >>> Mutually.__value__
+ Recursive
+ >>> Recursive.__value__
+ Mutually
+
Other special directives
""""""""""""""""""""""""
@@ -1613,12 +1850,18 @@ These are not used in annotations. They are building blocks for declaring types.
``NamedTuple`` subclasses can be generic::
- class Group(NamedTuple, Generic[T]):
+ class Group[T](NamedTuple):
key: T
group: list[T]
Backward-compatible usage::
+ # For creating a generic NamedTuple on Python 3.11 or lower
+ class Group(NamedTuple, Generic[T]):
+ key: T
+ group: list[T]
+
+ # A functional syntax is also supported
Employee = NamedTuple('Employee', [('name', str), ('id', int)])
.. versionchanged:: 3.6
@@ -1648,6 +1891,18 @@ These are not used in annotations. They are building blocks for declaring types.
UserId = NewType('UserId', int)
first_user = UserId(1)
+ .. attribute:: __module__
+
+ The module in which the new type is defined.
+
+ .. attribute:: __name__
+
+ The name of the new type.
+
+ .. attribute:: __supertype__
+
+ The type that the new type is based on.
+
.. versionadded:: 3.5.2
.. versionchanged:: 3.10
@@ -1680,6 +1935,15 @@ These are not used in annotations. They are building blocks for declaring types.
Protocol classes can be generic, for example::
+ class GenProto[T](Protocol):
+ def meth(self) -> T:
+ ...
+
+ In code that needs to be compatible with Python 3.11 or older, generic
+ Protocols can be written as follows::
+
+ T = TypeVar("T")
+
class GenProto(Protocol[T]):
def meth(self) -> T:
...
@@ -1875,6 +2139,13 @@ These are not used in annotations. They are building blocks for declaring types.
A ``TypedDict`` can be generic::
+ class Group[T](TypedDict):
+ key: T
+ group: list[T]
+
+ To create a generic ``TypedDict`` that is compatible with Python 3.11
+ or lower, inherit from :class:`Generic` explicitly::
+
class Group(TypedDict, Generic[T]):
key: T
group: list[T]
@@ -1973,12 +2244,10 @@ Corresponding to built-in types
This type may be used as follows::
- T = TypeVar('T', int, float)
-
- def vec2(x: T, y: T) -> List[T]:
+ def vec2[T: (int, float)](x: T, y: T) -> List[T]:
return [x, y]
- def keep_positives(vector: Sequence[T]) -> List[T]:
+ def keep_positives[T: (int, float)](vector: Sequence[T]) -> List[T]:
return [item for item in vector if item > 0]
.. deprecated:: 3.9
@@ -2177,8 +2446,8 @@ Corresponding to collections in :mod:`collections.abc`
A generic version of :class:`collections.abc.Mapping`.
This type can be used as follows::
- def get_position_in_index(word_list: Mapping[str, int], word: str) -> int:
- return word_list[word]
+ def get_position_in_index(word_list: Mapping[str, int], word: str) -> int:
+ return word_list[word]
.. deprecated:: 3.9
:class:`collections.abc.Mapping` now supports subscripting (``[]``).
@@ -2994,3 +3263,5 @@ convenience. This is subject to change, and not all deprecations are listed.
| ``typing.Hashable`` and | 3.12 | Undecided | :gh:`94309` |
| ``typing.Sized`` | | | |
+----------------------------------+---------------+-------------------+----------------+
+| ``typing.TypeAlias`` | 3.12 | Undecided | :pep:`695` |
++----------------------------------+---------------+-------------------+----------------+
diff --git a/Doc/library/wave.rst b/Doc/library/wave.rst
index 04a28d97d619eb..bb85dbe365c3f4 100644
--- a/Doc/library/wave.rst
+++ b/Doc/library/wave.rst
@@ -11,8 +11,9 @@
--------------
-The :mod:`wave` module provides a convenient interface to the WAV sound format.
-Only PCM encoded wave files are supported.
+The :mod:`wave` module provides a convenient interface to the Waveform Audio
+"WAVE" (or "WAV") file format. Only uncompressed PCM encoded wave files are
+supported.
.. versionchanged:: 3.12
@@ -41,13 +42,12 @@ The :mod:`wave` module defines the following function and exception:
value for *mode*.
If you pass in a file-like object, the wave object will not close it when its
- :meth:`close` method is called; it is the caller's responsibility to close
+ ``close()`` method is called; it is the caller's responsibility to close
the file object.
The :func:`.open` function may be used in a :keyword:`with` statement. When
- the :keyword:`!with` block completes, the :meth:`Wave_read.close()
- ` or :meth:`Wave_write.close()
- ` method is called.
+ the :keyword:`!with` block completes, the :meth:`Wave_read.close()` or
+ :meth:`Wave_write.close()` method is called.
.. versionchanged:: 3.4
Added support for unseekable files.
@@ -63,87 +63,91 @@ The :mod:`wave` module defines the following function and exception:
Wave_read Objects
-----------------
-Wave_read objects, as returned by :func:`.open`, have the following methods:
+.. class:: Wave_read
+ Read a WAV file.
-.. method:: Wave_read.close()
+ Wave_read objects, as returned by :func:`.open`, have the following methods:
- Close the stream if it was opened by :mod:`wave`, and make the instance
- unusable. This is called automatically on object collection.
+ .. method:: close()
-.. method:: Wave_read.getnchannels()
+ Close the stream if it was opened by :mod:`wave`, and make the instance
+ unusable. This is called automatically on object collection.
- Returns number of audio channels (``1`` for mono, ``2`` for stereo).
+ .. method:: getnchannels()
-.. method:: Wave_read.getsampwidth()
+ Returns number of audio channels (``1`` for mono, ``2`` for stereo).
- Returns sample width in bytes.
+ .. method:: getsampwidth()
-.. method:: Wave_read.getframerate()
+ Returns sample width in bytes.
- Returns sampling frequency.
+ .. method:: getframerate()
-.. method:: Wave_read.getnframes()
+ Returns sampling frequency.
- Returns number of audio frames.
+ .. method:: getnframes()
-.. method:: Wave_read.getcomptype()
+ Returns number of audio frames.
- Returns compression type (``'NONE'`` is the only supported type).
+ .. method:: getcomptype()
-.. method:: Wave_read.getcompname()
+ Returns compression type (``'NONE'`` is the only supported type).
- Human-readable version of :meth:`getcomptype`. Usually ``'not compressed'``
- parallels ``'NONE'``.
+ .. method:: getcompname()
-.. method:: Wave_read.getparams()
+ Human-readable version of :meth:`getcomptype`. Usually ``'not compressed'``
+ parallels ``'NONE'``.
- Returns a :func:`~collections.namedtuple` ``(nchannels, sampwidth,
- framerate, nframes, comptype, compname)``, equivalent to output of the
- :meth:`get\*` methods.
+ .. method:: getparams()
-.. method:: Wave_read.readframes(n)
+ Returns a :func:`~collections.namedtuple` ``(nchannels, sampwidth,
+ framerate, nframes, comptype, compname)``, equivalent to output of the
+ ``get*()`` methods.
- Reads and returns at most *n* frames of audio, as a :class:`bytes` object.
+ .. method:: readframes(n)
-.. method:: Wave_read.rewind()
+ Reads and returns at most *n* frames of audio, as a :class:`bytes` object.
- Rewind the file pointer to the beginning of the audio stream.
-The following two methods are defined for compatibility with the :mod:`aifc`
-module, and don't do anything interesting.
+ .. method:: rewind()
+ Rewind the file pointer to the beginning of the audio stream.
-.. method:: Wave_read.getmarkers()
+ The following two methods are defined for compatibility with the :mod:`aifc`
+ module, and don't do anything interesting.
- Returns ``None``.
+ .. method:: getmarkers()
-.. method:: Wave_read.getmark(id)
+ Returns ``None``.
- Raise an error.
-The following two methods define a term "position" which is compatible between
-them, and is otherwise implementation dependent.
+ .. method:: getmark(id)
+ Raise an error.
-.. method:: Wave_read.setpos(pos)
+ The following two methods define a term "position" which is compatible between
+ them, and is otherwise implementation dependent.
- Set the file pointer to the specified position.
+ .. method:: setpos(pos)
-.. method:: Wave_read.tell()
+ Set the file pointer to the specified position.
- Return current file pointer position.
+
+ .. method:: tell()
+
+ Return current file pointer position.
.. _wave-write-objects:
@@ -151,97 +155,100 @@ them, and is otherwise implementation dependent.
Wave_write Objects
------------------
-For seekable output streams, the ``wave`` header will automatically be updated
-to reflect the number of frames actually written. For unseekable streams, the
-*nframes* value must be accurate when the first frame data is written. An
-accurate *nframes* value can be achieved either by calling
-:meth:`~Wave_write.setnframes` or :meth:`~Wave_write.setparams` with the number
-of frames that will be written before :meth:`~Wave_write.close` is called and
-then using :meth:`~Wave_write.writeframesraw` to write the frame data, or by
-calling :meth:`~Wave_write.writeframes` with all of the frame data to be
-written. In the latter case :meth:`~Wave_write.writeframes` will calculate
-the number of frames in the data and set *nframes* accordingly before writing
-the frame data.
+.. class:: Wave_write
-Wave_write objects, as returned by :func:`.open`, have the following methods:
+ Write a WAV file.
-.. versionchanged:: 3.4
- Added support for unseekable files.
+ Wave_write objects, as returned by :func:`.open`.
+ For seekable output streams, the ``wave`` header will automatically be updated
+ to reflect the number of frames actually written. For unseekable streams, the
+ *nframes* value must be accurate when the first frame data is written. An
+ accurate *nframes* value can be achieved either by calling
+ :meth:`setnframes` or :meth:`setparams` with the number
+ of frames that will be written before :meth:`close` is called and
+ then using :meth:`writeframesraw` to write the frame data, or by
+ calling :meth:`writeframes` with all of the frame data to be
+ written. In the latter case :meth:`writeframes` will calculate
+ the number of frames in the data and set *nframes* accordingly before writing
+ the frame data.
-.. method:: Wave_write.close()
+ .. versionchanged:: 3.4
+ Added support for unseekable files.
- Make sure *nframes* is correct, and close the file if it was opened by
- :mod:`wave`. This method is called upon object collection. It will raise
- an exception if the output stream is not seekable and *nframes* does not
- match the number of frames actually written.
+ Wave_write objects have the following methods:
+ .. method:: close()
-.. method:: Wave_write.setnchannels(n)
+ Make sure *nframes* is correct, and close the file if it was opened by
+ :mod:`wave`. This method is called upon object collection. It will raise
+ an exception if the output stream is not seekable and *nframes* does not
+ match the number of frames actually written.
- Set the number of channels.
+ .. method:: setnchannels(n)
-.. method:: Wave_write.setsampwidth(n)
+ Set the number of channels.
- Set the sample width to *n* bytes.
+ .. method:: setsampwidth(n)
-.. method:: Wave_write.setframerate(n)
+ Set the sample width to *n* bytes.
- Set the frame rate to *n*.
- .. versionchanged:: 3.2
- A non-integral input to this method is rounded to the nearest
- integer.
+ .. method:: setframerate(n)
+ Set the frame rate to *n*.
-.. method:: Wave_write.setnframes(n)
+ .. versionchanged:: 3.2
+ A non-integral input to this method is rounded to the nearest
+ integer.
- Set the number of frames to *n*. This will be changed later if the number
- of frames actually written is different (this update attempt will
- raise an error if the output stream is not seekable).
+ .. method:: setnframes(n)
-.. method:: Wave_write.setcomptype(type, name)
+ Set the number of frames to *n*. This will be changed later if the number
+ of frames actually written is different (this update attempt will
+ raise an error if the output stream is not seekable).
- Set the compression type and description. At the moment, only compression type
- ``NONE`` is supported, meaning no compression.
+ .. method:: setcomptype(type, name)
-.. method:: Wave_write.setparams(tuple)
+ Set the compression type and description. At the moment, only compression type
+ ``NONE`` is supported, meaning no compression.
- The *tuple* should be ``(nchannels, sampwidth, framerate, nframes, comptype,
- compname)``, with values valid for the :meth:`set\*` methods. Sets all
- parameters.
+ .. method:: setparams(tuple)
-.. method:: Wave_write.tell()
+ The *tuple* should be ``(nchannels, sampwidth, framerate, nframes, comptype,
+ compname)``, with values valid for the ``set*()`` methods. Sets all
+ parameters.
- Return current position in the file, with the same disclaimer for the
- :meth:`Wave_read.tell` and :meth:`Wave_read.setpos` methods.
+ .. method:: tell()
-.. method:: Wave_write.writeframesraw(data)
+ Return current position in the file, with the same disclaimer for the
+ :meth:`Wave_read.tell` and :meth:`Wave_read.setpos` methods.
- Write audio frames, without correcting *nframes*.
- .. versionchanged:: 3.4
- Any :term:`bytes-like object` is now accepted.
+ .. method:: writeframesraw(data)
+ Write audio frames, without correcting *nframes*.
-.. method:: Wave_write.writeframes(data)
+ .. versionchanged:: 3.4
+ Any :term:`bytes-like object` is now accepted.
- Write audio frames and make sure *nframes* is correct. It will raise an
- error if the output stream is not seekable and the total number of frames
- that have been written after *data* has been written does not match the
- previously set value for *nframes*.
- .. versionchanged:: 3.4
- Any :term:`bytes-like object` is now accepted.
+ .. method:: writeframes(data)
+ Write audio frames and make sure *nframes* is correct. It will raise an
+ error if the output stream is not seekable and the total number of frames
+ that have been written after *data* has been written does not match the
+ previously set value for *nframes*.
-Note that it is invalid to set any parameters after calling :meth:`writeframes`
-or :meth:`writeframesraw`, and any attempt to do so will raise
-:exc:`wave.Error`.
+ .. versionchanged:: 3.4
+ Any :term:`bytes-like object` is now accepted.
+ Note that it is invalid to set any parameters after calling :meth:`writeframes`
+ or :meth:`writeframesraw`, and any attempt to do so will raise
+ :exc:`wave.Error`.
diff --git a/Doc/reference/compound_stmts.rst b/Doc/reference/compound_stmts.rst
index 9d1e5b6c596d9f..6d30eccab1990f 100644
--- a/Doc/reference/compound_stmts.rst
+++ b/Doc/reference/compound_stmts.rst
@@ -1206,7 +1206,7 @@ A function definition defines a user-defined function object (see section
:ref:`types`):
.. productionlist:: python-grammar
- funcdef: [`decorators`] "def" `funcname` "(" [`parameter_list`] ")"
+ funcdef: [`decorators`] "def" `funcname` [`type_params`] "(" [`parameter_list`] ")"
: ["->" `expression`] ":" `suite`
decorators: `decorator`+
decorator: "@" `assignment_expression` NEWLINE
@@ -1256,6 +1256,15 @@ except that the original function is not temporarily bound to the name ``func``.
:token:`~python-grammar:assignment_expression`. Previously, the grammar was
much more restrictive; see :pep:`614` for details.
+A list of :ref:`type parameters ` may be given in square brackets
+between the function's name and the opening parenthesis for its parameter list.
+This indicates to static type checkers that the function is generic. At runtime,
+the type parameters can be retrieved from the function's ``__type_params__``
+attribute. See :ref:`generic-functions` for more.
+
+.. versionchanged:: 3.12
+ Type parameter lists are new in Python 3.12.
+
.. index::
triple: default; parameter; value
single: argument; function definition
@@ -1378,7 +1387,7 @@ Class definitions
A class definition defines a class object (see section :ref:`types`):
.. productionlist:: python-grammar
- classdef: [`decorators`] "class" `classname` [`inheritance`] ":" `suite`
+ classdef: [`decorators`] "class" `classname` [`type_params`] [`inheritance`] ":" `suite`
inheritance: "(" [`argument_list`] ")"
classname: `identifier`
@@ -1434,6 +1443,15 @@ decorators. The result is then bound to the class name.
:token:`~python-grammar:assignment_expression`. Previously, the grammar was
much more restrictive; see :pep:`614` for details.
+A list of :ref:`type parameters ` may be given in square brackets
+immediately after the class's name.
+This indicates to static type checkers that the class is generic. At runtime,
+the type parameters can be retrieved from the class's ``__type_params__``
+attribute. See :ref:`generic-classes` for more.
+
+.. versionchanged:: 3.12
+ Type parameter lists are new in Python 3.12.
+
**Programmer's note:** Variables defined in the class definition are class
attributes; they are shared by instances. Instance attributes can be set in a
method with ``self.name = value``. Both class and instance attributes are
@@ -1589,6 +1607,228 @@ body of a coroutine function.
The proposal that made coroutines a proper standalone concept in Python,
and added supporting syntax.
+.. _type-params:
+
+Type parameter lists
+====================
+
+.. versionadded:: 3.12
+
+.. index::
+ single: type parameters
+
+.. productionlist:: python-grammar
+ type_params: "[" `type_param` ("," `type_param`)* "]"
+ type_param: `typevar` | `typevartuple` | `paramspec`
+ typevar: `identifier` (":" `expression`)?
+ typevartuple: "*" `identifier`
+ paramspec: "**" `identifier`
+
+:ref:`Functions ` (including :ref:`coroutines `),
+:ref:`classes ` and :ref:`type aliases ` may
+contain a type parameter list::
+
+ def max[T](args: list[T]) -> T:
+ ...
+
+ async def amax[T](args: list[T]) -> T:
+ ...
+
+ class Bag[T]:
+ def __iter__(self) -> Iterator[T]:
+ ...
+
+ def add(self, arg: T) -> None:
+ ...
+
+ type ListOrSet[T] = list[T] | set[T]
+
+Semantically, this indicates that the function, class, or type alias is
+generic over a type variable. This information is primarily used by static
+type checkers, and at runtime, generic objects behave much like their
+non-generic counterparts.
+
+Type parameters are declared in square brackets (``[]``) immediately
+after the name of the function, class, or type alias. The type parameters
+are accessible within the scope of the generic object, but not elsewhere.
+Thus, after a declaration ``def func[T](): pass``, the name ``T`` is not available in
+the module scope. Below, the semantics of generic objects are described
+with more precision. The scope of type parameters is modeled with a special
+function (technically, an :ref:`annotation scope `) that
+wraps the creation of the generic object.
+
+Generic functions, classes, and type aliases have a :attr:`!__type_params__`
+attribute listing their type parameters.
+
+Type parameters come in three kinds:
+
+* :data:`typing.TypeVar`, introduced by a plain name (e.g., ``T``). Semantically, this
+ represents a single type to a type checker.
+* :data:`typing.TypeVarTuple`, introduced by a name prefixed with a single
+ asterisk (e.g., ``*Ts``). Semantically, this stands for a tuple of any
+ number of types.
+* :data:`typing.ParamSpec`, introduced by a name prefixed with two asterisks
+ (e.g., ``**P``). Semantically, this stands for the parameters of a callable.
+
+:data:`typing.TypeVar` declarations can define *bounds* and *constraints* with
+a colon (``:``) followed by an expression. A single expression after the colon
+indicates a bound (e.g. ``T: int``). Semantically, this means
+that the :data:`!typing.TypeVar` can only represent types that are a subtype of
+this bound. A parenthesized tuple of expressions after the colon indicates a
+set of constraints (e.g. ``T: (str, bytes)``). Each member of the tuple should be a
+type (again, this is not enforced at runtime). Constrained type variables can only
+take on one of the types in the list of constraints.
+
+For :data:`!typing.TypeVar`\ s declared using the type parameter list syntax,
+the bound and constraints are not evaluated when the generic object is created,
+but only when the value is explicitly accessed through the attributes ``__bound__``
+and ``__constraints__``. To accomplish this, the bounds or constraints are
+evaluated in a separate :ref:`annotation scope `.
+
+:data:`typing.TypeVarTuple`\ s and :data:`typing.ParamSpec`\ s cannot have bounds
+or constraints.
+
+The following example indicates the full set of allowed type parameter declarations::
+
+ def overly_generic[
+ SimpleTypeVar,
+ TypeVarWithBound: int,
+ TypeVarWithConstraints: (str, bytes),
+ *SimpleTypeVarTuple,
+ **SimpleParamSpec,
+ ](
+ a: SimpleTypeVar,
+ b: TypeVarWithBound,
+ c: Callable[SimpleParamSpec, TypeVarWithConstraints],
+ *d: SimpleTypeVarTuple,
+ ): ...
+
+.. _generic-functions:
+
+Generic functions
+-----------------
+
+Generic functions are declared as follows::
+
+ def func[T](arg: T): ...
+
+This syntax is equivalent to::
+
+ annotation-def TYPE_PARAMS_OF_func():
+ T = typing.TypeVar("T")
+ def func(arg: T): ...
+ func.__type_params__ = (T,)
+ return func
+ func = TYPE_PARAMS_OF_func()
+
+Here ``annotation-def`` indicates an :ref:`annotation scope `,
+which is not actually bound to any name at runtime. (One
+other liberty is taken in the translation: the syntax does not go through
+attribute access on the :mod:`typing` module, but creates an instance of
+:data:`typing.TypeVar` directly.)
+
+The annotations of generic functions are evaluated within the annotation scope
+used for declaring the type parameters, but the function's defaults and
+decorators are not.
+
+The following example illustrates the scoping rules for these cases,
+as well as for additional flavors of type parameters::
+
+ @decorator
+ def func[T: int, *Ts, **P](*args: *Ts, arg: Callable[P, T] = some_default):
+ ...
+
+Except for the :ref:`lazy evaluation ` of the
+:class:`~typing.TypeVar` bound, this is equivalent to::
+
+ DEFAULT_OF_arg = some_default
+
+ annotation-def TYPE_PARAMS_OF_func():
+
+ annotation-def BOUND_OF_T():
+ return int
+ # In reality, BOUND_OF_T() is evaluated only on demand.
+ T = typing.TypeVar("T", bound=BOUND_OF_T())
+
+ Ts = typing.TypeVarTuple("Ts")
+ P = typing.ParamSpec("P")
+
+ def func(*args: *Ts, arg: Callable[P, T] = DEFAULT_OF_arg):
+ ...
+
+ func.__type_params__ = (T, Ts, P)
+ return func
+ func = decorator(TYPE_PARAMS_OF_func())
+
+The capitalized names like ``DEFAULT_OF_arg`` are not actually
+bound at runtime.
+
+.. _generic-classes:
+
+Generic classes
+---------------
+
+Generic classes are declared as follows::
+
+ class Bag[T]: ...
+
+This syntax is equivalent to::
+
+ annotation-def TYPE_PARAMS_OF_Bag():
+ T = typing.TypeVar("T")
+ class Bag(typing.Generic[T]):
+ __type_params__ = (T,)
+ ...
+ return Bag
+ Bag = TYPE_PARAMS_OF_Bag()
+
+Here again ``annotation-def`` (not a real keyword) indicates an
+:ref:`annotation scope `, and the name
+``TYPE_PARAMS_OF_Bag`` is not actually bound at runtime.
+
+Generic classes implicitly inherit from :data:`typing.Generic`.
+The base classes and keyword arguments of generic classes are
+evaluated within the type scope for the type parameters,
+and decorators are evaluated outside that scope. This is illustrated
+by this example::
+
+ @decorator
+ class Bag(Base[T], arg=T): ...
+
+This is equivalent to::
+
+ annotation-def TYPE_PARAMS_OF_Bag():
+ T = typing.TypeVar("T")
+ class Bag(Base[T], typing.Generic[T], arg=T):
+ __type_params__ = (T,)
+ ...
+ return Bag
+ Bag = decorator(TYPE_PARAMS_OF_Bag())
+
+.. _generic-type-aliases:
+
+Generic type aliases
+--------------------
+
+The :keyword:`type` statement can also be used to create a generic type alias::
+
+ type ListOrSet[T] = list[T] | set[T]
+
+Except for the :ref:`lazy evaluation ` of the value,
+this is equivalent to::
+
+ annotation-def TYPE_PARAMS_OF_ListOrSet():
+ T = typing.TypeVar("T")
+
+ annotation-def VALUE_OF_ListOrSet():
+ return list[T] | set[T]
+ # In reality, the value is lazily evaluated
+ return typing.TypeAliasType("ListOrSet", VALUE_OF_ListOrSet(), type_params=(T,))
+ ListOrSet = TYPE_PARAMS_OF_ListOrSet()
+
+Here, ``annotation-def`` (not a real keyword) indicates an
+:ref:`annotation scope `. The capitalized names
+like ``TYPE_PARAMS_OF_ListOrSet`` are not actually bound at runtime.
.. rubric:: Footnotes
diff --git a/Doc/reference/datamodel.rst b/Doc/reference/datamodel.rst
index c0734e49f29192..e8f9775dd33ce1 100644
--- a/Doc/reference/datamodel.rst
+++ b/Doc/reference/datamodel.rst
@@ -499,6 +499,7 @@ Callable types
single: __globals__ (function attribute)
single: __annotations__ (function attribute)
single: __kwdefaults__ (function attribute)
+ single: __type_params__ (function attribute)
pair: global; namespace
+-------------------------+-------------------------------+-----------+
@@ -561,6 +562,12 @@ Callable types
| :attr:`__kwdefaults__` | A dict containing defaults | Writable |
| | for keyword-only parameters. | |
+-------------------------+-------------------------------+-----------+
+ | :attr:`__type_params__` | A tuple containing the | Writable |
+ | | :ref:`type parameters | |
+ | | ` of a | |
+ | | :ref:`generic function | |
+ | | `. | |
+ +-------------------------+-------------------------------+-----------+
Most of the attributes labelled "Writable" check the type of the assigned value.
@@ -837,6 +844,7 @@ Custom classes
single: __bases__ (class attribute)
single: __doc__ (class attribute)
single: __annotations__ (class attribute)
+ single: __type_params__ (class attribute)
Special attributes:
@@ -863,6 +871,10 @@ Custom classes
working with :attr:`__annotations__`, please see
:ref:`annotations-howto`.
+ :attr:`__type_params__`
+ A tuple containing the :ref:`type parameters ` of
+ a :ref:`generic class `.
+
Class instances
.. index::
pair: object; class instance
diff --git a/Doc/reference/executionmodel.rst b/Doc/reference/executionmodel.rst
index 8917243999d399..cea3a56ba51644 100644
--- a/Doc/reference/executionmodel.rst
+++ b/Doc/reference/executionmodel.rst
@@ -71,6 +71,8 @@ The following constructs bind names:
+ in a capture pattern in structural pattern matching
* :keyword:`import` statements.
+* :keyword:`type` statements.
+* :ref:`type parameter lists `.
The :keyword:`!import` statement of the form ``from ... import *`` binds all
names defined in the imported module, except those beginning with an underscore.
@@ -149,7 +151,8 @@ a global statement, the free variable is treated as a global.
The :keyword:`nonlocal` statement causes corresponding names to refer
to previously bound variables in the nearest enclosing function scope.
:exc:`SyntaxError` is raised at compile time if the given name does not
-exist in any enclosing function scope.
+exist in any enclosing function scope. :ref:`Type parameters `
+cannot be rebound with the :keyword:`!nonlocal` statement.
.. index:: pair: module; __main__
@@ -163,14 +166,119 @@ These references follow the normal rules for name resolution with an exception
that unbound local variables are looked up in the global namespace.
The namespace of the class definition becomes the attribute dictionary of
the class. The scope of names defined in a class block is limited to the
-class block; it does not extend to the code blocks of methods -- this includes
-comprehensions and generator expressions since they are implemented using a
-function scope. This means that the following will fail::
+class block; it does not extend to the code blocks of methods. This includes
+comprehensions and generator expressions, but it does not include
+:ref:`annotation scopes `,
+which have access to their enclosing class scopes.
+This means that the following will fail::
class A:
a = 42
b = list(a + i for i in range(10))
+However, the following will succeed::
+
+ class A:
+ type Alias = Nested
+ class Nested: pass
+
+ print(A.Alias.__value__) #
+
+.. _annotation-scopes:
+
+Annotation scopes
+-----------------
+
+:ref:`Type parameter lists ` and :keyword:`type` statements
+introduce *annotation scopes*, which behave mostly like function scopes,
+but with some exceptions discussed below. :term:`Annotations `
+currently do not use annotation scopes, but they are expected to use
+annotation scopes in Python 3.13 when :pep:`649` is implemented.
+
+Annotation scopes are used in the following contexts:
+
+* Type parameter lists for :ref:`generic type aliases `.
+* Type parameter lists for :ref:`generic functions `.
+ A generic function's annotations are
+ executed within the annotation scope, but its defaults and decorators are not.
+* Type parameter lists for :ref:`generic classes `.
+ A generic class's base classes and
+ keyword arguments are executed within the annotation scope, but its decorators are not.
+* The bounds and constraints for type variables
+ (:ref:`lazily evaluated `).
+* The value of type aliases (:ref:`lazily evaluated `).
+
+Annotation scopes differ from function scopes in the following ways:
+
+* Annotation scopes have access to their enclosing class namespace.
+ If an annotation scope is immediately within a class scope, or within another
+ annotation scope that is immediately within a class scope, the code in the
+ annotation scope can use names defined in the class scope as if it were
+ executed directly within the class body. This contrasts with regular
+ functions defined within classes, which cannot access names defined in the class scope.
+* Expressions in annotation scopes cannot contain :keyword:`yield`, ``yield from``,
+ :keyword:`await`, or :token:`:= `
+ expressions. (These expressions are allowed in other scopes contained within the
+ annotation scope.)
+* Names defined in annotation scopes cannot be rebound with :keyword:`nonlocal`
+ statements in inner scopes. This includes only type parameters, as no other
+ syntactic elements that can appear within annotation scopes can introduce new names.
+* While annotation scopes have an internal name, that name is not reflected in the
+ :term:`__qualname__ ` of objects defined within the scope.
+ Instead, the :attr:`!__qualname__`
+ of such objects is as if the object were defined in the enclosing scope.
+
+.. versionadded:: 3.12
+ Annotation scopes were introduced in Python 3.12 as part of :pep:`695`.
+
+.. _lazy-evaluation:
+
+Lazy evaluation
+---------------
+
+The values of type aliases created through the :keyword:`type` statement are
+*lazily evaluated*. The same applies to the bounds and constraints of type
+variables created through the :ref:`type parameter syntax `.
+This means that they are not evaluated when the type alias or type variable is
+created. Instead, they are only evaluated when doing so is necessary to resolve
+an attribute access.
+
+Example:
+
+.. doctest::
+
+ >>> type Alias = 1/0
+ >>> Alias.__value__
+ Traceback (most recent call last):
+ ...
+ ZeroDivisionError: division by zero
+ >>> def func[T: 1/0](): pass
+ >>> T = func.__type_params__[0]
+ >>> T.__bound__
+ Traceback (most recent call last):
+ ...
+ ZeroDivisionError: division by zero
+
+Here the exception is raised only when the ``__value__`` attribute
+of the type alias or the ``__bound__`` attribute of the type variable
+is accessed.
+
+This behavior is primarily useful for references to types that have not
+yet been defined when the type alias or type variable is created. For example,
+lazy evaluation enables creation of mutually recursive type aliases::
+
+ from typing import Literal
+
+ type SimpleExpr = int | Parenthesized
+ type Parenthesized = tuple[Literal["("], Expr, Literal[")"]]
+ type Expr = SimpleExpr | tuple[SimpleExpr, Literal["+", "-"], Expr]
+
+Lazily evaluated values are evaluated in :ref:`annotation scope `,
+which means that names that appear inside the lazily evaluated value are looked up
+as if they were used in the immediately enclosing scope.
+
+.. versionadded:: 3.12
+
.. _restrict_exec:
Builtins and restricted execution
diff --git a/Doc/reference/lexical_analysis.rst b/Doc/reference/lexical_analysis.rst
index 8adb4b740825d0..47062f86810e91 100644
--- a/Doc/reference/lexical_analysis.rst
+++ b/Doc/reference/lexical_analysis.rst
@@ -361,15 +361,19 @@ Soft Keywords
.. versionadded:: 3.10
Some identifiers are only reserved under specific contexts. These are known as
-*soft keywords*. The identifiers ``match``, ``case`` and ``_`` can
-syntactically act as keywords in contexts related to the pattern matching
-statement, but this distinction is done at the parser level, not when
-tokenizing.
+*soft keywords*. The identifiers ``match``, ``case``, ``type`` and ``_`` can
+syntactically act as keywords in certain contexts,
+but this distinction is done at the parser level, not when tokenizing.
-As soft keywords, their use with pattern matching is possible while still
-preserving compatibility with existing code that uses ``match``, ``case`` and ``_`` as
+As soft keywords, their use in the grammar is possible while still
+preserving compatibility with existing code that uses these names as
identifier names.
+``match``, ``case``, and ``_`` are used in the :keyword:`match` statement.
+``type`` is used in the :keyword:`type` statement.
+
+.. versionchanged:: 3.12
+ ``type`` is now a soft keyword.
.. index::
single: _, identifiers
@@ -741,16 +745,28 @@ Expressions in formatted string literals are treated like regular
Python expressions surrounded by parentheses, with a few exceptions.
An empty expression is not allowed, and both :keyword:`lambda` and
assignment expressions ``:=`` must be surrounded by explicit parentheses.
-Replacement expressions can contain line breaks (e.g. in triple-quoted
-strings), but they cannot contain comments. Each expression is evaluated
-in the context where the formatted string literal appears, in order from
-left to right.
+Each expression is evaluated in the context where the formatted string literal
+appears, in order from left to right. Replacement expressions can contain
+newlines in both single-quoted and triple-quoted f-strings and they can contain
+comments. Everything that comes after a ``#`` inside a replacement field
+is a comment (even closing braces and quotes). In that case, replacement fields
+must be closed in a different line.
+
+.. code-block:: text
+
+ >>> f"abc{a # This is a comment }"
+ ... + 3}"
+ 'abc5'
.. versionchanged:: 3.7
Prior to Python 3.7, an :keyword:`await` expression and comprehensions
containing an :keyword:`async for` clause were illegal in the expressions
in formatted string literals due to a problem with the implementation.
+.. versionchanged:: 3.12
+ Prior to Python 3.12, comments were not allowed inside f-string replacement
+ fields.
+
When the equal sign ``'='`` is provided, the output will have the expression
text, the ``'='`` and the evaluated value. Spaces after the opening brace
``'{'``, within the expression and after the ``'='`` are all retained in the
@@ -813,24 +829,30 @@ Some examples of formatted string literals::
'line = "The mill\'s closed" '
-A consequence of sharing the same syntax as regular string literals is
-that characters in the replacement fields must not conflict with the
-quoting used in the outer formatted string literal::
+Reusing the outer f-string quoting type inside a replacement field is
+permitted::
- f"abc {a["x"]} def" # error: outer string literal ended prematurely
- f"abc {a['x']} def" # workaround: use different quoting
+ >>> a = dict(x=2)
+ >>> f"abc {a["x"]} def"
+ 'abc 2 def'
-Backslashes are not allowed in format expressions and will raise
-an error::
+.. versionchanged:: 3.12
+ Prior to Python 3.12, reuse of the same quoting type of the outer f-string
+ inside a replacement field was not possible.
- f"newline: {ord('\n')}" # raises SyntaxError
+Backslashes are also allowed in replacement fields and are evaluated the same
+way as in any other context::
-To include a value in which a backslash escape is required, create
-a temporary variable.
+ >>> a = ["a", "b", "c"]
+ >>> print(f"List a contains:\n{"\n".join(a)}")
+ List a contains:
+ a
+ b
+ c
- >>> newline = ord('\n')
- >>> f"newline: {newline}"
- 'newline: 10'
+.. versionchanged:: 3.12
+ Prior to Python 3.12, backslashes were not permitted inside an f-string
+ replacement field.
Formatted string literals cannot be used as docstrings, even if they do not
include expressions.
diff --git a/Doc/reference/simple_stmts.rst b/Doc/reference/simple_stmts.rst
index f7a8b44d195417..662a4b643c4378 100644
--- a/Doc/reference/simple_stmts.rst
+++ b/Doc/reference/simple_stmts.rst
@@ -28,6 +28,7 @@ simple statements is:
: | `future_stmt`
: | `global_stmt`
: | `nonlocal_stmt`
+ : | `type_stmt`
.. _exprstmts:
@@ -1012,3 +1013,48 @@ pre-existing bindings in the local scope.
:pep:`3104` - Access to Names in Outer Scopes
The specification for the :keyword:`nonlocal` statement.
+
+.. _type:
+
+The :keyword:`!type` statement
+==============================
+
+.. index:: pair: statement; type
+
+.. productionlist:: python-grammar
+ type_stmt: 'type' `identifier` [`type_params`] "=" `expression`
+
+The :keyword:`!type` statement declares a type alias, which is an instance
+of :class:`typing.TypeAliasType`.
+
+For example, the following statement creates a type alias::
+
+ type Point = tuple[float, float]
+
+This code is roughly equivalent to::
+
+ annotation-def VALUE_OF_Point():
+ return tuple[float, float]
+ Point = typing.TypeAliasType("Point", VALUE_OF_Point())
+
+``annotation-def`` indicates an :ref:`annotation scope `, which behaves
+mostly like a function, but with several small differences.
+
+The value of the
+type alias is evaluated in the annotation scope. It is not evaluated when the
+type alias is created, but only when the value is accessed through the type alias's
+:attr:`!__value__` attribute (see :ref:`lazy-evaluation`).
+This allows the type alias to refer to names that are not yet defined.
+
+Type aliases may be made generic by adding a :ref:`type parameter list `
+after the name. See :ref:`generic-type-aliases` for more.
+
+:keyword:`!type` is a :ref:`soft keyword `.
+
+.. versionadded:: 3.12
+
+.. seealso::
+
+ :pep:`695` - Type Parameter Syntax
+ Introduced the :keyword:`!type` statement and syntax for
+ generic classes and functions.
diff --git a/Doc/tools/.nitignore b/Doc/tools/.nitignore
index 1d3503bf06f085..3a34c0b2cbfff5 100644
--- a/Doc/tools/.nitignore
+++ b/Doc/tools/.nitignore
@@ -236,7 +236,6 @@ Doc/library/urllib.error.rst
Doc/library/urllib.parse.rst
Doc/library/urllib.request.rst
Doc/library/uuid.rst
-Doc/library/wave.rst
Doc/library/weakref.rst
Doc/library/webbrowser.rst
Doc/library/winreg.rst
diff --git a/Doc/tutorial/floatingpoint.rst b/Doc/tutorial/floatingpoint.rst
index 306b1eba3c45b8..b88055a41fd1ff 100644
--- a/Doc/tutorial/floatingpoint.rst
+++ b/Doc/tutorial/floatingpoint.rst
@@ -148,7 +148,7 @@ Binary floating-point arithmetic holds many surprises like this. The problem
with "0.1" is explained in precise detail below, in the "Representation Error"
section. See `Examples of Floating Point Problems
`_ for
-a pleasant summary of how binary floating point works and the kinds of
+a pleasant summary of how binary floating-point works and the kinds of
problems commonly encountered in practice. Also see
`The Perils of Floating Point `_
for a more complete account of other common surprises.
@@ -174,7 +174,7 @@ Another form of exact arithmetic is supported by the :mod:`fractions` module
which implements arithmetic based on rational numbers (so the numbers like
1/3 can be represented exactly).
-If you are a heavy user of floating point operations you should take a look
+If you are a heavy user of floating-point operations you should take a look
at the NumPy package and many other packages for mathematical and
statistical operations supplied by the SciPy project. See .
@@ -268,12 +268,14 @@ decimal fractions cannot be represented exactly as binary (base 2) fractions.
This is the chief reason why Python (or Perl, C, C++, Java, Fortran, and many
others) often won't display the exact decimal number you expect.
-Why is that? 1/10 is not exactly representable as a binary fraction. Almost all
-machines today (November 2000) use IEEE-754 floating point arithmetic, and
-almost all platforms map Python floats to IEEE-754 "double precision". 754
-doubles contain 53 bits of precision, so on input the computer strives to
-convert 0.1 to the closest fraction it can of the form *J*/2**\ *N* where *J* is
-an integer containing exactly 53 bits. Rewriting ::
+Why is that? 1/10 is not exactly representable as a binary fraction. Since at
+least 2000, almost all machines use IEEE 754 binary floating-point arithmetic,
+and almost all platforms map Python floats to IEEE 754 binary64 "double
+precision" values. IEEE 754 binary64 values contain 53 bits of precision, so
+on input the computer strives to convert 0.1 to the closest fraction it can of
+the form *J*/2**\ *N* where *J* is an integer containing exactly 53 bits.
+Rewriting
+::
1 / 10 ~= J / (2**N)
@@ -308,7 +310,8 @@ by rounding up:
>>> q+1
7205759403792794
-Therefore the best possible approximation to 1/10 in 754 double precision is::
+Therefore the best possible approximation to 1/10 in IEEE 754 double precision
+is::
7205759403792794 / 2 ** 56
@@ -321,7 +324,7 @@ if we had not rounded up, the quotient would have been a little bit smaller than
1/10. But in no case can it be *exactly* 1/10!
So the computer never "sees" 1/10: what it sees is the exact fraction given
-above, the best 754 double approximation it can get:
+above, the best IEEE 754 double approximation it can get:
.. doctest::
diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst
index 7a479c6e56a9f0..48606f3be42e3c 100644
--- a/Doc/whatsnew/3.11.rst
+++ b/Doc/whatsnew/3.11.rst
@@ -1856,6 +1856,10 @@ Standard Library
(Contributed by Erlend E. Aasland in :issue:`5846`.)
+* :meth:`~!unittest.TestProgram.usageExit` is marked deprecated, to be removed
+ in 3.13.
+ (Contributed by Carlos Damázio in :gh:`67048`.)
+
.. _whatsnew311-pending-removal:
.. _whatsnew311-python-api-pending-removal:
diff --git a/Doc/whatsnew/3.12.rst b/Doc/whatsnew/3.12.rst
index efbd2ca3de122a..18c4ae049ab7f8 100644
--- a/Doc/whatsnew/3.12.rst
+++ b/Doc/whatsnew/3.12.rst
@@ -66,12 +66,18 @@ Summary -- Release highlights
.. PEP-sized items next.
+New grammar features:
+
+* :pep:`701`: Syntactic formalization of f-strings
+
New typing features:
* :pep:`688`: Making the buffer protocol accessible in Python
* :ref:`whatsnew312-pep692`
+* :ref:`whatsnew312-pep695`
+
* :pep:`698`: Override Decorator for Static Typing
Important deprecations, removals or restrictions:
@@ -136,22 +142,95 @@ Improved Error Messages
New Features
============
-* Add :ref:`perf_profiling` through the new
- environment variable :envvar:`PYTHONPERFSUPPORT`,
- the new command-line option :option:`-X perf <-X>`,
- as well as the new :func:`sys.activate_stack_trampoline`,
- :func:`sys.deactivate_stack_trampoline`,
- and :func:`sys.is_stack_trampoline_active` APIs.
- (Design by Pablo Galindo. Contributed by Pablo Galindo and Christian Heimes
- with contributions from Gregory P. Smith [Google] and Mark Shannon
- in :gh:`96123`.)
-* The extraction methods in :mod:`tarfile`, and :func:`shutil.unpack_archive`,
- have a new a *filter* argument that allows limiting tar features than may be
- surprising or dangerous, such as creating files outside the destination
- directory.
- See :ref:`tarfile-extraction-filter` for details.
- In Python 3.14, the default will switch to ``'data'``.
- (Contributed by Petr Viktorin in :pep:`706`.)
+.. _whatsnew312-pep701:
+
+PEP 701: Syntactic formalization of f-strings
+---------------------------------------------
+
+:pep:`701` lifts some restrictions on the usage of f-strings. Expression components
+inside f-strings can now be any valid Python expression including backslashes,
+unicode escaped sequences, multi-line expressions, comments and strings reusing the
+same quote as the containing f-string. Let's cover these in detail:
+
+* Quote reuse: in Python 3.11, reusing the same quotes as the containing f-string
+ raises a :exc:`SyntaxError`, forcing the user to either use other available
+ quotes (like using double quotes or triple quotes if the f-string uses single
+ quotes). In Python 3.12, you can now do things like this:
+
+ >>> songs = ['Take me back to Eden', 'Alkaline', 'Ascensionism']
+ >>> f"This is the playlist: {", ".join(songs)}"
+ 'This is the playlist: Take me back to Eden, Alkaline, Ascensionism'
+
+ Note that before this change there was no explicit limit in how f-strings can
+ be nested, but the fact that string quotes cannot be reused inside the
+ expression component of f-strings made it impossible to nest f-strings
+ arbitrarily. In fact, this is the most nested f-string that could be written:
+
+ >>> f"""{f'''{f'{f"{1+1}"}'}'''}"""
+ '2'
+
+ As now f-strings can contain any valid Python expression inside expression
+ components, it is now possible to nest f-strings arbitrarily:
+
+ >>> f"{f"{f"{f"{f"{f"{1+1}"}"}"}"}"}"
+ '2'
+
+* Multi-line expressions and comments: In Python 3.11, f-strings expressions
+ must be defined in a single line even if outside f-strings expressions could
+ span multiple lines (like literal lists being defined over multiple lines),
+ making them harder to read. In Python 3.12 you can now define expressions
+ spanning multiple lines and include comments on them:
+
+ >>> f"This is the playlist: {", ".join([
+ ... 'Take me back to Eden', # My, my, those eyes like fire
+ ... 'Alkaline', # Not acid nor alkaline
+ ... 'Ascensionism' # Take to the broken skies at last
+ ... ])}"
+ 'This is the playlist: Take me back to Eden, Alkaline, Ascensionism'
+
+* Backslashes and unicode characters: before Python 3.12 f-string expressions
+ couldn't contain any ``\`` character. This also affected unicode escaped
+ sequences (such as ``\N{snowman}``) as these contain the ``\N`` part that
+ previously could not be part of expression components of f-strings. Now, you
+ can define expressions like this:
+
+ >>> print(f"This is the playlist: {"\n".join(songs)}")
+ This is the playlist: Take me back to Eden
+ Alkaline
+ Ascensionism
+ >>> print(f"This is the playlist: {"\N{BLACK HEART SUIT}".join(songs)}")
+ This is the playlist: Take me back to Eden♥Alkaline♥Ascensionism
+
+See :pep:`701` for more details.
+
+As a positive side-effect of how this feature has been implemented (by parsing f-strings
+with the PEG parser (see :pep:`617`), now error messages for f-strings are more precise
+and include the exact location of the error. For example, in Python 3.11, the following
+f-string raises a :exc:`SyntaxError`:
+
+.. code-block:: python
+
+ >>> my_string = f"{x z y}" + f"{1 + 1}"
+ File "", line 1
+ (x z y)
+ ^^^
+ SyntaxError: f-string: invalid syntax. Perhaps you forgot a comma?
+
+but the error message doesn't include the exact location of the error within the line and
+also has the expression artificially surrounded by parentheses. In Python 3.12, as f-strings
+are parsed with the PEG parser, error messages can be more precise and show the entire line:
+
+.. code-block:: python
+
+ >>> my_string = f"{x z y}" + f"{1 + 1}"
+ File "", line 1
+ my_string = f"{x z y}" + f"{1 + 1}"
+ ^^^
+ SyntaxError: invalid syntax. Perhaps you forgot a comma?
+
+(Contributed by Pablo Galindo, Batuhan Taskaya, Lysandros Nikolaou, Cristián
+Maureira-Fredes and Marta Gómez in :gh:`102856`. PEP written by Pablo Galindo,
+Batuhan Taskaya, Lysandros Nikolaou and Marta Gómez).
.. _whatsnew312-pep709:
@@ -218,11 +297,122 @@ typed dictionaries::
See :pep:`692` for more details.
-(PEP written by Franek Magiera)
+(Contributed by Franek Magiera in :gh:`103629`.)
+
+PEP 698: Override Decorator for Static Typing
+---------------------------------------------
+
+A new decorator :func:`typing.override` has been added to the :mod:`typing`
+module. It indicates to type checkers that the method is intended to override
+a method in a superclass. This allows type checkers to catch mistakes where
+a method that is intended to override something in a base class
+does not in fact do so.
+
+Example::
+
+ from typing import override
+
+ class Base:
+ def get_color(self) -> str:
+ return "blue"
+
+ class GoodChild(Base):
+ @override # ok: overrides Base.get_color
+ def get_color(self) -> str:
+ return "yellow"
+
+ class BadChild(Base):
+ @override # type checker error: does not override Base.get_color
+ def get_colour(self) -> str:
+ return "red"
+
+(Contributed by Steven Troxler in :gh:`101561`.)
+
+.. _whatsnew312-pep695:
+
+PEP 695: Type Parameter Syntax
+------------------------------
+
+Generic classes and functions under :pep:`484` were declared using a verbose syntax
+that left the scope of type parameters unclear and required explicit declarations of
+variance.
+
+:pep:`695` introduces a new, more compact and explicit way to create
+:ref:`generic classes ` and :ref:`functions `::
+
+ def max[T](args: Iterable[T]) -> T:
+ ...
+
+ class list[T]:
+ def __getitem__(self, index: int, /) -> T:
+ ...
+
+ def append(self, element: T) -> None:
+ ...
+
+In addition, the PEP introduces a new way to declare :ref:`type aliases `
+using the :keyword:`type` statement, which creates an instance of
+:class:`~typing.TypeAliasType`::
+
+ type Point = tuple[float, float]
+
+Type aliases can also be :ref:`generic `::
+
+ type Point[T] = tuple[T, T]
+
+The new syntax allows declaring :class:`~typing.TypeVarTuple`
+and :class:`~typing.ParamSpec` parameters, as well as :class:`~typing.TypeVar`
+parameters with bounds or constraints::
+
+ type IntFunc[**P] = Callable[P, int] # ParamSpec
+ type LabeledTuple[*Ts] = tuple[str, *Ts] # TypeVarTuple
+ type HashableSequence[T: Hashable] = Sequence[T] # TypeVar with bound
+ type IntOrStrSequence[T: (int, str)] = Sequence[T] # TypeVar with constraints
+
+The value of type aliases and the bound and constraints of type variables
+created through this syntax are evaluated only on demand (see
+:ref:`lazy-evaluation`). This means type aliases are able to refer to other
+types defined later in the file.
+
+Type parameters declared through a type parameter list are visible within the
+scope of the declaration and any nested scopes, but not in the outer scope. For
+example, they can be used in the type annotations for the methods of a generic
+class or in the class body. However, they cannot be used in the module scope after
+the class is defined. See :ref:`type-params` for a detailed description of the
+runtime semantics of type parameters.
+
+In order to support these scoping semantics, a new kind of scope is introduced,
+the :ref:`annotation scope `. Annotation scopes behave for the
+most part like function scopes, but interact differently with enclosing class scopes.
+In Python 3.13, :term:`annotations ` will also be evaluated in
+annotation scopes.
+
+See :pep:`695` for more details.
+
+(PEP written by Eric Traut. Implementation by Jelle Zijlstra, Eric Traut,
+and others in :gh:`103764`.)
Other Language Changes
======================
+* Add :ref:`perf_profiling` through the new
+ environment variable :envvar:`PYTHONPERFSUPPORT`,
+ the new command-line option :option:`-X perf <-X>`,
+ as well as the new :func:`sys.activate_stack_trampoline`,
+ :func:`sys.deactivate_stack_trampoline`,
+ and :func:`sys.is_stack_trampoline_active` APIs.
+ (Design by Pablo Galindo. Contributed by Pablo Galindo and Christian Heimes
+ with contributions from Gregory P. Smith [Google] and Mark Shannon
+ in :gh:`96123`.)
+
+* The extraction methods in :mod:`tarfile`, and :func:`shutil.unpack_archive`,
+ have a new a *filter* argument that allows limiting tar features than may be
+ surprising or dangerous, such as creating files outside the destination
+ directory.
+ See :ref:`tarfile-extraction-filter` for details.
+ In Python 3.14, the default will switch to ``'data'``.
+ (Contributed by Petr Viktorin in :pep:`706`.)
+
* :class:`types.MappingProxyType` instances are now hashable if the underlying
mapping is hashable.
(Contributed by Serhiy Storchaka in :gh:`87995`.)
@@ -271,7 +461,11 @@ Other Language Changes
(Contributed by Nikita Sobolev in :gh:`100581`.)
* :class:`slice` objects are now hashable, allowing them to be used as dict keys and
- set items. (Contributed by Will Bradshaw and Furkan Onder in :gh:`101264`.)
+ set items. (Contributed by Will Bradshaw, Furkan Onder, and Raymond Hettinger in :gh:`101264`.)
+
+* :func:`sum` now uses Neumaier summation to improve accuracy when summing
+ floats or mixed ints and floats.
+ (Contributed by Raymond Hettinger in :gh:`100425`.)
* Exceptions raised in a typeobject's ``__set_name__`` method are no longer
wrapped by a :exc:`RuntimeError`. Context information is added to the
@@ -359,46 +553,6 @@ csv
provide finer grained control of ``None`` and empty strings by
:class:`~csv.writer` objects.
-inspect
--------
-
-* Add :func:`inspect.markcoroutinefunction` to mark sync functions that return
- a :term:`coroutine` for use with :func:`inspect.iscoroutinefunction`.
- (Contributed Carlton Gibson in :gh:`99247`.)
-
-* Add :func:`inspect.getasyncgenstate` and :func:`inspect.getasyncgenlocals`
- for determining the current state of asynchronous generators.
- (Contributed by Thomas Krennwallner in :issue:`35759`.)
-
-* The performance of :func:`inspect.getattr_static` has been considerably
- improved. Most calls to the function should be at least 2x faster than they
- were in Python 3.11, and some may be 6x faster or more. (Contributed by Alex
- Waygood in :gh:`103193`.)
-
-pathlib
--------
-
-* Add support for subclassing :class:`pathlib.PurePath` and
- :class:`~pathlib.Path`, plus their Posix- and Windows-specific variants.
- Subclasses may override the :meth:`~pathlib.PurePath.with_segments` method
- to pass information between path instances.
-
-* Add :meth:`~pathlib.Path.walk` for walking the directory trees and generating
- all file or directory names within them, similar to :func:`os.walk`.
- (Contributed by Stanislav Zmiev in :gh:`90385`.)
-
-* Add *walk_up* optional parameter to :meth:`pathlib.PurePath.relative_to`
- to allow the insertion of ``..`` entries in the result; this behavior is
- more consistent with :func:`os.path.relpath`.
- (Contributed by Domenico Ragusa in :issue:`40358`.)
-
-* Add :meth:`pathlib.Path.is_junction` as a proxy to :func:`os.path.isjunction`.
- (Contributed by Charles Machalow in :gh:`99547`.)
-
-* Add *case_sensitive* optional parameter to :meth:`pathlib.Path.glob`,
- :meth:`pathlib.Path.rglob` and :meth:`pathlib.PurePath.match` for matching
- the path's case sensitivity, allowing for more precise control over the matching process.
-
dis
---
@@ -416,6 +570,22 @@ fractions
* Objects of type :class:`fractions.Fraction` now support float-style
formatting. (Contributed by Mark Dickinson in :gh:`100161`.)
+inspect
+-------
+
+* Add :func:`inspect.markcoroutinefunction` to mark sync functions that return
+ a :term:`coroutine` for use with :func:`inspect.iscoroutinefunction`.
+ (Contributed Carlton Gibson in :gh:`99247`.)
+
+* Add :func:`inspect.getasyncgenstate` and :func:`inspect.getasyncgenlocals`
+ for determining the current state of asynchronous generators.
+ (Contributed by Thomas Krennwallner in :issue:`35759`.)
+
+* The performance of :func:`inspect.getattr_static` has been considerably
+ improved. Most calls to the function should be at least 2x faster than they
+ were in Python 3.11, and some may be 6x faster or more. (Contributed by Alex
+ Waygood in :gh:`103193`.)
+
itertools
---------
@@ -423,12 +593,24 @@ itertools
tuples where the last batch may be shorter than the rest.
(Contributed by Raymond Hettinger in :gh:`98363`.)
+json
+----
+
+* Added :class:`json.AttrDict` for use with ``object_hook`` in :func:`json.load`
+ or :func:`json.loads`. This is a subclass of :class:`dict` that also supports
+ attribute style dotted access.
+ (Contributed by Raymond Hettinger in :gh:`96145`.)
+
math
----
* Added :func:`math.sumprod` for computing a sum of products.
(Contributed by Raymond Hettinger in :gh:`100485`.)
+* Extended :func:`math.nextafter` to include a *steps* argument
+ for moving up or down multiple steps at a time.
+ (By Matthias Goergens, Mark Dickinson, and Raymond Hettinger in :gh:`94906`.)
+
os
--
@@ -463,6 +645,30 @@ os.path
* Add :func:`os.path.splitroot` to split a path into a triad
``(drive, root, tail)``. (Contributed by Barney Gale in :gh:`101000`.)
+pathlib
+-------
+
+* Add support for subclassing :class:`pathlib.PurePath` and
+ :class:`~pathlib.Path`, plus their Posix- and Windows-specific variants.
+ Subclasses may override the :meth:`~pathlib.PurePath.with_segments` method
+ to pass information between path instances.
+
+* Add :meth:`~pathlib.Path.walk` for walking the directory trees and generating
+ all file or directory names within them, similar to :func:`os.walk`.
+ (Contributed by Stanislav Zmiev in :gh:`90385`.)
+
+* Add *walk_up* optional parameter to :meth:`pathlib.PurePath.relative_to`
+ to allow the insertion of ``..`` entries in the result; this behavior is
+ more consistent with :func:`os.path.relpath`.
+ (Contributed by Domenico Ragusa in :issue:`40358`.)
+
+* Add :meth:`pathlib.Path.is_junction` as a proxy to :func:`os.path.isjunction`.
+ (Contributed by Charles Machalow in :gh:`99547`.)
+
+* Add *case_sensitive* optional parameter to :meth:`pathlib.Path.glob`,
+ :meth:`pathlib.Path.rglob` and :meth:`pathlib.PurePath.match` for matching
+ the path's case sensitivity, allowing for more precise control over the matching process.
+
pdb
---
@@ -471,6 +677,15 @@ pdb
value.
(Contributed by Tian Gao in :gh:`103693`.)
+random
+------
+
+* Added :func:`random.binomialvariate`.
+ (Contributed by Raymond Hettinger in :gh:`81620`.)
+
+* Added a default of ``lamb=1.0`` to :func:`random.expovariate`.
+ (Contributed by Raymond Hettinger in :gh:`100234`.)
+
shutil
------
@@ -524,6 +739,45 @@ sqlite3
to make configuration changes to a database connection.
(Contributed by Erlend E. Aasland in :gh:`103489`.)
+statistics
+----------
+
+* Extended :func:`statistics.correlation` to include as a ``ranked`` method
+ for computing the Spearman correlation of ranked data.
+ (Contributed by Raymond Hettinger in :gh:`95861`.)
+
+sys
+---
+
+* Add :func:`sys.activate_stack_trampoline` and
+ :func:`sys.deactivate_stack_trampoline` for activating and deactivating
+ stack profiler trampolines,
+ and :func:`sys.is_stack_trampoline_active` for querying if stack profiler
+ trampolines are active.
+ (Contributed by Pablo Galindo and Christian Heimes
+ with contributions from Gregory P. Smith [Google] and Mark Shannon
+ in :gh:`96123`.)
+
+* Add :data:`sys.last_exc` which holds the last unhandled exception that
+ was raised (for post-mortem debugging use cases). Deprecate the
+ three fields that have the same information in its legacy form:
+ :data:`sys.last_type`, :data:`sys.last_value` and :data:`sys.last_traceback`.
+ (Contributed by Irit Katriel in :gh:`102778`.)
+
+* :func:`sys._current_exceptions` now returns a mapping from thread-id to an
+ exception instance, rather than to a ``(typ, exc, tb)`` tuple.
+ (Contributed by Irit Katriel in :gh:`103176`.)
+
+tempfile
+--------
+
+* The :class:`tempfile.NamedTemporaryFile` function has a new optional parameter
+ *delete_on_close* (Contributed by Evgeny Zorin in :gh:`58451`.)
+* :func:`tempfile.mkdtemp` now always returns an absolute path, even if the
+ argument provided to the *dir* parameter is a relative path.
+
+.. _whatsnew-typing-py312:
+
threading
---------
@@ -543,6 +797,14 @@ tkinter
like ``create_*()`` methods.
(Contributed by Serhiy Storchaka in :gh:`94473`.)
+tokenize
+--------
+
+* The :mod:`tokenize` module includes the changes introduced in :pep:`701`. (
+ Contributed by Marta Gómez Macías and Pablo Galindo in :gh:`102856`.)
+ See :ref:`whatsnew312-porting-to-python312` for more information on the
+ changes to the :mod:`tokenize` module.
+
types
-----
@@ -550,57 +812,9 @@ types
:ref:`user-defined-generics` when subclassed. (Contributed by
James Hilton-Balfe and Alex Waygood in :gh:`101827`.)
-unicodedata
------------
-
-* The Unicode database has been updated to version 15.0.0. (Contributed by
- Benjamin Peterson in :gh:`96734`).
-
-unittest
---------
-
-Added ``--durations`` command line option, showing the N slowest test cases::
-
- python3 -m unittest --durations=3 lib.tests.test_threading
- .....
- Slowest test durations
- ----------------------------------------------------------------------
- 1.210s test_timeout (Lib.test.test_threading.BarrierTests)
- 1.003s test_default_timeout (Lib.test.test_threading.BarrierTests)
- 0.518s test_timeout (Lib.test.test_threading.EventTests)
-
- (0.000 durations hidden. Use -v to show these durations.)
- ----------------------------------------------------------------------
- Ran 158 tests in 9.869s
-
- OK (skipped=3)
-
-(Contributed by Giampaolo Rodola in :issue:`4080`)
-
-uuid
-----
-
-* Add a :ref:`command-line interface `.
- (Contributed by Adam Chhina in :gh:`88597`.)
-
-tempfile
---------
-
-* The :class:`tempfile.NamedTemporaryFile` function has a new optional parameter
- *delete_on_close* (Contributed by Evgeny Zorin in :gh:`58451`.)
-* :func:`tempfile.mkdtemp` now always returns an absolute path, even if the
- argument provided to the *dir* parameter is a relative path.
-
-.. _whatsnew-typing-py312:
-
typing
------
-* Add :func:`typing.override`, an override decorator telling to static type
- checkers to verify that a method overrides some method or attribute of the
- same name on a base class, as per :pep:`698`. (Contributed by Steven Troxler in
- :gh:`101564`.)
-
* :func:`isinstance` checks against
:func:`runtime-checkable protocols ` now use
:func:`inspect.getattr_static` rather than :func:`hasattr` to lookup whether
@@ -645,27 +859,45 @@ typing
or more members may be slower than in Python 3.11. (Contributed by Alex
Waygood in :gh:`74690` and :gh:`103193`.)
-sys
----
+* All :data:`typing.TypedDict` and :data:`typing.NamedTuple` classes now have the
+ ``__orig_bases__`` attribute. (Contributed by Adrian Garcia Badaracco in
+ :gh:`103699`.)
-* Add :func:`sys.activate_stack_trampoline` and
- :func:`sys.deactivate_stack_trampoline` for activating and deactivating
- stack profiler trampolines,
- and :func:`sys.is_stack_trampoline_active` for querying if stack profiler
- trampolines are active.
- (Contributed by Pablo Galindo and Christian Heimes
- with contributions from Gregory P. Smith [Google] and Mark Shannon
- in :gh:`96123`.)
+* Add ``frozen_default`` parameter to :func:`typing.dataclass_transform`.
+ (Contributed by Erik De Bonte in :gh:`99957`.)
-* Add :data:`sys.last_exc` which holds the last unhandled exception that
- was raised (for post-mortem debugging use cases). Deprecate the
- three fields that have the same information in its legacy form:
- :data:`sys.last_type`, :data:`sys.last_value` and :data:`sys.last_traceback`.
- (Contributed by Irit Katriel in :gh:`102778`.)
+unicodedata
+-----------
-* :func:`sys._current_exceptions` now returns a mapping from thread-id to an
- exception instance, rather than to a ``(typ, exc, tb)`` tuple.
- (Contributed by Irit Katriel in :gh:`103176`.)
+* The Unicode database has been updated to version 15.0.0. (Contributed by
+ Benjamin Peterson in :gh:`96734`).
+
+unittest
+--------
+
+Added ``--durations`` command line option, showing the N slowest test cases::
+
+ python3 -m unittest --durations=3 lib.tests.test_threading
+ .....
+ Slowest test durations
+ ----------------------------------------------------------------------
+ 1.210s test_timeout (Lib.test.test_threading.BarrierTests)
+ 1.003s test_default_timeout (Lib.test.test_threading.BarrierTests)
+ 0.518s test_timeout (Lib.test.test_threading.EventTests)
+
+ (0.000 durations hidden. Use -v to show these durations.)
+ ----------------------------------------------------------------------
+ Ran 158 tests in 9.869s
+
+ OK (skipped=3)
+
+(Contributed by Giampaolo Rodola in :issue:`4080`)
+
+uuid
+----
+
+* Add a :ref:`command-line interface `.
+ (Contributed by Adam Chhina in :gh:`88597`.)
Optimizations
@@ -687,18 +919,38 @@ Optimizations
* Speed up :class:`asyncio.Task` creation by deferring expensive string formatting.
(Contributed by Itamar O in :gh:`103793`.)
+* The :func:`tokenize.tokenize` and :func:`tokenize.generate_tokens` functions are
+ up to 64% faster as a side effect of the changes required to cover :pep:`701` in
+ the :mod:`tokenize` module. (Contributed by Marta Gómez Macías and Pablo Galindo
+ in :gh:`102856`.)
+
+* Speed up :func:`super` method calls and attribute loads via the
+ new :opcode:`LOAD_SUPER_ATTR` instruction. (Contributed by Carl Meyer and
+ Vladimir Matveev in :gh:`103497`.)
+
CPython bytecode changes
========================
-* Removed the :opcode:`LOAD_METHOD` instruction. It has been merged into
+* Remove the :opcode:`LOAD_METHOD` instruction. It has been merged into
:opcode:`LOAD_ATTR`. :opcode:`LOAD_ATTR` will now behave like the old
:opcode:`LOAD_METHOD` instruction if the low bit of its oparg is set.
(Contributed by Ken Jin in :gh:`93429`.)
-* Removed the :opcode:`!JUMP_IF_FALSE_OR_POP` and :opcode:`!JUMP_IF_TRUE_OR_POP`
+* Remove the :opcode:`!JUMP_IF_FALSE_OR_POP` and :opcode:`!JUMP_IF_TRUE_OR_POP`
instructions. (Contributed by Irit Katriel in :gh:`102859`.)
+* Add the :opcode:`LOAD_FAST_AND_CLEAR` instruction as part of the
+ implementation of :pep:`709`. (Contributed by Carl Meyer in :gh:`101441`.)
+
+* Add the :opcode:`LOAD_FROM_DICT_OR_DEREF`, :opcode:`LOAD_FROM_DICT_OR_GLOBALS`,
+ and :opcode:`LOAD_LOCALS` opcodes as part of the implementation of :pep:`695`.
+ Remove the :opcode:`!LOAD_CLASSDEREF` opcode, which can be replaced with
+ :opcode:`LOAD_LOCALS` plus :opcode:`LOAD_FROM_DICT_OR_DEREF`. (Contributed
+ by Jelle Zijlstra in :gh:`103764`.)
+
+* Add the :opcode:`LOAD_SUPER_ATTR` instruction. (Contributed by Carl Meyer and
+ Vladimir Matveev in :gh:`103497`.)
Demos and Tools
===============
@@ -829,9 +1081,11 @@ APIs:
* :func:`locale.getdefaultlocale` (:gh:`90817`)
* :meth:`!turtle.RawTurtle.settiltangle` (:gh:`50096`)
* :func:`!unittest.findTestCases` (:gh:`50096`)
-* :func:`!unittest.makeSuite` (:gh:`50096`)
* :func:`!unittest.getTestCaseNames` (:gh:`50096`)
+* :func:`!unittest.makeSuite` (:gh:`50096`)
+* :meth:`!unittest.TestProgram.usageExit` (:gh:`67048`)
* :class:`!webbrowser.MacOSX` (:gh:`86421`)
+* :class:`classmethod` descriptor chaining (:gh:`89519`)
Pending Removal in Python 3.14
------------------------------
@@ -882,6 +1136,12 @@ Pending Removal in Python 3.14
functions that have been deprecated since Python 2 but only gained a
proper :exc:`DeprecationWarning` in 3.12. Remove them in 3.14.
+* :mod:`itertools` had undocumented, inefficient, historically buggy,
+ and inconsistent support for copy, deepcopy, and pickle operations.
+ This will be removed in 3.14 for a significant reduction in code
+ volume and maintenance burden.
+ (Contributed by Raymond Hettinger in :gh:`101588`.)
+
* Accessing ``co_lnotab`` was deprecated in :pep:`626` since 3.10
and was planned to be removed in 3.12
but it only got a proper :exc:`DeprecationWarning` in 3.12.
@@ -1102,8 +1362,8 @@ Removed
* Support for ``find_loader()`` and ``find_module()`` APIs have been
removed. (Contributed by Barry Warsaw in :gh:`98040`.)
- * ``importlib.abc.Finder``, ``pkg.ImpImporter``, and ``pkg.ImpLoader`` have
- been removed. (Contributed by Barry Warsaw in :gh:`98040`.)
+ * ``importlib.abc.Finder``, ``pkgutil.ImpImporter``, and ``pkgutil.ImpLoader``
+ have been removed. (Contributed by Barry Warsaw in :gh:`98040`.)
* The :mod:`!imp` module has been removed. (Contributed by Barry Warsaw in
:gh:`98040`.)
@@ -1130,6 +1390,8 @@ Removed
Iceape, Firebird, and Firefox versions 35 and below (:gh:`102871`).
+.. _whatsnew312-porting-to-python312:
+
Porting to Python 3.12
======================
@@ -1201,6 +1463,40 @@ Changes in the Python API
that may be surprising or dangerous.
See :ref:`tarfile-extraction-filter` for details.
+* The output of the :func:`tokenize.tokenize` and :func:`tokenize.generate_tokens`
+ functions is now changed due to the changes introduced in :pep:`701`. This
+ means that ``STRING`` tokens are not emitted any more for f-strings and the
+ tokens described in :pep:`701` are now produced instead: ``FSTRING_START``,
+ ``FSRING_MIDDLE`` and ``FSTRING_END`` are now emitted for f-string "string"
+ parts in addition to the appropriate tokens for the tokenization in the
+ expression components. For example for the f-string ``f"start {1+1} end"``
+ the old version of the tokenizer emitted::
+
+ 1,0-1,18: STRING 'f"start {1+1} end"'
+
+ while the new version emits::
+
+ 1,0-1,2: FSTRING_START 'f"'
+ 1,2-1,8: FSTRING_MIDDLE 'start '
+ 1,8-1,9: OP '{'
+ 1,9-1,10: NUMBER '1'
+ 1,10-1,11: OP '+'
+ 1,11-1,12: NUMBER '1'
+ 1,12-1,13: OP '}'
+ 1,13-1,17: FSTRING_MIDDLE ' end'
+ 1,17-1,18: FSTRING_END '"'
+
+ Additionally, there may be some minor behavioral changes as a consecuence of the
+ changes required to support :pep:`701`. Some of these changes include:
+
+ * Some final ``DEDENT`` tokens are now emitted within the bounds of the
+ input. This means that for a file containing 3 lines, the old version of the
+ tokenizer returned a ``DEDENT`` token in line 4 whilst the new version returns
+ the token in line 3.
+
+ * The ``type`` attribute of the tokens emitted when tokenizing some invalid Python
+ characters such as ``!`` has changed from ``ERRORTOKEN`` to ``OP``.
+
Build Changes
=============
@@ -1235,6 +1531,10 @@ Build Changes
* ``PYTHON_FOR_REGEN`` now require Python 3.10 or newer.
+* Autoconf 2.71 and aclocal 1.16.4 is now required to regenerate
+ :file:`!configure`.
+ (Contributed by Christian Heimes in :gh:`89886`.)
+
C API Changes
=============
@@ -1457,7 +1757,7 @@ Porting to Python 3.12
before storing it. (Contributed by Mark Shannon in :gh:`101578`.)
* ``_Py_RefTotal`` is no longer authoritative and only kept around
- for ABI compabitility. Note that it is an internal global and only
+ for ABI compatibility. Note that it is an internal global and only
available on debug builds. If you happen to be using it then you'll
need to start using ``_Py_GetGlobalRefTotal()``.
@@ -1476,6 +1776,15 @@ Porting to Python 3.12
Note that :c:func:`PyType_FromMetaclass` (added in Python 3.12)
already disallows creating classes whose metaclass overrides ``tp_new``.
+* :c:var:`PyOS_InputHook` and :c:var:`PyOS_ReadlineFunctionPointer` are no
+ longer called in :ref:`subinterpreters `. This is
+ because clients generally rely on process-wide global state (since these
+ callbacks have no way of recovering extension module state).
+
+ This also avoids situations where extensions may find themselves running in a
+ subinterpreter that they don't support (or haven't yet been loaded in). See
+ :gh:`104668` for more info.
+
Deprecated
----------
diff --git a/Grammar/python.gram b/Grammar/python.gram
index e6a983429e39d8..6b2a46aff0dcf0 100644
--- a/Grammar/python.gram
+++ b/Grammar/python.gram
@@ -254,10 +254,10 @@ class_def[stmt_ty]:
class_def_raw[stmt_ty]:
| invalid_class_def_raw
| 'class' a=NAME t=[type_params] b=['(' z=[arguments] ')' { z }] ':' c=block {
- _PyAST_ClassDef(a->v.Name.id, t,
+ _PyAST_ClassDef(a->v.Name.id,
(b) ? ((expr_ty) b)->v.Call.args : NULL,
(b) ? ((expr_ty) b)->v.Call.keywords : NULL,
- c, NULL, EXTRA) }
+ c, NULL, t, EXTRA) }
# Function definitions
# --------------------
@@ -269,17 +269,17 @@ function_def[stmt_ty]:
function_def_raw[stmt_ty]:
| invalid_def_raw
| 'def' n=NAME t=[type_params] &&'(' params=[params] ')' a=['->' z=expression { z }] &&':' tc=[func_type_comment] b=block {
- _PyAST_FunctionDef(n->v.Name.id, t,
+ _PyAST_FunctionDef(n->v.Name.id,
(params) ? params : CHECK(arguments_ty, _PyPegen_empty_arguments(p)),
- b, NULL, a, NEW_TYPE_COMMENT(p, tc), EXTRA) }
+ b, NULL, a, NEW_TYPE_COMMENT(p, tc), t, EXTRA) }
| ASYNC 'def' n=NAME t=[type_params] &&'(' params=[params] ')' a=['->' z=expression { z }] &&':' tc=[func_type_comment] b=block {
CHECK_VERSION(
stmt_ty,
5,
"Async functions are",
- _PyAST_AsyncFunctionDef(n->v.Name.id, t,
+ _PyAST_AsyncFunctionDef(n->v.Name.id,
(params) ? params : CHECK(arguments_ty, _PyPegen_empty_arguments(p)),
- b, NULL, a, NEW_TYPE_COMMENT(p, tc), EXTRA)
+ b, NULL, a, NEW_TYPE_COMMENT(p, tc), t, EXTRA)
) }
# Function parameters
@@ -923,7 +923,7 @@ fstring_conversion[ResultTokenWithMetadata*]:
fstring_full_format_spec[ResultTokenWithMetadata*]:
| colon=':' spec=fstring_format_spec* { _PyPegen_setup_full_format_spec(p, colon, (asdl_expr_seq *) spec, EXTRA) }
fstring_format_spec[expr_ty]:
- | t=FSTRING_MIDDLE { _PyPegen_constant_from_token(p, t) }
+ | t=FSTRING_MIDDLE { _PyPegen_decoded_constant_from_token(p, t) }
| fstring_replacement_field
fstring[expr_ty]:
| a=FSTRING_START b=fstring_middle* c=FSTRING_END { _PyPegen_joined_str(p, a, (asdl_expr_seq*)b, c) }
diff --git a/Include/cpython/longintrepr.h b/Include/cpython/longintrepr.h
index 0f569935fff14a..692c69ba76db2f 100644
--- a/Include/cpython/longintrepr.h
+++ b/Include/cpython/longintrepr.h
@@ -104,9 +104,10 @@ _PyLong_FromDigits(int negative, Py_ssize_t digit_count, digit *digits);
#define _PyLong_SIGN_MASK 3
#define _PyLong_NON_SIZE_BITS 3
+
static inline int
_PyLong_IsCompact(const PyLongObject* op) {
- assert(PyLong_Check(op));
+ assert(PyType_HasFeature((op)->ob_base.ob_type, Py_TPFLAGS_LONG_SUBCLASS));
return op->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS);
}
@@ -115,7 +116,7 @@ _PyLong_IsCompact(const PyLongObject* op) {
static inline Py_ssize_t
_PyLong_CompactValue(const PyLongObject *op)
{
- assert(PyLong_Check(op));
+ assert(PyType_HasFeature((op)->ob_base.ob_type, Py_TPFLAGS_LONG_SUBCLASS));
assert(PyUnstable_Long_IsCompact(op));
Py_ssize_t sign = 1 - (op->long_value.lv_tag & _PyLong_SIGN_MASK);
return sign * (Py_ssize_t)op->long_value.ob_digit[0];
diff --git a/Include/cpython/pyerrors.h b/Include/cpython/pyerrors.h
index 758804ade2baa7..156665cbdb1ba4 100644
--- a/Include/cpython/pyerrors.h
+++ b/Include/cpython/pyerrors.h
@@ -116,6 +116,10 @@ PyAPI_FUNC(int) _PyException_AddNote(
PyObject *exc,
PyObject *note);
+PyAPI_FUNC(PyObject*) PyUnstable_Exc_PrepReraiseStar(
+ PyObject *orig,
+ PyObject *excs);
+
/* In signalmodule.c */
int PySignal_SetWakeupFd(int fd);
diff --git a/Include/internal/pycore_ast.h b/Include/internal/pycore_ast.h
index 06a40239a2473a..b568902bb1e381 100644
--- a/Include/internal/pycore_ast.h
+++ b/Include/internal/pycore_ast.h
@@ -198,31 +198,31 @@ struct _stmt {
union {
struct {
identifier name;
- asdl_type_param_seq *type_params;
arguments_ty args;
asdl_stmt_seq *body;
asdl_expr_seq *decorator_list;
expr_ty returns;
string type_comment;
+ asdl_type_param_seq *type_params;
} FunctionDef;
struct {
identifier name;
- asdl_type_param_seq *type_params;
arguments_ty args;
asdl_stmt_seq *body;
asdl_expr_seq *decorator_list;
expr_ty returns;
string type_comment;
+ asdl_type_param_seq *type_params;
} AsyncFunctionDef;
struct {
identifier name;
- asdl_type_param_seq *type_params;
asdl_expr_seq *bases;
asdl_keyword_seq *keywords;
asdl_stmt_seq *body;
asdl_expr_seq *decorator_list;
+ asdl_type_param_seq *type_params;
} ClassDef;
struct {
@@ -682,22 +682,22 @@ mod_ty _PyAST_Interactive(asdl_stmt_seq * body, PyArena *arena);
mod_ty _PyAST_Expression(expr_ty body, PyArena *arena);
mod_ty _PyAST_FunctionType(asdl_expr_seq * argtypes, expr_ty returns, PyArena
*arena);
-stmt_ty _PyAST_FunctionDef(identifier name, asdl_type_param_seq * type_params,
- arguments_ty args, asdl_stmt_seq * body,
- asdl_expr_seq * decorator_list, expr_ty returns,
- string type_comment, int lineno, int col_offset, int
+stmt_ty _PyAST_FunctionDef(identifier name, arguments_ty args, asdl_stmt_seq *
+ body, asdl_expr_seq * decorator_list, expr_ty
+ returns, string type_comment, asdl_type_param_seq *
+ type_params, int lineno, int col_offset, int
end_lineno, int end_col_offset, PyArena *arena);
-stmt_ty _PyAST_AsyncFunctionDef(identifier name, asdl_type_param_seq *
- type_params, arguments_ty args, asdl_stmt_seq *
- body, asdl_expr_seq * decorator_list, expr_ty
- returns, string type_comment, int lineno, int
- col_offset, int end_lineno, int end_col_offset,
- PyArena *arena);
-stmt_ty _PyAST_ClassDef(identifier name, asdl_type_param_seq * type_params,
- asdl_expr_seq * bases, asdl_keyword_seq * keywords,
- asdl_stmt_seq * body, asdl_expr_seq * decorator_list,
- int lineno, int col_offset, int end_lineno, int
- end_col_offset, PyArena *arena);
+stmt_ty _PyAST_AsyncFunctionDef(identifier name, arguments_ty args,
+ asdl_stmt_seq * body, asdl_expr_seq *
+ decorator_list, expr_ty returns, string
+ type_comment, asdl_type_param_seq *
+ type_params, int lineno, int col_offset, int
+ end_lineno, int end_col_offset, PyArena *arena);
+stmt_ty _PyAST_ClassDef(identifier name, asdl_expr_seq * bases,
+ asdl_keyword_seq * keywords, asdl_stmt_seq * body,
+ asdl_expr_seq * decorator_list, asdl_type_param_seq *
+ type_params, int lineno, int col_offset, int
+ end_lineno, int end_col_offset, PyArena *arena);
stmt_ty _PyAST_Return(expr_ty value, int lineno, int col_offset, int
end_lineno, int end_col_offset, PyArena *arena);
stmt_ty _PyAST_Delete(asdl_expr_seq * targets, int lineno, int col_offset, int
diff --git a/Include/internal/pycore_ceval.h b/Include/internal/pycore_ceval.h
index 3c8b368bd2af4e..ca2703781de4b0 100644
--- a/Include/internal/pycore_ceval.h
+++ b/Include/internal/pycore_ceval.h
@@ -100,7 +100,7 @@ extern PyStatus _PyEval_InitGIL(PyThreadState *tstate, int own_gil);
extern void _PyEval_FiniGIL(PyInterpreterState *interp);
extern void _PyEval_AcquireLock(PyThreadState *tstate);
-extern void _PyEval_ReleaseLock(PyThreadState *tstate);
+extern void _PyEval_ReleaseLock(PyInterpreterState *, PyThreadState *);
extern PyThreadState * _PyThreadState_SwapNoGIL(PyThreadState *);
extern void _PyEval_DeactivateOpCache(void);
diff --git a/Include/internal/pycore_global_objects_fini_generated.h b/Include/internal/pycore_global_objects_fini_generated.h
index 5a1993eac23a8a..d5819fcd1c5038 100644
--- a/Include/internal/pycore_global_objects_fini_generated.h
+++ b/Include/internal/pycore_global_objects_fini_generated.h
@@ -916,6 +916,7 @@ _PyStaticObjects_CheckRefcnt(PyInterpreterState *interp) {
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(exc_value));
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(excepthook));
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(exception));
+ _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(existing_file_name));
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(exp));
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(extend));
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(extra_tokens));
@@ -1068,6 +1069,7 @@ _PyStaticObjects_CheckRefcnt(PyInterpreterState *interp) {
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(namespaces));
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(narg));
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(ndigits));
+ _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(new_file_name));
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(new_limit));
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(newline));
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(newlines));
@@ -1122,6 +1124,7 @@ _PyStaticObjects_CheckRefcnt(PyInterpreterState *interp) {
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(priority));
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(progress));
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(progress_handler));
+ _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(progress_routine));
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(proto));
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(protocol));
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(ps1));
diff --git a/Include/internal/pycore_global_strings.h b/Include/internal/pycore_global_strings.h
index 61967877ab4ac8..0c84999cbf8127 100644
--- a/Include/internal/pycore_global_strings.h
+++ b/Include/internal/pycore_global_strings.h
@@ -404,6 +404,7 @@ struct _Py_global_strings {
STRUCT_FOR_ID(exc_value)
STRUCT_FOR_ID(excepthook)
STRUCT_FOR_ID(exception)
+ STRUCT_FOR_ID(existing_file_name)
STRUCT_FOR_ID(exp)
STRUCT_FOR_ID(extend)
STRUCT_FOR_ID(extra_tokens)
@@ -556,6 +557,7 @@ struct _Py_global_strings {
STRUCT_FOR_ID(namespaces)
STRUCT_FOR_ID(narg)
STRUCT_FOR_ID(ndigits)
+ STRUCT_FOR_ID(new_file_name)
STRUCT_FOR_ID(new_limit)
STRUCT_FOR_ID(newline)
STRUCT_FOR_ID(newlines)
@@ -610,6 +612,7 @@ struct _Py_global_strings {
STRUCT_FOR_ID(priority)
STRUCT_FOR_ID(progress)
STRUCT_FOR_ID(progress_handler)
+ STRUCT_FOR_ID(progress_routine)
STRUCT_FOR_ID(proto)
STRUCT_FOR_ID(protocol)
STRUCT_FOR_ID(ps1)
diff --git a/Include/internal/pycore_object.h b/Include/internal/pycore_object.h
index 500b3eece68055..0981d1122fec54 100644
--- a/Include/internal/pycore_object.h
+++ b/Include/internal/pycore_object.h
@@ -76,6 +76,21 @@ static inline void _Py_SetImmortal(PyObject *op)
}
#define _Py_SetImmortal(op) _Py_SetImmortal(_PyObject_CAST(op))
+/* _Py_ClearImmortal() should only be used during runtime finalization. */
+static inline void _Py_ClearImmortal(PyObject *op)
+{
+ if (op) {
+ assert(op->ob_refcnt == _Py_IMMORTAL_REFCNT);
+ op->ob_refcnt = 1;
+ Py_DECREF(op);
+ }
+}
+#define _Py_ClearImmortal(op) \
+ do { \
+ _Py_ClearImmortal(_PyObject_CAST(op)); \
+ op = NULL; \
+ } while (0)
+
static inline void
_Py_DECREF_SPECIALIZED(PyObject *op, const destructor destruct)
{
diff --git a/Include/internal/pycore_runtime_init_generated.h b/Include/internal/pycore_runtime_init_generated.h
index 59ec49af358f2e..07f237b2905864 100644
--- a/Include/internal/pycore_runtime_init_generated.h
+++ b/Include/internal/pycore_runtime_init_generated.h
@@ -910,6 +910,7 @@ extern "C" {
INIT_ID(exc_value), \
INIT_ID(excepthook), \
INIT_ID(exception), \
+ INIT_ID(existing_file_name), \
INIT_ID(exp), \
INIT_ID(extend), \
INIT_ID(extra_tokens), \
@@ -1062,6 +1063,7 @@ extern "C" {
INIT_ID(namespaces), \
INIT_ID(narg), \
INIT_ID(ndigits), \
+ INIT_ID(new_file_name), \
INIT_ID(new_limit), \
INIT_ID(newline), \
INIT_ID(newlines), \
@@ -1116,6 +1118,7 @@ extern "C" {
INIT_ID(priority), \
INIT_ID(progress), \
INIT_ID(progress_handler), \
+ INIT_ID(progress_routine), \
INIT_ID(proto), \
INIT_ID(protocol), \
INIT_ID(ps1), \
diff --git a/Include/internal/pycore_typeobject.h b/Include/internal/pycore_typeobject.h
index c7d00002fbc63c..8f3fbbcdb5ffcd 100644
--- a/Include/internal/pycore_typeobject.h
+++ b/Include/internal/pycore_typeobject.h
@@ -46,11 +46,9 @@ typedef struct {
PyTypeObject *type;
int readying;
int ready;
- // XXX tp_dict, tp_bases, and tp_mro can probably be statically
- // allocated, instead of dynamically and stored on the interpreter.
+ // XXX tp_dict can probably be statically allocated,
+ // instead of dynamically and stored on the interpreter.
PyObject *tp_dict;
- PyObject *tp_bases;
- PyObject *tp_mro;
PyObject *tp_subclasses;
/* We never clean up weakrefs for static builtin types since
they will effectively never get triggered. However, there
diff --git a/Include/internal/pycore_unicodeobject_generated.h b/Include/internal/pycore_unicodeobject_generated.h
index 8f8a067e4c1808..9b470094b7afe2 100644
--- a/Include/internal/pycore_unicodeobject_generated.h
+++ b/Include/internal/pycore_unicodeobject_generated.h
@@ -1053,6 +1053,9 @@ _PyUnicode_InitStaticStrings(PyInterpreterState *interp) {
string = &_Py_ID(exception);
assert(_PyUnicode_CheckConsistency(string, 1));
_PyUnicode_InternInPlace(interp, &string);
+ string = &_Py_ID(existing_file_name);
+ assert(_PyUnicode_CheckConsistency(string, 1));
+ _PyUnicode_InternInPlace(interp, &string);
string = &_Py_ID(exp);
assert(_PyUnicode_CheckConsistency(string, 1));
_PyUnicode_InternInPlace(interp, &string);
@@ -1509,6 +1512,9 @@ _PyUnicode_InitStaticStrings(PyInterpreterState *interp) {
string = &_Py_ID(ndigits);
assert(_PyUnicode_CheckConsistency(string, 1));
_PyUnicode_InternInPlace(interp, &string);
+ string = &_Py_ID(new_file_name);
+ assert(_PyUnicode_CheckConsistency(string, 1));
+ _PyUnicode_InternInPlace(interp, &string);
string = &_Py_ID(new_limit);
assert(_PyUnicode_CheckConsistency(string, 1));
_PyUnicode_InternInPlace(interp, &string);
@@ -1671,6 +1677,9 @@ _PyUnicode_InitStaticStrings(PyInterpreterState *interp) {
string = &_Py_ID(progress_handler);
assert(_PyUnicode_CheckConsistency(string, 1));
_PyUnicode_InternInPlace(interp, &string);
+ string = &_Py_ID(progress_routine);
+ assert(_PyUnicode_CheckConsistency(string, 1));
+ _PyUnicode_InternInPlace(interp, &string);
string = &_Py_ID(proto);
assert(_PyUnicode_CheckConsistency(string, 1));
_PyUnicode_InternInPlace(interp, &string);
diff --git a/Include/object.h b/Include/object.h
index 81aeb2d8bd5a69..c2fee85a2c38f6 100644
--- a/Include/object.h
+++ b/Include/object.h
@@ -590,7 +590,7 @@ you can count such references to the type object.)
extern Py_ssize_t _Py_RefTotal;
# define _Py_INC_REFTOTAL() _Py_RefTotal++
# define _Py_DEC_REFTOTAL() _Py_RefTotal--
-# elif !defined(Py_LIMITED_API) || Py_LIMITED_API+0 > 0x030C0000
+# elif !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x030C0000
PyAPI_FUNC(void) _Py_IncRefTotal_DO_NOT_USE_THIS(void);
PyAPI_FUNC(void) _Py_DecRefTotal_DO_NOT_USE_THIS(void);
# define _Py_INC_REFTOTAL() _Py_IncRefTotal_DO_NOT_USE_THIS()
diff --git a/Include/patchlevel.h b/Include/patchlevel.h
index 3de9ed9296a47b..d71bef922e5b2a 100644
--- a/Include/patchlevel.h
+++ b/Include/patchlevel.h
@@ -23,7 +23,7 @@
#define PY_RELEASE_SERIAL 1
/* Version as a string */
-#define PY_VERSION "3.12.0b1"
+#define PY_VERSION "3.12.0b1+"
/*--end constants--*/
/* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2.
diff --git a/Lib/concurrent/futures/thread.py b/Lib/concurrent/futures/thread.py
index 51c942f51abd37..3b3a36a5093336 100644
--- a/Lib/concurrent/futures/thread.py
+++ b/Lib/concurrent/futures/thread.py
@@ -43,7 +43,7 @@ def _python_exit():
after_in_parent=_global_shutdown_lock.release)
-class _WorkItem(object):
+class _WorkItem:
def __init__(self, future, fn, args, kwargs):
self.future = future
self.fn = fn
@@ -78,17 +78,20 @@ def _worker(executor_reference, work_queue, initializer, initargs):
return
try:
while True:
- work_item = work_queue.get(block=True)
- if work_item is not None:
- work_item.run()
- # Delete references to object. See issue16284
- del work_item
-
- # attempt to increment idle count
+ try:
+ work_item = work_queue.get_nowait()
+ except queue.Empty:
+ # attempt to increment idle count if queue is empty
executor = executor_reference()
if executor is not None:
executor._idle_semaphore.release()
del executor
+ work_item = work_queue.get(block=True)
+
+ if work_item is not None:
+ work_item.run()
+ # Delete references to object. See GH-60488
+ del work_item
continue
executor = executor_reference()
diff --git a/Lib/enum.py b/Lib/enum.py
index 6e497f7ef6a7de..bb71c84bd46373 100644
--- a/Lib/enum.py
+++ b/Lib/enum.py
@@ -1185,7 +1185,7 @@ def _generate_next_value_(name, start, count, last_values):
DeprecationWarning,
stacklevel=3,
)
- for v in last_values:
+ for v in reversed(last_values):
try:
return v + 1
except TypeError:
diff --git a/Lib/http/client.py b/Lib/http/client.py
index 59a9fd72b4722f..3d98e4eb54bb45 100644
--- a/Lib/http/client.py
+++ b/Lib/http/client.py
@@ -1024,7 +1024,7 @@ def send(self, data):
print("send:", repr(data))
if hasattr(data, "read") :
if self.debuglevel > 0:
- print("sendIng a read()able")
+ print("sending a readable")
encode = self._is_textIO(data)
if encode and self.debuglevel > 0:
print("encoding file using iso-8859-1")
@@ -1054,7 +1054,7 @@ def _output(self, s):
def _read_readable(self, readable):
if self.debuglevel > 0:
- print("sendIng a read()able")
+ print("reading a readable")
encode = self._is_textIO(readable)
if encode and self.debuglevel > 0:
print("encoding file using iso-8859-1")
diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt
index 553b932aa6b6bc..f258797c6e0fb3 100644
--- a/Lib/idlelib/NEWS.txt
+++ b/Lib/idlelib/NEWS.txt
@@ -4,6 +4,9 @@ Released on 2023-10-02
=========================
+gh-104719: Remove IDLE's modification of tokenize.tabsize and test
+other uses of tokenize data and methods.
+
gh-104499: Fix completions for Tk Aqua 8.7 (currently blank).
gh-104486: Make About print both tcl and tk versions if different,
diff --git a/Lib/idlelib/editor.py b/Lib/idlelib/editor.py
index df36be8766016f..69b27d0683a104 100644
--- a/Lib/idlelib/editor.py
+++ b/Lib/idlelib/editor.py
@@ -1571,7 +1571,7 @@ def reindent_to(self, column):
# blocks are found).
def guess_indent(self):
- opener, indented = IndentSearcher(self.text, self.tabwidth).run()
+ opener, indented = IndentSearcher(self.text).run()
if opener and indented:
raw, indentsmall = get_line_indent(opener, self.tabwidth)
raw, indentlarge = get_line_indent(indented, self.tabwidth)
@@ -1609,15 +1609,10 @@ def get_line_indent(line, tabwidth):
class IndentSearcher:
+ "Manage initial indent guess, returned by run method."
- # .run() chews over the Text widget, looking for a block opener
- # and the stmt following it. Returns a pair,
- # (line containing block opener, line containing stmt)
- # Either or both may be None.
-
- def __init__(self, text, tabwidth):
+ def __init__(self, text):
self.text = text
- self.tabwidth = tabwidth
self.i = self.finished = 0
self.blkopenline = self.indentedline = None
@@ -1633,7 +1628,8 @@ def readline(self):
def tokeneater(self, type, token, start, end, line,
INDENT=tokenize.INDENT,
NAME=tokenize.NAME,
- OPENERS=('class', 'def', 'for', 'if', 'try', 'while')):
+ OPENERS=('class', 'def', 'for', 'if', 'match', 'try',
+ 'while', 'with')):
if self.finished:
pass
elif type == NAME and token in OPENERS:
@@ -1643,6 +1639,10 @@ def tokeneater(self, type, token, start, end, line,
self.finished = 1
def run(self):
+ """Return 2 lines containing block opener and and indent.
+
+ Either the indent line or both may be None.
+ """
try:
tokens = tokenize.generate_tokens(self.readline)
for token in tokens:
@@ -1654,6 +1654,7 @@ def run(self):
### end autoindent code ###
+
def prepstr(s):
"""Extract the underscore from a string.
diff --git a/Lib/idlelib/idle_test/test_editor.py b/Lib/idlelib/idle_test/test_editor.py
index fdb47abf43fb77..9296a6d235fbbe 100644
--- a/Lib/idlelib/idle_test/test_editor.py
+++ b/Lib/idlelib/idle_test/test_editor.py
@@ -1,10 +1,10 @@
-"Test editor, coverage 35%."
+"Test editor, coverage 53%."
from idlelib import editor
import unittest
from collections import namedtuple
from test.support import requires
-from tkinter import Tk
+from tkinter import Tk, Text
Editor = editor.EditorWindow
@@ -31,7 +31,7 @@ def test_init(self):
e._close()
-class TestGetLineIndent(unittest.TestCase):
+class GetLineIndentTest(unittest.TestCase):
def test_empty_lines(self):
for tabwidth in [1, 2, 4, 6, 8]:
for line in ['', '\n']:
@@ -181,6 +181,36 @@ def test_indent_and_newline_event(self):
eq(get('1.0', 'end'), ' def f1(self, a,\n \n return a + b\n')
+class IndentSearcherTest(unittest.TestCase):
+
+ @classmethod
+ def setUpClass(cls):
+ requires('gui')
+ cls.root = Tk()
+ cls.root.withdraw()
+ cls.text = Text(cls.root)
+
+ @classmethod
+ def tearDownClass(cls):
+ cls.root.destroy()
+ del cls.root
+
+ def test_searcher(self):
+ text = self.text
+ searcher = (self.text)
+ test_info = (# text, (block, indent))
+ ("", (None, None)),
+ ("[1,", (None, None)), # TokenError
+ ("if 1:\n", ('if 1:\n', None)),
+ ("if 1:\n 2\n 3\n", ('if 1:\n', ' 2\n')),
+ )
+ for code, expected_pair in test_info:
+ with self.subTest(code=code):
+ insert(text, code)
+ actual_pair = editor.IndentSearcher(text).run()
+ self.assertEqual(actual_pair, expected_pair)
+
+
class RMenuTest(unittest.TestCase):
@classmethod
diff --git a/Lib/idlelib/idle_test/test_iomenu.py b/Lib/idlelib/idle_test/test_iomenu.py
index 2fb836dba21672..e0642cf0cabef0 100644
--- a/Lib/idlelib/idle_test/test_iomenu.py
+++ b/Lib/idlelib/idle_test/test_iomenu.py
@@ -8,6 +8,12 @@
from idlelib import util
from idlelib.idle_test.mock_idle import Func
+# Fail if either tokenize.open and t.detect_encoding does not exist.
+# These are used in loadfile and encode.
+# Also used in pyshell.MI.execfile and runscript.tabnanny.
+from tokenize import open, detect_encoding
+# Remove when we have proper tests that use both.
+
class IOBindingTest(unittest.TestCase):
diff --git a/Lib/inspect.py b/Lib/inspect.py
index 7709a95003efbd..a550202bb0d49b 100644
--- a/Lib/inspect.py
+++ b/Lib/inspect.py
@@ -1242,6 +1242,14 @@ def getblock(lines):
blockfinder.tokeneater(*_token)
except (EndOfBlock, IndentationError):
pass
+ except SyntaxError as e:
+ if "unmatched" not in e.msg:
+ raise e from None
+ _, *_token_info = _token
+ try:
+ blockfinder.tokeneater(tokenize.NEWLINE, *_token_info)
+ except (EndOfBlock, IndentationError):
+ pass
return lines[:blockfinder.last]
def getsourcelines(object):
@@ -2195,7 +2203,7 @@ def _signature_strip_non_python_syntax(signature):
add(string)
if (string == ','):
add(' ')
- clean_signature = ''.join(text).strip()
+ clean_signature = ''.join(text).strip().replace("\n", "")
return clean_signature, self_parameter
@@ -2573,17 +2581,18 @@ def _signature_from_callable(obj, *,
factory_method = None
new = _signature_get_user_defined_method(obj, '__new__')
init = _signature_get_user_defined_method(obj, '__init__')
- # Now we check if the 'obj' class has an own '__new__' method
- if '__new__' in obj.__dict__:
- factory_method = new
- # or an own '__init__' method
- elif '__init__' in obj.__dict__:
- factory_method = init
- # If not, we take inherited '__new__' or '__init__', if present
- elif new is not None:
- factory_method = new
- elif init is not None:
- factory_method = init
+
+ # Go through the MRO and see if any class has user-defined
+ # pure Python __new__ or __init__ method
+ for base in obj.__mro__:
+ # Now we check if the 'obj' class has an own '__new__' method
+ if new is not None and '__new__' in base.__dict__:
+ factory_method = new
+ break
+ # or an own '__init__' method
+ elif init is not None and '__init__' in base.__dict__:
+ factory_method = init
+ break
if factory_method is not None:
sig = _get_signature_of(factory_method)
diff --git a/Lib/ntpath.py b/Lib/ntpath.py
index 0f3674fe11eecd..dadcdc0c495da1 100644
--- a/Lib/ntpath.py
+++ b/Lib/ntpath.py
@@ -867,3 +867,19 @@ def commonpath(paths):
except ImportError:
# Use genericpath.* as imported above
pass
+
+
+try:
+ from nt import _path_isdevdrive
+except ImportError:
+ def isdevdrive(path):
+ """Determines whether the specified path is on a Windows Dev Drive."""
+ # Never a Dev Drive
+ return False
+else:
+ def isdevdrive(path):
+ """Determines whether the specified path is on a Windows Dev Drive."""
+ try:
+ return _path_isdevdrive(abspath(path))
+ except OSError:
+ return False
diff --git a/Lib/pathlib.py b/Lib/pathlib.py
index 3d68c161603d08..29517e4c74db1c 100644
--- a/Lib/pathlib.py
+++ b/Lib/pathlib.py
@@ -54,6 +54,7 @@ def _ignore_error(exception):
getattr(exception, 'winerror', None) in _IGNORED_WINERRORS)
+@functools.cache
def _is_case_sensitive(flavour):
return flavour.normcase('Aa') == 'Aa'
@@ -61,6 +62,22 @@ def _is_case_sensitive(flavour):
# Globbing helpers
#
+
+# fnmatch.translate() returns a regular expression that includes a prefix and
+# a suffix, which enable matching newlines and ensure the end of the string is
+# matched, respectively. These features are undesirable for our implementation
+# of PurePatch.match(), which represents path separators as newlines and joins
+# pattern segments together. As a workaround, we define a slice object that
+# can remove the prefix and suffix from any translate() result. See the
+# _compile_pattern_lines() function for more details.
+_FNMATCH_PREFIX, _FNMATCH_SUFFIX = fnmatch.translate('_').split('_')
+_FNMATCH_SLICE = slice(len(_FNMATCH_PREFIX), -len(_FNMATCH_SUFFIX))
+_SWAP_SEP_AND_NEWLINE = {
+ '/': str.maketrans({'/': '\n', '\n': '/'}),
+ '\\': str.maketrans({'\\': '\n', '\n': '\\'}),
+}
+
+
@functools.lru_cache()
def _make_selector(pattern_parts, flavour, case_sensitive):
pat = pattern_parts[0]
@@ -92,6 +109,38 @@ def _compile_pattern(pat, case_sensitive):
return re.compile(fnmatch.translate(pat), flags).match
+@functools.lru_cache()
+def _compile_pattern_lines(pattern_lines, case_sensitive):
+ """Compile the given pattern lines to an `re.Pattern` object.
+
+ The *pattern_lines* argument is a glob-style pattern (e.g. '*/*.py') with
+ its path separators and newlines swapped (e.g. '*\n*.py`). By using
+ newlines to separate path components, and not setting `re.DOTALL`, we
+ ensure that the `*` wildcard cannot match path separators.
+
+ The returned `re.Pattern` object may have its `match()` method called to
+ match a complete pattern, or `search()` to match from the right. The
+ argument supplied to these methods must also have its path separators and
+ newlines swapped.
+ """
+
+ # Match the start of the path, or just after a path separator
+ parts = ['^']
+ for part in pattern_lines.splitlines(keepends=True):
+ # We slice off the common prefix and suffix added by translate() to
+ # ensure that re.DOTALL is not set, and the end of the string not
+ # matched, respectively. With DOTALL not set, '*' wildcards will not
+ # match path separators, because the '.' characters in the pattern
+ # will not match newlines.
+ parts.append(fnmatch.translate(part)[_FNMATCH_SLICE])
+ # Match the end of the path, always.
+ parts.append(r'\Z')
+ flags = re.MULTILINE
+ if not case_sensitive:
+ flags |= re.IGNORECASE
+ return re.compile(''.join(parts), flags=flags)
+
+
class _Selector:
"""A selector matches a specific glob pattern part against the children
of a given path."""
@@ -274,6 +323,10 @@ class PurePath(object):
# to implement comparison methods like `__lt__()`.
'_parts_normcase_cached',
+ # The `_lines_cached` slot stores the string path with path separators
+ # and newlines swapped. This is used to implement `match()`.
+ '_lines_cached',
+
# The `_hash` slot stores the hash of the case-normalized string
# path. It's set when `__hash__()` is called for the first time.
'_hash',
@@ -300,6 +353,9 @@ def __init__(self, *args):
for arg in args:
if isinstance(arg, PurePath):
path = arg._raw_path
+ if arg._flavour is ntpath and self._flavour is posixpath:
+ # GH-103631: Convert separators for backwards compatibility.
+ path = path.replace('\\', '/')
else:
try:
path = os.fspath(arg)
@@ -421,7 +477,10 @@ def _str_normcase(self):
try:
return self._str_normcase_cached
except AttributeError:
- self._str_normcase_cached = self._flavour.normcase(str(self))
+ if _is_case_sensitive(self._flavour):
+ self._str_normcase_cached = str(self)
+ else:
+ self._str_normcase_cached = str(self).lower()
return self._str_normcase_cached
@property
@@ -433,6 +492,16 @@ def _parts_normcase(self):
self._parts_normcase_cached = self._str_normcase.split(self._flavour.sep)
return self._parts_normcase_cached
+ @property
+ def _lines(self):
+ # Path with separators and newlines swapped, for pattern matching.
+ try:
+ return self._lines_cached
+ except AttributeError:
+ trans = _SWAP_SEP_AND_NEWLINE[self._flavour.sep]
+ self._lines_cached = str(self).translate(trans)
+ return self._lines_cached
+
def __eq__(self, other):
if not isinstance(other, PurePath):
return NotImplemented
@@ -689,23 +758,18 @@ def match(self, path_pattern, *, case_sensitive=None):
"""
Return True if this path matches the given pattern.
"""
+ if not isinstance(path_pattern, PurePath):
+ path_pattern = self.with_segments(path_pattern)
if case_sensitive is None:
case_sensitive = _is_case_sensitive(self._flavour)
- pat = self.with_segments(path_pattern)
- if not pat.parts:
+ pattern = _compile_pattern_lines(path_pattern._lines, case_sensitive)
+ if path_pattern.drive or path_pattern.root:
+ return pattern.match(self._lines) is not None
+ elif path_pattern._tail:
+ return pattern.search(self._lines) is not None
+ else:
raise ValueError("empty pattern")
- pat_parts = pat.parts
- parts = self.parts
- if pat.drive or pat.root:
- if len(pat_parts) != len(parts):
- return False
- elif len(pat_parts) > len(parts):
- return False
- for part, pat in zip(reversed(parts), reversed(pat_parts)):
- match = _compile_pattern(pat, case_sensitive)
- if not match(part):
- return False
- return True
+
# Can't subclass os.PathLike from PurePath and keep the constructor
# optimizations in PurePath.__slots__.
diff --git a/Lib/shutil.py b/Lib/shutil.py
index 7d1a3d00011f37..3f2864af517e7d 100644
--- a/Lib/shutil.py
+++ b/Lib/shutil.py
@@ -42,6 +42,8 @@
if sys.platform == 'win32':
import _winapi
+else:
+ _winapi = None
COPY_BUFSIZE = 1024 * 1024 if _WINDOWS else 64 * 1024
# This should never be removed, see rationale in:
@@ -435,6 +437,29 @@ def copy2(src, dst, *, follow_symlinks=True):
"""
if os.path.isdir(dst):
dst = os.path.join(dst, os.path.basename(src))
+
+ if hasattr(_winapi, "CopyFile2"):
+ src_ = os.fsdecode(src)
+ dst_ = os.fsdecode(dst)
+ flags = _winapi.COPY_FILE_ALLOW_DECRYPTED_DESTINATION # for compat
+ if not follow_symlinks:
+ flags |= _winapi.COPY_FILE_COPY_SYMLINK
+ try:
+ _winapi.CopyFile2(src_, dst_, flags)
+ return dst
+ except OSError as exc:
+ if (exc.winerror == _winapi.ERROR_PRIVILEGE_NOT_HELD
+ and not follow_symlinks):
+ # Likely encountered a symlink we aren't allowed to create.
+ # Fall back on the old code
+ pass
+ elif exc.winerror == _winapi.ERROR_ACCESS_DENIED:
+ # Possibly encountered a hidden or readonly file we can't
+ # overwrite. Fall back on old code
+ pass
+ else:
+ raise
+
copyfile(src, dst, follow_symlinks=follow_symlinks)
copystat(src, dst, follow_symlinks=follow_symlinks)
return dst
diff --git a/Lib/test/inspect_fodder.py b/Lib/test/inspect_fodder.py
index 567dfbab804867..60ba7aa78394e8 100644
--- a/Lib/test/inspect_fodder.py
+++ b/Lib/test/inspect_fodder.py
@@ -113,3 +113,8 @@ async def asyncf(self):
# after asyncf - line 113
# end of WhichComments - line 114
# after WhichComments - line 115
+
+# Test that getsource works on a line that includes
+# a closing parenthesis with the opening paren being in another line
+(
+); after_closing = lambda: 1
diff --git a/Lib/test/inspect_fodder2.py b/Lib/test/inspect_fodder2.py
index 2dc49817087c44..03464613694605 100644
--- a/Lib/test/inspect_fodder2.py
+++ b/Lib/test/inspect_fodder2.py
@@ -273,3 +273,20 @@ def wrapper(*a, **kwd):
@deco_factory(foo=(1 + 2), bar=lambda: 1)
def complex_decorated(foo=0, bar=lambda: 0):
return foo + bar()
+
+# line 276
+parenthesized_lambda = (
+ lambda: ())
+parenthesized_lambda2 = [
+ lambda: ()][0]
+parenthesized_lambda3 = {0:
+ lambda: ()}[0]
+
+# line 285
+post_line_parenthesized_lambda1 = (lambda: ()
+)
+
+# line 289
+nested_lambda = (
+ lambda right: [].map(
+ lambda length: ()))
diff --git a/Lib/test/test_ast.py b/Lib/test/test_ast.py
index cf128e1e8cd04c..ffd082ec11806a 100644
--- a/Lib/test/test_ast.py
+++ b/Lib/test/test_ast.py
@@ -4,6 +4,7 @@
import enum
import os
import sys
+import textwrap
import types
import unittest
import warnings
@@ -1583,20 +1584,43 @@ def arguments(args=None, posonlyargs=None, vararg=None,
def test_funcdef(self):
a = ast.arguments([], [], None, [], [], None, [])
- f = ast.FunctionDef("x", [], a, [], [], None)
+ f = ast.FunctionDef("x", a, [], [], None, None, [])
self.stmt(f, "empty body on FunctionDef")
- f = ast.FunctionDef("x", [], a, [ast.Pass()], [ast.Name("x", ast.Store())],
- None)
+ f = ast.FunctionDef("x", a, [ast.Pass()], [ast.Name("x", ast.Store())], None, None, [])
self.stmt(f, "must have Load context")
- f = ast.FunctionDef("x", [], a, [ast.Pass()], [],
- ast.Name("x", ast.Store()))
+ f = ast.FunctionDef("x", a, [ast.Pass()], [],
+ ast.Name("x", ast.Store()), None, [])
self.stmt(f, "must have Load context")
+ f = ast.FunctionDef("x", ast.arguments(), [ast.Pass()])
+ self.stmt(f)
def fac(args):
- return ast.FunctionDef("x", [], args, [ast.Pass()], [], None)
+ return ast.FunctionDef("x", args, [ast.Pass()], [], None, None, [])
self._check_arguments(fac, self.stmt)
+ def test_funcdef_pattern_matching(self):
+ # gh-104799: New fields on FunctionDef should be added at the end
+ def matcher(node):
+ match node:
+ case ast.FunctionDef("foo", ast.arguments(args=[ast.arg("bar")]),
+ [ast.Pass()],
+ [ast.Name("capybara", ast.Load())],
+ ast.Name("pacarana", ast.Load())):
+ return True
+ case _:
+ return False
+
+ code = """
+ @capybara
+ def foo(bar) -> pacarana:
+ pass
+ """
+ source = ast.parse(textwrap.dedent(code))
+ funcdef = source.body[0]
+ self.assertIsInstance(funcdef, ast.FunctionDef)
+ self.assertTrue(matcher(funcdef))
+
def test_classdef(self):
- def cls(bases=None, keywords=None, body=None, decorator_list=None):
+ def cls(bases=None, keywords=None, body=None, decorator_list=None, type_params=None):
if bases is None:
bases = []
if keywords is None:
@@ -1605,8 +1629,10 @@ def cls(bases=None, keywords=None, body=None, decorator_list=None):
body = [ast.Pass()]
if decorator_list is None:
decorator_list = []
- return ast.ClassDef("myclass", [], bases, keywords,
- body, decorator_list)
+ if type_params is None:
+ type_params = []
+ return ast.ClassDef("myclass", bases, keywords,
+ body, decorator_list, type_params)
self.stmt(cls(bases=[ast.Name("x", ast.Store())]),
"must have Load context")
self.stmt(cls(keywords=[ast.keyword("x", ast.Name("x", ast.Store()))]),
@@ -2895,23 +2921,23 @@ def main():
exec_results = [
('Module', [('Expr', (1, 0, 1, 4), ('Constant', (1, 0, 1, 4), None, None))], []),
('Module', [('Expr', (1, 0, 1, 18), ('Constant', (1, 0, 1, 18), 'module docstring', None))], []),
-('Module', [('FunctionDef', (1, 0, 1, 13), 'f', [], ('arguments', [], [], None, [], [], None, []), [('Pass', (1, 9, 1, 13))], [], None, None)], []),
-('Module', [('FunctionDef', (1, 0, 1, 29), 'f', [], ('arguments', [], [], None, [], [], None, []), [('Expr', (1, 9, 1, 29), ('Constant', (1, 9, 1, 29), 'function docstring', None))], [], None, None)], []),
-('Module', [('FunctionDef', (1, 0, 1, 14), 'f', [], ('arguments', [], [('arg', (1, 6, 1, 7), 'a', None, None)], None, [], [], None, []), [('Pass', (1, 10, 1, 14))], [], None, None)], []),
-('Module', [('FunctionDef', (1, 0, 1, 16), 'f', [], ('arguments', [], [('arg', (1, 6, 1, 7), 'a', None, None)], None, [], [], None, [('Constant', (1, 8, 1, 9), 0, None)]), [('Pass', (1, 12, 1, 16))], [], None, None)], []),
-('Module', [('FunctionDef', (1, 0, 1, 18), 'f', [], ('arguments', [], [], ('arg', (1, 7, 1, 11), 'args', None, None), [], [], None, []), [('Pass', (1, 14, 1, 18))], [], None, None)], []),
-('Module', [('FunctionDef', (1, 0, 1, 23), 'f', [], ('arguments', [], [], ('arg', (1, 7, 1, 16), 'args', ('Starred', (1, 13, 1, 16), ('Name', (1, 14, 1, 16), 'Ts', ('Load',)), ('Load',)), None), [], [], None, []), [('Pass', (1, 19, 1, 23))], [], None, None)], []),
-('Module', [('FunctionDef', (1, 0, 1, 36), 'f', [], ('arguments', [], [], ('arg', (1, 7, 1, 29), 'args', ('Starred', (1, 13, 1, 29), ('Subscript', (1, 14, 1, 29), ('Name', (1, 14, 1, 19), 'tuple', ('Load',)), ('Tuple', (1, 20, 1, 28), [('Name', (1, 20, 1, 23), 'int', ('Load',)), ('Constant', (1, 25, 1, 28), Ellipsis, None)], ('Load',)), ('Load',)), ('Load',)), None), [], [], None, []), [('Pass', (1, 32, 1, 36))], [], None, None)], []),
-('Module', [('FunctionDef', (1, 0, 1, 36), 'f', [], ('arguments', [], [], ('arg', (1, 7, 1, 29), 'args', ('Starred', (1, 13, 1, 29), ('Subscript', (1, 14, 1, 29), ('Name', (1, 14, 1, 19), 'tuple', ('Load',)), ('Tuple', (1, 20, 1, 28), [('Name', (1, 20, 1, 23), 'int', ('Load',)), ('Starred', (1, 25, 1, 28), ('Name', (1, 26, 1, 28), 'Ts', ('Load',)), ('Load',))], ('Load',)), ('Load',)), ('Load',)), None), [], [], None, []), [('Pass', (1, 32, 1, 36))], [], None, None)], []),
-('Module', [('FunctionDef', (1, 0, 1, 21), 'f', [], ('arguments', [], [], None, [], [], ('arg', (1, 8, 1, 14), 'kwargs', None, None), []), [('Pass', (1, 17, 1, 21))], [], None, None)], []),
-('Module', [('FunctionDef', (1, 0, 1, 71), 'f', [], ('arguments', [], [('arg', (1, 6, 1, 7), 'a', None, None), ('arg', (1, 9, 1, 10), 'b', None, None), ('arg', (1, 14, 1, 15), 'c', None, None), ('arg', (1, 22, 1, 23), 'd', None, None), ('arg', (1, 28, 1, 29), 'e', None, None)], ('arg', (1, 35, 1, 39), 'args', None, None), [('arg', (1, 41, 1, 42), 'f', None, None)], [('Constant', (1, 43, 1, 45), 42, None)], ('arg', (1, 49, 1, 55), 'kwargs', None, None), [('Constant', (1, 11, 1, 12), 1, None), ('Constant', (1, 16, 1, 20), None, None), ('List', (1, 24, 1, 26), [], ('Load',)), ('Dict', (1, 30, 1, 32), [], [])]), [('Expr', (1, 58, 1, 71), ('Constant', (1, 58, 1, 71), 'doc for f()', None))], [], None, None)], []),
-('Module', [('FunctionDef', (1, 0, 1, 27), 'f', [], ('arguments', [], [], None, [], [], None, []), [('Pass', (1, 23, 1, 27))], [], ('Subscript', (1, 11, 1, 21), ('Name', (1, 11, 1, 16), 'tuple', ('Load',)), ('Tuple', (1, 17, 1, 20), [('Starred', (1, 17, 1, 20), ('Name', (1, 18, 1, 20), 'Ts', ('Load',)), ('Load',))], ('Load',)), ('Load',)), None)], []),
-('Module', [('FunctionDef', (1, 0, 1, 32), 'f', [], ('arguments', [], [], None, [], [], None, []), [('Pass', (1, 28, 1, 32))], [], ('Subscript', (1, 11, 1, 26), ('Name', (1, 11, 1, 16), 'tuple', ('Load',)), ('Tuple', (1, 17, 1, 25), [('Name', (1, 17, 1, 20), 'int', ('Load',)), ('Starred', (1, 22, 1, 25), ('Name', (1, 23, 1, 25), 'Ts', ('Load',)), ('Load',))], ('Load',)), ('Load',)), None)], []),
-('Module', [('FunctionDef', (1, 0, 1, 45), 'f', [], ('arguments', [], [], None, [], [], None, []), [('Pass', (1, 41, 1, 45))], [], ('Subscript', (1, 11, 1, 39), ('Name', (1, 11, 1, 16), 'tuple', ('Load',)), ('Tuple', (1, 17, 1, 38), [('Name', (1, 17, 1, 20), 'int', ('Load',)), ('Starred', (1, 22, 1, 38), ('Subscript', (1, 23, 1, 38), ('Name', (1, 23, 1, 28), 'tuple', ('Load',)), ('Tuple', (1, 29, 1, 37), [('Name', (1, 29, 1, 32), 'int', ('Load',)), ('Constant', (1, 34, 1, 37), Ellipsis, None)], ('Load',)), ('Load',)), ('Load',))], ('Load',)), ('Load',)), None)], []),
-('Module', [('ClassDef', (1, 0, 1, 12), 'C', [], [], [], [('Pass', (1, 8, 1, 12))], [])], []),
-('Module', [('ClassDef', (1, 0, 1, 32), 'C', [], [], [], [('Expr', (1, 9, 1, 32), ('Constant', (1, 9, 1, 32), 'docstring for class C', None))], [])], []),
-('Module', [('ClassDef', (1, 0, 1, 21), 'C', [], [('Name', (1, 8, 1, 14), 'object', ('Load',))], [], [('Pass', (1, 17, 1, 21))], [])], []),
-('Module', [('FunctionDef', (1, 0, 1, 16), 'f', [], ('arguments', [], [], None, [], [], None, []), [('Return', (1, 8, 1, 16), ('Constant', (1, 15, 1, 16), 1, None))], [], None, None)], []),
+('Module', [('FunctionDef', (1, 0, 1, 13), 'f', ('arguments', [], [], None, [], [], None, []), [('Pass', (1, 9, 1, 13))], [], None, None, [])], []),
+('Module', [('FunctionDef', (1, 0, 1, 29), 'f', ('arguments', [], [], None, [], [], None, []), [('Expr', (1, 9, 1, 29), ('Constant', (1, 9, 1, 29), 'function docstring', None))], [], None, None, [])], []),
+('Module', [('FunctionDef', (1, 0, 1, 14), 'f', ('arguments', [], [('arg', (1, 6, 1, 7), 'a', None, None)], None, [], [], None, []), [('Pass', (1, 10, 1, 14))], [], None, None, [])], []),
+('Module', [('FunctionDef', (1, 0, 1, 16), 'f', ('arguments', [], [('arg', (1, 6, 1, 7), 'a', None, None)], None, [], [], None, [('Constant', (1, 8, 1, 9), 0, None)]), [('Pass', (1, 12, 1, 16))], [], None, None, [])], []),
+('Module', [('FunctionDef', (1, 0, 1, 18), 'f', ('arguments', [], [], ('arg', (1, 7, 1, 11), 'args', None, None), [], [], None, []), [('Pass', (1, 14, 1, 18))], [], None, None, [])], []),
+('Module', [('FunctionDef', (1, 0, 1, 23), 'f', ('arguments', [], [], ('arg', (1, 7, 1, 16), 'args', ('Starred', (1, 13, 1, 16), ('Name', (1, 14, 1, 16), 'Ts', ('Load',)), ('Load',)), None), [], [], None, []), [('Pass', (1, 19, 1, 23))], [], None, None, [])], []),
+('Module', [('FunctionDef', (1, 0, 1, 36), 'f', ('arguments', [], [], ('arg', (1, 7, 1, 29), 'args', ('Starred', (1, 13, 1, 29), ('Subscript', (1, 14, 1, 29), ('Name', (1, 14, 1, 19), 'tuple', ('Load',)), ('Tuple', (1, 20, 1, 28), [('Name', (1, 20, 1, 23), 'int', ('Load',)), ('Constant', (1, 25, 1, 28), Ellipsis, None)], ('Load',)), ('Load',)), ('Load',)), None), [], [], None, []), [('Pass', (1, 32, 1, 36))], [], None, None, [])], []),
+('Module', [('FunctionDef', (1, 0, 1, 36), 'f', ('arguments', [], [], ('arg', (1, 7, 1, 29), 'args', ('Starred', (1, 13, 1, 29), ('Subscript', (1, 14, 1, 29), ('Name', (1, 14, 1, 19), 'tuple', ('Load',)), ('Tuple', (1, 20, 1, 28), [('Name', (1, 20, 1, 23), 'int', ('Load',)), ('Starred', (1, 25, 1, 28), ('Name', (1, 26, 1, 28), 'Ts', ('Load',)), ('Load',))], ('Load',)), ('Load',)), ('Load',)), None), [], [], None, []), [('Pass', (1, 32, 1, 36))], [], None, None, [])], []),
+('Module', [('FunctionDef', (1, 0, 1, 21), 'f', ('arguments', [], [], None, [], [], ('arg', (1, 8, 1, 14), 'kwargs', None, None), []), [('Pass', (1, 17, 1, 21))], [], None, None, [])], []),
+('Module', [('FunctionDef', (1, 0, 1, 71), 'f', ('arguments', [], [('arg', (1, 6, 1, 7), 'a', None, None), ('arg', (1, 9, 1, 10), 'b', None, None), ('arg', (1, 14, 1, 15), 'c', None, None), ('arg', (1, 22, 1, 23), 'd', None, None), ('arg', (1, 28, 1, 29), 'e', None, None)], ('arg', (1, 35, 1, 39), 'args', None, None), [('arg', (1, 41, 1, 42), 'f', None, None)], [('Constant', (1, 43, 1, 45), 42, None)], ('arg', (1, 49, 1, 55), 'kwargs', None, None), [('Constant', (1, 11, 1, 12), 1, None), ('Constant', (1, 16, 1, 20), None, None), ('List', (1, 24, 1, 26), [], ('Load',)), ('Dict', (1, 30, 1, 32), [], [])]), [('Expr', (1, 58, 1, 71), ('Constant', (1, 58, 1, 71), 'doc for f()', None))], [], None, None, [])], []),
+('Module', [('FunctionDef', (1, 0, 1, 27), 'f', ('arguments', [], [], None, [], [], None, []), [('Pass', (1, 23, 1, 27))], [], ('Subscript', (1, 11, 1, 21), ('Name', (1, 11, 1, 16), 'tuple', ('Load',)), ('Tuple', (1, 17, 1, 20), [('Starred', (1, 17, 1, 20), ('Name', (1, 18, 1, 20), 'Ts', ('Load',)), ('Load',))], ('Load',)), ('Load',)), None, [])], []),
+('Module', [('FunctionDef', (1, 0, 1, 32), 'f', ('arguments', [], [], None, [], [], None, []), [('Pass', (1, 28, 1, 32))], [], ('Subscript', (1, 11, 1, 26), ('Name', (1, 11, 1, 16), 'tuple', ('Load',)), ('Tuple', (1, 17, 1, 25), [('Name', (1, 17, 1, 20), 'int', ('Load',)), ('Starred', (1, 22, 1, 25), ('Name', (1, 23, 1, 25), 'Ts', ('Load',)), ('Load',))], ('Load',)), ('Load',)), None, [])], []),
+('Module', [('FunctionDef', (1, 0, 1, 45), 'f', ('arguments', [], [], None, [], [], None, []), [('Pass', (1, 41, 1, 45))], [], ('Subscript', (1, 11, 1, 39), ('Name', (1, 11, 1, 16), 'tuple', ('Load',)), ('Tuple', (1, 17, 1, 38), [('Name', (1, 17, 1, 20), 'int', ('Load',)), ('Starred', (1, 22, 1, 38), ('Subscript', (1, 23, 1, 38), ('Name', (1, 23, 1, 28), 'tuple', ('Load',)), ('Tuple', (1, 29, 1, 37), [('Name', (1, 29, 1, 32), 'int', ('Load',)), ('Constant', (1, 34, 1, 37), Ellipsis, None)], ('Load',)), ('Load',)), ('Load',))], ('Load',)), ('Load',)), None, [])], []),
+('Module', [('ClassDef', (1, 0, 1, 12), 'C', [], [], [('Pass', (1, 8, 1, 12))], [], [])], []),
+('Module', [('ClassDef', (1, 0, 1, 32), 'C', [], [], [('Expr', (1, 9, 1, 32), ('Constant', (1, 9, 1, 32), 'docstring for class C', None))], [], [])], []),
+('Module', [('ClassDef', (1, 0, 1, 21), 'C', [('Name', (1, 8, 1, 14), 'object', ('Load',))], [], [('Pass', (1, 17, 1, 21))], [], [])], []),
+('Module', [('FunctionDef', (1, 0, 1, 16), 'f', ('arguments', [], [], None, [], [], None, []), [('Return', (1, 8, 1, 16), ('Constant', (1, 15, 1, 16), 1, None))], [], None, None, [])], []),
('Module', [('Delete', (1, 0, 1, 5), [('Name', (1, 4, 1, 5), 'v', ('Del',))])], []),
('Module', [('Assign', (1, 0, 1, 5), [('Name', (1, 0, 1, 1), 'v', ('Store',))], ('Constant', (1, 4, 1, 5), 1, None), None)], []),
('Module', [('Assign', (1, 0, 1, 7), [('Tuple', (1, 0, 1, 3), [('Name', (1, 0, 1, 1), 'a', ('Store',)), ('Name', (1, 2, 1, 3), 'b', ('Store',))], ('Store',))], ('Name', (1, 6, 1, 7), 'c', ('Load',)), None)], []),
@@ -2948,41 +2974,41 @@ def main():
('Module', [('Expr', (1, 0, 1, 20), ('DictComp', (1, 0, 1, 20), ('Name', (1, 1, 1, 2), 'a', ('Load',)), ('Name', (1, 5, 1, 6), 'b', ('Load',)), [('comprehension', ('Tuple', (1, 11, 1, 14), [('Name', (1, 11, 1, 12), 'v', ('Store',)), ('Name', (1, 13, 1, 14), 'w', ('Store',))], ('Store',)), ('Name', (1, 18, 1, 19), 'x', ('Load',)), [], 0)]))], []),
('Module', [('Expr', (1, 0, 1, 19), ('SetComp', (1, 0, 1, 19), ('Name', (1, 1, 1, 2), 'r', ('Load',)), [('comprehension', ('Name', (1, 7, 1, 8), 'l', ('Store',)), ('Name', (1, 12, 1, 13), 'x', ('Load',)), [('Name', (1, 17, 1, 18), 'g', ('Load',))], 0)]))], []),
('Module', [('Expr', (1, 0, 1, 16), ('SetComp', (1, 0, 1, 16), ('Name', (1, 1, 1, 2), 'r', ('Load',)), [('comprehension', ('Tuple', (1, 7, 1, 10), [('Name', (1, 7, 1, 8), 'l', ('Store',)), ('Name', (1, 9, 1, 10), 'm', ('Store',))], ('Store',)), ('Name', (1, 14, 1, 15), 'x', ('Load',)), [], 0)]))], []),
-('Module', [('AsyncFunctionDef', (1, 0, 3, 18), 'f', [], ('arguments', [], [], None, [], [], None, []), [('Expr', (2, 1, 2, 17), ('Constant', (2, 1, 2, 17), 'async function', None)), ('Expr', (3, 1, 3, 18), ('Await', (3, 1, 3, 18), ('Call', (3, 7, 3, 18), ('Name', (3, 7, 3, 16), 'something', ('Load',)), [], [])))], [], None, None)], []),
-('Module', [('AsyncFunctionDef', (1, 0, 3, 8), 'f', [], ('arguments', [], [], None, [], [], None, []), [('AsyncFor', (2, 1, 3, 8), ('Name', (2, 11, 2, 12), 'e', ('Store',)), ('Name', (2, 16, 2, 17), 'i', ('Load',)), [('Expr', (2, 19, 2, 20), ('Constant', (2, 19, 2, 20), 1, None))], [('Expr', (3, 7, 3, 8), ('Constant', (3, 7, 3, 8), 2, None))], None)], [], None, None)], []),
-('Module', [('AsyncFunctionDef', (1, 0, 2, 21), 'f', [], ('arguments', [], [], None, [], [], None, []), [('AsyncWith', (2, 1, 2, 21), [('withitem', ('Name', (2, 12, 2, 13), 'a', ('Load',)), ('Name', (2, 17, 2, 18), 'b', ('Store',)))], [('Expr', (2, 20, 2, 21), ('Constant', (2, 20, 2, 21), 1, None))], None)], [], None, None)], []),
+('Module', [('AsyncFunctionDef', (1, 0, 3, 18), 'f', ('arguments', [], [], None, [], [], None, []), [('Expr', (2, 1, 2, 17), ('Constant', (2, 1, 2, 17), 'async function', None)), ('Expr', (3, 1, 3, 18), ('Await', (3, 1, 3, 18), ('Call', (3, 7, 3, 18), ('Name', (3, 7, 3, 16), 'something', ('Load',)), [], [])))], [], None, None, [])], []),
+('Module', [('AsyncFunctionDef', (1, 0, 3, 8), 'f', ('arguments', [], [], None, [], [], None, []), [('AsyncFor', (2, 1, 3, 8), ('Name', (2, 11, 2, 12), 'e', ('Store',)), ('Name', (2, 16, 2, 17), 'i', ('Load',)), [('Expr', (2, 19, 2, 20), ('Constant', (2, 19, 2, 20), 1, None))], [('Expr', (3, 7, 3, 8), ('Constant', (3, 7, 3, 8), 2, None))], None)], [], None, None, [])], []),
+('Module', [('AsyncFunctionDef', (1, 0, 2, 21), 'f', ('arguments', [], [], None, [], [], None, []), [('AsyncWith', (2, 1, 2, 21), [('withitem', ('Name', (2, 12, 2, 13), 'a', ('Load',)), ('Name', (2, 17, 2, 18), 'b', ('Store',)))], [('Expr', (2, 20, 2, 21), ('Constant', (2, 20, 2, 21), 1, None))], None)], [], None, None, [])], []),
('Module', [('Expr', (1, 0, 1, 14), ('Dict', (1, 0, 1, 14), [None, ('Constant', (1, 10, 1, 11), 2, None)], [('Dict', (1, 3, 1, 8), [('Constant', (1, 4, 1, 5), 1, None)], [('Constant', (1, 6, 1, 7), 2, None)]), ('Constant', (1, 12, 1, 13), 3, None)]))], []),
('Module', [('Expr', (1, 0, 1, 12), ('Set', (1, 0, 1, 12), [('Starred', (1, 1, 1, 8), ('Set', (1, 2, 1, 8), [('Constant', (1, 3, 1, 4), 1, None), ('Constant', (1, 6, 1, 7), 2, None)]), ('Load',)), ('Constant', (1, 10, 1, 11), 3, None)]))], []),
-('Module', [('AsyncFunctionDef', (1, 0, 2, 21), 'f', [], ('arguments', [], [], None, [], [], None, []), [('Expr', (2, 1, 2, 21), ('ListComp', (2, 1, 2, 21), ('Name', (2, 2, 2, 3), 'i', ('Load',)), [('comprehension', ('Name', (2, 14, 2, 15), 'b', ('Store',)), ('Name', (2, 19, 2, 20), 'c', ('Load',)), [], 1)]))], [], None, None)], []),
-('Module', [('FunctionDef', (4, 0, 4, 13), 'f', [], ('arguments', [], [], None, [], [], None, []), [('Pass', (4, 9, 4, 13))], [('Name', (1, 1, 1, 6), 'deco1', ('Load',)), ('Call', (2, 1, 2, 8), ('Name', (2, 1, 2, 6), 'deco2', ('Load',)), [], []), ('Call', (3, 1, 3, 9), ('Name', (3, 1, 3, 6), 'deco3', ('Load',)), [('Constant', (3, 7, 3, 8), 1, None)], [])], None, None)], []),
-('Module', [('AsyncFunctionDef', (4, 0, 4, 19), 'f', [], ('arguments', [], [], None, [], [], None, []), [('Pass', (4, 15, 4, 19))], [('Name', (1, 1, 1, 6), 'deco1', ('Load',)), ('Call', (2, 1, 2, 8), ('Name', (2, 1, 2, 6), 'deco2', ('Load',)), [], []), ('Call', (3, 1, 3, 9), ('Name', (3, 1, 3, 6), 'deco3', ('Load',)), [('Constant', (3, 7, 3, 8), 1, None)], [])], None, None)], []),
-('Module', [('ClassDef', (4, 0, 4, 13), 'C', [], [], [], [('Pass', (4, 9, 4, 13))], [('Name', (1, 1, 1, 6), 'deco1', ('Load',)), ('Call', (2, 1, 2, 8), ('Name', (2, 1, 2, 6), 'deco2', ('Load',)), [], []), ('Call', (3, 1, 3, 9), ('Name', (3, 1, 3, 6), 'deco3', ('Load',)), [('Constant', (3, 7, 3, 8), 1, None)], [])])], []),
-('Module', [('FunctionDef', (2, 0, 2, 13), 'f', [], ('arguments', [], [], None, [], [], None, []), [('Pass', (2, 9, 2, 13))], [('Call', (1, 1, 1, 19), ('Name', (1, 1, 1, 5), 'deco', ('Load',)), [('GeneratorExp', (1, 5, 1, 19), ('Name', (1, 6, 1, 7), 'a', ('Load',)), [('comprehension', ('Name', (1, 12, 1, 13), 'a', ('Store',)), ('Name', (1, 17, 1, 18), 'b', ('Load',)), [], 0)])], [])], None, None)], []),
-('Module', [('FunctionDef', (2, 0, 2, 13), 'f', [], ('arguments', [], [], None, [], [], None, []), [('Pass', (2, 9, 2, 13))], [('Attribute', (1, 1, 1, 6), ('Attribute', (1, 1, 1, 4), ('Name', (1, 1, 1, 2), 'a', ('Load',)), 'b', ('Load',)), 'c', ('Load',))], None, None)], []),
+('Module', [('AsyncFunctionDef', (1, 0, 2, 21), 'f', ('arguments', [], [], None, [], [], None, []), [('Expr', (2, 1, 2, 21), ('ListComp', (2, 1, 2, 21), ('Name', (2, 2, 2, 3), 'i', ('Load',)), [('comprehension', ('Name', (2, 14, 2, 15), 'b', ('Store',)), ('Name', (2, 19, 2, 20), 'c', ('Load',)), [], 1)]))], [], None, None, [])], []),
+('Module', [('FunctionDef', (4, 0, 4, 13), 'f', ('arguments', [], [], None, [], [], None, []), [('Pass', (4, 9, 4, 13))], [('Name', (1, 1, 1, 6), 'deco1', ('Load',)), ('Call', (2, 1, 2, 8), ('Name', (2, 1, 2, 6), 'deco2', ('Load',)), [], []), ('Call', (3, 1, 3, 9), ('Name', (3, 1, 3, 6), 'deco3', ('Load',)), [('Constant', (3, 7, 3, 8), 1, None)], [])], None, None, [])], []),
+('Module', [('AsyncFunctionDef', (4, 0, 4, 19), 'f', ('arguments', [], [], None, [], [], None, []), [('Pass', (4, 15, 4, 19))], [('Name', (1, 1, 1, 6), 'deco1', ('Load',)), ('Call', (2, 1, 2, 8), ('Name', (2, 1, 2, 6), 'deco2', ('Load',)), [], []), ('Call', (3, 1, 3, 9), ('Name', (3, 1, 3, 6), 'deco3', ('Load',)), [('Constant', (3, 7, 3, 8), 1, None)], [])], None, None, [])], []),
+('Module', [('ClassDef', (4, 0, 4, 13), 'C', [], [], [('Pass', (4, 9, 4, 13))], [('Name', (1, 1, 1, 6), 'deco1', ('Load',)), ('Call', (2, 1, 2, 8), ('Name', (2, 1, 2, 6), 'deco2', ('Load',)), [], []), ('Call', (3, 1, 3, 9), ('Name', (3, 1, 3, 6), 'deco3', ('Load',)), [('Constant', (3, 7, 3, 8), 1, None)], [])], [])], []),
+('Module', [('FunctionDef', (2, 0, 2, 13), 'f', ('arguments', [], [], None, [], [], None, []), [('Pass', (2, 9, 2, 13))], [('Call', (1, 1, 1, 19), ('Name', (1, 1, 1, 5), 'deco', ('Load',)), [('GeneratorExp', (1, 5, 1, 19), ('Name', (1, 6, 1, 7), 'a', ('Load',)), [('comprehension', ('Name', (1, 12, 1, 13), 'a', ('Store',)), ('Name', (1, 17, 1, 18), 'b', ('Load',)), [], 0)])], [])], None, None, [])], []),
+('Module', [('FunctionDef', (2, 0, 2, 13), 'f', ('arguments', [], [], None, [], [], None, []), [('Pass', (2, 9, 2, 13))], [('Attribute', (1, 1, 1, 6), ('Attribute', (1, 1, 1, 4), ('Name', (1, 1, 1, 2), 'a', ('Load',)), 'b', ('Load',)), 'c', ('Load',))], None, None, [])], []),
('Module', [('Expr', (1, 0, 1, 8), ('NamedExpr', (1, 1, 1, 7), ('Name', (1, 1, 1, 2), 'a', ('Store',)), ('Constant', (1, 6, 1, 7), 1, None)))], []),
-('Module', [('FunctionDef', (1, 0, 1, 18), 'f', [], ('arguments', [('arg', (1, 6, 1, 7), 'a', None, None)], [], None, [], [], None, []), [('Pass', (1, 14, 1, 18))], [], None, None)], []),
-('Module', [('FunctionDef', (1, 0, 1, 26), 'f', [], ('arguments', [('arg', (1, 6, 1, 7), 'a', None, None)], [('arg', (1, 12, 1, 13), 'c', None, None), ('arg', (1, 15, 1, 16), 'd', None, None), ('arg', (1, 18, 1, 19), 'e', None, None)], None, [], [], None, []), [('Pass', (1, 22, 1, 26))], [], None, None)], []),
-('Module', [('FunctionDef', (1, 0, 1, 29), 'f', [], ('arguments', [('arg', (1, 6, 1, 7), 'a', None, None)], [('arg', (1, 12, 1, 13), 'c', None, None)], None, [('arg', (1, 18, 1, 19), 'd', None, None), ('arg', (1, 21, 1, 22), 'e', None, None)], [None, None], None, []), [('Pass', (1, 25, 1, 29))], [], None, None)], []),
-('Module', [('FunctionDef', (1, 0, 1, 39), 'f', [], ('arguments', [('arg', (1, 6, 1, 7), 'a', None, None)], [('arg', (1, 12, 1, 13), 'c', None, None)], None, [('arg', (1, 18, 1, 19), 'd', None, None), ('arg', (1, 21, 1, 22), 'e', None, None)], [None, None], ('arg', (1, 26, 1, 32), 'kwargs', None, None), []), [('Pass', (1, 35, 1, 39))], [], None, None)], []),
-('Module', [('FunctionDef', (1, 0, 1, 20), 'f', [], ('arguments', [('arg', (1, 6, 1, 7), 'a', None, None)], [], None, [], [], None, [('Constant', (1, 8, 1, 9), 1, None)]), [('Pass', (1, 16, 1, 20))], [], None, None)], []),
-('Module', [('FunctionDef', (1, 0, 1, 29), 'f', [], ('arguments', [('arg', (1, 6, 1, 7), 'a', None, None)], [('arg', (1, 14, 1, 15), 'b', None, None), ('arg', (1, 19, 1, 20), 'c', None, None)], None, [], [], None, [('Constant', (1, 8, 1, 9), 1, None), ('Constant', (1, 16, 1, 17), 2, None), ('Constant', (1, 21, 1, 22), 4, None)]), [('Pass', (1, 25, 1, 29))], [], None, None)], []),
-('Module', [('FunctionDef', (1, 0, 1, 32), 'f', [], ('arguments', [('arg', (1, 6, 1, 7), 'a', None, None)], [('arg', (1, 14, 1, 15), 'b', None, None)], None, [('arg', (1, 22, 1, 23), 'c', None, None)], [('Constant', (1, 24, 1, 25), 4, None)], None, [('Constant', (1, 8, 1, 9), 1, None), ('Constant', (1, 16, 1, 17), 2, None)]), [('Pass', (1, 28, 1, 32))], [], None, None)], []),
-('Module', [('FunctionDef', (1, 0, 1, 30), 'f', [], ('arguments', [('arg', (1, 6, 1, 7), 'a', None, None)], [('arg', (1, 14, 1, 15), 'b', None, None)], None, [('arg', (1, 22, 1, 23), 'c', None, None)], [None], None, [('Constant', (1, 8, 1, 9), 1, None), ('Constant', (1, 16, 1, 17), 2, None)]), [('Pass', (1, 26, 1, 30))], [], None, None)], []),
-('Module', [('FunctionDef', (1, 0, 1, 42), 'f', [], ('arguments', [('arg', (1, 6, 1, 7), 'a', None, None)], [('arg', (1, 14, 1, 15), 'b', None, None)], None, [('arg', (1, 22, 1, 23), 'c', None, None)], [('Constant', (1, 24, 1, 25), 4, None)], ('arg', (1, 29, 1, 35), 'kwargs', None, None), [('Constant', (1, 8, 1, 9), 1, None), ('Constant', (1, 16, 1, 17), 2, None)]), [('Pass', (1, 38, 1, 42))], [], None, None)], []),
-('Module', [('FunctionDef', (1, 0, 1, 40), 'f', [], ('arguments', [('arg', (1, 6, 1, 7), 'a', None, None)], [('arg', (1, 14, 1, 15), 'b', None, None)], None, [('arg', (1, 22, 1, 23), 'c', None, None)], [None], ('arg', (1, 27, 1, 33), 'kwargs', None, None), [('Constant', (1, 8, 1, 9), 1, None), ('Constant', (1, 16, 1, 17), 2, None)]), [('Pass', (1, 36, 1, 40))], [], None, None)], []),
+('Module', [('FunctionDef', (1, 0, 1, 18), 'f', ('arguments', [('arg', (1, 6, 1, 7), 'a', None, None)], [], None, [], [], None, []), [('Pass', (1, 14, 1, 18))], [], None, None, [])], []),
+('Module', [('FunctionDef', (1, 0, 1, 26), 'f', ('arguments', [('arg', (1, 6, 1, 7), 'a', None, None)], [('arg', (1, 12, 1, 13), 'c', None, None), ('arg', (1, 15, 1, 16), 'd', None, None), ('arg', (1, 18, 1, 19), 'e', None, None)], None, [], [], None, []), [('Pass', (1, 22, 1, 26))], [], None, None, [])], []),
+('Module', [('FunctionDef', (1, 0, 1, 29), 'f', ('arguments', [('arg', (1, 6, 1, 7), 'a', None, None)], [('arg', (1, 12, 1, 13), 'c', None, None)], None, [('arg', (1, 18, 1, 19), 'd', None, None), ('arg', (1, 21, 1, 22), 'e', None, None)], [None, None], None, []), [('Pass', (1, 25, 1, 29))], [], None, None, [])], []),
+('Module', [('FunctionDef', (1, 0, 1, 39), 'f', ('arguments', [('arg', (1, 6, 1, 7), 'a', None, None)], [('arg', (1, 12, 1, 13), 'c', None, None)], None, [('arg', (1, 18, 1, 19), 'd', None, None), ('arg', (1, 21, 1, 22), 'e', None, None)], [None, None], ('arg', (1, 26, 1, 32), 'kwargs', None, None), []), [('Pass', (1, 35, 1, 39))], [], None, None, [])], []),
+('Module', [('FunctionDef', (1, 0, 1, 20), 'f', ('arguments', [('arg', (1, 6, 1, 7), 'a', None, None)], [], None, [], [], None, [('Constant', (1, 8, 1, 9), 1, None)]), [('Pass', (1, 16, 1, 20))], [], None, None, [])], []),
+('Module', [('FunctionDef', (1, 0, 1, 29), 'f', ('arguments', [('arg', (1, 6, 1, 7), 'a', None, None)], [('arg', (1, 14, 1, 15), 'b', None, None), ('arg', (1, 19, 1, 20), 'c', None, None)], None, [], [], None, [('Constant', (1, 8, 1, 9), 1, None), ('Constant', (1, 16, 1, 17), 2, None), ('Constant', (1, 21, 1, 22), 4, None)]), [('Pass', (1, 25, 1, 29))], [], None, None, [])], []),
+('Module', [('FunctionDef', (1, 0, 1, 32), 'f', ('arguments', [('arg', (1, 6, 1, 7), 'a', None, None)], [('arg', (1, 14, 1, 15), 'b', None, None)], None, [('arg', (1, 22, 1, 23), 'c', None, None)], [('Constant', (1, 24, 1, 25), 4, None)], None, [('Constant', (1, 8, 1, 9), 1, None), ('Constant', (1, 16, 1, 17), 2, None)]), [('Pass', (1, 28, 1, 32))], [], None, None, [])], []),
+('Module', [('FunctionDef', (1, 0, 1, 30), 'f', ('arguments', [('arg', (1, 6, 1, 7), 'a', None, None)], [('arg', (1, 14, 1, 15), 'b', None, None)], None, [('arg', (1, 22, 1, 23), 'c', None, None)], [None], None, [('Constant', (1, 8, 1, 9), 1, None), ('Constant', (1, 16, 1, 17), 2, None)]), [('Pass', (1, 26, 1, 30))], [], None, None, [])], []),
+('Module', [('FunctionDef', (1, 0, 1, 42), 'f', ('arguments', [('arg', (1, 6, 1, 7), 'a', None, None)], [('arg', (1, 14, 1, 15), 'b', None, None)], None, [('arg', (1, 22, 1, 23), 'c', None, None)], [('Constant', (1, 24, 1, 25), 4, None)], ('arg', (1, 29, 1, 35), 'kwargs', None, None), [('Constant', (1, 8, 1, 9), 1, None), ('Constant', (1, 16, 1, 17), 2, None)]), [('Pass', (1, 38, 1, 42))], [], None, None, [])], []),
+('Module', [('FunctionDef', (1, 0, 1, 40), 'f', ('arguments', [('arg', (1, 6, 1, 7), 'a', None, None)], [('arg', (1, 14, 1, 15), 'b', None, None)], None, [('arg', (1, 22, 1, 23), 'c', None, None)], [None], ('arg', (1, 27, 1, 33), 'kwargs', None, None), [('Constant', (1, 8, 1, 9), 1, None), ('Constant', (1, 16, 1, 17), 2, None)]), [('Pass', (1, 36, 1, 40))], [], None, None, [])], []),
('Module', [('TypeAlias', (1, 0, 1, 12), ('Name', (1, 5, 1, 6), 'X', ('Store',)), [], ('Name', (1, 9, 1, 12), 'int', ('Load',)))], []),
('Module', [('TypeAlias', (1, 0, 1, 15), ('Name', (1, 5, 1, 6), 'X', ('Store',)), [('TypeVar', (1, 7, 1, 8), 'T', None)], ('Name', (1, 12, 1, 15), 'int', ('Load',)))], []),
('Module', [('TypeAlias', (1, 0, 1, 32), ('Name', (1, 5, 1, 6), 'X', ('Store',)), [('TypeVar', (1, 7, 1, 8), 'T', None), ('TypeVarTuple', (1, 10, 1, 13), 'Ts'), ('ParamSpec', (1, 15, 1, 18), 'P')], ('Tuple', (1, 22, 1, 32), [('Name', (1, 23, 1, 24), 'T', ('Load',)), ('Name', (1, 26, 1, 28), 'Ts', ('Load',)), ('Name', (1, 30, 1, 31), 'P', ('Load',))], ('Load',)))], []),
('Module', [('TypeAlias', (1, 0, 1, 37), ('Name', (1, 5, 1, 6), 'X', ('Store',)), [('TypeVar', (1, 7, 1, 13), 'T', ('Name', (1, 10, 1, 13), 'int', ('Load',))), ('TypeVarTuple', (1, 15, 1, 18), 'Ts'), ('ParamSpec', (1, 20, 1, 23), 'P')], ('Tuple', (1, 27, 1, 37), [('Name', (1, 28, 1, 29), 'T', ('Load',)), ('Name', (1, 31, 1, 33), 'Ts', ('Load',)), ('Name', (1, 35, 1, 36), 'P', ('Load',))], ('Load',)))], []),
('Module', [('TypeAlias', (1, 0, 1, 44), ('Name', (1, 5, 1, 6), 'X', ('Store',)), [('TypeVar', (1, 7, 1, 20), 'T', ('Tuple', (1, 10, 1, 20), [('Name', (1, 11, 1, 14), 'int', ('Load',)), ('Name', (1, 16, 1, 19), 'str', ('Load',))], ('Load',))), ('TypeVarTuple', (1, 22, 1, 25), 'Ts'), ('ParamSpec', (1, 27, 1, 30), 'P')], ('Tuple', (1, 34, 1, 44), [('Name', (1, 35, 1, 36), 'T', ('Load',)), ('Name', (1, 38, 1, 40), 'Ts', ('Load',)), ('Name', (1, 42, 1, 43), 'P', ('Load',))], ('Load',)))], []),
-('Module', [('ClassDef', (1, 0, 1, 16), 'X', [('TypeVar', (1, 8, 1, 9), 'T', None)], [], [], [('Pass', (1, 12, 1, 16))], [])], []),
-('Module', [('ClassDef', (1, 0, 1, 26), 'X', [('TypeVar', (1, 8, 1, 9), 'T', None), ('TypeVarTuple', (1, 11, 1, 14), 'Ts'), ('ParamSpec', (1, 16, 1, 19), 'P')], [], [], [('Pass', (1, 22, 1, 26))], [])], []),
-('Module', [('ClassDef', (1, 0, 1, 31), 'X', [('TypeVar', (1, 8, 1, 14), 'T', ('Name', (1, 11, 1, 14), 'int', ('Load',))), ('TypeVarTuple', (1, 16, 1, 19), 'Ts'), ('ParamSpec', (1, 21, 1, 24), 'P')], [], [], [('Pass', (1, 27, 1, 31))], [])], []),
-('Module', [('ClassDef', (1, 0, 1, 38), 'X', [('TypeVar', (1, 8, 1, 21), 'T', ('Tuple', (1, 11, 1, 21), [('Name', (1, 12, 1, 15), 'int', ('Load',)), ('Name', (1, 17, 1, 20), 'str', ('Load',))], ('Load',))), ('TypeVarTuple', (1, 23, 1, 26), 'Ts'), ('ParamSpec', (1, 28, 1, 31), 'P')], [], [], [('Pass', (1, 34, 1, 38))], [])], []),
-('Module', [('FunctionDef', (1, 0, 1, 16), 'f', [('TypeVar', (1, 6, 1, 7), 'T', None)], ('arguments', [], [], None, [], [], None, []), [('Pass', (1, 12, 1, 16))], [], None, None)], []),
-('Module', [('FunctionDef', (1, 0, 1, 26), 'f', [('TypeVar', (1, 6, 1, 7), 'T', None), ('TypeVarTuple', (1, 9, 1, 12), 'Ts'), ('ParamSpec', (1, 14, 1, 17), 'P')], ('arguments', [], [], None, [], [], None, []), [('Pass', (1, 22, 1, 26))], [], None, None)], []),
-('Module', [('FunctionDef', (1, 0, 1, 31), 'f', [('TypeVar', (1, 6, 1, 12), 'T', ('Name', (1, 9, 1, 12), 'int', ('Load',))), ('TypeVarTuple', (1, 14, 1, 17), 'Ts'), ('ParamSpec', (1, 19, 1, 22), 'P')], ('arguments', [], [], None, [], [], None, []), [('Pass', (1, 27, 1, 31))], [], None, None)], []),
-('Module', [('FunctionDef', (1, 0, 1, 38), 'f', [('TypeVar', (1, 6, 1, 19), 'T', ('Tuple', (1, 9, 1, 19), [('Name', (1, 10, 1, 13), 'int', ('Load',)), ('Name', (1, 15, 1, 18), 'str', ('Load',))], ('Load',))), ('TypeVarTuple', (1, 21, 1, 24), 'Ts'), ('ParamSpec', (1, 26, 1, 29), 'P')], ('arguments', [], [], None, [], [], None, []), [('Pass', (1, 34, 1, 38))], [], None, None)], []),
+('Module', [('ClassDef', (1, 0, 1, 16), 'X', [], [], [('Pass', (1, 12, 1, 16))], [], [('TypeVar', (1, 8, 1, 9), 'T', None)])], []),
+('Module', [('ClassDef', (1, 0, 1, 26), 'X', [], [], [('Pass', (1, 22, 1, 26))], [], [('TypeVar', (1, 8, 1, 9), 'T', None), ('TypeVarTuple', (1, 11, 1, 14), 'Ts'), ('ParamSpec', (1, 16, 1, 19), 'P')])], []),
+('Module', [('ClassDef', (1, 0, 1, 31), 'X', [], [], [('Pass', (1, 27, 1, 31))], [], [('TypeVar', (1, 8, 1, 14), 'T', ('Name', (1, 11, 1, 14), 'int', ('Load',))), ('TypeVarTuple', (1, 16, 1, 19), 'Ts'), ('ParamSpec', (1, 21, 1, 24), 'P')])], []),
+('Module', [('ClassDef', (1, 0, 1, 38), 'X', [], [], [('Pass', (1, 34, 1, 38))], [], [('TypeVar', (1, 8, 1, 21), 'T', ('Tuple', (1, 11, 1, 21), [('Name', (1, 12, 1, 15), 'int', ('Load',)), ('Name', (1, 17, 1, 20), 'str', ('Load',))], ('Load',))), ('TypeVarTuple', (1, 23, 1, 26), 'Ts'), ('ParamSpec', (1, 28, 1, 31), 'P')])], []),
+('Module', [('FunctionDef', (1, 0, 1, 16), 'f', ('arguments', [], [], None, [], [], None, []), [('Pass', (1, 12, 1, 16))], [], None, None, [('TypeVar', (1, 6, 1, 7), 'T', None)])], []),
+('Module', [('FunctionDef', (1, 0, 1, 26), 'f', ('arguments', [], [], None, [], [], None, []), [('Pass', (1, 22, 1, 26))], [], None, None, [('TypeVar', (1, 6, 1, 7), 'T', None), ('TypeVarTuple', (1, 9, 1, 12), 'Ts'), ('ParamSpec', (1, 14, 1, 17), 'P')])], []),
+('Module', [('FunctionDef', (1, 0, 1, 31), 'f', ('arguments', [], [], None, [], [], None, []), [('Pass', (1, 27, 1, 31))], [], None, None, [('TypeVar', (1, 6, 1, 12), 'T', ('Name', (1, 9, 1, 12), 'int', ('Load',))), ('TypeVarTuple', (1, 14, 1, 17), 'Ts'), ('ParamSpec', (1, 19, 1, 22), 'P')])], []),
+('Module', [('FunctionDef', (1, 0, 1, 38), 'f', ('arguments', [], [], None, [], [], None, []), [('Pass', (1, 34, 1, 38))], [], None, None, [('TypeVar', (1, 6, 1, 19), 'T', ('Tuple', (1, 9, 1, 19), [('Name', (1, 10, 1, 13), 'int', ('Load',)), ('Name', (1, 15, 1, 18), 'str', ('Load',))], ('Load',))), ('TypeVarTuple', (1, 21, 1, 24), 'Ts'), ('ParamSpec', (1, 26, 1, 29), 'P')])], []),
]
single_results = [
('Interactive', [('Expr', (1, 0, 1, 3), ('BinOp', (1, 0, 1, 3), ('Constant', (1, 0, 1, 1), 1, None), ('Add',), ('Constant', (1, 2, 1, 3), 2, None)))]),
diff --git a/Lib/test/test_capi/test_exceptions.py b/Lib/test/test_capi/test_exceptions.py
index 1081f40b6981af..118b575cba6df7 100644
--- a/Lib/test/test_capi/test_exceptions.py
+++ b/Lib/test/test_capi/test_exceptions.py
@@ -5,6 +5,7 @@
from test import support
from test.support import import_helper
from test.support.script_helper import assert_python_failure
+from test.support.testcase import ExceptionIsLikeMixin
from .test_misc import decode_stderr
@@ -189,5 +190,97 @@ def __repr__(self):
'Normalization failed: type=Broken args=')
+class Test_PyUnstable_Exc_PrepReraiseStar(ExceptionIsLikeMixin, unittest.TestCase):
+
+ def setUp(self):
+ super().setUp()
+ try:
+ raise ExceptionGroup("eg", [TypeError('bad type'), ValueError(42)])
+ except ExceptionGroup as e:
+ self.orig = e
+
+ def test_invalid_args(self):
+ with self.assertRaisesRegex(TypeError, "orig must be an exception"):
+ _testcapi.unstable_exc_prep_reraise_star(42, [None])
+
+ with self.assertRaisesRegex(TypeError, "excs must be a list"):
+ _testcapi.unstable_exc_prep_reraise_star(self.orig, 42)
+
+ with self.assertRaisesRegex(TypeError, "not an exception"):
+ _testcapi.unstable_exc_prep_reraise_star(self.orig, [TypeError(42), 42])
+
+ with self.assertRaisesRegex(ValueError, "orig must be a raised exception"):
+ _testcapi.unstable_exc_prep_reraise_star(ValueError(42), [TypeError(42)])
+
+ with self.assertRaisesRegex(ValueError, "orig must be a raised exception"):
+ _testcapi.unstable_exc_prep_reraise_star(ExceptionGroup("eg", [ValueError(42)]),
+ [TypeError(42)])
+
+
+ def test_nothing_to_reraise(self):
+ self.assertEqual(
+ _testcapi.unstable_exc_prep_reraise_star(self.orig, [None]), None)
+
+ try:
+ raise ValueError(42)
+ except ValueError as e:
+ orig = e
+ self.assertEqual(
+ _testcapi.unstable_exc_prep_reraise_star(orig, [None]), None)
+
+ def test_reraise_orig(self):
+ orig = self.orig
+ res = _testcapi.unstable_exc_prep_reraise_star(orig, [orig])
+ self.assertExceptionIsLike(res, orig)
+
+ def test_raise_orig_parts(self):
+ orig = self.orig
+ match, rest = orig.split(TypeError)
+
+ test_cases = [
+ ([match, rest], orig),
+ ([rest, match], orig),
+ ([match], match),
+ ([rest], rest),
+ ([], None),
+ ]
+
+ for input, expected in test_cases:
+ with self.subTest(input=input):
+ res = _testcapi.unstable_exc_prep_reraise_star(orig, input)
+ self.assertExceptionIsLike(res, expected)
+
+
+ def test_raise_with_new_exceptions(self):
+ orig = self.orig
+
+ match, rest = orig.split(TypeError)
+ new1 = OSError('bad file')
+ new2 = RuntimeError('bad runtime')
+
+ test_cases = [
+ ([new1, match, rest], ExceptionGroup("", [new1, orig])),
+ ([match, new1, rest], ExceptionGroup("", [new1, orig])),
+ ([match, rest, new1], ExceptionGroup("", [new1, orig])),
+
+ ([new1, new2, match, rest], ExceptionGroup("", [new1, new2, orig])),
+ ([new1, match, new2, rest], ExceptionGroup("", [new1, new2, orig])),
+ ([new2, rest, match, new1], ExceptionGroup("", [new2, new1, orig])),
+ ([rest, new2, match, new1], ExceptionGroup("", [new2, new1, orig])),
+
+
+ ([new1, new2, rest], ExceptionGroup("", [new1, new2, rest])),
+ ([new1, match, new2], ExceptionGroup("", [new1, new2, match])),
+ ([rest, new2, new1], ExceptionGroup("", [new2, new1, rest])),
+ ([new1, new2], ExceptionGroup("", [new1, new2])),
+ ([new2, new1], ExceptionGroup("", [new2, new1])),
+ ]
+
+ for (input, expected) in test_cases:
+ with self.subTest(input=input):
+ res = _testcapi.unstable_exc_prep_reraise_star(orig, input)
+ self.assertExceptionIsLike(res, expected)
+
+
if __name__ == "__main__":
unittest.main()
diff --git a/Lib/test/test_capi/test_misc.py b/Lib/test/test_capi/test_misc.py
index dc3441e4496a5d..e1b55cffe8ff52 100644
--- a/Lib/test/test_capi/test_misc.py
+++ b/Lib/test/test_capi/test_misc.py
@@ -1,8 +1,9 @@
# Run the _testcapi module tests (tests for the Python/C API): by defn,
# these are all functions _testcapi exports whose name begins with 'test_'.
-from collections import OrderedDict
import _thread
+from collections import OrderedDict
+import contextlib
import importlib.machinery
import importlib.util
import os
@@ -1593,6 +1594,74 @@ def test_module_state_shared_in_global(self):
self.assertEqual(main_attr_id, subinterp_attr_id)
+class BuiltinStaticTypesTests(unittest.TestCase):
+
+ TYPES = [
+ object,
+ type,
+ int,
+ str,
+ dict,
+ type(None),
+ bool,
+ BaseException,
+ Exception,
+ Warning,
+ DeprecationWarning, # Warning subclass
+ ]
+
+ def test_tp_bases_is_set(self):
+ # PyTypeObject.tp_bases is documented as public API.
+ # See https://github.com/python/cpython/issues/105020.
+ for typeobj in self.TYPES:
+ with self.subTest(typeobj):
+ bases = _testcapi.type_get_tp_bases(typeobj)
+ self.assertIsNot(bases, None)
+
+ def test_tp_mro_is_set(self):
+ # PyTypeObject.tp_bases is documented as public API.
+ # See https://github.com/python/cpython/issues/105020.
+ for typeobj in self.TYPES:
+ with self.subTest(typeobj):
+ mro = _testcapi.type_get_tp_mro(typeobj)
+ self.assertIsNot(mro, None)
+
+
+class TestStaticTypes(unittest.TestCase):
+
+ _has_run = False
+
+ @classmethod
+ def setUpClass(cls):
+ # The tests here don't play nice with our approach to refleak
+ # detection, so we bail out in that case.
+ if cls._has_run:
+ raise unittest.SkipTest('these tests do not support re-running')
+ cls._has_run = True
+
+ @contextlib.contextmanager
+ def basic_static_type(self, *args):
+ cls = _testcapi.get_basic_static_type(*args)
+ yield cls
+
+ def test_pytype_ready_always_sets_tp_type(self):
+ # The point of this test is to prevent something like
+ # https://github.com/python/cpython/issues/104614
+ # from happening again.
+
+ # First check when tp_base/tp_bases is *not* set before PyType_Ready().
+ with self.basic_static_type() as cls:
+ self.assertIs(cls.__base__, object);
+ self.assertEqual(cls.__bases__, (object,));
+ self.assertIs(type(cls), type(object));
+
+ # Then check when we *do* set tp_base/tp_bases first.
+ with self.basic_static_type(object) as cls:
+ self.assertIs(cls.__base__, object);
+ self.assertEqual(cls.__bases__, (object,));
+ self.assertIs(type(cls), type(object));
+
+
class TestThreadState(unittest.TestCase):
@threading_helper.reap_threads
diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py
index fb7a016c9007f8..98010d18c0adb2 100644
--- a/Lib/test/test_enum.py
+++ b/Lib/test/test_enum.py
@@ -4254,11 +4254,14 @@ class Color(Enum):
red = 'red'
blue = 2
green = auto()
+ yellow = auto()
- self.assertEqual(list(Color), [Color.red, Color.blue, Color.green])
+ self.assertEqual(list(Color),
+ [Color.red, Color.blue, Color.green, Color.yellow])
self.assertEqual(Color.red.value, 'red')
self.assertEqual(Color.blue.value, 2)
self.assertEqual(Color.green.value, 3)
+ self.assertEqual(Color.yellow.value, 4)
@unittest.skipIf(
python_version < (3, 13),
diff --git a/Lib/test/test_fstring.py b/Lib/test/test_fstring.py
index 3ba2f943e6e968..031b94d8d58a39 100644
--- a/Lib/test/test_fstring.py
+++ b/Lib/test/test_fstring.py
@@ -764,6 +764,16 @@ def test_format_specifier_expressions(self):
"""f'{"s"!{"r"}}'""",
])
+ def test_custom_format_specifier(self):
+ class CustomFormat:
+ def __format__(self, format_spec):
+ return format_spec
+
+ self.assertEqual(f'{CustomFormat():\n}', '\n')
+ self.assertEqual(f'{CustomFormat():\u2603}', '☃')
+ with self.assertWarns(SyntaxWarning):
+ exec('f"{F():¯\_(ツ)_/¯}"', {'F': CustomFormat})
+
def test_side_effect_order(self):
class X:
def __init__(self):
diff --git a/Lib/test/test_import/__init__.py b/Lib/test/test_import/__init__.py
index e2384a08ecaa90..227c912bc8c322 100644
--- a/Lib/test/test_import/__init__.py
+++ b/Lib/test/test_import/__init__.py
@@ -2320,6 +2320,7 @@ def test_variants(self):
self.add_module_cleanup(name)
with self.subTest(name):
loaded = self.load(name)
+ self.addCleanup(loaded.module._clear_module_state)
self.check_common(loaded)
self.assertIsNot(loaded.snapshot.state_initialized, None)
@@ -2379,14 +2380,19 @@ def test_with_reinit_reloaded(self):
# Keep a reference around.
basic = self.load(self.NAME)
- for name in [
- f'{self.NAME}_with_reinit', # m_size == 0
- f'{self.NAME}_with_state', # m_size > 0
+ for name, has_state in [
+ (f'{self.NAME}_with_reinit', False), # m_size == 0
+ (f'{self.NAME}_with_state', True), # m_size > 0
]:
self.add_module_cleanup(name)
- with self.subTest(name):
+ with self.subTest(name=name, has_state=has_state):
loaded = self.load(name)
+ if has_state:
+ self.addCleanup(loaded.module._clear_module_state)
+
reloaded = self.re_load(name, loaded.module)
+ if has_state:
+ self.addCleanup(reloaded.module._clear_module_state)
self.check_common(loaded)
self.check_common(reloaded)
diff --git a/Lib/test/test_importlib/test_threaded_import.py b/Lib/test/test_importlib/test_threaded_import.py
index 85c3032aed53b1..68de4a66f3c703 100644
--- a/Lib/test/test_importlib/test_threaded_import.py
+++ b/Lib/test/test_importlib/test_threaded_import.py
@@ -238,7 +238,8 @@ def target():
self.addCleanup(forget, TESTFN)
self.addCleanup(rmtree, '__pycache__')
importlib.invalidate_caches()
- __import__(TESTFN)
+ with threading_helper.wait_threads_exit():
+ __import__(TESTFN)
del sys.modules[TESTFN]
def test_concurrent_futures_circular_import(self):
diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py
index 0590e49d0e1a43..d89953ab60f022 100644
--- a/Lib/test/test_inspect.py
+++ b/Lib/test/test_inspect.py
@@ -557,7 +557,8 @@ def test_getclasses(self):
def test_getfunctions(self):
functions = inspect.getmembers(mod, inspect.isfunction)
- self.assertEqual(functions, [('eggs', mod.eggs),
+ self.assertEqual(functions, [('after_closing', mod.after_closing),
+ ('eggs', mod.eggs),
('lobbest', mod.lobbest),
('spam', mod.spam)])
@@ -641,6 +642,7 @@ def test_getsource(self):
self.assertSourceEqual(git.abuse, 29, 39)
self.assertSourceEqual(mod.StupidGit, 21, 51)
self.assertSourceEqual(mod.lobbest, 75, 76)
+ self.assertSourceEqual(mod.after_closing, 120, 120)
def test_getsourcefile(self):
self.assertEqual(normcase(inspect.getsourcefile(mod.spam)), modfile)
@@ -776,6 +778,22 @@ def test_twoline_indented_lambda(self):
# where the second line _is_ indented.
self.assertSourceEqual(mod2.tlli, 33, 34)
+ def test_parenthesized_multiline_lambda(self):
+ # Test inspect.getsource with a parenthesized multi-line lambda
+ # function.
+ self.assertSourceEqual(mod2.parenthesized_lambda, 279, 279)
+ self.assertSourceEqual(mod2.parenthesized_lambda2, 281, 281)
+ self.assertSourceEqual(mod2.parenthesized_lambda3, 283, 283)
+
+ def test_post_line_parenthesized_lambda(self):
+ # Test inspect.getsource with a parenthesized multi-line lambda
+ # function.
+ self.assertSourceEqual(mod2.post_line_parenthesized_lambda1, 286, 287)
+
+ def test_nested_lambda(self):
+ # Test inspect.getsource with a nested lambda function.
+ self.assertSourceEqual(mod2.nested_lambda, 291, 292)
+
def test_onelinefunc(self):
# Test inspect.getsource with a regular one-line function.
self.assertSourceEqual(mod2.onelinefunc, 37, 37)
@@ -2766,6 +2784,11 @@ class ThisWorksNow:
# Regression test for issue #20586
test_callable(_testcapi.docstring_with_signature_but_no_doc)
+ # Regression test for gh-104955
+ method = bytearray.__release_buffer__
+ sig = test_unbound_method(method)
+ self.assertEqual(list(sig.parameters), ['self', 'buffer'])
+
@cpython_only
@unittest.skipIf(MISSING_C_DOCSTRINGS,
"Signature information for builtins requires docstrings")
@@ -3904,6 +3927,24 @@ def __signature__():
('b', 2, ..., 'positional_or_keyword')),
...))
+ def test_signature_on_derived_classes(self):
+ # gh-105080: Make sure that signatures are consistent on derived classes
+
+ class B:
+ def __new__(self, *args, **kwargs):
+ return super().__new__(self)
+ def __init__(self, value):
+ self.value = value
+
+ class D1(B):
+ def __init__(self, value):
+ super().__init__(value)
+
+ class D2(D1):
+ pass
+
+ self.assertEqual(inspect.signature(D2), inspect.signature(D1))
+
class TestParameterObject(unittest.TestCase):
def test_signature_parameter_kinds(self):
diff --git a/Lib/test/test_itertools.py b/Lib/test/test_itertools.py
index 9fe559d4b7eed5..4d6ea780e15373 100644
--- a/Lib/test/test_itertools.py
+++ b/Lib/test/test_itertools.py
@@ -15,6 +15,26 @@
import struct
import threading
import gc
+import warnings
+
+def pickle_deprecated(testfunc):
+ """ Run the test three times.
+ First, verify that a Deprecation Warning is raised.
+ Second, run normally but with DeprecationWarnings temporarily disabled.
+ Third, run with warnings promoted to errors.
+ """
+ def inner(self):
+ with self.assertWarns(DeprecationWarning):
+ testfunc(self)
+ with warnings.catch_warnings():
+ warnings.simplefilter("ignore", category=DeprecationWarning)
+ testfunc(self)
+ with warnings.catch_warnings():
+ warnings.simplefilter("error", category=DeprecationWarning)
+ with self.assertRaises((DeprecationWarning, AssertionError, SystemError)):
+ testfunc(self)
+
+ return inner
maxsize = support.MAX_Py_ssize_t
minsize = -maxsize-1
@@ -124,6 +144,7 @@ def expand(it, i=0):
c = expand(compare[took:])
self.assertEqual(a, c);
+ @pickle_deprecated
def test_accumulate(self):
self.assertEqual(list(accumulate(range(10))), # one positional arg
[0, 1, 3, 6, 10, 15, 21, 28, 36, 45])
@@ -220,6 +241,7 @@ def test_chain_from_iterable(self):
self.assertRaises(TypeError, list, chain.from_iterable([2, 3]))
self.assertEqual(list(islice(chain.from_iterable(repeat(range(5))), 2)), [0, 1])
+ @pickle_deprecated
def test_chain_reducible(self):
for oper in [copy.deepcopy] + picklecopiers:
it = chain('abc', 'def')
@@ -233,6 +255,7 @@ def test_chain_reducible(self):
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
self.pickletest(proto, chain('abc', 'def'), compare=list('abcdef'))
+ @pickle_deprecated
def test_chain_setstate(self):
self.assertRaises(TypeError, chain().__setstate__, ())
self.assertRaises(TypeError, chain().__setstate__, [])
@@ -246,6 +269,7 @@ def test_chain_setstate(self):
it.__setstate__((iter(['abc', 'def']), iter(['ghi'])))
self.assertEqual(list(it), ['ghi', 'a', 'b', 'c', 'd', 'e', 'f'])
+ @pickle_deprecated
def test_combinations(self):
self.assertRaises(TypeError, combinations, 'abc') # missing r argument
self.assertRaises(TypeError, combinations, 'abc', 2, 1) # too many arguments
@@ -269,7 +293,6 @@ def test_combinations(self):
self.assertEqual(list(op(testIntermediate)),
[(0,1,3), (0,2,3), (1,2,3)])
-
def combinations1(iterable, r):
'Pure python version shown in the docs'
pool = tuple(iterable)
@@ -337,6 +360,7 @@ def test_combinations_tuple_reuse(self):
self.assertEqual(len(set(map(id, combinations('abcde', 3)))), 1)
self.assertNotEqual(len(set(map(id, list(combinations('abcde', 3))))), 1)
+ @pickle_deprecated
def test_combinations_with_replacement(self):
cwr = combinations_with_replacement
self.assertRaises(TypeError, cwr, 'abc') # missing r argument
@@ -425,6 +449,7 @@ def test_combinations_with_replacement_tuple_reuse(self):
self.assertEqual(len(set(map(id, cwr('abcde', 3)))), 1)
self.assertNotEqual(len(set(map(id, list(cwr('abcde', 3))))), 1)
+ @pickle_deprecated
def test_permutations(self):
self.assertRaises(TypeError, permutations) # too few arguments
self.assertRaises(TypeError, permutations, 'abc', 2, 1) # too many arguments
@@ -531,6 +556,7 @@ def test_combinatorics(self):
self.assertEqual(comb, list(filter(set(perm).__contains__, cwr))) # comb: cwr that is a perm
self.assertEqual(comb, sorted(set(cwr) & set(perm))) # comb: both a cwr and a perm
+ @pickle_deprecated
def test_compress(self):
self.assertEqual(list(compress(data='ABCDEF', selectors=[1,0,1,0,1,1])), list('ACEF'))
self.assertEqual(list(compress('ABCDEF', [1,0,1,0,1,1])), list('ACEF'))
@@ -564,7 +590,7 @@ def test_compress(self):
next(testIntermediate)
self.assertEqual(list(op(testIntermediate)), list(result2))
-
+ @pickle_deprecated
def test_count(self):
self.assertEqual(lzip('abc',count()), [('a', 0), ('b', 1), ('c', 2)])
self.assertEqual(lzip('abc',count(3)), [('a', 3), ('b', 4), ('c', 5)])
@@ -613,6 +639,7 @@ def test_count(self):
#check proper internal error handling for large "step' sizes
count(1, maxsize+5); sys.exc_info()
+ @pickle_deprecated
def test_count_with_stride(self):
self.assertEqual(lzip('abc',count(2,3)), [('a', 2), ('b', 5), ('c', 8)])
self.assertEqual(lzip('abc',count(start=2,step=3)),
@@ -675,6 +702,7 @@ def test_cycle(self):
self.assertRaises(TypeError, cycle, 5)
self.assertEqual(list(islice(cycle(gen3()),10)), [0,1,2,0,1,2,0,1,2,0])
+ @pickle_deprecated
def test_cycle_copy_pickle(self):
# check copy, deepcopy, pickle
c = cycle('abc')
@@ -711,6 +739,7 @@ def test_cycle_copy_pickle(self):
d = pickle.loads(p) # rebuild the cycle object
self.assertEqual(take(20, d), list('cdeabcdeabcdeabcdeab'))
+ @pickle_deprecated
def test_cycle_unpickle_compat(self):
testcases = [
b'citertools\ncycle\n(c__builtin__\niter\n((lI1\naI2\naI3\natRI1\nbtR((lI1\naI0\ntb.',
@@ -742,6 +771,7 @@ def test_cycle_unpickle_compat(self):
it = pickle.loads(t)
self.assertEqual(take(10, it), [2, 3, 1, 2, 3, 1, 2, 3, 1, 2])
+ @pickle_deprecated
def test_cycle_setstate(self):
# Verify both modes for restoring state
@@ -778,6 +808,7 @@ def test_cycle_setstate(self):
self.assertRaises(TypeError, cycle('').__setstate__, ())
self.assertRaises(TypeError, cycle('').__setstate__, ([],))
+ @pickle_deprecated
def test_groupby(self):
# Check whether it accepts arguments correctly
self.assertEqual([], list(groupby([])))
@@ -935,6 +966,7 @@ def test_filter(self):
c = filter(isEven, range(6))
self.pickletest(proto, c)
+ @pickle_deprecated
def test_filterfalse(self):
self.assertEqual(list(filterfalse(isEven, range(6))), [1,3,5])
self.assertEqual(list(filterfalse(None, [0,1,0,2,0])), [0,0,0])
@@ -965,6 +997,7 @@ def test_zip(self):
lzip('abc', 'def'))
@support.impl_detail("tuple reuse is specific to CPython")
+ @pickle_deprecated
def test_zip_tuple_reuse(self):
ids = list(map(id, zip('abc', 'def')))
self.assertEqual(min(ids), max(ids))
@@ -1040,6 +1073,7 @@ def test_zip_longest_tuple_reuse(self):
ids = list(map(id, list(zip_longest('abc', 'def'))))
self.assertEqual(len(dict.fromkeys(ids)), len(ids))
+ @pickle_deprecated
def test_zip_longest_pickling(self):
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
self.pickletest(proto, zip_longest("abc", "def"))
@@ -1186,6 +1220,7 @@ def test_product_tuple_reuse(self):
self.assertEqual(len(set(map(id, product('abc', 'def')))), 1)
self.assertNotEqual(len(set(map(id, list(product('abc', 'def'))))), 1)
+ @pickle_deprecated
def test_product_pickling(self):
# check copy, deepcopy, pickle
for args, result in [
@@ -1201,6 +1236,7 @@ def test_product_pickling(self):
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
self.pickletest(proto, product(*args))
+ @pickle_deprecated
def test_product_issue_25021(self):
# test that indices are properly clamped to the length of the tuples
p = product((1, 2),(3,))
@@ -1211,6 +1247,7 @@ def test_product_issue_25021(self):
p.__setstate__((0, 0, 0x1000)) # will access tuple element 1 if not clamped
self.assertRaises(StopIteration, next, p)
+ @pickle_deprecated
def test_repeat(self):
self.assertEqual(list(repeat(object='a', times=3)), ['a', 'a', 'a'])
self.assertEqual(lzip(range(3),repeat('a')),
@@ -1243,6 +1280,7 @@ def test_repeat_with_negative_times(self):
self.assertEqual(repr(repeat('a', times=-1)), "repeat('a', 0)")
self.assertEqual(repr(repeat('a', times=-2)), "repeat('a', 0)")
+ @pickle_deprecated
def test_map(self):
self.assertEqual(list(map(operator.pow, range(3), range(1,7))),
[0**1, 1**2, 2**3])
@@ -1273,6 +1311,7 @@ def test_map(self):
c = map(tupleize, 'abc', count())
self.pickletest(proto, c)
+ @pickle_deprecated
def test_starmap(self):
self.assertEqual(list(starmap(operator.pow, zip(range(3), range(1,7)))),
[0**1, 1**2, 2**3])
@@ -1300,6 +1339,7 @@ def test_starmap(self):
c = starmap(operator.pow, zip(range(3), range(1,7)))
self.pickletest(proto, c)
+ @pickle_deprecated
def test_islice(self):
for args in [ # islice(args) should agree with range(args)
(10, 20, 3),
@@ -1394,6 +1434,7 @@ def __index__(self):
self.assertEqual(list(islice(range(100), IntLike(10), IntLike(50), IntLike(5))),
list(range(10,50,5)))
+ @pickle_deprecated
def test_takewhile(self):
data = [1, 3, 5, 20, 2, 4, 6, 8]
self.assertEqual(list(takewhile(underten, data)), [1, 3, 5])
@@ -1414,6 +1455,7 @@ def test_takewhile(self):
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
self.pickletest(proto, takewhile(underten, data))
+ @pickle_deprecated
def test_dropwhile(self):
data = [1, 3, 5, 20, 2, 4, 6, 8]
self.assertEqual(list(dropwhile(underten, data)), [20, 2, 4, 6, 8])
@@ -1431,6 +1473,7 @@ def test_dropwhile(self):
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
self.pickletest(proto, dropwhile(underten, data))
+ @pickle_deprecated
def test_tee(self):
n = 200
@@ -1732,6 +1775,7 @@ class TestExamples(unittest.TestCase):
def test_accumulate(self):
self.assertEqual(list(accumulate([1,2,3,4,5])), [1, 3, 6, 10, 15])
+ @pickle_deprecated
def test_accumulate_reducible(self):
# check copy, deepcopy, pickle
data = [1, 2, 3, 4, 5]
@@ -1747,6 +1791,7 @@ def test_accumulate_reducible(self):
self.assertEqual(list(copy.deepcopy(it)), accumulated[1:])
self.assertEqual(list(copy.copy(it)), accumulated[1:])
+ @pickle_deprecated
def test_accumulate_reducible_none(self):
# Issue #25718: total is None
it = accumulate([None, None, None], operator.is_)
diff --git a/Lib/test/test_ntpath.py b/Lib/test/test_ntpath.py
index 0e57c165ca98ea..538d758624c9d6 100644
--- a/Lib/test/test_ntpath.py
+++ b/Lib/test/test_ntpath.py
@@ -992,6 +992,26 @@ def test_fast_paths_in_use(self):
self.assertTrue(os.path.exists is nt._path_exists)
self.assertFalse(inspect.isfunction(os.path.exists))
+ @unittest.skipIf(os.name != 'nt', "Dev Drives only exist on Win32")
+ def test_isdevdrive(self):
+ # Result may be True or False, but shouldn't raise
+ self.assertIn(ntpath.isdevdrive(os_helper.TESTFN), (True, False))
+ # ntpath.isdevdrive can handle relative paths
+ self.assertIn(ntpath.isdevdrive("."), (True, False))
+ self.assertIn(ntpath.isdevdrive(b"."), (True, False))
+ # Volume syntax is supported
+ self.assertIn(ntpath.isdevdrive(os.listvolumes()[0]), (True, False))
+ # Invalid volume returns False from os.path method
+ self.assertFalse(ntpath.isdevdrive(r"\\?\Volume{00000000-0000-0000-0000-000000000000}\\"))
+ # Invalid volume raises from underlying helper
+ with self.assertRaises(OSError):
+ nt._path_isdevdrive(r"\\?\Volume{00000000-0000-0000-0000-000000000000}\\")
+
+ @unittest.skipIf(os.name == 'nt', "isdevdrive fallback only used off Win32")
+ def test_isdevdrive_fallback(self):
+ # Fallback always returns False
+ self.assertFalse(ntpath.isdevdrive(os_helper.TESTFN))
+
class NtCommonTest(test_genericpath.CommonTest, unittest.TestCase):
pathmodule = ntpath
diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py
index 584cc05ca82a55..9453742132667d 100644
--- a/Lib/test/test_os.py
+++ b/Lib/test/test_os.py
@@ -4700,6 +4700,22 @@ def test_fork_warns_when_non_python_thread_exists(self):
self.assertEqual(err.decode("utf-8"), "")
self.assertEqual(out.decode("utf-8"), "")
+ def test_fork_at_exit(self):
+ code = """if 1:
+ import atexit
+ import os
+
+ def exit_handler():
+ pid = os.fork()
+ if pid != 0:
+ print("shouldn't be printed")
+
+ atexit.register(exit_handler)
+ """
+ _, out, err = assert_python_ok("-c", code)
+ self.assertEqual(b"", out)
+ self.assertIn(b"can't fork at interpreter shutdown", err)
+
# Only test if the C version is provided, otherwise TestPEP519 already tested
# the pure Python implementation.
diff --git a/Lib/test/test_pathlib.py b/Lib/test/test_pathlib.py
index ab2c2b232a0411..bf4decf9f97ae8 100644
--- a/Lib/test/test_pathlib.py
+++ b/Lib/test/test_pathlib.py
@@ -789,6 +789,12 @@ def test_div(self):
pp = P('//a') / '/c'
self.assertEqual(pp, P('/c'))
+ def test_parse_windows_path(self):
+ P = self.cls
+ p = P('c:', 'a', 'b')
+ pp = P(pathlib.PureWindowsPath('c:\\a\\b'))
+ self.assertEqual(p, pp)
+
class PureWindowsPathTest(_BasePurePathTest, unittest.TestCase):
cls = pathlib.PureWindowsPath
@@ -904,6 +910,7 @@ def test_eq(self):
self.assertEqual(P('a/B'), P('A/b'))
self.assertEqual(P('C:a/B'), P('c:A/b'))
self.assertEqual(P('//Some/SHARE/a/B'), P('//somE/share/A/b'))
+ self.assertEqual(P('\u0130'), P('i\u0307'))
def test_as_uri(self):
P = self.cls
diff --git a/Lib/test/test_property.py b/Lib/test/test_property.py
index d4bdf50c0192ae..45aa9e51c06de0 100644
--- a/Lib/test/test_property.py
+++ b/Lib/test/test_property.py
@@ -246,16 +246,67 @@ class PropertySubSlots(property):
class PropertySubclassTests(unittest.TestCase):
def test_slots_docstring_copy_exception(self):
- try:
+ # A special case error that we preserve despite the GH-98963 behavior
+ # that would otherwise silently ignore this error.
+ # This came from commit b18500d39d791c879e9904ebac293402b4a7cd34
+ # as part of https://bugs.python.org/issue5890 which allowed docs to
+ # be set via property subclasses in the first place.
+ with self.assertRaises(AttributeError):
class Foo(object):
@PropertySubSlots
def spam(self):
"""Trying to copy this docstring will raise an exception"""
return 1
- except AttributeError:
- pass
- else:
- raise Exception("AttributeError not raised")
+
+ def test_property_with_slots_no_docstring(self):
+ # https://github.com/python/cpython/issues/98963#issuecomment-1574413319
+ class slotted_prop(property):
+ __slots__ = ("foo",)
+
+ p = slotted_prop() # no AttributeError
+ self.assertIsNone(getattr(p, "__doc__", None))
+
+ def undocumented_getter():
+ return 4
+
+ p = slotted_prop(undocumented_getter) # New in 3.12: no AttributeError
+ self.assertIsNone(getattr(p, "__doc__", None))
+
+ @unittest.skipIf(sys.flags.optimize >= 2,
+ "Docstrings are omitted with -O2 and above")
+ def test_property_with_slots_docstring_silently_dropped(self):
+ # https://github.com/python/cpython/issues/98963#issuecomment-1574413319
+ class slotted_prop(property):
+ __slots__ = ("foo",)
+
+ p = slotted_prop(doc="what's up") # no AttributeError
+ self.assertIsNone(p.__doc__)
+
+ def documented_getter():
+ """getter doc."""
+ return 4
+
+ # Historical behavior: A docstring from a getter always raises.
+ # (matches test_slots_docstring_copy_exception above).
+ with self.assertRaises(AttributeError):
+ p = slotted_prop(documented_getter)
+
+ @unittest.skipIf(sys.flags.optimize >= 2,
+ "Docstrings are omitted with -O2 and above")
+ def test_property_with_slots_and_doc_slot_docstring_present(self):
+ # https://github.com/python/cpython/issues/98963#issuecomment-1574413319
+ class slotted_prop(property):
+ __slots__ = ("foo", "__doc__")
+
+ p = slotted_prop(doc="what's up")
+ self.assertEqual("what's up", p.__doc__) # new in 3.12: This gets set.
+
+ def documented_getter():
+ """what's up getter doc?"""
+ return 4
+
+ p = slotted_prop(documented_getter)
+ self.assertEqual("what's up getter doc?", p.__doc__)
@unittest.skipIf(sys.flags.optimize >= 2,
"Docstrings are omitted with -O2 and above")
diff --git a/Lib/test/test_stable_abi_ctypes.py b/Lib/test/test_stable_abi_ctypes.py
index 4ca39d85e5460c..60ad3603ae9223 100644
--- a/Lib/test/test_stable_abi_ctypes.py
+++ b/Lib/test/test_stable_abi_ctypes.py
@@ -918,6 +918,8 @@ def test_windows_feature_macros(self):
)
if feature_macros['Py_REF_DEBUG']:
SYMBOL_NAMES += (
+ '_Py_DecRefTotal_DO_NOT_USE_THIS',
+ '_Py_IncRefTotal_DO_NOT_USE_THIS',
'_Py_NegativeRefcount',
'_Py_RefTotal',
)
diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py
index 92f81eaafb1c93..51ba423a0f1c92 100644
--- a/Lib/test/test_subprocess.py
+++ b/Lib/test/test_subprocess.py
@@ -5,6 +5,7 @@
from test.support import import_helper
from test.support import os_helper
from test.support import warnings_helper
+from test.support.script_helper import assert_python_ok
import subprocess
import sys
import signal
@@ -3329,6 +3330,24 @@ def test_communicate_repeated_call_after_stdout_close(self):
except subprocess.TimeoutExpired:
pass
+ def test_preexec_at_exit(self):
+ code = f"""if 1:
+ import atexit
+ import subprocess
+
+ def dummy():
+ pass
+
+ def exit_handler():
+ subprocess.Popen({ZERO_RETURN_CMD}, preexec_fn=dummy)
+ print("shouldn't be printed")
+
+ atexit.register(exit_handler)
+ """
+ _, out, err = assert_python_ok("-c", code)
+ self.assertEqual(out, b'')
+ self.assertIn(b"preexec_fn not supported at interpreter shutdown", err)
+
@unittest.skipUnless(mswindows, "Windows specific tests")
class Win32ProcessTestCase(BaseTestCase):
diff --git a/Lib/test/test_super.py b/Lib/test/test_super.py
index 698ab48f48eaa1..664cf70b3cf0fa 100644
--- a/Lib/test/test_super.py
+++ b/Lib/test/test_super.py
@@ -410,6 +410,18 @@ def method(self):
self.assertEqual(C().method(), mysuper)
+ def test_unusual_getattro(self):
+ class MyType(type):
+ pass
+
+ def test(name):
+ mytype = MyType(name, (MyType,), {})
+ super(MyType, type(mytype)).__setattr__(mytype, "bar", 1)
+ self.assertEqual(mytype.bar, 1)
+
+ test("foo1")
+ test("foo2")
+
if __name__ == "__main__":
unittest.main()
diff --git a/Lib/test/test_tabnanny.py b/Lib/test/test_tabnanny.py
index aa700118f735d9..cc122cafc7985c 100644
--- a/Lib/test/test_tabnanny.py
+++ b/Lib/test/test_tabnanny.py
@@ -222,7 +222,7 @@ def test_when_nannynag_error_verbose(self):
"""
with TemporaryPyFile(SOURCE_CODES["nannynag_errored"]) as file_path:
out = f"{file_path!r}: *** Line 3: trouble in tab city! ***\n"
- out += "offending line: '\\tprint(\"world\")\\n'\n"
+ out += "offending line: '\\tprint(\"world\")'\n"
out += "inconsistent use of tabs and spaces in indentation\n"
tabnanny.verbose = 1
@@ -231,7 +231,7 @@ def test_when_nannynag_error_verbose(self):
def test_when_nannynag_error(self):
"""A python source code file eligible for raising `tabnanny.NannyNag`."""
with TemporaryPyFile(SOURCE_CODES["nannynag_errored"]) as file_path:
- out = f"{file_path} 3 '\\tprint(\"world\")\\n'\n"
+ out = f"{file_path} 3 '\\tprint(\"world\")'\n"
self.verify_tabnanny_check(file_path, out=out)
def test_when_no_file(self):
@@ -341,7 +341,7 @@ def test_verbose_mode(self):
"""Should display more error information if verbose mode is on."""
with TemporaryPyFile(SOURCE_CODES["nannynag_errored"]) as path:
stdout = textwrap.dedent(
- "offending line: '\\tprint(\"world\")\\n'"
+ "offending line: '\\tprint(\"world\")'"
).strip()
self.validate_cmd("-v", path, stdout=stdout, partial=True)
@@ -349,6 +349,6 @@ def test_double_verbose_mode(self):
"""Should display detailed error information if double verbose is on."""
with TemporaryPyFile(SOURCE_CODES["nannynag_errored"]) as path:
stdout = textwrap.dedent(
- "offending line: '\\tprint(\"world\")\\n'"
+ "offending line: '\\tprint(\"world\")'"
).strip()
self.validate_cmd("-vv", path, stdout=stdout, partial=True)
diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py
index 97165264b34bbe..9e4972ecb640df 100644
--- a/Lib/test/test_threading.py
+++ b/Lib/test/test_threading.py
@@ -531,34 +531,6 @@ def test_daemon_param(self):
t = threading.Thread(daemon=True)
self.assertTrue(t.daemon)
- @support.requires_fork()
- def test_fork_at_exit(self):
- # bpo-42350: Calling os.fork() after threading._shutdown() must
- # not log an error.
- code = textwrap.dedent("""
- import atexit
- import os
- import sys
- from test.support import wait_process
-
- # Import the threading module to register its "at fork" callback
- import threading
-
- def exit_handler():
- pid = os.fork()
- if not pid:
- print("child process ok", file=sys.stderr, flush=True)
- # child process
- else:
- wait_process(pid, exitcode=0)
-
- # exit_handler() will be called after threading._shutdown()
- atexit.register(exit_handler)
- """)
- _, out, err = assert_python_ok("-c", code)
- self.assertEqual(out, b'')
- self.assertEqual(err.rstrip(), b'child process ok')
-
@support.requires_fork()
def test_dummy_thread_after_fork(self):
# Issue #14308: a dummy thread in the active list doesn't mess up
@@ -1048,6 +1020,22 @@ def import_threading():
self.assertEqual(out, b'')
self.assertEqual(err, b'')
+ def test_start_new_thread_at_exit(self):
+ code = """if 1:
+ import atexit
+ import _thread
+
+ def f():
+ print("shouldn't be printed")
+
+ def exit_handler():
+ _thread.start_new_thread(f, ())
+
+ atexit.register(exit_handler)
+ """
+ _, out, err = assert_python_ok("-c", code)
+ self.assertEqual(out, b'')
+ self.assertIn(b"can't create new thread at interpreter shutdown", err)
class ThreadJoinOnShutdown(BaseTestCase):
diff --git a/Lib/test/test_tkinter/__init__.py b/Lib/test/test_tkinter/__init__.py
index edcb44951bde36..b1181bc04b7953 100644
--- a/Lib/test/test_tkinter/__init__.py
+++ b/Lib/test/test_tkinter/__init__.py
@@ -1,18 +1,23 @@
import os.path
import unittest
-from test import support
-from test.support import import_helper
+from test.support import (
+ check_sanitizer,
+ import_helper,
+ load_package_tests,
+ requires,
+ )
-if support.check_sanitizer(address=True, memory=True):
+
+if check_sanitizer(address=True, memory=True):
raise unittest.SkipTest("Tests involving libX11 can SEGFAULT on ASAN/MSAN builds")
# Skip test if _tkinter wasn't built.
import_helper.import_module('_tkinter')
# Skip test if tk cannot be initialized.
-support.requires('gui')
+requires('gui')
def load_tests(*args):
- return support.load_package_tests(os.path.dirname(__file__), *args)
+ return load_package_tests(os.path.dirname(__file__), *args)
diff --git a/Lib/test/test_tkinter/test_widgets.py b/Lib/test/test_tkinter/test_widgets.py
index 76cc16e5b977de..34e67c0cbc44a3 100644
--- a/Lib/test/test_tkinter/test_widgets.py
+++ b/Lib/test/test_tkinter/test_widgets.py
@@ -1408,10 +1408,13 @@ def test_configure_title(self):
def test_configure_type(self):
widget = self.create()
+ opts = ('normal, tearoff, or menubar'
+ if widget.info_patchlevel() < (8, 7) else
+ 'menubar, normal, or tearoff')
self.checkEnumParam(
widget, 'type',
'normal', 'tearoff', 'menubar',
- errmsg='bad type "{}": must be normal, tearoff, or menubar',
+ errmsg='bad type "{}": must be ' + opts,
)
def test_entryconfigure(self):
diff --git a/Lib/test/test_tokenize.py b/Lib/test/test_tokenize.py
index 8e7ab3d4b7b578..a9a2b7673887c9 100644
--- a/Lib/test/test_tokenize.py
+++ b/Lib/test/test_tokenize.py
@@ -1,6 +1,6 @@
from test import support
from test.support import os_helper
-from tokenize import (tokenize, _tokenize, untokenize, NUMBER, NAME, OP,
+from tokenize import (tokenize, untokenize, NUMBER, NAME, OP,
STRING, ENDMARKER, ENCODING, tok_name, detect_encoding,
open as tokenize_open, Untokenizer, generate_tokens,
NEWLINE, _generate_tokens_from_c_tokenizer, DEDENT, TokenInfo)
@@ -51,6 +51,25 @@ def check_tokenize(self, s, expected):
[" ENCODING 'utf-8' (0, 0) (0, 0)"] +
expected.rstrip().splitlines())
+ def test_invalid_readline(self):
+ def gen():
+ yield "sdfosdg"
+ yield "sdfosdg"
+ with self.assertRaises(TypeError):
+ list(tokenize(gen().__next__))
+
+ def gen():
+ yield b"sdfosdg"
+ yield b"sdfosdg"
+ with self.assertRaises(TypeError):
+ list(generate_tokens(gen().__next__))
+
+ def gen():
+ yield "sdfosdg"
+ 1/0
+ with self.assertRaises(ZeroDivisionError):
+ list(generate_tokens(gen().__next__))
+
def test_implicit_newline(self):
# Make sure that the tokenizer puts in an implicit NEWLINE
# when the input lacks a trailing new line.
@@ -82,8 +101,34 @@ def test_basic(self):
NAME 'False' (4, 11) (4, 16)
COMMENT '# NEWLINE' (4, 17) (4, 26)
NEWLINE '\\n' (4, 26) (4, 27)
- DEDENT '' (4, 27) (4, 27)
+ DEDENT '' (5, 0) (5, 0)
""")
+
+ self.check_tokenize("if True:\r\n # NL\r\n foo='bar'\r\n\r\n", """\
+ NAME 'if' (1, 0) (1, 2)
+ NAME 'True' (1, 3) (1, 7)
+ OP ':' (1, 7) (1, 8)
+ NEWLINE '\\r\\n' (1, 8) (1, 10)
+ COMMENT '# NL' (2, 4) (2, 8)
+ NL '\\r\\n' (2, 8) (2, 10)
+ INDENT ' ' (3, 0) (3, 4)
+ NAME 'foo' (3, 4) (3, 7)
+ OP '=' (3, 7) (3, 8)
+ STRING "\'bar\'" (3, 8) (3, 13)
+ NEWLINE '\\r\\n' (3, 13) (3, 15)
+ NL '\\r\\n' (4, 0) (4, 2)
+ DEDENT '' (5, 0) (5, 0)
+ """)
+
+ self.check_tokenize("x = 1 + \\\r\n1\r\n", """\
+ NAME 'x' (1, 0) (1, 1)
+ OP '=' (1, 2) (1, 3)
+ NUMBER '1' (1, 4) (1, 5)
+ OP '+' (1, 6) (1, 7)
+ NUMBER '1' (2, 0) (2, 1)
+ NEWLINE '\\r\\n' (2, 1) (2, 3)
+ """)
+
indent_error_file = b"""\
def k(x):
x += 2
@@ -103,7 +148,7 @@ def k(x):
e.exception.msg,
'unindent does not match any outer indentation level')
self.assertEqual(e.exception.offset, 9)
- self.assertEqual(e.exception.text, ' x += 5\n')
+ self.assertEqual(e.exception.text, ' x += 5')
def test_int(self):
# Ordinary integers and binary operators
@@ -755,8 +800,8 @@ def test_tabs(self):
NEWLINE '\\n' (2, 5) (2, 6)
INDENT ' \\t' (3, 0) (3, 9)
NAME 'pass' (3, 9) (3, 13)
- DEDENT '' (3, 14) (3, 14)
- DEDENT '' (3, 14) (3, 14)
+ DEDENT '' (4, 0) (4, 0)
+ DEDENT '' (4, 0) (4, 0)
""")
def test_non_ascii_identifiers(self):
@@ -968,7 +1013,7 @@ async def foo():
NUMBER '1' (2, 17) (2, 18)
OP ':' (2, 18) (2, 19)
NAME 'pass' (2, 20) (2, 24)
- DEDENT '' (2, 25) (2, 25)
+ DEDENT '' (3, 0) (3, 0)
""")
self.check_tokenize('''async def foo(async): await''', """\
@@ -1016,7 +1061,7 @@ async def bar(): pass
NAME 'await' (6, 2) (6, 7)
OP '=' (6, 8) (6, 9)
NUMBER '2' (6, 10) (6, 11)
- DEDENT '' (6, 12) (6, 12)
+ DEDENT '' (7, 0) (7, 0)
""")
self.check_tokenize('''\
@@ -1054,7 +1099,31 @@ async def bar(): pass
NAME 'await' (6, 2) (6, 7)
OP '=' (6, 8) (6, 9)
NUMBER '2' (6, 10) (6, 11)
- DEDENT '' (6, 12) (6, 12)
+ DEDENT '' (7, 0) (7, 0)
+ """)
+
+ def test_newline_after_parenthesized_block_with_comment(self):
+ self.check_tokenize('''\
+[
+ # A comment here
+ 1
+]
+''', """\
+ OP '[' (1, 0) (1, 1)
+ NL '\\n' (1, 1) (1, 2)
+ COMMENT '# A comment here' (2, 4) (2, 20)
+ NL '\\n' (2, 20) (2, 21)
+ NUMBER '1' (3, 4) (3, 5)
+ NL '\\n' (3, 5) (3, 6)
+ OP ']' (4, 0) (4, 1)
+ NEWLINE '\\n' (4, 1) (4, 2)
+ """)
+
+ def test_closing_parenthesis_from_different_line(self):
+ self.check_tokenize("); x", """\
+ OP ')' (1, 0) (1, 1)
+ OP ';' (1, 1) (1, 2)
+ NAME 'x' (1, 3) (1, 4)
""")
class GenerateTokensTest(TokenizeTest):
@@ -1111,7 +1180,8 @@ class TestTokenizerAdheresToPep0263(TestCase):
def _testFile(self, filename):
path = os.path.join(os.path.dirname(__file__), filename)
- TestRoundtrip.check_roundtrip(self, open(path, 'rb'))
+ with open(path, 'rb') as f:
+ TestRoundtrip.check_roundtrip(self, f)
def test_utf8_coding_cookie_and_no_utf8_bom(self):
f = 'tokenize_tests-utf8-coding-cookie-and-no-utf8-bom-sig.txt'
@@ -1156,7 +1226,8 @@ def readline():
yield b''
# skip the initial encoding token and the end tokens
- tokens = list(_tokenize(readline(), encoding='utf-8'))[:-2]
+ tokens = list(_generate_tokens_from_c_tokenizer(readline().__next__, encoding='utf-8',
+ extra_tokens=True))[:-2]
expected_tokens = [TokenInfo(3, '"ЉЊЈЁЂ"', (1, 0), (1, 7), '"ЉЊЈЁЂ"\n')]
self.assertEqual(tokens, expected_tokens,
"bytes not decoded with encoding")
@@ -1425,13 +1496,13 @@ def test_tokenize(self):
def mock_detect_encoding(readline):
return encoding, [b'first', b'second']
- def mock__tokenize(readline, encoding):
+ def mock__tokenize(readline, encoding, **kwargs):
nonlocal encoding_used
encoding_used = encoding
out = []
while True:
try:
- next_line = next(readline)
+ next_line = readline()
except StopIteration:
return out
if next_line:
@@ -1448,16 +1519,16 @@ def mock_readline():
return str(counter).encode()
orig_detect_encoding = tokenize_module.detect_encoding
- orig__tokenize = tokenize_module._tokenize
+ orig_c_token = tokenize_module._generate_tokens_from_c_tokenizer
tokenize_module.detect_encoding = mock_detect_encoding
- tokenize_module._tokenize = mock__tokenize
+ tokenize_module._generate_tokens_from_c_tokenizer = mock__tokenize
try:
results = tokenize(mock_readline)
self.assertEqual(list(results)[1:],
[b'first', b'second', b'1', b'2', b'3', b'4'])
finally:
tokenize_module.detect_encoding = orig_detect_encoding
- tokenize_module._tokenize = orig__tokenize
+ tokenize_module._generate_tokens_from_c_tokenizer = orig_c_token
self.assertEqual(encoding_used, encoding)
@@ -1640,7 +1711,6 @@ def check_roundtrip(self, f):
code = f.encode('utf-8')
else:
code = f.read()
- f.close()
readline = iter(code.splitlines(keepends=True)).__next__
tokens5 = list(tokenize(readline))
tokens2 = [tok[:2] for tok in tokens5]
@@ -1655,6 +1725,17 @@ def check_roundtrip(self, f):
tokens2_from5 = [tok[:2] for tok in tokenize(readline5)]
self.assertEqual(tokens2_from5, tokens2)
+ def check_line_extraction(self, f):
+ if isinstance(f, str):
+ code = f.encode('utf-8')
+ else:
+ code = f.read()
+ readline = iter(code.splitlines(keepends=True)).__next__
+ for tok in tokenize(readline):
+ if tok.type in {ENCODING, ENDMARKER}:
+ continue
+ self.assertEqual(tok.string, tok.line[tok.start[1]: tok.end[1]])
+
def test_roundtrip(self):
# There are some standard formatting practices that are easy to get right.
@@ -1749,8 +1830,9 @@ def test_random_files(self):
if support.verbose >= 2:
print('tokenize', testfile)
with open(testfile, 'rb') as f:
- # with self.subTest(file=testfile):
- self.check_roundtrip(f)
+ with self.subTest(file=testfile):
+ self.check_roundtrip(f)
+ self.check_line_extraction(f)
def roundtrip(self, code):
@@ -1773,12 +1855,33 @@ class CTokenizeTest(TestCase):
def check_tokenize(self, s, expected):
# Format the tokens in s in a table format.
# The ENDMARKER and final NEWLINE are omitted.
+ f = StringIO(s)
with self.subTest(source=s):
result = stringify_tokens_from_source(
- _generate_tokens_from_c_tokenizer(s), s
+ _generate_tokens_from_c_tokenizer(f.readline), s
)
self.assertEqual(result, expected.rstrip().splitlines())
+ def test_encoding(self):
+ def readline(encoding):
+ yield "1+1".encode(encoding)
+
+ expected = [
+ TokenInfo(type=NUMBER, string='1', start=(1, 0), end=(1, 1), line='1+1\n'),
+ TokenInfo(type=OP, string='+', start=(1, 1), end=(1, 2), line='1+1\n'),
+ TokenInfo(type=NUMBER, string='1', start=(1, 2), end=(1, 3), line='1+1\n'),
+ TokenInfo(type=NEWLINE, string='\n', start=(1, 3), end=(1, 4), line='1+1\n'),
+ TokenInfo(type=ENDMARKER, string='', start=(2, 0), end=(2, 0), line='')
+ ]
+ for encoding in ["utf-8", "latin-1", "utf-16"]:
+ with self.subTest(encoding=encoding):
+ tokens = list(_generate_tokens_from_c_tokenizer(
+ readline(encoding).__next__,
+ extra_tokens=True,
+ encoding=encoding,
+ ))
+ self.assertEqual(tokens, expected)
+
def test_int(self):
self.check_tokenize('0xff <= 255', """\
@@ -2048,6 +2151,10 @@ def test_string(self):
b\
c"""', """\
STRING 'rb"\""a\\\\\\nb\\\\\\nc"\""' (1, 0) (3, 4)
+ """)
+
+ self.check_tokenize(r'"hola\\\r\ndfgf"', """\
+ STRING \'"hola\\\\\\\\\\\\r\\\\ndfgf"\' (1, 0) (1, 16)
""")
self.check_tokenize('f"abc"', """\
@@ -2084,6 +2191,12 @@ def test_string(self):
FSTRING_START 'Rf"' (1, 0) (1, 3)
FSTRING_MIDDLE 'abc\\\\\\ndef' (1, 3) (2, 3)
FSTRING_END '"' (2, 3) (2, 4)
+ """)
+
+ self.check_tokenize(r'f"hola\\\r\ndfgf"', """\
+ FSTRING_START \'f"\' (1, 0) (1, 2)
+ FSTRING_MIDDLE 'hola\\\\\\\\\\\\r\\\\ndfgf' (1, 2) (1, 16)
+ FSTRING_END \'"\' (1, 16) (1, 17)
""")
def test_function(self):
@@ -2604,43 +2717,44 @@ def test_unicode(self):
def test_invalid_syntax(self):
def get_tokens(string):
- return list(_generate_tokens_from_c_tokenizer(string))
-
- self.assertRaises(SyntaxError, get_tokens, "(1+2]")
- self.assertRaises(SyntaxError, get_tokens, "(1+2}")
- self.assertRaises(SyntaxError, get_tokens, "{1+2]")
-
- self.assertRaises(SyntaxError, get_tokens, "1_")
- self.assertRaises(SyntaxError, get_tokens, "1.2_")
- self.assertRaises(SyntaxError, get_tokens, "1e2_")
- self.assertRaises(SyntaxError, get_tokens, "1e+")
-
- self.assertRaises(SyntaxError, get_tokens, "\xa0")
- self.assertRaises(SyntaxError, get_tokens, "€")
-
- self.assertRaises(SyntaxError, get_tokens, "0b12")
- self.assertRaises(SyntaxError, get_tokens, "0b1_2")
- self.assertRaises(SyntaxError, get_tokens, "0b2")
- self.assertRaises(SyntaxError, get_tokens, "0b1_")
- self.assertRaises(SyntaxError, get_tokens, "0b")
- self.assertRaises(SyntaxError, get_tokens, "0o18")
- self.assertRaises(SyntaxError, get_tokens, "0o1_8")
- self.assertRaises(SyntaxError, get_tokens, "0o8")
- self.assertRaises(SyntaxError, get_tokens, "0o1_")
- self.assertRaises(SyntaxError, get_tokens, "0o")
- self.assertRaises(SyntaxError, get_tokens, "0x1_")
- self.assertRaises(SyntaxError, get_tokens, "0x")
- self.assertRaises(SyntaxError, get_tokens, "1_")
- self.assertRaises(SyntaxError, get_tokens, "012")
- self.assertRaises(SyntaxError, get_tokens, "1.2_")
- self.assertRaises(SyntaxError, get_tokens, "1e2_")
- self.assertRaises(SyntaxError, get_tokens, "1e+")
-
- self.assertRaises(SyntaxError, get_tokens, "'sdfsdf")
- self.assertRaises(SyntaxError, get_tokens, "'''sdfsdf''")
-
- self.assertRaises(SyntaxError, get_tokens, "("*1000+"a"+")"*1000)
- self.assertRaises(SyntaxError, get_tokens, "]")
+ the_string = StringIO(string)
+ return list(_generate_tokens_from_c_tokenizer(the_string.readline))
+
+ for case in [
+ "(1+2]",
+ "(1+2}",
+ "{1+2]",
+ "1_",
+ "1.2_",
+ "1e2_",
+ "1e+",
+
+ "\xa0",
+ "€",
+ "0b12",
+ "0b1_2",
+ "0b2",
+ "0b1_",
+ "0b",
+ "0o18",
+ "0o1_8",
+ "0o8",
+ "0o1_",
+ "0o",
+ "0x1_",
+ "0x",
+ "1_",
+ "012",
+ "1.2_",
+ "1e2_",
+ "1e+",
+ "'sdfsdf",
+ "'''sdfsdf''",
+ "("*1000+"a"+")"*1000,
+ "]",
+ ]:
+ with self.subTest(case=case):
+ self.assertRaises(SyntaxError, get_tokens, case)
def test_max_indent(self):
MAXINDENT = 100
@@ -2651,19 +2765,24 @@ def generate_source(indents):
return source
valid = generate_source(MAXINDENT - 1)
- tokens = list(_generate_tokens_from_c_tokenizer(valid))
- self.assertEqual(tokens[-1].type, DEDENT)
+ the_input = StringIO(valid)
+ tokens = list(_generate_tokens_from_c_tokenizer(the_input.readline))
+ self.assertEqual(tokens[-2].type, DEDENT)
+ self.assertEqual(tokens[-1].type, ENDMARKER)
compile(valid, "", "exec")
invalid = generate_source(MAXINDENT)
- self.assertRaises(SyntaxError, lambda: list(_generate_tokens_from_c_tokenizer(invalid)))
+ the_input = StringIO(invalid)
+ self.assertRaises(SyntaxError, lambda: list(_generate_tokens_from_c_tokenizer(the_input.readline)))
self.assertRaises(
IndentationError, compile, invalid, "", "exec"
)
def test_continuation_lines_indentation(self):
def get_tokens(string):
- return [(kind, string) for (kind, string, *_) in _generate_tokens_from_c_tokenizer(string)]
+ the_string = StringIO(string)
+ return [(kind, string) for (kind, string, *_)
+ in _generate_tokens_from_c_tokenizer(the_string.readline)]
code = dedent("""
def fib(n):
diff --git a/Lib/test/test_type_aliases.py b/Lib/test/test_type_aliases.py
index 56d150d67afb6f..c43499609aaa56 100644
--- a/Lib/test/test_type_aliases.py
+++ b/Lib/test/test_type_aliases.py
@@ -159,6 +159,15 @@ def test_basic(self):
self.assertEqual(TA.__type_params__, ())
self.assertEqual(TA.__module__, __name__)
+ def test_attributes_with_exec(self):
+ ns = {}
+ exec("type TA = int", ns, ns)
+ TA = ns["TA"]
+ self.assertEqual(TA.__name__, "TA")
+ self.assertIs(TA.__value__, int)
+ self.assertEqual(TA.__type_params__, ())
+ self.assertIs(TA.__module__, None)
+
def test_generic(self):
T = TypeVar("T")
TA = TypeAliasType("TA", list[T], type_params=(T,))
diff --git a/Lib/test/test_type_annotations.py b/Lib/test/test_type_annotations.py
index 87f46c2ce8ce61..3dbb35afcb620f 100644
--- a/Lib/test/test_type_annotations.py
+++ b/Lib/test/test_type_annotations.py
@@ -1,4 +1,6 @@
+import textwrap
import unittest
+from test.support import run_code
class TypeAnnotationTests(unittest.TestCase):
@@ -101,3 +103,112 @@ class D(metaclass=C):
with self.assertRaises(AttributeError):
del D.__annotations__
self.assertEqual(D.__annotations__, {})
+
+
+class TestSetupAnnotations(unittest.TestCase):
+ def check(self, code: str):
+ code = textwrap.dedent(code)
+ for scope in ("module", "class"):
+ with self.subTest(scope=scope):
+ if scope == "class":
+ code = f"class C:\n{textwrap.indent(code, ' ')}"
+ ns = run_code(code)
+ if scope == "class":
+ annotations = ns["C"].__annotations__
+ else:
+ annotations = ns["__annotations__"]
+ self.assertEqual(annotations, {"x": int})
+
+ def test_top_level(self):
+ self.check("x: int = 1")
+
+ def test_blocks(self):
+ self.check("if True:\n x: int = 1")
+ self.check("""
+ while True:
+ x: int = 1
+ break
+ """)
+ self.check("""
+ while False:
+ pass
+ else:
+ x: int = 1
+ """)
+ self.check("""
+ for i in range(1):
+ x: int = 1
+ """)
+ self.check("""
+ for i in range(1):
+ pass
+ else:
+ x: int = 1
+ """)
+
+ def test_try(self):
+ self.check("""
+ try:
+ x: int = 1
+ except:
+ pass
+ """)
+ self.check("""
+ try:
+ pass
+ except:
+ pass
+ else:
+ x: int = 1
+ """)
+ self.check("""
+ try:
+ pass
+ except:
+ pass
+ finally:
+ x: int = 1
+ """)
+ self.check("""
+ try:
+ 1/0
+ except:
+ x: int = 1
+ """)
+
+ def test_try_star(self):
+ self.check("""
+ try:
+ x: int = 1
+ except* Exception:
+ pass
+ """)
+ self.check("""
+ try:
+ pass
+ except* Exception:
+ pass
+ else:
+ x: int = 1
+ """)
+ self.check("""
+ try:
+ pass
+ except* Exception:
+ pass
+ finally:
+ x: int = 1
+ """)
+ self.check("""
+ try:
+ 1/0
+ except* Exception:
+ x: int = 1
+ """)
+
+ def test_match(self):
+ self.check("""
+ match 0:
+ case 0:
+ x: int = 1
+ """)
diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py
index 9a3e64289ee877..ef1db06109eca3 100644
--- a/Lib/test/test_typing.py
+++ b/Lib/test/test_typing.py
@@ -1,7 +1,9 @@
import contextlib
import collections
+import collections.abc
from collections import defaultdict
from functools import lru_cache, wraps
+import gc
import inspect
import itertools
import pickle
@@ -373,6 +375,20 @@ def test_basic_plain(self):
self.assertIs(T.__covariant__, False)
self.assertIs(T.__contravariant__, False)
self.assertIs(T.__infer_variance__, False)
+ self.assertEqual(T.__module__, __name__)
+
+ def test_basic_with_exec(self):
+ ns = {}
+ exec('from typing import TypeVar; T = TypeVar("T", bound=float)', ns, ns)
+ T = ns['T']
+ self.assertIsInstance(T, TypeVar)
+ self.assertEqual(T.__name__, 'T')
+ self.assertEqual(T.__constraints__, ())
+ self.assertIs(T.__bound__, float)
+ self.assertIs(T.__covariant__, False)
+ self.assertIs(T.__contravariant__, False)
+ self.assertIs(T.__infer_variance__, False)
+ self.assertIs(T.__module__, None)
def test_attributes(self):
T_bound = TypeVar('T_bound', bound=int)
@@ -939,6 +955,17 @@ def test_name(self):
Ts2 = TypeVarTuple('Ts2')
self.assertEqual(Ts2.__name__, 'Ts2')
+ def test_module(self):
+ Ts = TypeVarTuple('Ts')
+ self.assertEqual(Ts.__module__, __name__)
+
+ def test_exec(self):
+ ns = {}
+ exec('from typing import TypeVarTuple; Ts = TypeVarTuple("Ts")', ns)
+ Ts = ns['Ts']
+ self.assertEqual(Ts.__name__, 'Ts')
+ self.assertIs(Ts.__module__, None)
+
def test_instance_is_equal_to_itself(self):
Ts = TypeVarTuple('Ts')
self.assertEqual(Ts, Ts)
@@ -2447,6 +2474,48 @@ def f():
self.assertNotIsSubclass(types.FunctionType, P)
self.assertNotIsInstance(f, P)
+ def test_runtime_checkable_generic_non_protocol(self):
+ # Make sure this doesn't raise AttributeError
+ with self.assertRaisesRegex(
+ TypeError,
+ "@runtime_checkable can be only applied to protocol classes",
+ ):
+ @runtime_checkable
+ class Foo[T]: ...
+
+ def test_runtime_checkable_generic(self):
+ @runtime_checkable
+ class Foo[T](Protocol):
+ def meth(self) -> T: ...
+
+ class Impl:
+ def meth(self) -> int: ...
+
+ self.assertIsSubclass(Impl, Foo)
+
+ class NotImpl:
+ def method(self) -> int: ...
+
+ self.assertNotIsSubclass(NotImpl, Foo)
+
+ def test_pep695_generics_can_be_runtime_checkable(self):
+ @runtime_checkable
+ class HasX(Protocol):
+ x: int
+
+ class Bar[T]:
+ x: T
+ def __init__(self, x):
+ self.x = x
+
+ class Capybara[T]:
+ y: str
+ def __init__(self, y):
+ self.y = y
+
+ self.assertIsInstance(Bar(1), HasX)
+ self.assertNotIsInstance(Capybara('a'), HasX)
+
def test_everything_implements_empty_protocol(self):
@runtime_checkable
class Empty(Protocol):
@@ -2655,19 +2724,113 @@ def x(self): ...
self.assertIsSubclass(C, PG)
self.assertIsSubclass(BadP, PG)
- with self.assertRaises(TypeError):
+ no_subscripted_generics = (
+ "Subscripted generics cannot be used with class and instance checks"
+ )
+
+ with self.assertRaisesRegex(TypeError, no_subscripted_generics):
issubclass(C, PG[T])
- with self.assertRaises(TypeError):
+ with self.assertRaisesRegex(TypeError, no_subscripted_generics):
issubclass(C, PG[C])
- with self.assertRaises(TypeError):
+
+ only_runtime_checkable_protocols = (
+ "Instance and class checks can only be used with "
+ "@runtime_checkable protocols"
+ )
+
+ with self.assertRaisesRegex(TypeError, only_runtime_checkable_protocols):
issubclass(C, BadP)
- with self.assertRaises(TypeError):
+ with self.assertRaisesRegex(TypeError, only_runtime_checkable_protocols):
issubclass(C, BadPG)
- with self.assertRaises(TypeError):
+
+ with self.assertRaisesRegex(TypeError, no_subscripted_generics):
issubclass(P, PG[T])
- with self.assertRaises(TypeError):
+ with self.assertRaisesRegex(TypeError, no_subscripted_generics):
issubclass(PG, PG[int])
+ only_classes_allowed = r"issubclass\(\) arg 1 must be a class"
+
+ with self.assertRaisesRegex(TypeError, only_classes_allowed):
+ issubclass(1, P)
+ with self.assertRaisesRegex(TypeError, only_classes_allowed):
+ issubclass(1, PG)
+ with self.assertRaisesRegex(TypeError, only_classes_allowed):
+ issubclass(1, BadP)
+ with self.assertRaisesRegex(TypeError, only_classes_allowed):
+ issubclass(1, BadPG)
+
+ def test_isinstance_checks_not_at_whim_of_gc(self):
+ self.addCleanup(gc.enable)
+ gc.disable()
+
+ with self.assertRaisesRegex(
+ TypeError,
+ "Protocols can only inherit from other protocols"
+ ):
+ class Foo(collections.abc.Mapping, Protocol):
+ pass
+
+ self.assertNotIsInstance([], collections.abc.Mapping)
+
+ def test_issubclass_and_isinstance_on_Protocol_itself(self):
+ class C:
+ def x(self): pass
+
+ self.assertNotIsSubclass(object, Protocol)
+ self.assertNotIsInstance(object(), Protocol)
+
+ self.assertNotIsSubclass(str, Protocol)
+ self.assertNotIsInstance('foo', Protocol)
+
+ self.assertNotIsSubclass(C, Protocol)
+ self.assertNotIsInstance(C(), Protocol)
+
+ only_classes_allowed = r"issubclass\(\) arg 1 must be a class"
+
+ with self.assertRaisesRegex(TypeError, only_classes_allowed):
+ issubclass(1, Protocol)
+ with self.assertRaisesRegex(TypeError, only_classes_allowed):
+ issubclass('foo', Protocol)
+ with self.assertRaisesRegex(TypeError, only_classes_allowed):
+ issubclass(C(), Protocol)
+
+ T = TypeVar('T')
+
+ @runtime_checkable
+ class EmptyProtocol(Protocol): pass
+
+ @runtime_checkable
+ class SupportsStartsWith(Protocol):
+ def startswith(self, x: str) -> bool: ...
+
+ @runtime_checkable
+ class SupportsX(Protocol[T]):
+ def x(self): ...
+
+ for proto in EmptyProtocol, SupportsStartsWith, SupportsX:
+ with self.subTest(proto=proto.__name__):
+ self.assertIsSubclass(proto, Protocol)
+
+ # gh-105237 / PR #105239:
+ # check that the presence of Protocol subclasses
+ # where `issubclass(X, )` evaluates to True
+ # doesn't influence the result of `issubclass(X, Protocol)`
+
+ self.assertIsSubclass(object, EmptyProtocol)
+ self.assertIsInstance(object(), EmptyProtocol)
+ self.assertNotIsSubclass(object, Protocol)
+ self.assertNotIsInstance(object(), Protocol)
+
+ self.assertIsSubclass(str, SupportsStartsWith)
+ self.assertIsInstance('foo', SupportsStartsWith)
+ self.assertNotIsSubclass(str, Protocol)
+ self.assertNotIsInstance('foo', Protocol)
+
+ self.assertIsSubclass(C, SupportsX)
+ self.assertIsInstance(C(), SupportsX)
+ self.assertNotIsSubclass(C, Protocol)
+ self.assertNotIsInstance(C(), Protocol)
+
def test_protocols_issubclass_non_callable(self):
class C:
x = 1
@@ -2676,12 +2839,19 @@ class C:
class PNonCall(Protocol):
x = 1
- with self.assertRaises(TypeError):
+ non_callable_members_illegal = (
+ "Protocols with non-method members don't support issubclass()"
+ )
+
+ with self.assertRaisesRegex(TypeError, non_callable_members_illegal):
issubclass(C, PNonCall)
+
self.assertIsInstance(C(), PNonCall)
PNonCall.register(C)
- with self.assertRaises(TypeError):
+
+ with self.assertRaisesRegex(TypeError, non_callable_members_illegal):
issubclass(C, PNonCall)
+
self.assertIsInstance(C(), PNonCall)
# check that non-protocol subclasses are not affected
@@ -2692,7 +2862,8 @@ class D(PNonCall): ...
D.register(C)
self.assertIsSubclass(C, D)
self.assertIsInstance(C(), D)
- with self.assertRaises(TypeError):
+
+ with self.assertRaisesRegex(TypeError, non_callable_members_illegal):
issubclass(D, PNonCall)
def test_no_weird_caching_with_issubclass_after_isinstance(self):
@@ -2711,7 +2882,10 @@ def __init__(self) -> None:
# as the cached result of the isinstance() check immediately above
# would mean the issubclass() call would short-circuit
# before we got to the "raise TypeError" line
- with self.assertRaises(TypeError):
+ with self.assertRaisesRegex(
+ TypeError,
+ "Protocols with non-method members don't support issubclass()"
+ ):
issubclass(Eggs, Spam)
def test_no_weird_caching_with_issubclass_after_isinstance_2(self):
@@ -2728,7 +2902,10 @@ class Eggs: ...
# as the cached result of the isinstance() check immediately above
# would mean the issubclass() call would short-circuit
# before we got to the "raise TypeError" line
- with self.assertRaises(TypeError):
+ with self.assertRaisesRegex(
+ TypeError,
+ "Protocols with non-method members don't support issubclass()"
+ ):
issubclass(Eggs, Spam)
def test_no_weird_caching_with_issubclass_after_isinstance_3(self):
@@ -2749,7 +2926,10 @@ def __getattr__(self, attr):
# as the cached result of the isinstance() check immediately above
# would mean the issubclass() call would short-circuit
# before we got to the "raise TypeError" line
- with self.assertRaises(TypeError):
+ with self.assertRaisesRegex(
+ TypeError,
+ "Protocols with non-method members don't support issubclass()"
+ ):
issubclass(Eggs, Spam)
def test_no_weird_caching_with_issubclass_after_isinstance_pep695(self):
@@ -2768,7 +2948,10 @@ def __init__(self, x: T) -> None:
# as the cached result of the isinstance() check immediately above
# would mean the issubclass() call would short-circuit
# before we got to the "raise TypeError" line
- with self.assertRaises(TypeError):
+ with self.assertRaisesRegex(
+ TypeError,
+ "Protocols with non-method members don't support issubclass()"
+ ):
issubclass(Eggs, Spam)
def test_protocols_isinstance(self):
@@ -2816,13 +2999,21 @@ def __init__(self):
with self.subTest(klass=klass.__name__, proto=proto.__name__):
self.assertIsInstance(klass(), proto)
- with self.assertRaises(TypeError):
+ no_subscripted_generics = "Subscripted generics cannot be used with class and instance checks"
+
+ with self.assertRaisesRegex(TypeError, no_subscripted_generics):
isinstance(C(), PG[T])
- with self.assertRaises(TypeError):
+ with self.assertRaisesRegex(TypeError, no_subscripted_generics):
isinstance(C(), PG[C])
- with self.assertRaises(TypeError):
+
+ only_runtime_checkable_msg = (
+ "Instance and class checks can only be used "
+ "with @runtime_checkable protocols"
+ )
+
+ with self.assertRaisesRegex(TypeError, only_runtime_checkable_msg):
isinstance(C(), BadP)
- with self.assertRaises(TypeError):
+ with self.assertRaisesRegex(TypeError, only_runtime_checkable_msg):
isinstance(C(), BadPG)
def test_protocols_isinstance_properties_and_descriptors(self):
@@ -3207,7 +3398,7 @@ class P(Protocol):
class C: pass
- with self.assertRaises(TypeError):
+ with self.assertRaisesRegex(TypeError, r"issubclass\(\) arg 1 must be a class"):
issubclass(C(), P)
def test_defining_generic_protocols(self):
@@ -3546,6 +3737,22 @@ def close(self):
self.assertIsSubclass(B, Custom)
self.assertNotIsSubclass(A, Custom)
+ @runtime_checkable
+ class ReleasableBuffer(collections.abc.Buffer, Protocol):
+ def __release_buffer__(self, mv: memoryview) -> None: ...
+
+ class C: pass
+ class D:
+ def __buffer__(self, flags: int) -> memoryview:
+ return memoryview(b'')
+ def __release_buffer__(self, mv: memoryview) -> None:
+ pass
+
+ self.assertIsSubclass(D, ReleasableBuffer)
+ self.assertIsInstance(D(), ReleasableBuffer)
+ self.assertNotIsSubclass(C, ReleasableBuffer)
+ self.assertNotIsInstance(C(), ReleasableBuffer)
+
def test_builtin_protocol_allowlist(self):
with self.assertRaises(TypeError):
class CustomProtocol(TestCase, Protocol):
@@ -3571,6 +3778,28 @@ def __init__(self):
Foo() # Previously triggered RecursionError
+ def test_interaction_with_isinstance_checks_on_superclasses_with_ABCMeta(self):
+ # Ensure the cache is empty, or this test won't work correctly
+ collections.abc.Sized._abc_registry_clear()
+
+ class Foo(collections.abc.Sized, Protocol): pass
+
+ # gh-105144: this previously raised TypeError
+ # if a Protocol subclass of Sized had been created
+ # before any isinstance() checks against Sized
+ self.assertNotIsInstance(1, collections.abc.Sized)
+
+ def test_interaction_with_isinstance_checks_on_superclasses_with_ABCMeta_2(self):
+ # Ensure the cache is empty, or this test won't work correctly
+ collections.abc.Sized._abc_registry_clear()
+
+ class Foo(typing.Sized, Protocol): pass
+
+ # gh-105144: this previously raised TypeError
+ # if a Protocol subclass of Sized had been created
+ # before any isinstance() checks against Sized
+ self.assertNotIsInstance(1, typing.Sized)
+
class GenericTests(BaseTestCase):
@@ -6391,7 +6620,7 @@ def __len__(self):
return 0
self.assertEqual(len(MMC()), 0)
- assert callable(MMC.update)
+ self.assertTrue(callable(MMC.update))
self.assertIsInstance(MMC(), typing.Mapping)
class MMB(typing.MutableMapping[KT, VT]):
@@ -6586,8 +6815,8 @@ def foo(a: A) -> Optional[BaseException]:
else:
return a()
- assert isinstance(foo(KeyboardInterrupt), KeyboardInterrupt)
- assert foo(None) is None
+ self.assertIsInstance(foo(KeyboardInterrupt), KeyboardInterrupt)
+ self.assertIsNone(foo(None))
class TestModules(TestCase):
@@ -6934,6 +7163,10 @@ def test_basics_functional_syntax(self):
self.assertEqual(Emp.__bases__, (dict,))
self.assertEqual(Emp.__annotations__, {'name': str, 'id': int})
self.assertEqual(Emp.__total__, True)
+ self.assertEqual(Emp.__required_keys__, {'name', 'id'})
+ self.assertIsInstance(Emp.__required_keys__, frozenset)
+ self.assertEqual(Emp.__optional_keys__, set())
+ self.assertIsInstance(Emp.__optional_keys__, frozenset)
def test_basics_keywords_syntax(self):
with self.assertWarns(DeprecationWarning):
@@ -7036,7 +7269,9 @@ def test_total(self):
self.assertEqual(D(x=1), {'x': 1})
self.assertEqual(D.__total__, False)
self.assertEqual(D.__required_keys__, frozenset())
+ self.assertIsInstance(D.__required_keys__, frozenset)
self.assertEqual(D.__optional_keys__, {'x'})
+ self.assertIsInstance(D.__optional_keys__, frozenset)
self.assertEqual(Options(), {})
self.assertEqual(Options(log_level=2), {'log_level': 2})
@@ -7048,8 +7283,10 @@ def test_optional_keys(self):
class Point2Dor3D(Point2D, total=False):
z: int
- assert Point2Dor3D.__required_keys__ == frozenset(['x', 'y'])
- assert Point2Dor3D.__optional_keys__ == frozenset(['z'])
+ self.assertEqual(Point2Dor3D.__required_keys__, frozenset(['x', 'y']))
+ self.assertIsInstance(Point2Dor3D.__required_keys__, frozenset)
+ self.assertEqual(Point2Dor3D.__optional_keys__, frozenset(['z']))
+ self.assertIsInstance(Point2Dor3D.__optional_keys__, frozenset)
def test_keys_inheritance(self):
class BaseAnimal(TypedDict):
@@ -7062,26 +7299,26 @@ class Animal(BaseAnimal, total=False):
class Cat(Animal):
fur_color: str
- assert BaseAnimal.__required_keys__ == frozenset(['name'])
- assert BaseAnimal.__optional_keys__ == frozenset([])
- assert BaseAnimal.__annotations__ == {'name': str}
+ self.assertEqual(BaseAnimal.__required_keys__, frozenset(['name']))
+ self.assertEqual(BaseAnimal.__optional_keys__, frozenset([]))
+ self.assertEqual(BaseAnimal.__annotations__, {'name': str})
- assert Animal.__required_keys__ == frozenset(['name'])
- assert Animal.__optional_keys__ == frozenset(['tail', 'voice'])
- assert Animal.__annotations__ == {
+ self.assertEqual(Animal.__required_keys__, frozenset(['name']))
+ self.assertEqual(Animal.__optional_keys__, frozenset(['tail', 'voice']))
+ self.assertEqual(Animal.__annotations__, {
'name': str,
'tail': bool,
'voice': str,
- }
+ })
- assert Cat.__required_keys__ == frozenset(['name', 'fur_color'])
- assert Cat.__optional_keys__ == frozenset(['tail', 'voice'])
- assert Cat.__annotations__ == {
+ self.assertEqual(Cat.__required_keys__, frozenset(['name', 'fur_color']))
+ self.assertEqual(Cat.__optional_keys__, frozenset(['tail', 'voice']))
+ self.assertEqual(Cat.__annotations__, {
'fur_color': str,
'name': str,
'tail': bool,
'voice': str,
- }
+ })
def test_required_notrequired_keys(self):
self.assertEqual(NontotalMovie.__required_keys__,
@@ -7207,10 +7444,29 @@ class Wrong(*bases):
pass
def test_is_typeddict(self):
- assert is_typeddict(Point2D) is True
- assert is_typeddict(Union[str, int]) is False
+ self.assertIs(is_typeddict(Point2D), True)
+ self.assertIs(is_typeddict(Union[str, int]), False)
# classes, not instances
- assert is_typeddict(Point2D()) is False
+ self.assertIs(is_typeddict(Point2D()), False)
+ call_based = TypedDict('call_based', {'a': int})
+ self.assertIs(is_typeddict(call_based), True)
+ self.assertIs(is_typeddict(call_based()), False)
+
+ T = TypeVar("T")
+ class BarGeneric(TypedDict, Generic[T]):
+ a: T
+ self.assertIs(is_typeddict(BarGeneric), True)
+ self.assertIs(is_typeddict(BarGeneric[int]), False)
+ self.assertIs(is_typeddict(BarGeneric()), False)
+
+ class NewGeneric[T](TypedDict):
+ a: T
+ self.assertIs(is_typeddict(NewGeneric), True)
+ self.assertIs(is_typeddict(NewGeneric[int]), False)
+ self.assertIs(is_typeddict(NewGeneric()), False)
+
+ # The TypedDict constructor is not itself a TypedDict
+ self.assertIs(is_typeddict(TypedDict), False)
def test_get_type_hints(self):
self.assertEqual(
@@ -7292,11 +7548,11 @@ class C(B[int]):
self.assertEqual(C.__total__, True)
self.assertEqual(C.__optional_keys__, frozenset(['b']))
self.assertEqual(C.__required_keys__, frozenset(['a', 'c']))
- assert C.__annotations__ == {
+ self.assertEqual(C.__annotations__, {
'a': T,
'b': KT,
'c': int,
- }
+ })
with self.assertRaises(TypeError):
C[str]
@@ -7311,11 +7567,11 @@ class Point3D(Point2DGeneric[T], Generic[T, KT]):
self.assertEqual(Point3D.__total__, True)
self.assertEqual(Point3D.__optional_keys__, frozenset())
self.assertEqual(Point3D.__required_keys__, frozenset(['a', 'b', 'c']))
- assert Point3D.__annotations__ == {
+ self.assertEqual(Point3D.__annotations__, {
'a': T,
'b': T,
'c': KT,
- }
+ })
self.assertEqual(Point3D[int, str].__origin__, Point3D)
with self.assertRaises(TypeError):
@@ -7342,11 +7598,11 @@ class WithImplicitAny(B):
self.assertEqual(WithImplicitAny.__total__, True)
self.assertEqual(WithImplicitAny.__optional_keys__, frozenset(['b']))
self.assertEqual(WithImplicitAny.__required_keys__, frozenset(['a', 'c']))
- assert WithImplicitAny.__annotations__ == {
+ self.assertEqual(WithImplicitAny.__annotations__, {
'a': T,
'b': KT,
'c': int,
- }
+ })
with self.assertRaises(TypeError):
WithImplicitAny[str]
@@ -7971,6 +8227,15 @@ def test_basic_plain(self):
self.assertEqual(P, P)
self.assertIsInstance(P, ParamSpec)
self.assertEqual(P.__name__, 'P')
+ self.assertEqual(P.__module__, __name__)
+
+ def test_basic_with_exec(self):
+ ns = {}
+ exec('from typing import ParamSpec; P = ParamSpec("P")', ns, ns)
+ P = ns['P']
+ self.assertIsInstance(P, ParamSpec)
+ self.assertEqual(P.__name__, 'P')
+ self.assertIs(P.__module__, None)
def test_valid_uses(self):
P = ParamSpec('P')
diff --git a/Lib/test/test_venv.py b/Lib/test/test_venv.py
index 95944c7c711620..5205604c2c7185 100644
--- a/Lib/test/test_venv.py
+++ b/Lib/test/test_venv.py
@@ -600,15 +600,14 @@ def test_zippath_from_non_installed_posix(self):
ld_library_path_env = "DYLD_LIBRARY_PATH"
else:
ld_library_path_env = "LD_LIBRARY_PATH"
- # Note that in address sanitizer mode, the current runtime
- # implementation leaks memory due to not being able to correctly
- # clean all unicode objects during runtime shutdown. Therefore,
- # this uses subprocess.run instead of subprocess.check_call to
- # maintain the core of the test while not failing due to the refleaks.
- # This should be able to use check_call once all refleaks are fixed.
- subprocess.run(cmd,
- env={"PYTHONPATH": pythonpath,
- ld_library_path_env: ld_library_path})
+ child_env = {
+ "PYTHONPATH": pythonpath,
+ ld_library_path_env: ld_library_path,
+ }
+ if asan_options := os.environ.get("ASAN_OPTIONS"):
+ # prevent https://github.com/python/cpython/issues/104839
+ child_env["ASAN_OPTIONS"] = asan_options
+ subprocess.check_call(cmd, env=child_env)
envpy = os.path.join(self.env_dir, self.bindir, self.exe)
# Now check the venv created from the non-installed python has
# correct zip path in pythonpath.
diff --git a/Lib/tokenize.py b/Lib/tokenize.py
index 911f0f12f9bb7e..a07a8bf45891ac 100644
--- a/Lib/tokenize.py
+++ b/Lib/tokenize.py
@@ -34,6 +34,7 @@
import sys
from token import *
from token import EXACT_TOKEN_TYPES
+import _tokenize
cookie_re = re.compile(r'^[ \t\f]*#.*?coding[:=][ \t]*([-\w.]+)', re.ASCII)
blank_re = re.compile(br'^[ \t\f]*(?:[#\r\n]|$)', re.ASCII)
@@ -443,17 +444,7 @@ def tokenize(readline):
# BOM will already have been stripped.
encoding = "utf-8"
yield TokenInfo(ENCODING, encoding, (0, 0), (0, 0), '')
- yield from _tokenize(rl_gen, encoding)
-
-def _tokenize(rl_gen, encoding):
- source = b"".join(rl_gen).decode(encoding)
- token = None
- for token in _generate_tokens_from_c_tokenizer(source, extra_tokens=True):
- yield token
- if token is not None:
- last_line, _ = token.start
- yield TokenInfo(ENDMARKER, '', (last_line + 1, 0), (last_line + 1, 0), '')
-
+ yield from _generate_tokens_from_c_tokenizer(rl_gen.__next__, encoding, extra_tokens=True)
def generate_tokens(readline):
"""Tokenize a source reading Python code as unicode strings.
@@ -461,16 +452,7 @@ def generate_tokens(readline):
This has the same API as tokenize(), except that it expects the *readline*
callable to return str objects instead of bytes.
"""
- def _gen():
- while True:
- try:
- line = readline()
- except StopIteration:
- return
- if not line:
- return
- yield line.encode()
- return _tokenize(_gen(), 'utf-8')
+ return _generate_tokens_from_c_tokenizer(readline, extra_tokens=True)
def main():
import argparse
@@ -507,9 +489,8 @@ def error(message, filename=None, location=None):
tokens = list(tokenize(f.readline))
else:
filename = ""
- tokens = _tokenize(
- (x.encode('utf-8') for x in iter(sys.stdin.readline, "")
- ), "utf-8")
+ tokens = _generate_tokens_from_c_tokenizer(
+ sys.stdin.readline, extra_tokens=True)
# Output the tokenization
@@ -536,10 +517,13 @@ def error(message, filename=None, location=None):
perror("unexpected error: %s" % err)
raise
-def _generate_tokens_from_c_tokenizer(source, extra_tokens=False):
+def _generate_tokens_from_c_tokenizer(source, encoding=None, extra_tokens=False):
"""Tokenize a source reading Python code as unicode strings using the internal C tokenizer"""
- import _tokenize as c_tokenizer
- for info in c_tokenizer.TokenizerIter(source, extra_tokens=extra_tokens):
+ if encoding is None:
+ it = _tokenize.TokenizerIter(source, extra_tokens=extra_tokens)
+ else:
+ it = _tokenize.TokenizerIter(source, encoding=encoding, extra_tokens=extra_tokens)
+ for info in it:
yield TokenInfo._make(info)
diff --git a/Lib/traceback.py b/Lib/traceback.py
index 419f6e81b5e1be..21e32040ee9872 100644
--- a/Lib/traceback.py
+++ b/Lib/traceback.py
@@ -658,6 +658,8 @@ class TracebackException:
- :attr:`__cause__` A TracebackException of the original *__cause__*.
- :attr:`__context__` A TracebackException of the original *__context__*.
+ - :attr:`exceptions` For exception groups - a list of TracebackException
+ instances for the nested *exceptions*. ``None`` for other exceptions.
- :attr:`__suppress_context__` The *__suppress_context__* value from the
original exception.
- :attr:`stack` A `StackSummary` representing the traceback.
@@ -672,8 +674,8 @@ class TracebackException:
occurred.
- :attr:`offset` For syntax errors - the offset into the text where the
error occurred.
- - :attr:`end_offset` For syntax errors - the offset into the text where the
- error occurred. Can be `None` if not present.
+ - :attr:`end_offset` For syntax errors - the end offset into the text where
+ the error occurred. Can be `None` if not present.
- :attr:`msg` For syntax errors - the compiler error message.
"""
diff --git a/Lib/typing.py b/Lib/typing.py
index 96393d6a02815b..f9a8ea601e793e 100644
--- a/Lib/typing.py
+++ b/Lib/typing.py
@@ -1,22 +1,22 @@
"""
-The typing module: Support for gradual typing as defined by PEP 484.
-
-At large scale, the structure of the module is following:
-* Imports and exports, all public names should be explicitly added to __all__.
-* Internal helper functions: these should never be used in code outside this module.
-* _SpecialForm and its instances (special forms):
- Any, NoReturn, Never, ClassVar, Union, Optional, Concatenate, Unpack
-* Classes whose instances can be type arguments in addition to types:
- ForwardRef, TypeVar and ParamSpec
-* The core of internal generics API: _GenericAlias and _VariadicGenericAlias, the latter is
- currently only used by Tuple and Callable. All subscripted types like X[int], Union[int, str],
- etc., are instances of either of these classes.
-* The public counterpart of the generics API consists of two classes: Generic and Protocol.
-* Public helper functions: get_type_hints, overload, cast, no_type_check,
- no_type_check_decorator.
-* Generic aliases for collections.abc ABCs and few additional protocols.
+The typing module: Support for gradual typing as defined by PEP 484 and subsequent PEPs.
+
+Any name not present in __all__ is an implementation detail
+that may be changed without notice. Use at your own risk!
+
+Among other things, the module includes the following:
+* Generic, Protocol, and internal machinery to support generic aliases.
+ All subscripted types like X[int], Union[int, str] are generic aliases.
+* Various "special forms" that have unique meanings in type annotations:
+ NoReturn, Never, ClassVar, Self, Concatenate, Unpack, and others.
+* Classes whose instances can be type arguments to generic classes and functions:
+ TypeVar, ParamSpec, TypeVarTuple.
+* Public helper functions: get_type_hints, overload, cast, final, and others.
+* Several protocols to support duck-typing:
+ SupportsFloat, SupportsIndex, SupportsAbs, and others.
* Special types: NewType, NamedTuple, TypedDict.
-* Wrapper submodules for re and io related types.
+* Deprecated wrapper submodules for re and io related types.
+* Deprecated aliases for builtin types and collections.abc ABCs.
"""
from abc import abstractmethod, ABCMeta
@@ -178,7 +178,7 @@ def _type_check(arg, msg, is_argument=True, module=None, *, allow_special_forms=
As a special case, accept None and return type(None) instead. Also wrap strings
into ForwardRef instances. Consider several corner cases, for example plain
special forms like Union are not valid, while Union[int, str] is OK, etc.
- The msg argument is a human-readable error message, e.g::
+ The msg argument is a human-readable error message, e.g.::
"Union[arg, ...]: arg should be a type."
@@ -214,7 +214,7 @@ def _should_unflatten_callable_args(typ, args):
"""Internal helper for munging collections.abc.Callable's __args__.
The canonical representation for a Callable's __args__ flattens the
- argument types, see https://bugs.python.org/issue42195. For example:
+ argument types, see https://bugs.python.org/issue42195. For example::
collections.abc.Callable[[int, int], str].__args__ == (int, int, str)
collections.abc.Callable[ParamSpec, str].__args__ == (ParamSpec, str)
@@ -255,9 +255,11 @@ def _type_repr(obj):
def _collect_parameters(args):
"""Collect all type variables and parameter specifications in args
- in order of first appearance (lexicographic order). For example::
+ in order of first appearance (lexicographic order).
- _collect_parameters((T, Callable[P, T])) == (T, P)
+ For example::
+
+ assert _collect_parameters((T, Callable[P, T])) == (T, P)
"""
parameters = []
for t in args:
@@ -283,6 +285,7 @@ def _collect_parameters(args):
def _check_generic(cls, parameters, elen):
"""Check correct count for parameters of a generic cls (internal helper).
+
This gives a nice error message in case of count mismatch.
"""
if not elen:
@@ -317,8 +320,9 @@ def _deduplicate(params):
def _remove_dups_flatten(parameters):
- """An internal helper for Union creation and substitution: flatten Unions
- among parameters, then remove duplicates.
+ """Internal helper for Union creation and substitution.
+
+ Flatten Unions among parameters, then remove duplicates.
"""
# Flatten out Union[Union[...], ...].
params = []
@@ -332,7 +336,7 @@ def _remove_dups_flatten(parameters):
def _flatten_literal_params(parameters):
- """An internal helper for Literal creation: flatten Literals among parameters"""
+ """Internal helper for Literal creation: flatten Literals among parameters."""
params = []
for p in parameters:
if isinstance(p, _LiteralGenericAlias):
@@ -377,6 +381,7 @@ def inner(*args, **kwds):
def _eval_type(t, globalns, localns, recursive_guard=frozenset()):
"""Evaluate all forward references in the given type t.
+
For use of globalns and localns see the docstring for get_type_hints().
recursive_guard is used to prevent infinite recursion with a recursive
ForwardRef.
@@ -409,7 +414,7 @@ def _eval_type(t, globalns, localns, recursive_guard=frozenset()):
class _Final:
- """Mixin to prohibit subclassing"""
+ """Mixin to prohibit subclassing."""
__slots__ = ('__weakref__',)
@@ -419,6 +424,7 @@ def __init_subclass__(cls, /, *args, **kwds):
class _Immutable:
"""Mixin to indicate that object should not be copied."""
+
__slots__ = ()
def __copy__(self):
@@ -431,8 +437,10 @@ def __deepcopy__(self, memo):
class _NotIterable:
"""Mixin to prevent iteration, without being compatible with Iterable.
- That is, we could do:
+ That is, we could do::
+
def __iter__(self): raise TypeError()
+
But this would make users of this mixin duck type-compatible with
collections.abc.Iterable - isinstance(foo, Iterable) would be True.
@@ -519,6 +527,7 @@ class Any(metaclass=_AnyMeta):
static type checkers. At runtime, Any should not be used with instance
checks.
"""
+
def __new__(cls, *args, **kwargs):
if cls is Any:
raise TypeError("Any cannot be instantiated")
@@ -528,18 +537,18 @@ def __new__(cls, *args, **kwargs):
@_SpecialForm
def NoReturn(self, parameters):
"""Special type indicating functions that never return.
+
Example::
- from typing import NoReturn
+ from typing import NoReturn
- def stop() -> NoReturn:
- raise Exception('no way')
+ def stop() -> NoReturn:
+ raise Exception('no way')
NoReturn can also be used as a bottom type, a type that
has no values. Starting in Python 3.11, the Never type should
be used for this concept instead. Type checkers should treat the two
equivalently.
-
"""
raise TypeError(f"{self} is not subscriptable")
@@ -567,7 +576,6 @@ def int_or_str(arg: int | str) -> None:
print("It's a str")
case _:
never_call_me(arg) # ok, arg is of type Never
-
"""
raise TypeError(f"{self} is not subscriptable")
@@ -578,12 +586,12 @@ def Self(self, parameters):
Example::
- from typing import Self
+ from typing import Self
- class Foo:
- def return_self(self) -> Self:
- ...
- return self
+ class Foo:
+ def return_self(self) -> Self:
+ ...
+ return self
This is especially useful for:
- classmethods that are used as alternative constructors
@@ -615,7 +623,6 @@ def caller(arbitrary_string: str, literal_string: LiteralString) -> None:
Only string literals and other LiteralStrings are compatible
with LiteralString. This provides a tool to help prevent
security issues such as SQL injection.
-
"""
raise TypeError(f"{self} is not subscriptable")
@@ -628,9 +635,9 @@ def ClassVar(self, parameters):
attribute is intended to be used as a class variable and
should not be set on instances of that class. Usage::
- class Starship:
- stats: ClassVar[Dict[str, int]] = {} # class variable
- damage: int = 10 # instance variable
+ class Starship:
+ stats: ClassVar[Dict[str, int]] = {} # class variable
+ damage: int = 10 # instance variable
ClassVar accepts only types and cannot be further subscribed.
@@ -645,16 +652,17 @@ def Final(self, parameters):
"""Special typing construct to indicate final names to type checkers.
A final name cannot be re-assigned or overridden in a subclass.
- For example:
- MAX_SIZE: Final = 9000
- MAX_SIZE += 1 # Error reported by type checker
+ For example::
+
+ MAX_SIZE: Final = 9000
+ MAX_SIZE += 1 # Error reported by type checker
- class Connection:
- TIMEOUT: Final[int] = 10
+ class Connection:
+ TIMEOUT: Final[int] = 10
- class FastConnector(Connection):
- TIMEOUT = 1 # Error reported by type checker
+ class FastConnector(Connection):
+ TIMEOUT = 1 # Error reported by type checker
There is no runtime checking of these properties.
"""
@@ -665,25 +673,29 @@ class FastConnector(Connection):
def Union(self, parameters):
"""Union type; Union[X, Y] means either X or Y.
- To define a union, use e.g. Union[int, str]. Details:
+ On Python 3.10 and higher, the | operator
+ can also be used to denote unions;
+ X | Y means the same thing to the type checker as Union[X, Y].
+
+ To define a union, use e.g. Union[int, str]. Details:
- The arguments must be types and there must be at least one.
- None as an argument is a special case and is replaced by
type(None).
- Unions of unions are flattened, e.g.::
- Union[Union[int, str], float] == Union[int, str, float]
+ assert Union[Union[int, str], float] == Union[int, str, float]
- Unions of a single argument vanish, e.g.::
- Union[int] == int # The constructor actually returns int
+ assert Union[int] == int # The constructor actually returns int
- Redundant arguments are skipped, e.g.::
- Union[int, str, int] == Union[int, str]
+ assert Union[int, str, int] == Union[int, str]
- When comparing unions, the argument order is ignored, e.g.::
- Union[int, str] == Union[str, int]
+ assert Union[int, str] == Union[str, int]
- You cannot subclass or instantiate a union.
- You can use Optional[X] as a shorthand for Union[X, None].
@@ -706,16 +718,13 @@ def _make_union(left, right):
TypeVar.__or__ calls this instead of returning types.UnionType
because we want to allow unions between TypeVars and strings
- (forward references.)
+ (forward references).
"""
return Union[left, right]
@_SpecialForm
def Optional(self, parameters):
- """Optional type.
-
- Optional[X] is equivalent to Union[X, None].
- """
+ """Optional[X] is equivalent to Union[X, None]."""
arg = _type_check(parameters, f"{self} requires a single type.")
return Union[arg, type(None)]
@@ -726,17 +735,17 @@ def Literal(self, *parameters):
This form can be used to indicate to type checkers that the corresponding
variable or function parameter has a value equivalent to the provided
- literal (or one of several literals):
+ literal (or one of several literals)::
- def validate_simple(data: Any) -> Literal[True]: # always returns True
- ...
+ def validate_simple(data: Any) -> Literal[True]: # always returns True
+ ...
- MODE = Literal['r', 'rb', 'w', 'wb']
- def open_helper(file: str, mode: MODE) -> str:
- ...
+ MODE = Literal['r', 'rb', 'w', 'wb']
+ def open_helper(file: str, mode: MODE) -> str:
+ ...
- open_helper('/some/path', 'r') # Passes type check
- open_helper('/other/path', 'typo') # Error in type checker
+ open_helper('/some/path', 'r') # Passes type check
+ open_helper('/other/path', 'typo') # Error in type checker
Literal[...] cannot be subclassed. At runtime, an arbitrary value
is allowed as type argument to Literal[...], but type checkers may
@@ -756,11 +765,11 @@ def open_helper(file: str, mode: MODE) -> str:
@_SpecialForm
def TypeAlias(self, parameters):
- """Special marker indicating that an assignment should
- be recognized as a proper type alias definition by type
- checkers.
+ """Special form for marking type aliases.
- For example::
+ Use TypeAlias to indicate that an assignment should
+ be recognized as a proper type alias definition by type
+ checkers. For example::
Predicate: TypeAlias = Callable[..., bool]
@@ -771,13 +780,15 @@ def TypeAlias(self, parameters):
@_SpecialForm
def Concatenate(self, parameters):
- """Used in conjunction with ``ParamSpec`` and ``Callable`` to represent a
- higher order function which adds, removes or transforms parameters of a
- callable.
+ """Special form for annotating higher-order functions.
+
+ ``Concatenate`` can be sed in conjunction with ``ParamSpec`` and
+ ``Callable`` to represent a higher order function which adds, removes or
+ transforms the parameters of a callable.
For example::
- Callable[Concatenate[int, P], int]
+ Callable[Concatenate[int, P], int]
See PEP 612 for detailed information.
"""
@@ -795,7 +806,9 @@ def Concatenate(self, parameters):
@_SpecialForm
def TypeGuard(self, parameters):
- """Special typing form used to annotate the return type of a user-defined
+ """Special typing construct for marking user-defined type guard functions.
+
+ ``TypeGuard`` can be used to annotate the return type of a user-defined
type guard function. ``TypeGuard`` only accepts a single type argument.
At runtime, functions marked this way should return a boolean.
@@ -818,14 +831,14 @@ def TypeGuard(self, parameters):
For example::
- def is_str(val: Union[str, float]):
- # "isinstance" type guard
- if isinstance(val, str):
- # Type of ``val`` is narrowed to ``str``
- ...
- else:
- # Else, type of ``val`` is narrowed to ``float``.
- ...
+ def is_str(val: Union[str, float]):
+ # "isinstance" type guard
+ if isinstance(val, str):
+ # Type of ``val`` is narrowed to ``str``
+ ...
+ else:
+ # Else, type of ``val`` is narrowed to ``float``.
+ ...
Strict type narrowing is not enforced -- ``TypeB`` need not be a narrower
form of ``TypeA`` (it can even be a wider form) and this may lead to
@@ -1102,14 +1115,15 @@ def _is_dunder(attr):
return attr.startswith('__') and attr.endswith('__')
class _BaseGenericAlias(_Final, _root=True):
- """The central part of internal API.
+ """The central part of the internal API.
This represents a generic version of type 'origin' with type arguments 'params'.
There are two kind of these aliases: user defined and special. The special ones
are wrappers around builtin collections and ABCs in collections.abc. These must
- have 'name' always set. If 'inst' is False, then the alias can't be instantiated,
+ have 'name' always set. If 'inst' is False, then the alias can't be instantiated;
this is used by e.g. typing.List and typing.Dict.
"""
+
def __init__(self, origin, *, inst=True, name=None):
self._inst = inst
self._name = name
@@ -1188,8 +1202,7 @@ class _GenericAlias(_BaseGenericAlias, _root=True):
# * Note that native container types, e.g. `tuple`, `list`, use
# `types.GenericAlias` instead.
# * Parameterized classes:
- # T = TypeVar('T')
- # class C(Generic[T]): pass
+ # class C[T]: pass
# # C[int] is a _GenericAlias
# * `Callable` aliases, generic `Callable` aliases, and
# parameterized `Callable` aliases:
@@ -1562,7 +1575,6 @@ def _value_and_type_iter(parameters):
class _LiteralGenericAlias(_GenericAlias, _root=True):
-
def __eq__(self, other):
if not isinstance(other, _LiteralGenericAlias):
return NotImplemented
@@ -1588,35 +1600,40 @@ def Unpack(self, parameters):
The type unpack operator takes the child types from some container type,
such as `tuple[int, str]` or a `TypeVarTuple`, and 'pulls them out'. For
- example:
+ example::
- # For some generic class `Foo`:
- Foo[Unpack[tuple[int, str]]] # Equivalent to Foo[int, str]
+ # For some generic class `Foo`:
+ Foo[Unpack[tuple[int, str]]] # Equivalent to Foo[int, str]
- Ts = TypeVarTuple('Ts')
- # Specifies that `Bar` is generic in an arbitrary number of types.
- # (Think of `Ts` as a tuple of an arbitrary number of individual
- # `TypeVar`s, which the `Unpack` is 'pulling out' directly into the
- # `Generic[]`.)
- class Bar(Generic[Unpack[Ts]]): ...
- Bar[int] # Valid
- Bar[int, str] # Also valid
+ Ts = TypeVarTuple('Ts')
+ # Specifies that `Bar` is generic in an arbitrary number of types.
+ # (Think of `Ts` as a tuple of an arbitrary number of individual
+ # `TypeVar`s, which the `Unpack` is 'pulling out' directly into the
+ # `Generic[]`.)
+ class Bar(Generic[Unpack[Ts]]): ...
+ Bar[int] # Valid
+ Bar[int, str] # Also valid
- From Python 3.11, this can also be done using the `*` operator:
+ From Python 3.11, this can also be done using the `*` operator::
Foo[*tuple[int, str]]
class Bar(Generic[*Ts]): ...
+ And from Python 3.12, it can be done using built-in syntax for generics::
+
+ Foo[*tuple[int, str]]
+ class Bar[*Ts]: ...
+
The operator can also be used along with a `TypedDict` to annotate
- `**kwargs` in a function signature. For instance:
+ `**kwargs` in a function signature. For instance::
- class Movie(TypedDict):
- name: str
- year: int
+ class Movie(TypedDict):
+ name: str
+ year: int
- # This function expects two keyword arguments - *name* of type `str` and
- # *year* of type `int`.
- def foo(**kwargs: Unpack[Movie]): ...
+ # This function expects two keyword arguments - *name* of type `str` and
+ # *year* of type `int`.
+ def foo(**kwargs: Unpack[Movie]): ...
Note that there is only some runtime checking of this operator. Not
everything the runtime allows may be accepted by static type checkers.
@@ -1628,7 +1645,6 @@ def foo(**kwargs: Unpack[Movie]): ...
class _UnpackGenericAlias(_GenericAlias, _root=True):
-
def __repr__(self):
# `Unpack` only takes one argument, so __args__ should contain only
# a single item.
@@ -1733,7 +1749,7 @@ def _caller(depth=1, default='__main__'):
pass
return None
-def _allow_reckless_class_checks(depth=3):
+def _allow_reckless_class_checks(depth=2):
"""Allow instance and class checks for special stdlib modules.
The abc and functools modules indiscriminately call isinstance() and
@@ -1745,7 +1761,7 @@ def _allow_reckless_class_checks(depth=3):
_PROTO_ALLOWLIST = {
'collections.abc': [
'Callable', 'Awaitable', 'Iterable', 'Iterator', 'AsyncIterable',
- 'Hashable', 'Sized', 'Container', 'Collection', 'Reversible',
+ 'Hashable', 'Sized', 'Container', 'Collection', 'Reversible', 'Buffer',
],
'contextlib': ['AbstractContextManager', 'AbstractAsyncContextManager'],
}
@@ -1777,6 +1793,25 @@ def _pickle_pskwargs(pskwargs):
class _ProtocolMeta(ABCMeta):
# This metaclass is somewhat unfortunate,
# but is necessary for several reasons...
+ def __new__(mcls, name, bases, namespace, /, **kwargs):
+ if name == "Protocol" and bases == (Generic,):
+ pass
+ elif Protocol in bases:
+ for base in bases:
+ if not (
+ base in {object, Generic}
+ or base.__name__ in _PROTO_ALLOWLIST.get(base.__module__, [])
+ or (
+ issubclass(base, Generic)
+ and getattr(base, "_is_protocol", False)
+ )
+ ):
+ raise TypeError(
+ f"Protocols can only inherit from other protocols, "
+ f"got {base!r}"
+ )
+ return super().__new__(mcls, name, bases, namespace, **kwargs)
+
def __init__(cls, *args, **kwargs):
super().__init__(*args, **kwargs)
if getattr(cls, "_is_protocol", False):
@@ -1788,26 +1823,38 @@ def __init__(cls, *args, **kwargs):
)
def __subclasscheck__(cls, other):
+ if cls is Protocol:
+ return type.__subclasscheck__(cls, other)
+ if not isinstance(other, type):
+ # Same error message as for issubclass(1, int).
+ raise TypeError('issubclass() arg 1 must be a class')
if (
getattr(cls, '_is_protocol', False)
- and not cls.__callable_proto_members_only__
- and not _allow_reckless_class_checks(depth=2)
+ and not _allow_reckless_class_checks()
):
- raise TypeError(
- "Protocols with non-method members don't support issubclass()"
- )
+ if not cls.__callable_proto_members_only__:
+ raise TypeError(
+ "Protocols with non-method members don't support issubclass()"
+ )
+ if not getattr(cls, '_is_runtime_protocol', False):
+ raise TypeError(
+ "Instance and class checks can only be used with "
+ "@runtime_checkable protocols"
+ )
return super().__subclasscheck__(other)
def __instancecheck__(cls, instance):
# We need this method for situations where attributes are
# assigned in __init__.
+ if cls is Protocol:
+ return type.__instancecheck__(cls, instance)
if not getattr(cls, "_is_protocol", False):
# i.e., it's a concrete subclass of a protocol
return super().__instancecheck__(instance)
if (
not getattr(cls, '_is_runtime_protocol', False) and
- not _allow_reckless_class_checks(depth=2)
+ not _allow_reckless_class_checks()
):
raise TypeError("Instance and class checks can only be used with"
" @runtime_checkable protocols")
@@ -1855,10 +1902,11 @@ def func(x: Proto) -> int:
only the presence of given attributes, ignoring their type signatures.
Protocol classes can be generic, they are defined as::
- class GenProto(Protocol[T]):
+ class GenProto[T](Protocol):
def meth(self) -> T:
...
"""
+
__slots__ = ()
_is_protocol = True
_is_runtime_protocol = False
@@ -1875,18 +1923,6 @@ def _proto_hook(other):
if not cls.__dict__.get('_is_protocol', False):
return NotImplemented
- # First, perform various sanity checks.
- if not getattr(cls, '_is_runtime_protocol', False):
- if _allow_reckless_class_checks():
- return NotImplemented
- raise TypeError("Instance and class checks can only be used with"
- " @runtime_checkable protocols")
-
- if not isinstance(other, type):
- # Same error message as for issubclass(1, int).
- raise TypeError('issubclass() arg 1 must be a class')
-
- # Second, perform the actual structural compatibility check.
for attr in cls.__protocol_attrs__:
for base in other.__mro__:
# Check if the members appears in the class dictionary...
@@ -1899,7 +1935,7 @@ def _proto_hook(other):
annotations = getattr(base, '__annotations__', {})
if (isinstance(annotations, collections.abc.Mapping) and
attr in annotations and
- issubclass(other, Generic) and other._is_protocol):
+ issubclass(other, Generic) and getattr(other, '_is_protocol', False)):
break
else:
return NotImplemented
@@ -1912,14 +1948,7 @@ def _proto_hook(other):
if not cls._is_protocol:
return
- # ... otherwise check consistency of bases, and prohibit instantiation.
- for base in cls.__bases__:
- if not (base in (object, Generic) or
- base.__module__ in _PROTO_ALLOWLIST and
- base.__name__ in _PROTO_ALLOWLIST[base.__module__] or
- issubclass(base, Generic) and base._is_protocol):
- raise TypeError('Protocols can only inherit from other'
- ' protocols, got %r' % base)
+ # ... otherwise prohibit instantiation.
if cls.__init__ is Protocol.__init__:
cls.__init__ = _no_init_or_replace_init
@@ -1928,12 +1957,13 @@ class _AnnotatedAlias(_NotIterable, _GenericAlias, _root=True):
"""Runtime representation of an annotated type.
At its core 'Annotated[t, dec1, dec2, ...]' is an alias for the type 't'
- with extra annotations. The alias behaves like a normal typing alias,
- instantiating is the same as instantiating the underlying type, binding
+ with extra annotations. The alias behaves like a normal typing alias.
+ Instantiating is the same as instantiating the underlying type; binding
it to types is also the same.
The metadata itself is stored in a '__metadata__' attribute as a tuple.
"""
+
def __init__(self, origin, metadata):
if isinstance(origin, _AnnotatedAlias):
metadata = origin.__metadata__ + metadata
@@ -1976,7 +2006,7 @@ def __mro_entries__(self, bases):
class Annotated:
- """Add context specific metadata to a type.
+ """Add context-specific metadata to a type.
Example: Annotated[int, runtime_check.Unsigned] indicates to the
hypothetical runtime_check module that this type is an unsigned int.
@@ -1990,24 +2020,24 @@ class Annotated:
- It's an error to call `Annotated` with less than two arguments.
- Access the metadata via the ``__metadata__`` attribute::
- Annotated[int, '$'].__metadata__ == ('$',)
+ assert Annotated[int, '$'].__metadata__ == ('$',)
- Nested Annotated are flattened::
- Annotated[Annotated[T, Ann1, Ann2], Ann3] == Annotated[T, Ann1, Ann2, Ann3]
+ assert Annotated[Annotated[T, Ann1, Ann2], Ann3] == Annotated[T, Ann1, Ann2, Ann3]
- Instantiating an annotated type is equivalent to instantiating the
underlying type::
- Annotated[C, Ann1](5) == C(5)
+ assert Annotated[C, Ann1](5) == C(5)
- Annotated can be used as a generic type alias::
Optimized = Annotated[T, runtime.Optimize()]
- Optimized[int] == Annotated[int, runtime.Optimize()]
+ assert Optimized[int] == Annotated[int, runtime.Optimize()]
OptimizedList = Annotated[List[T], runtime.Optimize()]
- OptimizedList[int] == Annotated[List[int], runtime.Optimize()]
+ assert OptimizedList[int] == Annotated[List[int], runtime.Optimize()]
- Annotated cannot be used with an unpacked TypeVarTuple::
@@ -2053,6 +2083,7 @@ def runtime_checkable(cls):
Raise TypeError if applied to a non-protocol class.
This allows a simple-minded structural check very similar to
one trick ponies in collections.abc such as Iterable.
+
For example::
@runtime_checkable
@@ -2064,7 +2095,7 @@ def close(self): ...
Warning: this will check only the presence of the required methods,
not their type signatures!
"""
- if not issubclass(cls, Generic) or not cls._is_protocol:
+ if not issubclass(cls, Generic) or not getattr(cls, '_is_protocol', False):
raise TypeError('@runtime_checkable can be only applied to protocol classes,'
' got %r' % cls)
cls._is_runtime_protocol = True
@@ -2094,7 +2125,6 @@ def assert_type(val, typ, /):
def greet(name: str) -> None:
assert_type(name, str) # ok
assert_type(name, int) # type checker error
-
"""
return val
@@ -2135,7 +2165,6 @@ def get_type_hints(obj, globalns=None, localns=None, include_extras=False):
- If two dict arguments are passed, they specify globals and
locals, respectively.
"""
-
if getattr(obj, '__no_type_check__', None):
return {}
# Classes require a special treatment.
@@ -2205,8 +2234,7 @@ def get_type_hints(obj, globalns=None, localns=None, include_extras=False):
def _strip_annotations(t):
- """Strips the annotations from a given type.
- """
+ """Strip the annotations from a given type."""
if isinstance(t, _AnnotatedAlias):
return _strip_annotations(t.__origin__)
if hasattr(t, "__origin__") and t.__origin__ in (Required, NotRequired):
@@ -2234,16 +2262,16 @@ def get_origin(tp):
"""Get the unsubscripted version of a type.
This supports generic types, Callable, Tuple, Union, Literal, Final, ClassVar
- and Annotated. Return None for unsupported types. Examples::
-
- get_origin(Literal[42]) is Literal
- get_origin(int) is None
- get_origin(ClassVar[int]) is ClassVar
- get_origin(Generic) is Generic
- get_origin(Generic[T]) is Generic
- get_origin(Union[T, int]) is Union
- get_origin(List[Tuple[T, T]][int]) == list
- get_origin(P.args) is P
+ Annotated, and others. Return None for unsupported types. Examples::
+
+ assert get_origin(Literal[42]) is Literal
+ assert get_origin(int) is None
+ assert get_origin(ClassVar[int]) is ClassVar
+ assert get_origin(Generic) is Generic
+ assert get_origin(Generic[T]) is Generic
+ assert get_origin(Union[T, int]) is Union
+ assert get_origin(List[Tuple[T, T]][int]) is list
+ assert get_origin(P.args) is P
"""
if isinstance(tp, _AnnotatedAlias):
return Annotated
@@ -2261,12 +2289,14 @@ def get_args(tp):
"""Get type arguments with all substitutions performed.
For unions, basic simplifications used by Union constructor are performed.
+
Examples::
- get_args(Dict[str, int]) == (str, int)
- get_args(int) == ()
- get_args(Union[int, Union[T, int], str][int]) == (int, str)
- get_args(Union[int, Tuple[T, int]][str]) == (int, Tuple[str, int])
- get_args(Callable[[], T][int]) == ([], int)
+
+ assert get_args(Dict[str, int]) == (str, int)
+ assert get_args(int) == ()
+ assert get_args(Union[int, Union[T, int], str][int]) == (int, str)
+ assert get_args(Union[int, Tuple[T, int]][str]) == (int, Tuple[str, int])
+ assert get_args(Callable[[], T][int]) == ([], int)
"""
if isinstance(tp, _AnnotatedAlias):
return (tp.__origin__,) + tp.__metadata__
@@ -2281,14 +2311,15 @@ def get_args(tp):
def is_typeddict(tp):
- """Check if an annotation is a TypedDict class
+ """Check if an annotation is a TypedDict class.
For example::
+
class Film(TypedDict):
title: str
year: int
- is_typeddict(Film) # => True
+ is_typeddict(Film) # => True
is_typeddict(Union[list, str]) # => False
"""
return isinstance(tp, _TypedDictMeta)
@@ -2315,7 +2346,6 @@ def int_or_str(arg: int | str) -> None:
reachable, it will emit an error.
At runtime, this throws an exception when called.
-
"""
value = repr(arg)
if len(value) > _ASSERT_NEVER_REPR_MAX_LENGTH:
@@ -2365,7 +2395,6 @@ def no_type_check_decorator(decorator):
This wraps the decorator with something that wraps the decorated
function in @no_type_check.
"""
-
@functools.wraps(decorator)
def wrapped_decorator(*args, **kwds):
func = decorator(*args, **kwds)
@@ -2392,27 +2421,27 @@ def overload(func):
"""Decorator for overloaded functions/methods.
In a stub file, place two or more stub definitions for the same
- function in a row, each decorated with @overload. For example:
+ function in a row, each decorated with @overload. For example::
- @overload
- def utf8(value: None) -> None: ...
- @overload
- def utf8(value: bytes) -> bytes: ...
- @overload
- def utf8(value: str) -> bytes: ...
+ @overload
+ def utf8(value: None) -> None: ...
+ @overload
+ def utf8(value: bytes) -> bytes: ...
+ @overload
+ def utf8(value: str) -> bytes: ...
In a non-stub file (i.e. a regular .py file), do the same but
follow it with an implementation. The implementation should *not*
- be decorated with @overload. For example:
+ be decorated with @overload. For example::
- @overload
- def utf8(value: None) -> None: ...
- @overload
- def utf8(value: bytes) -> bytes: ...
- @overload
- def utf8(value: str) -> bytes: ...
- def utf8(value):
- # implementation goes here
+ @overload
+ def utf8(value: None) -> None: ...
+ @overload
+ def utf8(value: bytes) -> bytes: ...
+ @overload
+ def utf8(value: str) -> bytes: ...
+ def utf8(value):
+ ... # implementation goes here
The overloads for a function can be retrieved at runtime using the
get_overloads() function.
@@ -2445,29 +2474,30 @@ def clear_overloads():
def final(f):
- """A decorator to indicate final methods and final classes.
+ """Decorator to indicate final methods and final classes.
Use this decorator to indicate to type checkers that the decorated
method cannot be overridden, and decorated class cannot be subclassed.
- For example:
-
- class Base:
- @final
- def done(self) -> None:
- ...
- class Sub(Base):
- def done(self) -> None: # Error reported by type checker
+
+ For example::
+
+ class Base:
+ @final
+ def done(self) -> None:
+ ...
+ class Sub(Base):
+ def done(self) -> None: # Error reported by type checker
...
- @final
- class Leaf:
- ...
- class Other(Leaf): # Error reported by type checker
- ...
+ @final
+ class Leaf:
+ ...
+ class Other(Leaf): # Error reported by type checker
+ ...
There is no runtime checking of these properties. The decorator
- sets the ``__final__`` attribute to ``True`` on the decorated object
- to allow runtime introspection.
+ attempts to set the ``__final__`` attribute to ``True`` on the decorated
+ object to allow runtime introspection.
"""
try:
f.__final__ = True
@@ -2514,13 +2544,15 @@ class Other(Leaf): # Error reported by type checker
Collection = _alias(collections.abc.Collection, 1)
Callable = _CallableType(collections.abc.Callable, 2)
Callable.__doc__ = \
- """Callable type; Callable[[int], str] is a function of (int) -> str.
+ """Deprecated alias to collections.abc.Callable.
+ Callable[[int], str] signifies a function of (int) -> str.
The subscription syntax must always be used with exactly two
- values: the argument list and the return type. The argument list
- must be a list of types or ellipsis; the return type must be a single type.
+ values: the argument list and the return type.
+ The argument list must be a list of types, a ParamSpec or ellipsis.
+ The return type must be a single type.
- There is no syntax to indicate optional or keyword arguments,
+ There is no syntax to indicate optional or keyword arguments;
such function types are rarely used as callback types.
"""
AbstractSet = _alias(collections.abc.Set, 1, name='AbstractSet')
@@ -2536,7 +2568,9 @@ class Other(Leaf): # Error reported by type checker
# Tuple accepts variable number of parameters.
Tuple = _TupleType(tuple, -1, inst=False, name='Tuple')
Tuple.__doc__ = \
- """Tuple type; Tuple[X, Y] is the cross-product type of X and Y.
+ """Deprecated alias to builtins.tuple.
+
+ Tuple[X, Y] is the cross-product type of X and Y.
Example: Tuple[T1, T2] is a tuple of two elements corresponding
to type variables T1 and T2. Tuple[int, float, str] is a tuple
@@ -2563,25 +2597,25 @@ class Other(Leaf): # Error reported by type checker
AsyncGenerator = _alias(collections.abc.AsyncGenerator, 2)
Type = _alias(type, 1, inst=False, name='Type')
Type.__doc__ = \
- """A special construct usable to annotate class objects.
+ """Deprecated alias to builtins.type.
+ builtins.type or typing.Type can be used to annotate class objects.
For example, suppose we have the following classes::
- class User: ... # Abstract base for User classes
- class BasicUser(User): ...
- class ProUser(User): ...
- class TeamUser(User): ...
+ class User: ... # Abstract base for User classes
+ class BasicUser(User): ...
+ class ProUser(User): ...
+ class TeamUser(User): ...
And a function that takes a class argument that's a subclass of
User and returns an instance of the corresponding class::
- U = TypeVar('U', bound=User)
- def new_user(user_class: Type[U]) -> U:
- user = user_class()
- # (Here we could write the user object to a database)
- return user
+ def new_user[U](user_class: Type[U]) -> U:
+ user = user_class()
+ # (Here we could write the user object to a database)
+ return user
- joe = new_user(BasicUser)
+ joe = new_user(BasicUser)
At this point the type checker knows that joe has type BasicUser.
"""
@@ -2590,6 +2624,7 @@ def new_user(user_class: Type[U]) -> U:
@runtime_checkable
class SupportsInt(Protocol):
"""An ABC with one abstract method __int__."""
+
__slots__ = ()
@abstractmethod
@@ -2600,6 +2635,7 @@ def __int__(self) -> int:
@runtime_checkable
class SupportsFloat(Protocol):
"""An ABC with one abstract method __float__."""
+
__slots__ = ()
@abstractmethod
@@ -2610,6 +2646,7 @@ def __float__(self) -> float:
@runtime_checkable
class SupportsComplex(Protocol):
"""An ABC with one abstract method __complex__."""
+
__slots__ = ()
@abstractmethod
@@ -2620,6 +2657,7 @@ def __complex__(self) -> complex:
@runtime_checkable
class SupportsBytes(Protocol):
"""An ABC with one abstract method __bytes__."""
+
__slots__ = ()
@abstractmethod
@@ -2630,6 +2668,7 @@ def __bytes__(self) -> bytes:
@runtime_checkable
class SupportsIndex(Protocol):
"""An ABC with one abstract method __index__."""
+
__slots__ = ()
@abstractmethod
@@ -2640,6 +2679,7 @@ def __index__(self) -> int:
@runtime_checkable
class SupportsAbs[T](Protocol):
"""An ABC with one abstract method __abs__ that is covariant in its return type."""
+
__slots__ = ()
@abstractmethod
@@ -2650,6 +2690,7 @@ def __abs__(self) -> T:
@runtime_checkable
class SupportsRound[T](Protocol):
"""An ABC with one abstract method __round__ that is covariant in its return type."""
+
__slots__ = ()
@abstractmethod
@@ -2676,7 +2717,6 @@ def _make_nmtuple(name, types, module, defaults = ()):
class NamedTupleMeta(type):
-
def __new__(cls, typename, bases, ns):
assert _NamedTuple in bases
for base in bases:
@@ -2715,7 +2755,7 @@ def __new__(cls, typename, bases, ns):
def NamedTuple(typename, fields=None, /, **kwargs):
"""Typed version of namedtuple.
- Usage in Python versions >= 3.6::
+ Usage::
class Employee(NamedTuple):
name: str
@@ -2728,11 +2768,7 @@ class Employee(NamedTuple):
The resulting class has an extra __annotations__ attribute, giving a
dict that maps field names to types. (The field names are also in
the _fields attribute, which is part of the namedtuple API.)
- Alternative equivalent keyword syntax is also accepted::
-
- Employee = NamedTuple('Employee', name=str, id=int)
-
- In Python versions <= 3.5 use::
+ An alternative equivalent functional syntax is also accepted::
Employee = NamedTuple('Employee', [('name', str), ('id', int)])
"""
@@ -2756,7 +2792,7 @@ def _namedtuple_mro_entries(bases):
class _TypedDictMeta(type):
def __new__(cls, name, bases, ns, total=True):
- """Create new typed dict class object.
+ """Create a new typed dict class object.
This method is called when TypedDict is subclassed,
or when TypedDict is instantiated. This way
@@ -2830,10 +2866,11 @@ def __subclasscheck__(cls, other):
def TypedDict(typename, fields=None, /, *, total=True, **kwargs):
"""A simple typed namespace. At runtime it is equivalent to a plain dict.
- TypedDict creates a dictionary type that expects all of its
+ TypedDict creates a dictionary type such that a type checker will expect all
instances to have a certain set of keys, where each key is
associated with a value of a consistent type. This expectation
- is not checked at runtime but is only enforced by type checkers.
+ is not checked at runtime.
+
Usage::
class Point2D(TypedDict):
@@ -2853,20 +2890,25 @@ class Point2D(TypedDict):
Point2D = TypedDict('Point2D', {'x': int, 'y': int, 'label': str})
By default, all keys must be present in a TypedDict. It is possible
- to override this by specifying totality.
- Usage::
+ to override this by specifying totality::
- class point2D(TypedDict, total=False):
+ class Point2D(TypedDict, total=False):
x: int
y: int
- This means that a point2D TypedDict can have any of the keys omitted.A type
+ This means that a Point2D TypedDict can have any of the keys omitted. A type
checker is only expected to support a literal False or True as the value of
the total argument. True is the default, and makes all items defined in the
class body be required.
- The class syntax is only supported in Python 3.6+, while the other
- syntax form works for Python 2.7 and 3.2+
+ The Required and NotRequired special forms can also be used to mark
+ individual keys as being required or not required::
+
+ class Point2D(TypedDict):
+ x: int # the "x" key must always be present (Required is the default)
+ y: NotRequired[int] # the "y" key can be omitted
+
+ See PEP 655 for more details on Required and NotRequired.
"""
if fields is None:
fields = kwargs
@@ -2898,8 +2940,9 @@ class body be required.
@_SpecialForm
def Required(self, parameters):
- """A special typing construct to mark a key of a total=False TypedDict
- as required. For example:
+ """Special typing construct to mark a TypedDict key as required.
+
+ This is mainly useful for total=False TypedDicts. For example::
class Movie(TypedDict, total=False):
title: Required[str]
@@ -2919,8 +2962,9 @@ class Movie(TypedDict, total=False):
@_SpecialForm
def NotRequired(self, parameters):
- """A special typing construct to mark a key of a TypedDict as
- potentially missing. For example:
+ """Special typing construct to mark a TypedDict key as potentially missing.
+
+ For example::
class Movie(TypedDict):
title: str
@@ -2936,8 +2980,9 @@ class Movie(TypedDict):
class NewType:
- """NewType creates simple unique types with almost zero
- runtime overhead. NewType(name, tp) is considered a subtype of tp
+ """NewType creates simple unique types with almost zero runtime overhead.
+
+ NewType(name, tp) is considered a subtype of tp
by static type checkers. At runtime, NewType(name, tp) returns
a dummy callable that simply returns its argument. Usage::
@@ -3199,12 +3244,11 @@ def reveal_type[T](obj: T, /) -> T:
x: int = 1
reveal_type(x)
- Running a static type checker (e.g., ``mypy``) on this example
+ Running a static type checker (e.g., mypy) on this example
will produce output similar to 'Revealed type is "builtins.int"'.
At runtime, the function prints the runtime type of the
argument and returns it unchanged.
-
"""
print(f"Runtime type is {type(obj).__name__!r}", file=sys.stderr)
return obj
@@ -3224,15 +3268,14 @@ def dataclass_transform(
field_specifiers: tuple[type[Any] | Callable[..., Any], ...] = (),
**kwargs: Any,
) -> _IdentityCallable:
- """Decorator that marks a function, class, or metaclass as providing
- dataclass-like behavior.
+ """Decorator to mark an object as providing dataclass-like behaviour.
- Example usage with a decorator function:
+ The decorator can be applied to a function, class, or metaclass.
- T = TypeVar("T")
+ Example usage with a decorator function::
@dataclass_transform()
- def create_model(cls: type[T]) -> type[T]:
+ def create_model[T](cls: type[T]) -> type[T]:
...
return cls
@@ -3241,7 +3284,7 @@ class CustomerModel:
id: int
name: str
- On a base class:
+ On a base class::
@dataclass_transform()
class ModelBase: ...
@@ -3250,7 +3293,7 @@ class CustomerModel(ModelBase):
id: int
name: str
- On a metaclass:
+ On a metaclass::
@dataclass_transform()
class ModelMeta(type): ...
@@ -3306,7 +3349,7 @@ def decorator(cls_or_fn):
def override[F: _Func](method: F, /) -> F:
"""Indicate that a method is intended to override a method in a base class.
- Usage:
+ Usage::
class Base:
def method(self) -> None: ...
@@ -3322,12 +3365,11 @@ def method(self) -> None:
base class. This helps prevent bugs that may occur when a base class is
changed without an equivalent change to a child class.
- There is no runtime checking of this property. The decorator sets the
- ``__override__`` attribute to ``True`` on the decorated object to allow
- runtime introspection.
+ There is no runtime checking of this property. The decorator attempts to
+ set the ``__override__`` attribute to ``True`` on the decorated object to
+ allow runtime introspection.
See PEP 698 for details.
-
"""
try:
method.__override__ = True
diff --git a/Lib/wave.py b/Lib/wave.py
index d5858e5d4b80da..4b0c683f6b5e2d 100644
--- a/Lib/wave.py
+++ b/Lib/wave.py
@@ -92,6 +92,7 @@ class Error(Exception):
_wave_params = namedtuple('_wave_params',
'nchannels sampwidth framerate nframes comptype compname')
+
def _byteswap(data, width):
swapped_data = bytearray(len(data))
@@ -104,7 +105,6 @@ def _byteswap(data, width):
class _Chunk:
def __init__(self, file, align=True, bigendian=True, inclheader=False):
- import struct
self.closed = False
self.align = align # whether to align to word (2-byte) boundaries
if bigendian:
@@ -214,7 +214,6 @@ def skip(self):
raise EOFError
-
class Wave_read:
"""Variables used in this class:
@@ -411,6 +410,7 @@ def _read_fmt_chunk(self, chunk):
self._comptype = 'NONE'
self._compname = 'not compressed'
+
class Wave_write:
"""Variables used in this class:
@@ -638,6 +638,7 @@ def _patchheader(self):
self._file.seek(curpos, 0)
self._datalength = self._datawritten
+
def open(f, mode=None):
if mode is None:
if hasattr(f, 'mode'):
diff --git a/Mac/BuildScript/build-installer.py b/Mac/BuildScript/build-installer.py
index 177fc2044f694b..9729759434a9f4 100755
--- a/Mac/BuildScript/build-installer.py
+++ b/Mac/BuildScript/build-installer.py
@@ -246,9 +246,9 @@ def library_recipes():
result.extend([
dict(
- name="OpenSSL 1.1.1t",
- url="https://www.openssl.org/source/openssl-1.1.1t.tar.gz",
- checksum='8dee9b24bdb1dcbf0c3d1e9b02fb8f6bf22165e807f45adeb7c9677536859d3b',
+ name="OpenSSL 1.1.1u",
+ url="https://www.openssl.org/source/openssl-1.1.1u.tar.gz",
+ checksum='e2f8d84b523eecd06c7be7626830370300fbcc15386bf5142d72758f6963ebc6',
buildrecipe=build_universal_openssl,
configure=None,
install=None,
diff --git a/Mac/BuildScript/resources/Welcome.rtf b/Mac/BuildScript/resources/Welcome.rtf
index 83b7aa9d883a16..dfb02a0b314b7a 100644
--- a/Mac/BuildScript/resources/Welcome.rtf
+++ b/Mac/BuildScript/resources/Welcome.rtf
@@ -26,6 +26,28 @@ At the end of this install, click on
\f0 to install a set of current SSL root certificates.\
\
+\f1\b [UPDATE: fixed in macOS 13.4] macOS 13 Ventura users
+\f0\b0 : Due to an issue with the macOS
+\f1\b Installer
+\f0\b0 app in macOS 13 Ventura updates prior to macOS 13.4, installation of some third-party packages including this Python package may fail with a vague
+\f1\b "The installer encountered an error"
+\f0\b0 message if the
+\f1\b Installer
+\f0\b0 app does not have permission to access the folder containing the downloaded installer file, typically in the
+\f1\b Downloads
+\f0\b0 folder. Go to
+\f1\b System Settings
+\f0\b0 ->
+\f1\b Privacy & Security
+\f0\b0 ->
+\f1\b Files and Folders
+\f0\b0 , then click the mark in front of
+\f1\b Installer
+\f0\b0 to expand, and enable
+\f1\b Downloads Folder
+\f0\b0 by moving the toggle to the right. See {\field{\*\fldinst{HYPERLINK "https://github.com/python/cpython/issues/103207"}}{\fldrslt https://github.com/python/cpython/issues/103207}} for up-to-date information on this issue. This problem has been resolved in macOS 13.4.\
+\
+
\f1\b NOTE:
\f0\b0 This is a beta test preview of Python 3.12.0, the next feature release of Python 3. It is not intended for production use.\
}
\ No newline at end of file
diff --git a/Makefile.pre.in b/Makefile.pre.in
index eb79c9c4ca1801..e2adc3cb49f2a9 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -208,7 +208,7 @@ ENSUREPIP= @ENSUREPIP@
# Internal static libraries
LIBMPDEC_A= Modules/_decimal/libmpdec/libmpdec.a
LIBEXPAT_A= Modules/expat/libexpat.a
-LIBHACL_SHA2_A= Modules/_hacl/libHacl_Streaming_SHA2.a
+LIBHACL_SHA2_A= Modules/_hacl/libHacl_Hash_SHA2.a
# Module state, compiler flags and linker flags
# Empty CFLAGS and LDFLAGS are omitted.
@@ -583,7 +583,7 @@ LIBEXPAT_HEADERS= \
# hashlib's HACL* library
LIBHACL_SHA2_OBJS= \
- Modules/_hacl/Hacl_Streaming_SHA2.o
+ Modules/_hacl/Hacl_Hash_SHA2.o
LIBHACL_HEADERS= \
Modules/_hacl/include/krml/FStar_UInt128_Verified.h \
@@ -596,8 +596,8 @@ LIBHACL_HEADERS= \
Modules/_hacl/python_hacl_namespaces.h
LIBHACL_SHA2_HEADERS= \
- Modules/_hacl/Hacl_Streaming_SHA2.h \
- Modules/_hacl/internal/Hacl_SHA2_Generic.h \
+ Modules/_hacl/Hacl_Hash_SHA2.h \
+ Modules/_hacl/internal/Hacl_Hash_SHA2.h \
$(LIBHACL_HEADERS)
#########################################################################
@@ -964,11 +964,11 @@ $(LIBEXPAT_A): $(LIBEXPAT_OBJS)
$(AR) $(ARFLAGS) $@ $(LIBEXPAT_OBJS)
##########################################################################
-# Build HACL* static libraries for hashlib: libHacl_Streaming_SHA2.a
+# Build HACL* static libraries for hashlib: libHacl_Hash_SHA2.a
LIBHACL_CFLAGS=-I$(srcdir)/Modules/_hacl/include -D_BSD_SOURCE -D_DEFAULT_SOURCE $(PY_STDMODULE_CFLAGS) $(CCSHARED)
-Modules/_hacl/Hacl_Streaming_SHA2.o: $(srcdir)/Modules/_hacl/Hacl_Streaming_SHA2.c $(LIBHACL_SHA2_HEADERS)
- $(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Streaming_SHA2.c
+Modules/_hacl/Hacl_Hash_SHA2.o: $(srcdir)/Modules/_hacl/Hacl_Hash_SHA2.c $(LIBHACL_SHA2_HEADERS)
+ $(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_SHA2.c
$(LIBHACL_SHA2_A): $(LIBHACL_SHA2_OBJS)
-rm -f $@
@@ -2584,7 +2584,7 @@ regen-configure:
@if command -v podman >/dev/null; then RUNTIME="podman"; else RUNTIME="docker"; fi; \
if ! command -v $$RUNTIME; then echo "$@ needs either Podman or Docker container runtime." >&2; exit 1; fi; \
if command -v selinuxenabled >/dev/null && selinuxenabled; then OPT=":Z"; fi; \
- CMD="$$RUNTIME run --rm --pull=always -v $(abs_srcdir):/src$$OPT quay.io/tiran/cpython_autoconf:269"; \
+ CMD="$$RUNTIME run --rm --pull=always -v $(abs_srcdir):/src$$OPT quay.io/tiran/cpython_autoconf:271"; \
echo $$CMD; \
$$CMD || exit $?
diff --git a/Misc/NEWS.d/3.12.0b1.rst b/Misc/NEWS.d/3.12.0b1.rst
index eb42b45726f5ed..a1ea082b3a2119 100644
--- a/Misc/NEWS.d/3.12.0b1.rst
+++ b/Misc/NEWS.d/3.12.0b1.rst
@@ -2236,16 +2236,6 @@ update curses textbox to additionally handle backspace using the
..
-.. date: 2023-04-04-13-37-28
-.. gh-issue: 103207
-.. nonce: x0vvQp
-.. section: macOS
-
-Add instructions to the macOS installer welcome display on how to workaround
-the macOS 13 Ventura “The installer encountered an error” failure.
-
-..
-
.. date: 2023-03-24-11-20-47
.. gh-issue: 102997
.. nonce: ZgQkbq
diff --git a/Misc/NEWS.d/next/Build/2023-05-26-15-44-20.gh-issue-89886._iSW-p.rst b/Misc/NEWS.d/next/Build/2023-05-26-15-44-20.gh-issue-89886._iSW-p.rst
new file mode 100644
index 00000000000000..83559545e86141
--- /dev/null
+++ b/Misc/NEWS.d/next/Build/2023-05-26-15-44-20.gh-issue-89886._iSW-p.rst
@@ -0,0 +1,2 @@
+Autoconf 2.71 and aclocal 1.16.4 is now required to regenerate
+:file:`!configure`.
diff --git a/Misc/NEWS.d/next/Build/2023-06-06-09-08-10.gh-issue-90005.8mmeJQ.rst b/Misc/NEWS.d/next/Build/2023-06-06-09-08-10.gh-issue-90005.8mmeJQ.rst
new file mode 100644
index 00000000000000..0a23fbf0c0fbdd
--- /dev/null
+++ b/Misc/NEWS.d/next/Build/2023-06-06-09-08-10.gh-issue-90005.8mmeJQ.rst
@@ -0,0 +1 @@
+Fix a regression in :file:`configure` where we could end up unintentionally linking with ``libbsd``.
diff --git a/Misc/NEWS.d/next/C API/2023-05-19-10-22-34.gh-issue-104668.MLX1g9.rst b/Misc/NEWS.d/next/C API/2023-05-19-10-22-34.gh-issue-104668.MLX1g9.rst
new file mode 100644
index 00000000000000..7b882afd7f81a0
--- /dev/null
+++ b/Misc/NEWS.d/next/C API/2023-05-19-10-22-34.gh-issue-104668.MLX1g9.rst
@@ -0,0 +1,5 @@
+Don't call :c:var:`PyOS_InputHook` or :c:var:`PyOS_ReadlineFunctionPointer`
+in subinterpreters, since it's generally difficult to avoid using global
+state in their registered callbacks. This also avoids situations where
+extensions may find themselves running in a subinterpreter they don't
+support (or haven't yet been loaded in).
diff --git a/Misc/NEWS.d/next/C API/2023-05-30-10-15-13.gh-issue-105071.dPtp7c.rst b/Misc/NEWS.d/next/C API/2023-05-30-10-15-13.gh-issue-105071.dPtp7c.rst
new file mode 100644
index 00000000000000..3d916fcb961f62
--- /dev/null
+++ b/Misc/NEWS.d/next/C API/2023-05-30-10-15-13.gh-issue-105071.dPtp7c.rst
@@ -0,0 +1 @@
+Add ``PyUnstable_Exc_PrepReraiseStar`` to the unstable C api to expose the implementation of :keyword:`except* `.
diff --git a/Misc/NEWS.d/next/C API/2023-05-30-17-45-32.gh-issue-105115.iRho1K.rst b/Misc/NEWS.d/next/C API/2023-05-30-17-45-32.gh-issue-105115.iRho1K.rst
new file mode 100644
index 00000000000000..595cc0e2013d96
--- /dev/null
+++ b/Misc/NEWS.d/next/C API/2023-05-30-17-45-32.gh-issue-105115.iRho1K.rst
@@ -0,0 +1,3 @@
+``PyTypeObject.tp_bases`` (and ``tp_mro``) for builtin static types are now
+shared by all interpreters, whereas in 3.12-beta1 they were stored on
+``PyInterpreterState``. Also note that now the tuples are immortal objects.
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-05-24-09-59-56.gh-issue-104825.mQesie.rst b/Misc/NEWS.d/next/Core and Builtins/2023-05-24-09-59-56.gh-issue-104825.mQesie.rst
new file mode 100644
index 00000000000000..caf5d3527085f3
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2023-05-24-09-59-56.gh-issue-104825.mQesie.rst
@@ -0,0 +1,2 @@
+Tokens emitted by the :mod:`tokenize` module do not include an implicit
+``\n`` character in the ``line`` attribute anymore. Patch by Pablo Galindo
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-05-24-10-19-35.gh-issue-104879.v-29NL.rst b/Misc/NEWS.d/next/Core and Builtins/2023-05-24-10-19-35.gh-issue-104879.v-29NL.rst
new file mode 100644
index 00000000000000..235f4180642be6
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2023-05-24-10-19-35.gh-issue-104879.v-29NL.rst
@@ -0,0 +1,2 @@
+Fix crash when accessing the ``__module__`` attribute of type aliases
+defined outside a module. Patch by Jelle Zijlstra.
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-05-24-12-10-54.gh-issue-104690.HX3Jou.rst b/Misc/NEWS.d/next/Core and Builtins/2023-05-24-12-10-54.gh-issue-104690.HX3Jou.rst
new file mode 100644
index 00000000000000..7934dd23b10691
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2023-05-24-12-10-54.gh-issue-104690.HX3Jou.rst
@@ -0,0 +1,6 @@
+Starting new threads and process creation through :func:`os.fork` during interpreter
+shutdown (such as from :mod:`atexit` handlers) is no longer supported. It can lead
+to race condition between the main Python runtime thread freeing thread states while
+internal :mod:`threading` routines are trying to allocate and use the state of just
+created threads. Or forked children trying to use the mid-shutdown runtime and thread
+state in the child process.
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-05-25-21-40-39.gh-issue-104955.LZx7jf.rst b/Misc/NEWS.d/next/Core and Builtins/2023-05-25-21-40-39.gh-issue-104955.LZx7jf.rst
new file mode 100644
index 00000000000000..9fccf2a41ffb6f
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2023-05-25-21-40-39.gh-issue-104955.LZx7jf.rst
@@ -0,0 +1,2 @@
+Fix signature for the new :meth:`~object.__release_buffer__` slot. Patch by Jelle
+Zijlstra.
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-05-26-14-09-47.gh-issue-104972.El2UjE.rst b/Misc/NEWS.d/next/Core and Builtins/2023-05-26-14-09-47.gh-issue-104972.El2UjE.rst
new file mode 100644
index 00000000000000..05d50c108c7b77
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2023-05-26-14-09-47.gh-issue-104972.El2UjE.rst
@@ -0,0 +1,2 @@
+Ensure that the ``line`` attribute in :class:`tokenize.TokenInfo` objects in
+the :mod:`tokenize` module are always correct. Patch by Pablo Galindo
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-05-26-15-16-11.gh-issue-104976.6dLitD.rst b/Misc/NEWS.d/next/Core and Builtins/2023-05-26-15-16-11.gh-issue-104976.6dLitD.rst
new file mode 100644
index 00000000000000..377e8e76362687
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2023-05-26-15-16-11.gh-issue-104976.6dLitD.rst
@@ -0,0 +1,3 @@
+Ensure that trailing ``DEDENT`` :class:`tokenize.TokenInfo` objects emitted
+by the :mod:`tokenize` module are reported as in Python 3.11. Patch by Pablo
+Galindo
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-05-27-16-23-16.gh-issue-105017.KQrsC0.rst b/Misc/NEWS.d/next/Core and Builtins/2023-05-27-16-23-16.gh-issue-105017.KQrsC0.rst
new file mode 100644
index 00000000000000..d41a2169ccb3de
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2023-05-27-16-23-16.gh-issue-105017.KQrsC0.rst
@@ -0,0 +1 @@
+Do not include an additional final ``NL`` token when parsing files having CRLF lines. Patch by Marta Gómez.
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-05-27-16-57-11.gh-issue-105013.IsDgDY.rst b/Misc/NEWS.d/next/Core and Builtins/2023-05-27-16-57-11.gh-issue-105013.IsDgDY.rst
new file mode 100644
index 00000000000000..a9917c2849982a
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2023-05-27-16-57-11.gh-issue-105013.IsDgDY.rst
@@ -0,0 +1,2 @@
+Fix handling of multiline parenthesized lambdas in
+:func:`inspect.getsource`. Patch by Pablo Galindo
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-05-27-21-50-48.gh-issue-105017.4sDyDV.rst b/Misc/NEWS.d/next/Core and Builtins/2023-05-27-21-50-48.gh-issue-105017.4sDyDV.rst
new file mode 100644
index 00000000000000..02d653c2d658eb
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2023-05-27-21-50-48.gh-issue-105017.4sDyDV.rst
@@ -0,0 +1 @@
+Show CRLF lines in the tokenize string attribute in both NL and NEWLINE tokens. Patch by Marta Gómez.
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-05-30-08-09-43.gh-issue-105035.OWUlHy.rst b/Misc/NEWS.d/next/Core and Builtins/2023-05-30-08-09-43.gh-issue-105035.OWUlHy.rst
new file mode 100644
index 00000000000000..c0ee2da9d45037
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2023-05-30-08-09-43.gh-issue-105035.OWUlHy.rst
@@ -0,0 +1,2 @@
+Fix :func:`super` calls on types with custom :attr:`tp_getattro`
+implementation (e.g. meta-types.)
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-05-31-08-10-59.gh-issue-104799.8kDWti.rst b/Misc/NEWS.d/next/Core and Builtins/2023-05-31-08-10-59.gh-issue-104799.8kDWti.rst
new file mode 100644
index 00000000000000..e1fe47f862529c
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2023-05-31-08-10-59.gh-issue-104799.8kDWti.rst
@@ -0,0 +1,4 @@
+Attributes of :mod:`ast` nodes that are lists now default to the empty list
+if omitted. This means that some code that previously raised
+:exc:`TypeError` when the AST node was used will now proceed with the empty
+list instead. Patch by Jelle Zijlstra.
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-05-31-19-35-22.gh-issue-105164.6Wajph.rst b/Misc/NEWS.d/next/Core and Builtins/2023-05-31-19-35-22.gh-issue-105164.6Wajph.rst
new file mode 100644
index 00000000000000..7d3486c3b6e98a
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2023-05-31-19-35-22.gh-issue-105164.6Wajph.rst
@@ -0,0 +1,2 @@
+Ensure annotations are set up correctly if the only annotation in a block is
+within a :keyword:`match` block. Patch by Jelle Zijlstra.
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-06-02-11-37-12.gh-issue-105194.4eu56B.rst b/Misc/NEWS.d/next/Core and Builtins/2023-06-02-11-37-12.gh-issue-105194.4eu56B.rst
new file mode 100644
index 00000000000000..adee74f5894b54
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2023-06-02-11-37-12.gh-issue-105194.4eu56B.rst
@@ -0,0 +1,2 @@
+Do not escape with backslashes f-string format specifiers. Patch by Pablo
+Galindo
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-06-02-17-39-19.gh-issue-98963.J4wJgk.rst b/Misc/NEWS.d/next/Core and Builtins/2023-06-02-17-39-19.gh-issue-98963.J4wJgk.rst
new file mode 100644
index 00000000000000..4caadb0875a188
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2023-06-02-17-39-19.gh-issue-98963.J4wJgk.rst
@@ -0,0 +1,4 @@
+Restore the ability for a subclass of :class:`property` to define ``__slots__``
+or otherwise be dict-less by ignoring failures to set a docstring on such a
+class. This behavior had regressed in 3.12beta1. An :exc:`AttributeError`
+where there had not previously been one was disruptive to existing code.
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-06-05-17-35-50.gh-issue-105324.BqhiJJ.rst b/Misc/NEWS.d/next/Core and Builtins/2023-06-05-17-35-50.gh-issue-105324.BqhiJJ.rst
new file mode 100644
index 00000000000000..17275aed338d0d
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2023-06-05-17-35-50.gh-issue-105324.BqhiJJ.rst
@@ -0,0 +1,2 @@
+Fix the main function of the :mod:`tokenize` module when reading from
+``sys.stdin``. Patch by Pablo Galindo
diff --git a/Misc/NEWS.d/next/Documentation/2023-05-25-22-34-31.gh-issue-104943.J2v1Pc.rst b/Misc/NEWS.d/next/Documentation/2023-05-25-22-34-31.gh-issue-104943.J2v1Pc.rst
new file mode 100644
index 00000000000000..bc4d03b8e95f86
--- /dev/null
+++ b/Misc/NEWS.d/next/Documentation/2023-05-25-22-34-31.gh-issue-104943.J2v1Pc.rst
@@ -0,0 +1 @@
+Remove mentions of old Python versions in :class:`typing.NamedTuple`.
diff --git a/Misc/NEWS.d/next/Documentation/2023-05-28-19-08-42.gh-issue-89412.j4cg7K.rst b/Misc/NEWS.d/next/Documentation/2023-05-28-19-08-42.gh-issue-89412.j4cg7K.rst
new file mode 100644
index 00000000000000..00937e58c98595
--- /dev/null
+++ b/Misc/NEWS.d/next/Documentation/2023-05-28-19-08-42.gh-issue-89412.j4cg7K.rst
@@ -0,0 +1,2 @@
+Add missing documentation for the ``end_lineno`` and ``end_offset`` attributes
+of the :class:`traceback.TracebackException` class.
diff --git a/Misc/NEWS.d/next/Documentation/2023-05-28-21-01-00.gh-issue-89455.qAKRrA.rst b/Misc/NEWS.d/next/Documentation/2023-05-28-21-01-00.gh-issue-89455.qAKRrA.rst
new file mode 100644
index 00000000000000..fdfa4357f001b5
--- /dev/null
+++ b/Misc/NEWS.d/next/Documentation/2023-05-28-21-01-00.gh-issue-89455.qAKRrA.rst
@@ -0,0 +1,3 @@
+Add missing documentation for the ``max_group_depth`` and ``max_group_width``
+parameters and the ``exceptions`` attribute of the
+:class:`traceback.TracebackException` class.
diff --git a/Misc/NEWS.d/next/IDLE/2023-05-23-17-19-49.gh-issue-104719.rvYXH-.rst b/Misc/NEWS.d/next/IDLE/2023-05-23-17-19-49.gh-issue-104719.rvYXH-.rst
new file mode 100644
index 00000000000000..3fbe04ba4f6844
--- /dev/null
+++ b/Misc/NEWS.d/next/IDLE/2023-05-23-17-19-49.gh-issue-104719.rvYXH-.rst
@@ -0,0 +1,2 @@
+Remove IDLE's modification of tokenize.tabsize and test other uses of
+tokenize data and methods.
diff --git a/Misc/NEWS.d/next/Library/2023-02-18-22-55-48.gh-issue-102024.RUmg_D.rst b/Misc/NEWS.d/next/Library/2023-02-18-22-55-48.gh-issue-102024.RUmg_D.rst
new file mode 100644
index 00000000000000..bb9e28e06c5554
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2023-02-18-22-55-48.gh-issue-102024.RUmg_D.rst
@@ -0,0 +1 @@
+Reduce calls of ``_idle_semaphore.release()`` in :func:`concurrent.futures.thread._worker`.
diff --git a/Misc/NEWS.d/next/Library/2023-05-19-19-46-22.gh-issue-99108.wqCg0t.rst b/Misc/NEWS.d/next/Library/2023-05-19-19-46-22.gh-issue-99108.wqCg0t.rst
new file mode 100644
index 00000000000000..b595f1893609cc
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2023-05-19-19-46-22.gh-issue-99108.wqCg0t.rst
@@ -0,0 +1,3 @@
+We now release the GIL around built-in :mod:`hashlib` computations of
+reasonable size for the SHA families and MD5 hash functions, matching
+what our OpenSSL backed hash computations already does.
diff --git a/Misc/NEWS.d/next/Library/2023-05-22-18-39-53.gh-issue-104372.7tDRaK.rst b/Misc/NEWS.d/next/Library/2023-05-22-18-39-53.gh-issue-104372.7tDRaK.rst
new file mode 100644
index 00000000000000..ea13ec85543ca2
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2023-05-22-18-39-53.gh-issue-104372.7tDRaK.rst
@@ -0,0 +1,5 @@
+On Linux where :mod:`subprocess` can use the ``vfork()`` syscall for faster
+spawning, prevent the parent process from blocking other threads by dropping
+the GIL while it waits for the vfork'ed child process ``exec()`` outcome.
+This prevents spawning a binary from a slow filesystem from blocking the
+rest of the application.
diff --git a/Misc/NEWS.d/next/Library/2023-05-23-17-43-52.gh-issue-104797.NR7KzF.rst b/Misc/NEWS.d/next/Library/2023-05-23-17-43-52.gh-issue-104797.NR7KzF.rst
new file mode 100644
index 00000000000000..60c9a0601cdc9a
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2023-05-23-17-43-52.gh-issue-104797.NR7KzF.rst
@@ -0,0 +1,2 @@
+Allow :class:`typing.Protocol` classes to inherit from
+:class:`collections.abc.Buffer`. Patch by Jelle Zijlstra.
diff --git a/Misc/NEWS.d/next/Library/2023-05-23-18-31-49.gh-issue-104799.MJYOw6.rst b/Misc/NEWS.d/next/Library/2023-05-23-18-31-49.gh-issue-104799.MJYOw6.rst
new file mode 100644
index 00000000000000..614918d7572969
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2023-05-23-18-31-49.gh-issue-104799.MJYOw6.rst
@@ -0,0 +1,4 @@
+Adjust the location of the (see :pep:`695`) ``type_params`` field on
+:class:`ast.ClassDef`, :class:`ast.AsyncFunctionDef`, and
+:class:`ast.FunctionDef` to better preserve backward compatibility. Patch by
+Jelle Zijlstra
diff --git a/Misc/NEWS.d/next/Library/2023-05-24-09-34-23.gh-issue-104874.oqyJSy.rst b/Misc/NEWS.d/next/Library/2023-05-24-09-34-23.gh-issue-104874.oqyJSy.rst
new file mode 100644
index 00000000000000..9d5904bc146421
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2023-05-24-09-34-23.gh-issue-104874.oqyJSy.rst
@@ -0,0 +1,2 @@
+Document the ``__name__`` and ``__supertype__`` attributes of
+:class:`typing.NewType`. Patch by Jelle Zijlstra.
diff --git a/Misc/NEWS.d/next/Library/2023-05-25-08-50-47.gh-issue-104935.-rm1BR.rst b/Misc/NEWS.d/next/Library/2023-05-25-08-50-47.gh-issue-104935.-rm1BR.rst
new file mode 100644
index 00000000000000..7af52bce2c9185
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2023-05-25-08-50-47.gh-issue-104935.-rm1BR.rst
@@ -0,0 +1,3 @@
+Fix bugs with the interaction between :func:`typing.runtime_checkable` and
+:class:`typing.Generic` that were introduced by the :pep:`695`
+implementation. Patch by Jelle Zijlstra.
diff --git a/Misc/NEWS.d/next/Library/2023-05-25-22-54-20.gh-issue-104947.hi6TUr.rst b/Misc/NEWS.d/next/Library/2023-05-25-22-54-20.gh-issue-104947.hi6TUr.rst
new file mode 100644
index 00000000000000..4af73d73d2a717
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2023-05-25-22-54-20.gh-issue-104947.hi6TUr.rst
@@ -0,0 +1,2 @@
+Make comparisons between :class:`pathlib.PureWindowsPath` objects consistent
+across Windows and Posix to match 3.11 behavior.
diff --git a/Misc/NEWS.d/next/Library/2023-05-25-23-34-54.gh-issue-103631.x5Urye.rst b/Misc/NEWS.d/next/Library/2023-05-25-23-34-54.gh-issue-103631.x5Urye.rst
new file mode 100644
index 00000000000000..d1eb2d3ed6191f
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2023-05-25-23-34-54.gh-issue-103631.x5Urye.rst
@@ -0,0 +1,2 @@
+Fix ``pathlib.PurePosixPath(pathlib.PureWindowsPath(...))`` not converting
+path separators to restore 3.11 compatible behavior.
diff --git a/Misc/NEWS.d/next/Library/2023-05-26-01-31-30.gh-issue-101588.RaqxFy.rst b/Misc/NEWS.d/next/Library/2023-05-26-01-31-30.gh-issue-101588.RaqxFy.rst
new file mode 100644
index 00000000000000..07e3dc468f7d9a
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2023-05-26-01-31-30.gh-issue-101588.RaqxFy.rst
@@ -0,0 +1 @@
+Deprecate undocumented copy/deepcopy/pickle support for itertools.
diff --git a/Misc/NEWS.d/next/Library/2023-05-30-21-27-41.gh-issue-105113.bDUPl_.rst b/Misc/NEWS.d/next/Library/2023-05-30-21-27-41.gh-issue-105113.bDUPl_.rst
new file mode 100644
index 00000000000000..59164ae4734e51
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2023-05-30-21-27-41.gh-issue-105113.bDUPl_.rst
@@ -0,0 +1,2 @@
+Improve performance of :meth:`pathlib.PurePath.match` by compiling an
+:class:`re.Pattern` object for the entire pattern.
diff --git a/Misc/NEWS.d/next/Library/2023-05-31-16-58-42.gh-issue-105144.Oqfn0V.rst b/Misc/NEWS.d/next/Library/2023-05-31-16-58-42.gh-issue-105144.Oqfn0V.rst
new file mode 100644
index 00000000000000..7e4d6fbc4911ba
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2023-05-31-16-58-42.gh-issue-105144.Oqfn0V.rst
@@ -0,0 +1,5 @@
+Fix a recent regression in the :mod:`typing` module. The regression meant
+that doing ``class Foo(X, typing.Protocol)``, where ``X`` was a class that
+had :class:`abc.ABCMeta` as its metaclass, would then cause subsequent
+``isinstance(1, X)`` calls to erroneously raise :exc:`TypeError`. Patch by
+Alex Waygood.
diff --git a/Misc/NEWS.d/next/Library/2023-06-02-02-38-26.gh-issue-105080.2imGMg.rst b/Misc/NEWS.d/next/Library/2023-06-02-02-38-26.gh-issue-105080.2imGMg.rst
new file mode 100644
index 00000000000000..efe8365a7644be
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2023-06-02-02-38-26.gh-issue-105080.2imGMg.rst
@@ -0,0 +1 @@
+Fixed inconsistent signature on derived classes for :func:`inspect.signature`
diff --git a/Misc/NEWS.d/next/Library/2023-06-02-14-57-11.gh-issue-105239.SAmuuj.rst b/Misc/NEWS.d/next/Library/2023-06-02-14-57-11.gh-issue-105239.SAmuuj.rst
new file mode 100644
index 00000000000000..35e1b1a217b3a4
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2023-06-02-14-57-11.gh-issue-105239.SAmuuj.rst
@@ -0,0 +1,2 @@
+Fix longstanding bug where ``issubclass(object, typing.Protocol)`` would
+evaluate to ``True`` in some edge cases. Patch by Alex Waygood.
diff --git a/Misc/NEWS.d/next/Library/2023-06-04-12-16-47.gh-issue-105280.srRbCe.rst b/Misc/NEWS.d/next/Library/2023-06-04-12-16-47.gh-issue-105280.srRbCe.rst
new file mode 100644
index 00000000000000..8e469646604316
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2023-06-04-12-16-47.gh-issue-105280.srRbCe.rst
@@ -0,0 +1,4 @@
+Fix bug where ``isinstance([], collections.abc.Mapping)`` could evaluate to
+``True`` if garbage collection happened at the wrong time. The bug was
+caused by changes to the implementation of :class:`typing.Protocol` in
+Python 3.12.
diff --git a/Misc/NEWS.d/next/Security/2023-05-24-09-29-08.gh-issue-99108.hwS2cr.rst b/Misc/NEWS.d/next/Security/2023-05-24-09-29-08.gh-issue-99108.hwS2cr.rst
new file mode 100644
index 00000000000000..312ba89454b5b8
--- /dev/null
+++ b/Misc/NEWS.d/next/Security/2023-05-24-09-29-08.gh-issue-99108.hwS2cr.rst
@@ -0,0 +1,2 @@
+Refresh our new HACL* built-in :mod:`hashlib` code from upstream. Built-in
+SHA2 should be faster and an issue with SHA3 on 32-bit platforms is fixed.
diff --git a/Misc/NEWS.d/next/Security/2023-06-01-03-24-58.gh-issue-103142.GLWDMX.rst b/Misc/NEWS.d/next/Security/2023-06-01-03-24-58.gh-issue-103142.GLWDMX.rst
new file mode 100644
index 00000000000000..7e0836879e4f81
--- /dev/null
+++ b/Misc/NEWS.d/next/Security/2023-06-01-03-24-58.gh-issue-103142.GLWDMX.rst
@@ -0,0 +1,2 @@
+The version of OpenSSL used in our binary builds has been upgraded to 1.1.1u
+to address several CVEs.
diff --git a/Misc/NEWS.d/next/Windows/2023-05-23-19-26-28.gh-issue-104803.gqxYml.rst b/Misc/NEWS.d/next/Windows/2023-05-23-19-26-28.gh-issue-104803.gqxYml.rst
new file mode 100644
index 00000000000000..d2242c76189970
--- /dev/null
+++ b/Misc/NEWS.d/next/Windows/2023-05-23-19-26-28.gh-issue-104803.gqxYml.rst
@@ -0,0 +1,3 @@
+Add :func:`os.path.isdevdrive` to detect whether a path is on a Windows Dev
+Drive. Returns ``False`` on platforms that do not support Dev Drive, and is
+absent on non-Windows platforms.
diff --git a/Misc/NEWS.d/next/Windows/2023-05-24-21-00-57.gh-issue-104820.ibyrpp.rst b/Misc/NEWS.d/next/Windows/2023-05-24-21-00-57.gh-issue-104820.ibyrpp.rst
new file mode 100644
index 00000000000000..5bdfbabfaf28e1
--- /dev/null
+++ b/Misc/NEWS.d/next/Windows/2023-05-24-21-00-57.gh-issue-104820.ibyrpp.rst
@@ -0,0 +1,2 @@
+Fixes :func:`~os.stat` and related functions on file systems that do not
+support file ID requests. This includes FAT32 and exFAT.
diff --git a/Misc/NEWS.d/next/Windows/2023-05-29-11-38-53.gh-issue-88745.cldf9G.rst b/Misc/NEWS.d/next/Windows/2023-05-29-11-38-53.gh-issue-88745.cldf9G.rst
new file mode 100644
index 00000000000000..258eb89d50d9f5
--- /dev/null
+++ b/Misc/NEWS.d/next/Windows/2023-05-29-11-38-53.gh-issue-88745.cldf9G.rst
@@ -0,0 +1,3 @@
+Improve performance of :func:`shutil.copy2` by using the operating system's
+``CopyFile2`` function. This may result in subtle changes to metadata copied
+along with some files, bringing them in line with normal OS behavior.
diff --git a/Misc/NEWS.d/next/Windows/2023-05-29-17-09-31.gh-issue-103646.U8oGQx.rst b/Misc/NEWS.d/next/Windows/2023-05-29-17-09-31.gh-issue-103646.U8oGQx.rst
new file mode 100644
index 00000000000000..71c1e7c6594cbf
--- /dev/null
+++ b/Misc/NEWS.d/next/Windows/2023-05-29-17-09-31.gh-issue-103646.U8oGQx.rst
@@ -0,0 +1,5 @@
+When installed from the Microsoft Store, ``pip`` no longer defaults to
+per-user installs. However, as the install directory is unwritable, it
+should automatically decide to do a per-user install anyway. This should
+resolve issues when ``pip`` is passed an option that conflicts with
+``--user``.
diff --git a/Misc/NEWS.d/next/Windows/2023-05-31-16-14-31.gh-issue-105146.gNjqq8.rst b/Misc/NEWS.d/next/Windows/2023-05-31-16-14-31.gh-issue-105146.gNjqq8.rst
new file mode 100644
index 00000000000000..1a5208bc898207
--- /dev/null
+++ b/Misc/NEWS.d/next/Windows/2023-05-31-16-14-31.gh-issue-105146.gNjqq8.rst
@@ -0,0 +1,2 @@
+Updated the links at the end of the installer to point to Discourse rather
+than the mailing lists.
diff --git a/Misc/NEWS.d/next/macOS/2023-05-30-23-30-46.gh-issue-103142.55lMXQ.rst b/Misc/NEWS.d/next/macOS/2023-05-30-23-30-46.gh-issue-103142.55lMXQ.rst
new file mode 100644
index 00000000000000..1afd949d6a9f03
--- /dev/null
+++ b/Misc/NEWS.d/next/macOS/2023-05-30-23-30-46.gh-issue-103142.55lMXQ.rst
@@ -0,0 +1 @@
+Update macOS installer to use OpenSSL 1.1.1u.
diff --git a/Misc/stable_abi.toml b/Misc/stable_abi.toml
index 48299e9b35ff97..1db98483f09f77 100644
--- a/Misc/stable_abi.toml
+++ b/Misc/stable_abi.toml
@@ -2406,3 +2406,12 @@
added = '3.12'
[const.Py_TPFLAGS_ITEMS_AT_END]
added = '3.12'
+
+[function._Py_IncRefTotal_DO_NOT_USE_THIS]
+ added = '3.12'
+ ifdef = 'Py_REF_DEBUG'
+ abi_only = true
+[function._Py_DecRefTotal_DO_NOT_USE_THIS]
+ added = '3.12'
+ ifdef = 'Py_REF_DEBUG'
+ abi_only = true
diff --git a/Modules/Setup b/Modules/Setup
index 312e99fea530dc..a8faa1d1028da5 100644
--- a/Modules/Setup
+++ b/Modules/Setup
@@ -165,7 +165,7 @@ PYTHONPATH=$(COREPYTHONPATH)
#_blake2 _blake2/blake2module.c _blake2/blake2b_impl.c _blake2/blake2s_impl.c
#_md5 md5module.c -I$(srcdir)/Modules/_hacl/include _hacl/Hacl_Hash_MD5.c -D_BSD_SOURCE -D_DEFAULT_SOURCE
#_sha1 sha1module.c -I$(srcdir)/Modules/_hacl/include _hacl/Hacl_Hash_SHA1.c -D_BSD_SOURCE -D_DEFAULT_SOURCE
-#_sha2 sha2module.c -I$(srcdir)/Modules/_hacl/include Modules/_hacl/libHacl_Streaming_SHA2.a
+#_sha2 sha2module.c -I$(srcdir)/Modules/_hacl/include Modules/_hacl/libHacl_Hash_SHA2.a
#_sha3 sha3module.c -I$(srcdir)/Modules/_hacl/include _hacl/Hacl_Hash_SHA3.c -D_BSD_SOURCE -D_DEFAULT_SOURCE
# text encodings and unicode
diff --git a/Modules/Setup.stdlib.in b/Modules/Setup.stdlib.in
index 6db567d713090d..0fc7955cd9b7c2 100644
--- a/Modules/Setup.stdlib.in
+++ b/Modules/Setup.stdlib.in
@@ -78,7 +78,7 @@
# hashing builtins, can be disabled with --without-builtin-hashlib-hashes
@MODULE__MD5_TRUE@_md5 md5module.c -I$(srcdir)/Modules/_hacl/include _hacl/Hacl_Hash_MD5.c -D_BSD_SOURCE -D_DEFAULT_SOURCE
@MODULE__SHA1_TRUE@_sha1 sha1module.c -I$(srcdir)/Modules/_hacl/include _hacl/Hacl_Hash_SHA1.c -D_BSD_SOURCE -D_DEFAULT_SOURCE
-@MODULE__SHA2_TRUE@_sha2 sha2module.c -I$(srcdir)/Modules/_hacl/include Modules/_hacl/libHacl_Streaming_SHA2.a
+@MODULE__SHA2_TRUE@_sha2 sha2module.c -I$(srcdir)/Modules/_hacl/include Modules/_hacl/libHacl_Hash_SHA2.a
@MODULE__SHA3_TRUE@_sha3 sha3module.c -I$(srcdir)/Modules/_hacl/include _hacl/Hacl_Hash_SHA3.c -D_BSD_SOURCE -D_DEFAULT_SOURCE
@MODULE__BLAKE2_TRUE@_blake2 _blake2/blake2module.c _blake2/blake2b_impl.c _blake2/blake2s_impl.c
diff --git a/Modules/_hacl/Hacl_Hash_MD5.c b/Modules/_hacl/Hacl_Hash_MD5.c
index 2c613066d9f682..222ac824f01961 100644
--- a/Modules/_hacl/Hacl_Hash_MD5.c
+++ b/Modules/_hacl/Hacl_Hash_MD5.c
@@ -1227,14 +1227,14 @@ void Hacl_Streaming_MD5_legacy_init(Hacl_Streaming_MD_state_32 *s)
/**
0 = success, 1 = max length exceeded
*/
-uint32_t
+Hacl_Streaming_Types_error_code
Hacl_Streaming_MD5_legacy_update(Hacl_Streaming_MD_state_32 *p, uint8_t *data, uint32_t len)
{
Hacl_Streaming_MD_state_32 s = *p;
uint64_t total_len = s.total_len;
if ((uint64_t)len > (uint64_t)2305843009213693951U - total_len)
{
- return (uint32_t)1U;
+ return Hacl_Streaming_Types_MaximumLengthExceeded;
}
uint32_t sz;
if (total_len % (uint64_t)(uint32_t)64U == (uint64_t)0U && total_len > (uint64_t)0U)
@@ -1399,7 +1399,7 @@ Hacl_Streaming_MD5_legacy_update(Hacl_Streaming_MD_state_32 *p, uint8_t *data, u
}
);
}
- return (uint32_t)0U;
+ return Hacl_Streaming_Types_Success;
}
void Hacl_Streaming_MD5_legacy_finish(Hacl_Streaming_MD_state_32 *p, uint8_t *dst)
diff --git a/Modules/_hacl/Hacl_Hash_MD5.h b/Modules/_hacl/Hacl_Hash_MD5.h
index 015e3668751b75..13c19fd40f4d12 100644
--- a/Modules/_hacl/Hacl_Hash_MD5.h
+++ b/Modules/_hacl/Hacl_Hash_MD5.h
@@ -46,7 +46,7 @@ void Hacl_Streaming_MD5_legacy_init(Hacl_Streaming_MD_state_32 *s);
/**
0 = success, 1 = max length exceeded
*/
-uint32_t
+Hacl_Streaming_Types_error_code
Hacl_Streaming_MD5_legacy_update(Hacl_Streaming_MD_state_32 *p, uint8_t *data, uint32_t len);
void Hacl_Streaming_MD5_legacy_finish(Hacl_Streaming_MD_state_32 *p, uint8_t *dst);
diff --git a/Modules/_hacl/Hacl_Hash_SHA1.c b/Modules/_hacl/Hacl_Hash_SHA1.c
index e155e338271c56..5ecb3c0b3a56e0 100644
--- a/Modules/_hacl/Hacl_Hash_SHA1.c
+++ b/Modules/_hacl/Hacl_Hash_SHA1.c
@@ -263,14 +263,14 @@ void Hacl_Streaming_SHA1_legacy_init(Hacl_Streaming_MD_state_32 *s)
/**
0 = success, 1 = max length exceeded
*/
-uint32_t
+Hacl_Streaming_Types_error_code
Hacl_Streaming_SHA1_legacy_update(Hacl_Streaming_MD_state_32 *p, uint8_t *data, uint32_t len)
{
Hacl_Streaming_MD_state_32 s = *p;
uint64_t total_len = s.total_len;
if ((uint64_t)len > (uint64_t)2305843009213693951U - total_len)
{
- return (uint32_t)1U;
+ return Hacl_Streaming_Types_MaximumLengthExceeded;
}
uint32_t sz;
if (total_len % (uint64_t)(uint32_t)64U == (uint64_t)0U && total_len > (uint64_t)0U)
@@ -435,7 +435,7 @@ Hacl_Streaming_SHA1_legacy_update(Hacl_Streaming_MD_state_32 *p, uint8_t *data,
}
);
}
- return (uint32_t)0U;
+ return Hacl_Streaming_Types_Success;
}
void Hacl_Streaming_SHA1_legacy_finish(Hacl_Streaming_MD_state_32 *p, uint8_t *dst)
diff --git a/Modules/_hacl/Hacl_Hash_SHA1.h b/Modules/_hacl/Hacl_Hash_SHA1.h
index 5e2ae8e713292d..dc50aa6f6d3902 100644
--- a/Modules/_hacl/Hacl_Hash_SHA1.h
+++ b/Modules/_hacl/Hacl_Hash_SHA1.h
@@ -46,7 +46,7 @@ void Hacl_Streaming_SHA1_legacy_init(Hacl_Streaming_MD_state_32 *s);
/**
0 = success, 1 = max length exceeded
*/
-uint32_t
+Hacl_Streaming_Types_error_code
Hacl_Streaming_SHA1_legacy_update(Hacl_Streaming_MD_state_32 *p, uint8_t *data, uint32_t len);
void Hacl_Streaming_SHA1_legacy_finish(Hacl_Streaming_MD_state_32 *p, uint8_t *dst);
diff --git a/Modules/_hacl/Hacl_Streaming_SHA2.c b/Modules/_hacl/Hacl_Hash_SHA2.c
similarity index 87%
rename from Modules/_hacl/Hacl_Streaming_SHA2.c
rename to Modules/_hacl/Hacl_Hash_SHA2.c
index 69c3be8cdf7fd1..08e3f7edbf4ede 100644
--- a/Modules/_hacl/Hacl_Streaming_SHA2.c
+++ b/Modules/_hacl/Hacl_Hash_SHA2.c
@@ -23,12 +23,11 @@
*/
-#include "Hacl_Streaming_SHA2.h"
+#include "internal/Hacl_Hash_SHA2.h"
-#include "internal/Hacl_SHA2_Generic.h"
-static inline void sha256_init(uint32_t *hash)
+void Hacl_SHA2_Scalar32_sha256_init(uint32_t *hash)
{
KRML_MAYBE_FOR8(i,
(uint32_t)0U,
@@ -39,7 +38,7 @@ static inline void sha256_init(uint32_t *hash)
os[i] = x;);
}
-static inline void sha256_update0(uint8_t *b, uint32_t *hash)
+static inline void sha256_update(uint8_t *b, uint32_t *hash)
{
uint32_t hash_old[8U] = { 0U };
uint32_t ws[16U] = { 0U };
@@ -159,19 +158,24 @@ static inline void sha256_update0(uint8_t *b, uint32_t *hash)
os[i] = x;);
}
-static inline void sha256_update_nblocks(uint32_t len, uint8_t *b, uint32_t *st)
+void Hacl_SHA2_Scalar32_sha256_update_nblocks(uint32_t len, uint8_t *b, uint32_t *st)
{
uint32_t blocks = len / (uint32_t)64U;
for (uint32_t i = (uint32_t)0U; i < blocks; i++)
{
uint8_t *b0 = b;
uint8_t *mb = b0 + i * (uint32_t)64U;
- sha256_update0(mb, st);
+ sha256_update(mb, st);
}
}
-static inline void
-sha256_update_last(uint64_t totlen, uint32_t len, uint8_t *b, uint32_t *hash)
+void
+Hacl_SHA2_Scalar32_sha256_update_last(
+ uint64_t totlen,
+ uint32_t len,
+ uint8_t *b,
+ uint32_t *hash
+)
{
uint32_t blocks;
if (len + (uint32_t)8U + (uint32_t)1U <= (uint32_t)64U)
@@ -199,15 +203,15 @@ sha256_update_last(uint64_t totlen, uint32_t len, uint8_t *b, uint32_t *hash)
uint8_t *lb1 = l1;
uint8_t *last0 = lb0;
uint8_t *last1 = lb1;
- sha256_update0(last0, hash);
+ sha256_update(last0, hash);
if (blocks > (uint32_t)1U)
{
- sha256_update0(last1, hash);
+ sha256_update(last1, hash);
return;
}
}
-static inline void sha256_finish(uint32_t *st, uint8_t *h)
+void Hacl_SHA2_Scalar32_sha256_finish(uint32_t *st, uint8_t *h)
{
uint8_t hbuf[32U] = { 0U };
KRML_MAYBE_FOR8(i,
@@ -218,7 +222,7 @@ static inline void sha256_finish(uint32_t *st, uint8_t *h)
memcpy(h, hbuf, (uint32_t)32U * sizeof (uint8_t));
}
-static inline void sha224_init(uint32_t *hash)
+void Hacl_SHA2_Scalar32_sha224_init(uint32_t *hash)
{
KRML_MAYBE_FOR8(i,
(uint32_t)0U,
@@ -231,15 +235,16 @@ static inline void sha224_init(uint32_t *hash)
static inline void sha224_update_nblocks(uint32_t len, uint8_t *b, uint32_t *st)
{
- sha256_update_nblocks(len, b, st);
+ Hacl_SHA2_Scalar32_sha256_update_nblocks(len, b, st);
}
-static void sha224_update_last(uint64_t totlen, uint32_t len, uint8_t *b, uint32_t *st)
+void
+Hacl_SHA2_Scalar32_sha224_update_last(uint64_t totlen, uint32_t len, uint8_t *b, uint32_t *st)
{
- sha256_update_last(totlen, len, b, st);
+ Hacl_SHA2_Scalar32_sha256_update_last(totlen, len, b, st);
}
-static inline void sha224_finish(uint32_t *st, uint8_t *h)
+void Hacl_SHA2_Scalar32_sha224_finish(uint32_t *st, uint8_t *h)
{
uint8_t hbuf[32U] = { 0U };
KRML_MAYBE_FOR8(i,
@@ -381,7 +386,7 @@ static inline void sha512_update(uint8_t *b, uint64_t *hash)
os[i] = x;);
}
-static inline void sha512_update_nblocks(uint32_t len, uint8_t *b, uint64_t *st)
+void Hacl_SHA2_Scalar32_sha512_update_nblocks(uint32_t len, uint8_t *b, uint64_t *st)
{
uint32_t blocks = len / (uint32_t)128U;
for (uint32_t i = (uint32_t)0U; i < blocks; i++)
@@ -392,8 +397,13 @@ static inline void sha512_update_nblocks(uint32_t len, uint8_t *b, uint64_t *st)
}
}
-static inline void
-sha512_update_last(FStar_UInt128_uint128 totlen, uint32_t len, uint8_t *b, uint64_t *hash)
+void
+Hacl_SHA2_Scalar32_sha512_update_last(
+ FStar_UInt128_uint128 totlen,
+ uint32_t len,
+ uint8_t *b,
+ uint64_t *hash
+)
{
uint32_t blocks;
if (len + (uint32_t)16U + (uint32_t)1U <= (uint32_t)128U)
@@ -429,7 +439,7 @@ sha512_update_last(FStar_UInt128_uint128 totlen, uint32_t len, uint8_t *b, uint6
}
}
-static inline void sha512_finish(uint64_t *st, uint8_t *h)
+void Hacl_SHA2_Scalar32_sha512_finish(uint64_t *st, uint8_t *h)
{
uint8_t hbuf[64U] = { 0U };
KRML_MAYBE_FOR8(i,
@@ -440,7 +450,7 @@ static inline void sha512_finish(uint64_t *st, uint8_t *h)
memcpy(h, hbuf, (uint32_t)64U * sizeof (uint8_t));
}
-static inline void sha384_init(uint64_t *hash)
+void Hacl_SHA2_Scalar32_sha384_init(uint64_t *hash)
{
KRML_MAYBE_FOR8(i,
(uint32_t)0U,
@@ -451,18 +461,23 @@ static inline void sha384_init(uint64_t *hash)
os[i] = x;);
}
-static inline void sha384_update_nblocks(uint32_t len, uint8_t *b, uint64_t *st)
+void Hacl_SHA2_Scalar32_sha384_update_nblocks(uint32_t len, uint8_t *b, uint64_t *st)
{
- sha512_update_nblocks(len, b, st);
+ Hacl_SHA2_Scalar32_sha512_update_nblocks(len, b, st);
}
-static void
-sha384_update_last(FStar_UInt128_uint128 totlen, uint32_t len, uint8_t *b, uint64_t *st)
+void
+Hacl_SHA2_Scalar32_sha384_update_last(
+ FStar_UInt128_uint128 totlen,
+ uint32_t len,
+ uint8_t *b,
+ uint64_t *st
+)
{
- sha512_update_last(totlen, len, b, st);
+ Hacl_SHA2_Scalar32_sha512_update_last(totlen, len, b, st);
}
-static inline void sha384_finish(uint64_t *st, uint8_t *h)
+void Hacl_SHA2_Scalar32_sha384_finish(uint64_t *st, uint8_t *h)
{
uint8_t hbuf[64U] = { 0U };
KRML_MAYBE_FOR8(i,
@@ -486,7 +501,7 @@ Hacl_Streaming_MD_state_32 *Hacl_Streaming_SHA2_create_in_256(void)
Hacl_Streaming_MD_state_32
*p = (Hacl_Streaming_MD_state_32 *)KRML_HOST_MALLOC(sizeof (Hacl_Streaming_MD_state_32));
p[0U] = s;
- sha256_init(block_state);
+ Hacl_SHA2_Scalar32_sha256_init(block_state);
return p;
}
@@ -522,20 +537,20 @@ void Hacl_Streaming_SHA2_init_256(Hacl_Streaming_MD_state_32 *s)
Hacl_Streaming_MD_state_32 scrut = *s;
uint8_t *buf = scrut.buf;
uint32_t *block_state = scrut.block_state;
- sha256_init(block_state);
+ Hacl_SHA2_Scalar32_sha256_init(block_state);
Hacl_Streaming_MD_state_32
tmp = { .block_state = block_state, .buf = buf, .total_len = (uint64_t)(uint32_t)0U };
s[0U] = tmp;
}
-static inline uint32_t
+static inline Hacl_Streaming_Types_error_code
update_224_256(Hacl_Streaming_MD_state_32 *p, uint8_t *data, uint32_t len)
{
Hacl_Streaming_MD_state_32 s = *p;
uint64_t total_len = s.total_len;
if ((uint64_t)len > (uint64_t)2305843009213693951U - total_len)
{
- return (uint32_t)1U;
+ return Hacl_Streaming_Types_MaximumLengthExceeded;
}
uint32_t sz;
if (total_len % (uint64_t)(uint32_t)64U == (uint64_t)0U && total_len > (uint64_t)0U)
@@ -591,7 +606,7 @@ update_224_256(Hacl_Streaming_MD_state_32 *p, uint8_t *data, uint32_t len)
}
if (!(sz1 == (uint32_t)0U))
{
- sha256_update_nblocks((uint32_t)64U, buf, block_state1);
+ Hacl_SHA2_Scalar32_sha256_update_nblocks((uint32_t)64U, buf, block_state1);
}
uint32_t ite;
if ((uint64_t)len % (uint64_t)(uint32_t)64U == (uint64_t)0U && (uint64_t)len > (uint64_t)0U)
@@ -607,7 +622,9 @@ update_224_256(Hacl_Streaming_MD_state_32 *p, uint8_t *data, uint32_t len)
uint32_t data2_len = len - data1_len;
uint8_t *data1 = data;
uint8_t *data2 = data + data1_len;
- sha256_update_nblocks(data1_len, data1, block_state1);
+ Hacl_SHA2_Scalar32_sha256_update_nblocks(data1_len / (uint32_t)64U * (uint32_t)64U,
+ data1,
+ block_state1);
uint8_t *dst = buf;
memcpy(dst, data2, data2_len * sizeof (uint8_t));
*p
@@ -665,7 +682,7 @@ update_224_256(Hacl_Streaming_MD_state_32 *p, uint8_t *data, uint32_t len)
}
if (!(sz1 == (uint32_t)0U))
{
- sha256_update_nblocks((uint32_t)64U, buf, block_state1);
+ Hacl_SHA2_Scalar32_sha256_update_nblocks((uint32_t)64U, buf, block_state1);
}
uint32_t ite;
if
@@ -687,7 +704,9 @@ update_224_256(Hacl_Streaming_MD_state_32 *p, uint8_t *data, uint32_t len)
uint32_t data2_len = len - diff - data1_len;
uint8_t *data11 = data2;
uint8_t *data21 = data2 + data1_len;
- sha256_update_nblocks(data1_len, data11, block_state1);
+ Hacl_SHA2_Scalar32_sha256_update_nblocks(data1_len / (uint32_t)64U * (uint32_t)64U,
+ data11,
+ block_state1);
uint8_t *dst = buf;
memcpy(dst, data21, data2_len * sizeof (uint8_t));
*p
@@ -700,7 +719,7 @@ update_224_256(Hacl_Streaming_MD_state_32 *p, uint8_t *data, uint32_t len)
}
);
}
- return (uint32_t)0U;
+ return Hacl_Streaming_Types_Success;
}
/**
@@ -710,7 +729,7 @@ success, or 1 if the combined length of all of the data passed to `update_256`
This function is identical to the update function for SHA2_224.
*/
-uint32_t
+Hacl_Streaming_Types_error_code
Hacl_Streaming_SHA2_update_256(
Hacl_Streaming_MD_state_32 *p,
uint8_t *input,
@@ -755,10 +774,13 @@ void Hacl_Streaming_SHA2_finish_256(Hacl_Streaming_MD_state_32 *p, uint8_t *dst)
}
uint8_t *buf_last = buf_1 + r - ite;
uint8_t *buf_multi = buf_1;
- sha256_update_nblocks((uint32_t)0U, buf_multi, tmp_block_state);
+ Hacl_SHA2_Scalar32_sha256_update_nblocks((uint32_t)0U, buf_multi, tmp_block_state);
uint64_t prev_len_last = total_len - (uint64_t)r;
- sha256_update_last(prev_len_last + (uint64_t)r, r, buf_last, tmp_block_state);
- sha256_finish(tmp_block_state, dst);
+ Hacl_SHA2_Scalar32_sha256_update_last(prev_len_last + (uint64_t)r,
+ r,
+ buf_last,
+ tmp_block_state);
+ Hacl_SHA2_Scalar32_sha256_finish(tmp_block_state, dst);
}
/**
@@ -779,20 +801,20 @@ void Hacl_Streaming_SHA2_free_256(Hacl_Streaming_MD_state_32 *s)
/**
Hash `input`, of len `input_len`, into `dst`, an array of 32 bytes.
*/
-void Hacl_Streaming_SHA2_sha256(uint8_t *input, uint32_t input_len, uint8_t *dst)
+void Hacl_Streaming_SHA2_hash_256(uint8_t *input, uint32_t input_len, uint8_t *dst)
{
uint8_t *ib = input;
uint8_t *rb = dst;
uint32_t st[8U] = { 0U };
- sha256_init(st);
+ Hacl_SHA2_Scalar32_sha256_init(st);
uint32_t rem = input_len % (uint32_t)64U;
uint64_t len_ = (uint64_t)input_len;
- sha256_update_nblocks(input_len, ib, st);
+ Hacl_SHA2_Scalar32_sha256_update_nblocks(input_len, ib, st);
uint32_t rem1 = input_len % (uint32_t)64U;
uint8_t *b0 = ib;
uint8_t *lb = b0 + input_len - rem1;
- sha256_update_last(len_, rem, lb, st);
- sha256_finish(st, rb);
+ Hacl_SHA2_Scalar32_sha256_update_last(len_, rem, lb, st);
+ Hacl_SHA2_Scalar32_sha256_finish(st, rb);
}
Hacl_Streaming_MD_state_32 *Hacl_Streaming_SHA2_create_in_224(void)
@@ -804,7 +826,7 @@ Hacl_Streaming_MD_state_32 *Hacl_Streaming_SHA2_create_in_224(void)
Hacl_Streaming_MD_state_32
*p = (Hacl_Streaming_MD_state_32 *)KRML_HOST_MALLOC(sizeof (Hacl_Streaming_MD_state_32));
p[0U] = s;
- sha224_init(block_state);
+ Hacl_SHA2_Scalar32_sha224_init(block_state);
return p;
}
@@ -813,13 +835,13 @@ void Hacl_Streaming_SHA2_init_224(Hacl_Streaming_MD_state_32 *s)
Hacl_Streaming_MD_state_32 scrut = *s;
uint8_t *buf = scrut.buf;
uint32_t *block_state = scrut.block_state;
- sha224_init(block_state);
+ Hacl_SHA2_Scalar32_sha224_init(block_state);
Hacl_Streaming_MD_state_32
tmp = { .block_state = block_state, .buf = buf, .total_len = (uint64_t)(uint32_t)0U };
s[0U] = tmp;
}
-uint32_t
+Hacl_Streaming_Types_error_code
Hacl_Streaming_SHA2_update_224(
Hacl_Streaming_MD_state_32 *p,
uint8_t *input,
@@ -865,8 +887,11 @@ void Hacl_Streaming_SHA2_finish_224(Hacl_Streaming_MD_state_32 *p, uint8_t *dst)
uint8_t *buf_multi = buf_1;
sha224_update_nblocks((uint32_t)0U, buf_multi, tmp_block_state);
uint64_t prev_len_last = total_len - (uint64_t)r;
- sha224_update_last(prev_len_last + (uint64_t)r, r, buf_last, tmp_block_state);
- sha224_finish(tmp_block_state, dst);
+ Hacl_SHA2_Scalar32_sha224_update_last(prev_len_last + (uint64_t)r,
+ r,
+ buf_last,
+ tmp_block_state);
+ Hacl_SHA2_Scalar32_sha224_finish(tmp_block_state, dst);
}
void Hacl_Streaming_SHA2_free_224(Hacl_Streaming_MD_state_32 *p)
@@ -877,20 +902,20 @@ void Hacl_Streaming_SHA2_free_224(Hacl_Streaming_MD_state_32 *p)
/**
Hash `input`, of len `input_len`, into `dst`, an array of 28 bytes.
*/
-void Hacl_Streaming_SHA2_sha224(uint8_t *input, uint32_t input_len, uint8_t *dst)
+void Hacl_Streaming_SHA2_hash_224(uint8_t *input, uint32_t input_len, uint8_t *dst)
{
uint8_t *ib = input;
uint8_t *rb = dst;
uint32_t st[8U] = { 0U };
- sha224_init(st);
+ Hacl_SHA2_Scalar32_sha224_init(st);
uint32_t rem = input_len % (uint32_t)64U;
uint64_t len_ = (uint64_t)input_len;
sha224_update_nblocks(input_len, ib, st);
uint32_t rem1 = input_len % (uint32_t)64U;
uint8_t *b0 = ib;
uint8_t *lb = b0 + input_len - rem1;
- sha224_update_last(len_, rem, lb, st);
- sha224_finish(st, rb);
+ Hacl_SHA2_Scalar32_sha224_update_last(len_, rem, lb, st);
+ Hacl_SHA2_Scalar32_sha224_finish(st, rb);
}
Hacl_Streaming_MD_state_64 *Hacl_Streaming_SHA2_create_in_512(void)
@@ -941,14 +966,14 @@ void Hacl_Streaming_SHA2_init_512(Hacl_Streaming_MD_state_64 *s)
s[0U] = tmp;
}
-static inline uint32_t
+static inline Hacl_Streaming_Types_error_code
update_384_512(Hacl_Streaming_MD_state_64 *p, uint8_t *data, uint32_t len)
{
Hacl_Streaming_MD_state_64 s = *p;
uint64_t total_len = s.total_len;
if ((uint64_t)len > (uint64_t)18446744073709551615U - total_len)
{
- return (uint32_t)1U;
+ return Hacl_Streaming_Types_MaximumLengthExceeded;
}
uint32_t sz;
if (total_len % (uint64_t)(uint32_t)128U == (uint64_t)0U && total_len > (uint64_t)0U)
@@ -1004,7 +1029,7 @@ update_384_512(Hacl_Streaming_MD_state_64 *p, uint8_t *data, uint32_t len)
}
if (!(sz1 == (uint32_t)0U))
{
- sha512_update_nblocks((uint32_t)128U, buf, block_state1);
+ Hacl_SHA2_Scalar32_sha512_update_nblocks((uint32_t)128U, buf, block_state1);
}
uint32_t ite;
if ((uint64_t)len % (uint64_t)(uint32_t)128U == (uint64_t)0U && (uint64_t)len > (uint64_t)0U)
@@ -1020,7 +1045,9 @@ update_384_512(Hacl_Streaming_MD_state_64 *p, uint8_t *data, uint32_t len)
uint32_t data2_len = len - data1_len;
uint8_t *data1 = data;
uint8_t *data2 = data + data1_len;
- sha512_update_nblocks(data1_len, data1, block_state1);
+ Hacl_SHA2_Scalar32_sha512_update_nblocks(data1_len / (uint32_t)128U * (uint32_t)128U,
+ data1,
+ block_state1);
uint8_t *dst = buf;
memcpy(dst, data2, data2_len * sizeof (uint8_t));
*p
@@ -1078,7 +1105,7 @@ update_384_512(Hacl_Streaming_MD_state_64 *p, uint8_t *data, uint32_t len)
}
if (!(sz1 == (uint32_t)0U))
{
- sha512_update_nblocks((uint32_t)128U, buf, block_state1);
+ Hacl_SHA2_Scalar32_sha512_update_nblocks((uint32_t)128U, buf, block_state1);
}
uint32_t ite;
if
@@ -1100,7 +1127,9 @@ update_384_512(Hacl_Streaming_MD_state_64 *p, uint8_t *data, uint32_t len)
uint32_t data2_len = len - diff - data1_len;
uint8_t *data11 = data2;
uint8_t *data21 = data2 + data1_len;
- sha512_update_nblocks(data1_len, data11, block_state1);
+ Hacl_SHA2_Scalar32_sha512_update_nblocks(data1_len / (uint32_t)128U * (uint32_t)128U,
+ data11,
+ block_state1);
uint8_t *dst = buf;
memcpy(dst, data21, data2_len * sizeof (uint8_t));
*p
@@ -1113,7 +1142,7 @@ update_384_512(Hacl_Streaming_MD_state_64 *p, uint8_t *data, uint32_t len)
}
);
}
- return (uint32_t)0U;
+ return Hacl_Streaming_Types_Success;
}
/**
@@ -1123,7 +1152,7 @@ success, or 1 if the combined length of all of the data passed to `update_512`
This function is identical to the update function for SHA2_384.
*/
-uint32_t
+Hacl_Streaming_Types_error_code
Hacl_Streaming_SHA2_update_512(
Hacl_Streaming_MD_state_64 *p,
uint8_t *input,
@@ -1168,14 +1197,14 @@ void Hacl_Streaming_SHA2_finish_512(Hacl_Streaming_MD_state_64 *p, uint8_t *dst)
}
uint8_t *buf_last = buf_1 + r - ite;
uint8_t *buf_multi = buf_1;
- sha512_update_nblocks((uint32_t)0U, buf_multi, tmp_block_state);
+ Hacl_SHA2_Scalar32_sha512_update_nblocks((uint32_t)0U, buf_multi, tmp_block_state);
uint64_t prev_len_last = total_len - (uint64_t)r;
- sha512_update_last(FStar_UInt128_add(FStar_UInt128_uint64_to_uint128(prev_len_last),
+ Hacl_SHA2_Scalar32_sha512_update_last(FStar_UInt128_add(FStar_UInt128_uint64_to_uint128(prev_len_last),
FStar_UInt128_uint64_to_uint128((uint64_t)r)),
r,
buf_last,
tmp_block_state);
- sha512_finish(tmp_block_state, dst);
+ Hacl_SHA2_Scalar32_sha512_finish(tmp_block_state, dst);
}
/**
@@ -1196,7 +1225,7 @@ void Hacl_Streaming_SHA2_free_512(Hacl_Streaming_MD_state_64 *s)
/**
Hash `input`, of len `input_len`, into `dst`, an array of 64 bytes.
*/
-void Hacl_Streaming_SHA2_sha512(uint8_t *input, uint32_t input_len, uint8_t *dst)
+void Hacl_Streaming_SHA2_hash_512(uint8_t *input, uint32_t input_len, uint8_t *dst)
{
uint8_t *ib = input;
uint8_t *rb = dst;
@@ -1204,12 +1233,12 @@ void Hacl_Streaming_SHA2_sha512(uint8_t *input, uint32_t input_len, uint8_t *dst
Hacl_SHA2_Scalar32_sha512_init(st);
uint32_t rem = input_len % (uint32_t)128U;
FStar_UInt128_uint128 len_ = FStar_UInt128_uint64_to_uint128((uint64_t)input_len);
- sha512_update_nblocks(input_len, ib, st);
+ Hacl_SHA2_Scalar32_sha512_update_nblocks(input_len, ib, st);
uint32_t rem1 = input_len % (uint32_t)128U;
uint8_t *b0 = ib;
uint8_t *lb = b0 + input_len - rem1;
- sha512_update_last(len_, rem, lb, st);
- sha512_finish(st, rb);
+ Hacl_SHA2_Scalar32_sha512_update_last(len_, rem, lb, st);
+ Hacl_SHA2_Scalar32_sha512_finish(st, rb);
}
Hacl_Streaming_MD_state_64 *Hacl_Streaming_SHA2_create_in_384(void)
@@ -1221,7 +1250,7 @@ Hacl_Streaming_MD_state_64 *Hacl_Streaming_SHA2_create_in_384(void)
Hacl_Streaming_MD_state_64
*p = (Hacl_Streaming_MD_state_64 *)KRML_HOST_MALLOC(sizeof (Hacl_Streaming_MD_state_64));
p[0U] = s;
- sha384_init(block_state);
+ Hacl_SHA2_Scalar32_sha384_init(block_state);
return p;
}
@@ -1230,13 +1259,13 @@ void Hacl_Streaming_SHA2_init_384(Hacl_Streaming_MD_state_64 *s)
Hacl_Streaming_MD_state_64 scrut = *s;
uint8_t *buf = scrut.buf;
uint64_t *block_state = scrut.block_state;
- sha384_init(block_state);
+ Hacl_SHA2_Scalar32_sha384_init(block_state);
Hacl_Streaming_MD_state_64
tmp = { .block_state = block_state, .buf = buf, .total_len = (uint64_t)(uint32_t)0U };
s[0U] = tmp;
}
-uint32_t
+Hacl_Streaming_Types_error_code
Hacl_Streaming_SHA2_update_384(
Hacl_Streaming_MD_state_64 *p,
uint8_t *input,
@@ -1280,14 +1309,14 @@ void Hacl_Streaming_SHA2_finish_384(Hacl_Streaming_MD_state_64 *p, uint8_t *dst)
}
uint8_t *buf_last = buf_1 + r - ite;
uint8_t *buf_multi = buf_1;
- sha384_update_nblocks((uint32_t)0U, buf_multi, tmp_block_state);
+ Hacl_SHA2_Scalar32_sha384_update_nblocks((uint32_t)0U, buf_multi, tmp_block_state);
uint64_t prev_len_last = total_len - (uint64_t)r;
- sha384_update_last(FStar_UInt128_add(FStar_UInt128_uint64_to_uint128(prev_len_last),
+ Hacl_SHA2_Scalar32_sha384_update_last(FStar_UInt128_add(FStar_UInt128_uint64_to_uint128(prev_len_last),
FStar_UInt128_uint64_to_uint128((uint64_t)r)),
r,
buf_last,
tmp_block_state);
- sha384_finish(tmp_block_state, dst);
+ Hacl_SHA2_Scalar32_sha384_finish(tmp_block_state, dst);
}
void Hacl_Streaming_SHA2_free_384(Hacl_Streaming_MD_state_64 *p)
@@ -1298,19 +1327,19 @@ void Hacl_Streaming_SHA2_free_384(Hacl_Streaming_MD_state_64 *p)
/**
Hash `input`, of len `input_len`, into `dst`, an array of 48 bytes.
*/
-void Hacl_Streaming_SHA2_sha384(uint8_t *input, uint32_t input_len, uint8_t *dst)
+void Hacl_Streaming_SHA2_hash_384(uint8_t *input, uint32_t input_len, uint8_t *dst)
{
uint8_t *ib = input;
uint8_t *rb = dst;
uint64_t st[8U] = { 0U };
- sha384_init(st);
+ Hacl_SHA2_Scalar32_sha384_init(st);
uint32_t rem = input_len % (uint32_t)128U;
FStar_UInt128_uint128 len_ = FStar_UInt128_uint64_to_uint128((uint64_t)input_len);
- sha384_update_nblocks(input_len, ib, st);
+ Hacl_SHA2_Scalar32_sha384_update_nblocks(input_len, ib, st);
uint32_t rem1 = input_len % (uint32_t)128U;
uint8_t *b0 = ib;
uint8_t *lb = b0 + input_len - rem1;
- sha384_update_last(len_, rem, lb, st);
- sha384_finish(st, rb);
+ Hacl_SHA2_Scalar32_sha384_update_last(len_, rem, lb, st);
+ Hacl_SHA2_Scalar32_sha384_finish(st, rb);
}
diff --git a/Modules/_hacl/Hacl_Streaming_SHA2.h b/Modules/_hacl/Hacl_Hash_SHA2.h
similarity index 91%
rename from Modules/_hacl/Hacl_Streaming_SHA2.h
rename to Modules/_hacl/Hacl_Hash_SHA2.h
index b58df4c4d121c9..a0e731094dfaa5 100644
--- a/Modules/_hacl/Hacl_Streaming_SHA2.h
+++ b/Modules/_hacl/Hacl_Hash_SHA2.h
@@ -23,8 +23,8 @@
*/
-#ifndef __Hacl_Streaming_SHA2_H
-#define __Hacl_Streaming_SHA2_H
+#ifndef __Hacl_Hash_SHA2_H
+#define __Hacl_Hash_SHA2_H
#if defined(__cplusplus)
extern "C" {
@@ -73,7 +73,7 @@ success, or 1 if the combined length of all of the data passed to `update_256`
This function is identical to the update function for SHA2_224.
*/
-uint32_t
+Hacl_Streaming_Types_error_code
Hacl_Streaming_SHA2_update_256(
Hacl_Streaming_MD_state_32 *p,
uint8_t *input,
@@ -98,13 +98,13 @@ void Hacl_Streaming_SHA2_free_256(Hacl_Streaming_MD_state_32 *s);
/**
Hash `input`, of len `input_len`, into `dst`, an array of 32 bytes.
*/
-void Hacl_Streaming_SHA2_sha256(uint8_t *input, uint32_t input_len, uint8_t *dst);
+void Hacl_Streaming_SHA2_hash_256(uint8_t *input, uint32_t input_len, uint8_t *dst);
Hacl_Streaming_MD_state_32 *Hacl_Streaming_SHA2_create_in_224(void);
void Hacl_Streaming_SHA2_init_224(Hacl_Streaming_MD_state_32 *s);
-uint32_t
+Hacl_Streaming_Types_error_code
Hacl_Streaming_SHA2_update_224(
Hacl_Streaming_MD_state_32 *p,
uint8_t *input,
@@ -123,7 +123,7 @@ void Hacl_Streaming_SHA2_free_224(Hacl_Streaming_MD_state_32 *p);
/**
Hash `input`, of len `input_len`, into `dst`, an array of 28 bytes.
*/
-void Hacl_Streaming_SHA2_sha224(uint8_t *input, uint32_t input_len, uint8_t *dst);
+void Hacl_Streaming_SHA2_hash_224(uint8_t *input, uint32_t input_len, uint8_t *dst);
Hacl_Streaming_MD_state_64 *Hacl_Streaming_SHA2_create_in_512(void);
@@ -144,7 +144,7 @@ success, or 1 if the combined length of all of the data passed to `update_512`
This function is identical to the update function for SHA2_384.
*/
-uint32_t
+Hacl_Streaming_Types_error_code
Hacl_Streaming_SHA2_update_512(
Hacl_Streaming_MD_state_64 *p,
uint8_t *input,
@@ -169,13 +169,13 @@ void Hacl_Streaming_SHA2_free_512(Hacl_Streaming_MD_state_64 *s);
/**
Hash `input`, of len `input_len`, into `dst`, an array of 64 bytes.
*/
-void Hacl_Streaming_SHA2_sha512(uint8_t *input, uint32_t input_len, uint8_t *dst);
+void Hacl_Streaming_SHA2_hash_512(uint8_t *input, uint32_t input_len, uint8_t *dst);
Hacl_Streaming_MD_state_64 *Hacl_Streaming_SHA2_create_in_384(void);
void Hacl_Streaming_SHA2_init_384(Hacl_Streaming_MD_state_64 *s);
-uint32_t
+Hacl_Streaming_Types_error_code
Hacl_Streaming_SHA2_update_384(
Hacl_Streaming_MD_state_64 *p,
uint8_t *input,
@@ -194,11 +194,11 @@ void Hacl_Streaming_SHA2_free_384(Hacl_Streaming_MD_state_64 *p);
/**
Hash `input`, of len `input_len`, into `dst`, an array of 48 bytes.
*/
-void Hacl_Streaming_SHA2_sha384(uint8_t *input, uint32_t input_len, uint8_t *dst);
+void Hacl_Streaming_SHA2_hash_384(uint8_t *input, uint32_t input_len, uint8_t *dst);
#if defined(__cplusplus)
}
#endif
-#define __Hacl_Streaming_SHA2_H_DEFINED
+#define __Hacl_Hash_SHA2_H_DEFINED
#endif
diff --git a/Modules/_hacl/Hacl_Hash_SHA3.c b/Modules/_hacl/Hacl_Hash_SHA3.c
index 58eb436881d45c..b3febdfeb2b221 100644
--- a/Modules/_hacl/Hacl_Hash_SHA3.c
+++ b/Modules/_hacl/Hacl_Hash_SHA3.c
@@ -184,8 +184,7 @@ Hacl_Streaming_Keccak_state *Hacl_Streaming_Keccak_malloc(Spec_Hash_Definitions_
*p = (Hacl_Streaming_Keccak_state *)KRML_HOST_MALLOC(sizeof (Hacl_Streaming_Keccak_state));
p[0U] = s;
uint64_t *s1 = block_state.snd;
- for (uint32_t _i = 0U; _i < (uint32_t)25U; ++_i)
- ((void **)s1)[_i] = (void *)(uint64_t)0U;
+ memset(s1, 0U, (uint32_t)25U * sizeof (uint64_t));
return p;
}
@@ -230,23 +229,22 @@ void Hacl_Streaming_Keccak_reset(Hacl_Streaming_Keccak_state *s)
uint8_t *buf = scrut.buf;
Hacl_Streaming_Keccak_hash_buf block_state = scrut.block_state;
uint64_t *s1 = block_state.snd;
- for (uint32_t _i = 0U; _i < (uint32_t)25U; ++_i)
- ((void **)s1)[_i] = (void *)(uint64_t)0U;
+ memset(s1, 0U, (uint32_t)25U * sizeof (uint64_t));
Hacl_Streaming_Keccak_state
tmp = { .block_state = block_state, .buf = buf, .total_len = (uint64_t)(uint32_t)0U };
s[0U] = tmp;
}
-uint32_t
+Hacl_Streaming_Types_error_code
Hacl_Streaming_Keccak_update(Hacl_Streaming_Keccak_state *p, uint8_t *data, uint32_t len)
{
Hacl_Streaming_Keccak_state s = *p;
Hacl_Streaming_Keccak_hash_buf block_state = s.block_state;
uint64_t total_len = s.total_len;
Spec_Hash_Definitions_hash_alg i = block_state.fst;
- if ((uint64_t)len > (uint64_t)0xffffffffffffffffU - total_len)
+ if ((uint64_t)len > (uint64_t)0xFFFFFFFFFFFFFFFFU - total_len)
{
- return (uint32_t)1U;
+ return Hacl_Streaming_Types_MaximumLengthExceeded;
}
uint32_t sz;
if (total_len % (uint64_t)block_len(i) == (uint64_t)0U && total_len > (uint64_t)0U)
@@ -419,7 +417,7 @@ Hacl_Streaming_Keccak_update(Hacl_Streaming_Keccak_state *p, uint8_t *data, uint
}
);
}
- return (uint32_t)0U;
+ return Hacl_Streaming_Types_Success;
}
static void
@@ -486,32 +484,32 @@ finish_(
Hacl_Impl_SHA3_squeeze(s, block_len(a11), hash_len(a11), dst);
}
-Hacl_Streaming_Keccak_error_code
+Hacl_Streaming_Types_error_code
Hacl_Streaming_Keccak_finish(Hacl_Streaming_Keccak_state *s, uint8_t *dst)
{
Spec_Hash_Definitions_hash_alg a1 = Hacl_Streaming_Keccak_get_alg(s);
if (a1 == Spec_Hash_Definitions_Shake128 || a1 == Spec_Hash_Definitions_Shake256)
{
- return Hacl_Streaming_Keccak_InvalidAlgorithm;
+ return Hacl_Streaming_Types_InvalidAlgorithm;
}
finish_(a1, s, dst, hash_len(a1));
- return Hacl_Streaming_Keccak_Success;
+ return Hacl_Streaming_Types_Success;
}
-Hacl_Streaming_Keccak_error_code
+Hacl_Streaming_Types_error_code
Hacl_Streaming_Keccak_squeeze(Hacl_Streaming_Keccak_state *s, uint8_t *dst, uint32_t l)
{
Spec_Hash_Definitions_hash_alg a1 = Hacl_Streaming_Keccak_get_alg(s);
if (!(a1 == Spec_Hash_Definitions_Shake128 || a1 == Spec_Hash_Definitions_Shake256))
{
- return Hacl_Streaming_Keccak_InvalidAlgorithm;
+ return Hacl_Streaming_Types_InvalidAlgorithm;
}
if (l == (uint32_t)0U)
{
- return Hacl_Streaming_Keccak_InvalidLength;
+ return Hacl_Streaming_Types_InvalidLength;
}
finish_(a1, s, dst, l);
- return Hacl_Streaming_Keccak_Success;
+ return Hacl_Streaming_Types_Success;
}
uint32_t Hacl_Streaming_Keccak_block_len(Hacl_Streaming_Keccak_state *s)
diff --git a/Modules/_hacl/Hacl_Hash_SHA3.h b/Modules/_hacl/Hacl_Hash_SHA3.h
index 2a5cf4b1844b9d..681b6af4a80e77 100644
--- a/Modules/_hacl/Hacl_Hash_SHA3.h
+++ b/Modules/_hacl/Hacl_Hash_SHA3.h
@@ -62,19 +62,13 @@ Hacl_Streaming_Keccak_state *Hacl_Streaming_Keccak_copy(Hacl_Streaming_Keccak_st
void Hacl_Streaming_Keccak_reset(Hacl_Streaming_Keccak_state *s);
-uint32_t
+Hacl_Streaming_Types_error_code
Hacl_Streaming_Keccak_update(Hacl_Streaming_Keccak_state *p, uint8_t *data, uint32_t len);
-#define Hacl_Streaming_Keccak_Success 0
-#define Hacl_Streaming_Keccak_InvalidAlgorithm 1
-#define Hacl_Streaming_Keccak_InvalidLength 2
-
-typedef uint8_t Hacl_Streaming_Keccak_error_code;
-
-Hacl_Streaming_Keccak_error_code
+Hacl_Streaming_Types_error_code
Hacl_Streaming_Keccak_finish(Hacl_Streaming_Keccak_state *s, uint8_t *dst);
-Hacl_Streaming_Keccak_error_code
+Hacl_Streaming_Types_error_code
Hacl_Streaming_Keccak_squeeze(Hacl_Streaming_Keccak_state *s, uint8_t *dst, uint32_t l);
uint32_t Hacl_Streaming_Keccak_block_len(Hacl_Streaming_Keccak_state *s);
diff --git a/Modules/_hacl/Hacl_Streaming_Types.h b/Modules/_hacl/Hacl_Streaming_Types.h
index 8a60b707bc4958..15ef16ba6075a9 100644
--- a/Modules/_hacl/Hacl_Streaming_Types.h
+++ b/Modules/_hacl/Hacl_Streaming_Types.h
@@ -52,6 +52,13 @@ extern "C" {
typedef uint8_t Spec_Hash_Definitions_hash_alg;
+#define Hacl_Streaming_Types_Success 0
+#define Hacl_Streaming_Types_InvalidAlgorithm 1
+#define Hacl_Streaming_Types_InvalidLength 2
+#define Hacl_Streaming_Types_MaximumLengthExceeded 3
+
+typedef uint8_t Hacl_Streaming_Types_error_code;
+
typedef struct Hacl_Streaming_MD_state_32_s
{
uint32_t *block_state;
diff --git a/Modules/_hacl/internal/Hacl_SHA2_Generic.h b/Modules/_hacl/internal/Hacl_Hash_SHA2.h
similarity index 83%
rename from Modules/_hacl/internal/Hacl_SHA2_Generic.h
rename to Modules/_hacl/internal/Hacl_Hash_SHA2.h
index 6ac47f3cf7ed36..851f7dc60c94c2 100644
--- a/Modules/_hacl/internal/Hacl_SHA2_Generic.h
+++ b/Modules/_hacl/internal/Hacl_Hash_SHA2.h
@@ -23,8 +23,8 @@
*/
-#ifndef __internal_Hacl_SHA2_Generic_H
-#define __internal_Hacl_SHA2_Generic_H
+#ifndef __internal_Hacl_Hash_SHA2_H
+#define __internal_Hacl_Hash_SHA2_H
#if defined(__cplusplus)
extern "C" {
@@ -35,6 +35,9 @@ extern "C" {
#include "krml/lowstar_endianness.h"
#include "krml/internal/target.h"
+
+#include "../Hacl_Hash_SHA2.h"
+
static const
uint32_t
Hacl_Impl_SHA2_Generic_h224[8U] =
@@ -124,9 +127,58 @@ Hacl_Impl_SHA2_Generic_k384_512[80U] =
(uint64_t)0x5fcb6fab3ad6faecU, (uint64_t)0x6c44198c4a475817U
};
+void Hacl_SHA2_Scalar32_sha256_init(uint32_t *hash);
+
+void Hacl_SHA2_Scalar32_sha256_update_nblocks(uint32_t len, uint8_t *b, uint32_t *st);
+
+void
+Hacl_SHA2_Scalar32_sha256_update_last(
+ uint64_t totlen,
+ uint32_t len,
+ uint8_t *b,
+ uint32_t *hash
+);
+
+void Hacl_SHA2_Scalar32_sha256_finish(uint32_t *st, uint8_t *h);
+
+void Hacl_SHA2_Scalar32_sha224_init(uint32_t *hash);
+
+void
+Hacl_SHA2_Scalar32_sha224_update_last(uint64_t totlen, uint32_t len, uint8_t *b, uint32_t *st);
+
+void Hacl_SHA2_Scalar32_sha224_finish(uint32_t *st, uint8_t *h);
+
+void Hacl_SHA2_Scalar32_sha512_init(uint64_t *hash);
+
+void Hacl_SHA2_Scalar32_sha512_update_nblocks(uint32_t len, uint8_t *b, uint64_t *st);
+
+void
+Hacl_SHA2_Scalar32_sha512_update_last(
+ FStar_UInt128_uint128 totlen,
+ uint32_t len,
+ uint8_t *b,
+ uint64_t *hash
+);
+
+void Hacl_SHA2_Scalar32_sha512_finish(uint64_t *st, uint8_t *h);
+
+void Hacl_SHA2_Scalar32_sha384_init(uint64_t *hash);
+
+void Hacl_SHA2_Scalar32_sha384_update_nblocks(uint32_t len, uint8_t *b, uint64_t *st);
+
+void
+Hacl_SHA2_Scalar32_sha384_update_last(
+ FStar_UInt128_uint128 totlen,
+ uint32_t len,
+ uint8_t *b,
+ uint64_t *st
+);
+
+void Hacl_SHA2_Scalar32_sha384_finish(uint64_t *st, uint8_t *h);
+
#if defined(__cplusplus)
}
#endif
-#define __internal_Hacl_SHA2_Generic_H_DEFINED
+#define __internal_Hacl_Hash_SHA2_H_DEFINED
#endif
diff --git a/Modules/_hacl/refresh.sh b/Modules/_hacl/refresh.sh
index d2ba05f30d860f..c1b3e37f3afb9d 100755
--- a/Modules/_hacl/refresh.sh
+++ b/Modules/_hacl/refresh.sh
@@ -22,7 +22,7 @@ fi
# Update this when updating to a new version after verifying that the changes
# the update brings in are good.
-expected_hacl_star_rev=b6903a3e6458000730c3d83174d4b08d6d3e2ece
+expected_hacl_star_rev=521af282fdf6d60227335120f18ae9309a4b8e8c
hacl_dir="$(realpath "$1")"
cd "$(dirname "$0")"
@@ -40,7 +40,7 @@ fi
declare -a dist_files
dist_files=(
- Hacl_Streaming_SHA2.h
+ Hacl_Hash_SHA2.h
Hacl_Streaming_Types.h
Hacl_Hash_SHA1.h
internal/Hacl_Hash_SHA1.h
@@ -48,8 +48,8 @@ dist_files=(
Hacl_Hash_SHA3.h
internal/Hacl_Hash_MD5.h
internal/Hacl_Hash_SHA3.h
- internal/Hacl_SHA2_Generic.h
- Hacl_Streaming_SHA2.c
+ Hacl_Hash_SHA2.c
+ internal/Hacl_Hash_SHA2.h
Hacl_Hash_SHA1.c
Hacl_Hash_MD5.c
Hacl_Hash_SHA3.c
@@ -126,14 +126,8 @@ $sed -i -z 's!\(extern\|typedef\)[^;]*;\n\n!!g' include/krml/FStar_UInt_8_16_32_
# compilation, but this is not necessary.
$sed -i 's!#include.*Hacl_Krmllib.h"!!g' "${all_files[@]}"
-# This header is useful for *other* algorithms that refer to SHA2, e.g. Ed25519
-# which needs to compute a digest of a message before signing it. Here, since no
-# other algorithm builds upon SHA2, this internal header is useless (and is not
-# included in $dist_files).
-$sed -i 's!#include.*internal/Hacl_Streaming_SHA2.h"!#include "Hacl_Streaming_SHA2.h"!g' "${all_files[@]}"
-
# Use globally unique names for the Hacl_ C APIs to avoid linkage conflicts.
-$sed -i -z 's!#include \n!#include \n#include "python_hacl_namespaces.h"\n!' Hacl_Streaming_SHA2.h
+$sed -i -z 's!#include \n!#include \n#include "python_hacl_namespaces.h"\n!' Hacl_Hash_SHA2.h
# Finally, we remove a bunch of ifdefs from target.h that are, again, useful in
# the general case, but not exercised by the subset of HACL* that we vendor.
diff --git a/Modules/_hashopenssl.c b/Modules/_hashopenssl.c
index 99d0b72819137e..4b425f4147513e 100644
--- a/Modules/_hashopenssl.c
+++ b/Modules/_hashopenssl.c
@@ -227,12 +227,16 @@ get_hashlib_state(PyObject *module)
typedef struct {
PyObject_HEAD
EVP_MD_CTX *ctx; /* OpenSSL message digest context */
+ // Prevents undefined behavior via multiple threads entering the C API.
+ // The lock will be NULL before threaded access has been enabled.
PyThread_type_lock lock; /* OpenSSL context lock */
} EVPobject;
typedef struct {
PyObject_HEAD
HMAC_CTX *ctx; /* OpenSSL hmac context */
+ // Prevents undefined behavior via multiple threads entering the C API.
+ // The lock will be NULL before threaded access has been enabled.
PyThread_type_lock lock; /* HMAC context lock */
} HMACobject;
@@ -896,6 +900,8 @@ py_evp_fromname(PyObject *module, const char *digestname, PyObject *data_obj,
if (view.buf && view.len) {
if (view.len >= HASHLIB_GIL_MINSIZE) {
+ /* We do not initialize self->lock here as this is the constructor
+ * where it is not yet possible to have concurrent access. */
Py_BEGIN_ALLOW_THREADS
result = EVP_hash(self, view.buf, view.len);
Py_END_ALLOW_THREADS
diff --git a/Modules/_posixsubprocess.c b/Modules/_posixsubprocess.c
index 1b7fe71186a163..2d88f5e9ba1601 100644
--- a/Modules/_posixsubprocess.c
+++ b/Modules/_posixsubprocess.c
@@ -5,6 +5,7 @@
#include "Python.h"
#include "pycore_fileutils.h"
+#include "pycore_pystate.h"
#if defined(HAVE_PIPE2) && !defined(_GNU_SOURCE)
# define _GNU_SOURCE
#endif
@@ -200,7 +201,7 @@ convert_fds_to_keep_to_c(PyObject *py_fds_to_keep, int *c_fds_to_keep)
for (i = 0; i < len; ++i) {
PyObject* fdobj = PyTuple_GET_ITEM(py_fds_to_keep, i);
long fd = PyLong_AsLong(fdobj);
- if (PyErr_Occurred()) {
+ if (fd == -1 && PyErr_Occurred()) {
return -1;
}
if (fd < 0 || fd > INT_MAX) {
@@ -559,7 +560,7 @@ reset_signal_handlers(const sigset_t *child_sigmask)
* required by POSIX but not supported natively on Linux. Another reason to
* avoid this family of functions is that sharing an address space between
* processes running with different privileges is inherently insecure.
- * See bpo-35823 for further discussion and references.
+ * See https://bugs.python.org/issue35823 for discussion and references.
*
* In some C libraries, setrlimit() has the same thread list/signalling
* behavior since resource limits were per-thread attributes before
@@ -798,6 +799,7 @@ do_fork_exec(char *const exec_array[],
pid_t pid;
#ifdef VFORK_USABLE
+ PyThreadState *vfork_tstate_save;
if (child_sigmask) {
/* These are checked by our caller; verify them in debug builds. */
assert(uid == (uid_t)-1);
@@ -805,7 +807,22 @@ do_fork_exec(char *const exec_array[],
assert(extra_group_size < 0);
assert(preexec_fn == Py_None);
+ /* Drop the GIL so that other threads can continue execution while this
+ * thread in the parent remains blocked per vfork-semantics on the
+ * child's exec syscall outcome. Exec does filesystem access which
+ * can take an arbitrarily long time. This addresses GH-104372.
+ *
+ * The vfork'ed child still runs in our address space. Per POSIX it
+ * must be limited to nothing but exec, but the Linux implementation
+ * is a little more usable. See the child_exec() comment - The child
+ * MUST NOT re-acquire the GIL.
+ */
+ vfork_tstate_save = PyEval_SaveThread();
pid = vfork();
+ if (pid != 0) {
+ // Not in the child process, reacquire the GIL.
+ PyEval_RestoreThread(vfork_tstate_save);
+ }
if (pid == (pid_t)-1) {
/* If vfork() fails, fall back to using fork(). When it isn't
* allowed in a process by the kernel, vfork can return -1
@@ -819,6 +836,7 @@ do_fork_exec(char *const exec_array[],
}
if (pid != 0) {
+ // Parent process.
return pid;
}
@@ -926,6 +944,11 @@ subprocess_fork_exec_impl(PyObject *module, PyObject *process_args,
Py_ssize_t fds_to_keep_len = PyTuple_GET_SIZE(py_fds_to_keep);
PyInterpreterState *interp = PyInterpreterState_Get();
+ if ((preexec_fn != Py_None) && interp->finalizing) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "preexec_fn not supported at interpreter shutdown");
+ return NULL;
+ }
if ((preexec_fn != Py_None) && (interp != PyInterpreterState_Main())) {
PyErr_SetString(PyExc_RuntimeError,
"preexec_fn not supported within subinterpreters");
diff --git a/Modules/_ssl.c b/Modules/_ssl.c
index 59fd401cac270b..de90a4a168d2ed 100644
--- a/Modules/_ssl.c
+++ b/Modules/_ssl.c
@@ -116,7 +116,9 @@ static void _PySSLFixErrno(void) {
#endif
/* Include generated data (error codes) */
-#if (OPENSSL_VERSION_NUMBER >= 0x30000000L)
+#if (OPENSSL_VERSION_NUMBER >= 0x30100000L)
+#include "_ssl_data_31.h"
+#elif (OPENSSL_VERSION_NUMBER >= 0x30000000L)
#include "_ssl_data_300.h"
#elif (OPENSSL_VERSION_NUMBER >= 0x10101000L) && !defined(LIBRESSL_VERSION_NUMBER)
#include "_ssl_data_111.h"
diff --git a/Modules/_ssl_data_111.h b/Modules/_ssl_data_111.h
index 85a2f7ec1561ea..093c786e6a26f6 100644
--- a/Modules/_ssl_data_111.h
+++ b/Modules/_ssl_data_111.h
@@ -1,4 +1,4 @@
-/* File generated by Tools/ssl/make_ssl_data.py *//* Generated on 2021-04-09T09:36:21.493286 */
+/* File generated by Tools/ssl/make_ssl_data.py *//* Generated on 2023-06-01T02:58:04.081473 */
static struct py_ssl_library_code library_codes[] = {
#ifdef ERR_LIB_ASN1
{"ASN1", ERR_LIB_ASN1},
@@ -1375,6 +1375,11 @@ static struct py_ssl_error_code error_codes[] = {
#else
{"UNSUPPORTED_COMPRESSION_ALGORITHM", 46, 151},
#endif
+ #ifdef CMS_R_UNSUPPORTED_CONTENT_ENCRYPTION_ALGORITHM
+ {"UNSUPPORTED_CONTENT_ENCRYPTION_ALGORITHM", ERR_LIB_CMS, CMS_R_UNSUPPORTED_CONTENT_ENCRYPTION_ALGORITHM},
+ #else
+ {"UNSUPPORTED_CONTENT_ENCRYPTION_ALGORITHM", 46, 194},
+ #endif
#ifdef CMS_R_UNSUPPORTED_CONTENT_TYPE
{"UNSUPPORTED_CONTENT_TYPE", ERR_LIB_CMS, CMS_R_UNSUPPORTED_CONTENT_TYPE},
#else
@@ -4860,6 +4865,11 @@ static struct py_ssl_error_code error_codes[] = {
#else
{"MISSING_PARAMETERS", 20, 290},
#endif
+ #ifdef SSL_R_MISSING_PSK_KEX_MODES_EXTENSION
+ {"MISSING_PSK_KEX_MODES_EXTENSION", ERR_LIB_SSL, SSL_R_MISSING_PSK_KEX_MODES_EXTENSION},
+ #else
+ {"MISSING_PSK_KEX_MODES_EXTENSION", 20, 310},
+ #endif
#ifdef SSL_R_MISSING_RSA_CERTIFICATE
{"MISSING_RSA_CERTIFICATE", ERR_LIB_SSL, SSL_R_MISSING_RSA_CERTIFICATE},
#else
@@ -5065,6 +5075,11 @@ static struct py_ssl_error_code error_codes[] = {
#else
{"NULL_SSL_METHOD_PASSED", 20, 196},
#endif
+ #ifdef SSL_R_OCSP_CALLBACK_FAILURE
+ {"OCSP_CALLBACK_FAILURE", ERR_LIB_SSL, SSL_R_OCSP_CALLBACK_FAILURE},
+ #else
+ {"OCSP_CALLBACK_FAILURE", 20, 294},
+ #endif
#ifdef SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED
{"OLD_SESSION_CIPHER_NOT_RETURNED", ERR_LIB_SSL, SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED},
#else
diff --git a/Modules/_ssl_data_300.h b/Modules/_ssl_data_300.h
index 6be8b24ee1a021..dc66731f6b6093 100644
--- a/Modules/_ssl_data_300.h
+++ b/Modules/_ssl_data_300.h
@@ -1,4 +1,4 @@
-/* File generated by Tools/ssl/make_ssl_data.py *//* Generated on 2021-04-09T09:44:43.288448 */
+/* File generated by Tools/ssl/make_ssl_data.py *//* Generated on 2023-06-01T03:03:52.163218 */
static struct py_ssl_library_code library_codes[] = {
#ifdef ERR_LIB_ASN1
{"ASN1", ERR_LIB_ASN1},
@@ -1035,6 +1035,11 @@ static struct py_ssl_error_code error_codes[] = {
#else
{"NO_INVERSE", 3, 108},
#endif
+ #ifdef BN_R_NO_PRIME_CANDIDATE
+ {"NO_PRIME_CANDIDATE", ERR_LIB_BN, BN_R_NO_PRIME_CANDIDATE},
+ #else
+ {"NO_PRIME_CANDIDATE", 3, 121},
+ #endif
#ifdef BN_R_NO_SOLUTION
{"NO_SOLUTION", ERR_LIB_BN, BN_R_NO_SOLUTION},
#else
@@ -1255,6 +1260,11 @@ static struct py_ssl_error_code error_codes[] = {
#else
{"INVALID_OPTION", 58, 174},
#endif
+ #ifdef CMP_R_MISSING_CERTID
+ {"MISSING_CERTID", ERR_LIB_CMP, CMP_R_MISSING_CERTID},
+ #else
+ {"MISSING_CERTID", 58, 165},
+ #endif
#ifdef CMP_R_MISSING_KEY_INPUT_FOR_CREATING_PROTECTION
{"MISSING_KEY_INPUT_FOR_CREATING_PROTECTION", ERR_LIB_CMP, CMP_R_MISSING_KEY_INPUT_FOR_CREATING_PROTECTION},
#else
@@ -1280,21 +1290,41 @@ static struct py_ssl_error_code error_codes[] = {
#else
{"MISSING_PRIVATE_KEY", 58, 131},
#endif
+ #ifdef CMP_R_MISSING_PRIVATE_KEY_FOR_POPO
+ {"MISSING_PRIVATE_KEY_FOR_POPO", ERR_LIB_CMP, CMP_R_MISSING_PRIVATE_KEY_FOR_POPO},
+ #else
+ {"MISSING_PRIVATE_KEY_FOR_POPO", 58, 190},
+ #endif
#ifdef CMP_R_MISSING_PROTECTION
{"MISSING_PROTECTION", ERR_LIB_CMP, CMP_R_MISSING_PROTECTION},
#else
{"MISSING_PROTECTION", 58, 143},
#endif
+ #ifdef CMP_R_MISSING_PUBLIC_KEY
+ {"MISSING_PUBLIC_KEY", ERR_LIB_CMP, CMP_R_MISSING_PUBLIC_KEY},
+ #else
+ {"MISSING_PUBLIC_KEY", 58, 183},
+ #endif
#ifdef CMP_R_MISSING_REFERENCE_CERT
{"MISSING_REFERENCE_CERT", ERR_LIB_CMP, CMP_R_MISSING_REFERENCE_CERT},
#else
{"MISSING_REFERENCE_CERT", 58, 168},
#endif
+ #ifdef CMP_R_MISSING_SECRET
+ {"MISSING_SECRET", ERR_LIB_CMP, CMP_R_MISSING_SECRET},
+ #else
+ {"MISSING_SECRET", 58, 178},
+ #endif
#ifdef CMP_R_MISSING_SENDER_IDENTIFICATION
{"MISSING_SENDER_IDENTIFICATION", ERR_LIB_CMP, CMP_R_MISSING_SENDER_IDENTIFICATION},
#else
{"MISSING_SENDER_IDENTIFICATION", 58, 111},
#endif
+ #ifdef CMP_R_MISSING_TRUST_ANCHOR
+ {"MISSING_TRUST_ANCHOR", ERR_LIB_CMP, CMP_R_MISSING_TRUST_ANCHOR},
+ #else
+ {"MISSING_TRUST_ANCHOR", 58, 179},
+ #endif
#ifdef CMP_R_MISSING_TRUST_STORE
{"MISSING_TRUST_STORE", ERR_LIB_CMP, CMP_R_MISSING_TRUST_STORE},
#else
@@ -1455,6 +1485,11 @@ static struct py_ssl_error_code error_codes[] = {
#else
{"WRONG_ALGORITHM_OID", 58, 138},
#endif
+ #ifdef CMP_R_WRONG_CERTID
+ {"WRONG_CERTID", ERR_LIB_CMP, CMP_R_WRONG_CERTID},
+ #else
+ {"WRONG_CERTID", 58, 189},
+ #endif
#ifdef CMP_R_WRONG_CERTID_IN_RP
{"WRONG_CERTID_IN_RP", ERR_LIB_CMP, CMP_R_WRONG_CERTID_IN_RP},
#else
@@ -1885,6 +1920,11 @@ static struct py_ssl_error_code error_codes[] = {
#else
{"UNSUPPORTED_COMPRESSION_ALGORITHM", 46, 151},
#endif
+ #ifdef CMS_R_UNSUPPORTED_CONTENT_ENCRYPTION_ALGORITHM
+ {"UNSUPPORTED_CONTENT_ENCRYPTION_ALGORITHM", ERR_LIB_CMS, CMS_R_UNSUPPORTED_CONTENT_ENCRYPTION_ALGORITHM},
+ #else
+ {"UNSUPPORTED_CONTENT_ENCRYPTION_ALGORITHM", 46, 194},
+ #endif
#ifdef CMS_R_UNSUPPORTED_CONTENT_TYPE
{"UNSUPPORTED_CONTENT_TYPE", ERR_LIB_CMS, CMS_R_UNSUPPORTED_CONTENT_TYPE},
#else
@@ -2045,6 +2085,11 @@ static struct py_ssl_error_code error_codes[] = {
#else
{"RECURSIVE_DIRECTORY_INCLUDE", 14, 111},
#endif
+ #ifdef CONF_R_RELATIVE_PATH
+ {"RELATIVE_PATH", ERR_LIB_CONF, CONF_R_RELATIVE_PATH},
+ #else
+ {"RELATIVE_PATH", 14, 125},
+ #endif
#ifdef CONF_R_SSL_COMMAND_SECTION_EMPTY
{"SSL_COMMAND_SECTION_EMPTY", ERR_LIB_CONF, CONF_R_SSL_COMMAND_SECTION_EMPTY},
#else
@@ -2235,6 +2280,11 @@ static struct py_ssl_error_code error_codes[] = {
#else
{"INSUFFICIENT_SECURE_DATA_SPACE", 15, 108},
#endif
+ #ifdef CRYPTO_R_INVALID_NEGATIVE_VALUE
+ {"INVALID_NEGATIVE_VALUE", ERR_LIB_CRYPTO, CRYPTO_R_INVALID_NEGATIVE_VALUE},
+ #else
+ {"INVALID_NEGATIVE_VALUE", 15, 122},
+ #endif
#ifdef CRYPTO_R_INVALID_NULL_ARGUMENT
{"INVALID_NULL_ARGUMENT", ERR_LIB_CRYPTO, CRYPTO_R_INVALID_NULL_ARGUMENT},
#else
@@ -2605,6 +2655,11 @@ static struct py_ssl_error_code error_codes[] = {
#else
{"SEED_LEN_SMALL", 10, 110},
#endif
+ #ifdef DSA_R_TOO_MANY_RETRIES
+ {"TOO_MANY_RETRIES", ERR_LIB_DSA, DSA_R_TOO_MANY_RETRIES},
+ #else
+ {"TOO_MANY_RETRIES", 10, 116},
+ #endif
#ifdef DSO_R_CTRL_FAILED
{"CTRL_FAILED", ERR_LIB_DSO, DSO_R_CTRL_FAILED},
#else
@@ -2745,6 +2800,11 @@ static struct py_ssl_error_code error_codes[] = {
#else
{"EC_GROUP_NEW_BY_NAME_FAILURE", 16, 119},
#endif
+ #ifdef EC_R_EXPLICIT_PARAMS_NOT_SUPPORTED
+ {"EXPLICIT_PARAMS_NOT_SUPPORTED", ERR_LIB_EC, EC_R_EXPLICIT_PARAMS_NOT_SUPPORTED},
+ #else
+ {"EXPLICIT_PARAMS_NOT_SUPPORTED", 16, 127},
+ #endif
#ifdef EC_R_FAILED_MAKING_PUBLIC_KEY
{"FAILED_MAKING_PUBLIC_KEY", ERR_LIB_EC, EC_R_FAILED_MAKING_PUBLIC_KEY},
#else
@@ -2850,6 +2910,11 @@ static struct py_ssl_error_code error_codes[] = {
#else
{"INVALID_KEY", 16, 116},
#endif
+ #ifdef EC_R_INVALID_LENGTH
+ {"INVALID_LENGTH", ERR_LIB_EC, EC_R_INVALID_LENGTH},
+ #else
+ {"INVALID_LENGTH", 16, 117},
+ #endif
#ifdef EC_R_INVALID_NAMED_GROUP_CONVERSION
{"INVALID_NAMED_GROUP_CONVERSION", ERR_LIB_EC, EC_R_INVALID_NAMED_GROUP_CONVERSION},
#else
@@ -3010,6 +3075,11 @@ static struct py_ssl_error_code error_codes[] = {
#else
{"SLOT_FULL", 16, 108},
#endif
+ #ifdef EC_R_TOO_MANY_RETRIES
+ {"TOO_MANY_RETRIES", ERR_LIB_EC, EC_R_TOO_MANY_RETRIES},
+ #else
+ {"TOO_MANY_RETRIES", 16, 176},
+ #endif
#ifdef EC_R_UNDEFINED_GENERATOR
{"UNDEFINED_GENERATOR", ERR_LIB_EC, EC_R_UNDEFINED_GENERATOR},
#else
@@ -3690,6 +3760,11 @@ static struct py_ssl_error_code error_codes[] = {
#else
{"PUBLIC_KEY_NOT_RSA", 6, 106},
#endif
+ #ifdef EVP_R_SETTING_XOF_FAILED
+ {"SETTING_XOF_FAILED", ERR_LIB_EVP, EVP_R_SETTING_XOF_FAILED},
+ #else
+ {"SETTING_XOF_FAILED", 6, 227},
+ #endif
#ifdef EVP_R_SET_DEFAULT_PROPERTY_FAILURE
{"SET_DEFAULT_PROPERTY_FAILURE", ERR_LIB_EVP, EVP_R_SET_DEFAULT_PROPERTY_FAILURE},
#else
@@ -3865,6 +3940,11 @@ static struct py_ssl_error_code error_codes[] = {
#else
{"FAILED_READING_DATA", 61, 128},
#endif
+ #ifdef HTTP_R_HEADER_PARSE_ERROR
+ {"HEADER_PARSE_ERROR", ERR_LIB_HTTP, HTTP_R_HEADER_PARSE_ERROR},
+ #else
+ {"HEADER_PARSE_ERROR", 61, 126},
+ #endif
#ifdef HTTP_R_INCONSISTENT_CONTENT_LENGTH
{"INCONSISTENT_CONTENT_LENGTH", ERR_LIB_HTTP, HTTP_R_INCONSISTENT_CONTENT_LENGTH},
#else
@@ -3935,6 +4015,16 @@ static struct py_ssl_error_code error_codes[] = {
#else
{"RESPONSE_PARSE_ERROR", 61, 104},
#endif
+ #ifdef HTTP_R_RETRY_TIMEOUT
+ {"RETRY_TIMEOUT", ERR_LIB_HTTP, HTTP_R_RETRY_TIMEOUT},
+ #else
+ {"RETRY_TIMEOUT", 61, 129},
+ #endif
+ #ifdef HTTP_R_SERVER_CANCELED_CONNECTION
+ {"SERVER_CANCELED_CONNECTION", ERR_LIB_HTTP, HTTP_R_SERVER_CANCELED_CONNECTION},
+ #else
+ {"SERVER_CANCELED_CONNECTION", 61, 127},
+ #endif
#ifdef HTTP_R_SOCK_NOT_SUPPORTED
{"SOCK_NOT_SUPPORTED", ERR_LIB_HTTP, HTTP_R_SOCK_NOT_SUPPORTED},
#else
@@ -4100,6 +4190,16 @@ static struct py_ssl_error_code error_codes[] = {
#else
{"UNSUPPORTED_REQUESTORNAME_TYPE", 39, 129},
#endif
+ #ifdef OSSL_DECODER_R_COULD_NOT_DECODE_OBJECT
+ {"COULD_NOT_DECODE_OBJECT", ERR_LIB_OSSL_DECODER, OSSL_DECODER_R_COULD_NOT_DECODE_OBJECT},
+ #else
+ {"COULD_NOT_DECODE_OBJECT", 60, 101},
+ #endif
+ #ifdef OSSL_DECODER_R_DECODER_NOT_FOUND
+ {"DECODER_NOT_FOUND", ERR_LIB_OSSL_DECODER, OSSL_DECODER_R_DECODER_NOT_FOUND},
+ #else
+ {"DECODER_NOT_FOUND", 60, 102},
+ #endif
#ifdef OSSL_DECODER_R_MISSING_GET_PARAMS
{"MISSING_GET_PARAMS", ERR_LIB_OSSL_DECODER, OSSL_DECODER_R_MISSING_GET_PARAMS},
#else
@@ -4190,6 +4290,11 @@ static struct py_ssl_error_code error_codes[] = {
#else
{"NOT_PARAMETERS", 44, 104},
#endif
+ #ifdef OSSL_STORE_R_NO_LOADERS_FOUND
+ {"NO_LOADERS_FOUND", ERR_LIB_OSSL_STORE, OSSL_STORE_R_NO_LOADERS_FOUND},
+ #else
+ {"NO_LOADERS_FOUND", 44, 123},
+ #endif
#ifdef OSSL_STORE_R_PASSPHRASE_CALLBACK_ERROR
{"PASSPHRASE_CALLBACK_ERROR", ERR_LIB_OSSL_STORE, OSSL_STORE_R_PASSPHRASE_CALLBACK_ERROR},
#else
@@ -4935,6 +5040,11 @@ static struct py_ssl_error_code error_codes[] = {
#else
{"INVALID_DIGEST_SIZE", 57, 218},
#endif
+ #ifdef PROV_R_INVALID_INPUT_LENGTH
+ {"INVALID_INPUT_LENGTH", ERR_LIB_PROV, PROV_R_INVALID_INPUT_LENGTH},
+ #else
+ {"INVALID_INPUT_LENGTH", 57, 230},
+ #endif
#ifdef PROV_R_INVALID_ITERATION_COUNT
{"INVALID_ITERATION_COUNT", ERR_LIB_PROV, PROV_R_INVALID_ITERATION_COUNT},
#else
@@ -4970,6 +5080,11 @@ static struct py_ssl_error_code error_codes[] = {
#else
{"INVALID_MODE", 57, 125},
#endif
+ #ifdef PROV_R_INVALID_OUTPUT_LENGTH
+ {"INVALID_OUTPUT_LENGTH", ERR_LIB_PROV, PROV_R_INVALID_OUTPUT_LENGTH},
+ #else
+ {"INVALID_OUTPUT_LENGTH", 57, 217},
+ #endif
#ifdef PROV_R_INVALID_PADDING_MODE
{"INVALID_PADDING_MODE", ERR_LIB_PROV, PROV_R_INVALID_PADDING_MODE},
#else
@@ -5035,6 +5150,16 @@ static struct py_ssl_error_code error_codes[] = {
#else
{"KEY_SIZE_TOO_SMALL", 57, 171},
#endif
+ #ifdef PROV_R_LENGTH_TOO_LARGE
+ {"LENGTH_TOO_LARGE", ERR_LIB_PROV, PROV_R_LENGTH_TOO_LARGE},
+ #else
+ {"LENGTH_TOO_LARGE", 57, 202},
+ #endif
+ #ifdef PROV_R_MISMATCHING_DOMAIN_PARAMETERS
+ {"MISMATCHING_DOMAIN_PARAMETERS", ERR_LIB_PROV, PROV_R_MISMATCHING_DOMAIN_PARAMETERS},
+ #else
+ {"MISMATCHING_DOMAIN_PARAMETERS", 57, 203},
+ #endif
#ifdef PROV_R_MISSING_CEK_ALG
{"MISSING_CEK_ALG", ERR_LIB_PROV, PROV_R_MISSING_CEK_ALG},
#else
@@ -5695,6 +5820,11 @@ static struct py_ssl_error_code error_codes[] = {
#else
{"INVALID_LABEL", 4, 160},
#endif
+ #ifdef RSA_R_INVALID_LENGTH
+ {"INVALID_LENGTH", ERR_LIB_RSA, RSA_R_INVALID_LENGTH},
+ #else
+ {"INVALID_LENGTH", 4, 181},
+ #endif
#ifdef RSA_R_INVALID_MESSAGE_LENGTH
{"INVALID_MESSAGE_LENGTH", ERR_LIB_RSA, RSA_R_INVALID_MESSAGE_LENGTH},
#else
@@ -5880,6 +6010,11 @@ static struct py_ssl_error_code error_codes[] = {
#else
{"Q_NOT_PRIME", 4, 129},
#endif
+ #ifdef RSA_R_RANDOMNESS_SOURCE_STRENGTH_INSUFFICIENT
+ {"RANDOMNESS_SOURCE_STRENGTH_INSUFFICIENT", ERR_LIB_RSA, RSA_R_RANDOMNESS_SOURCE_STRENGTH_INSUFFICIENT},
+ #else
+ {"RANDOMNESS_SOURCE_STRENGTH_INSUFFICIENT", 4, 180},
+ #endif
#ifdef RSA_R_RSA_OPERATIONS_NOT_SUPPORTED
{"RSA_OPERATIONS_NOT_SUPPORTED", ERR_LIB_RSA, RSA_R_RSA_OPERATIONS_NOT_SUPPORTED},
#else
@@ -6680,6 +6815,11 @@ static struct py_ssl_error_code error_codes[] = {
#else
{"INVALID_TICKET_KEYS_LENGTH", 20, 325},
#endif
+ #ifdef SSL_R_LEGACY_SIGALG_DISALLOWED_OR_UNSUPPORTED
+ {"LEGACY_SIGALG_DISALLOWED_OR_UNSUPPORTED", ERR_LIB_SSL, SSL_R_LEGACY_SIGALG_DISALLOWED_OR_UNSUPPORTED},
+ #else
+ {"LEGACY_SIGALG_DISALLOWED_OR_UNSUPPORTED", 20, 333},
+ #endif
#ifdef SSL_R_LENGTH_MISMATCH
{"LENGTH_MISMATCH", ERR_LIB_SSL, SSL_R_LENGTH_MISMATCH},
#else
@@ -6725,6 +6865,11 @@ static struct py_ssl_error_code error_codes[] = {
#else
{"MISSING_PARAMETERS", 20, 290},
#endif
+ #ifdef SSL_R_MISSING_PSK_KEX_MODES_EXTENSION
+ {"MISSING_PSK_KEX_MODES_EXTENSION", ERR_LIB_SSL, SSL_R_MISSING_PSK_KEX_MODES_EXTENSION},
+ #else
+ {"MISSING_PSK_KEX_MODES_EXTENSION", 20, 310},
+ #endif
#ifdef SSL_R_MISSING_RSA_CERTIFICATE
{"MISSING_RSA_CERTIFICATE", ERR_LIB_SSL, SSL_R_MISSING_RSA_CERTIFICATE},
#else
@@ -6940,6 +7085,11 @@ static struct py_ssl_error_code error_codes[] = {
#else
{"NULL_SSL_METHOD_PASSED", 20, 196},
#endif
+ #ifdef SSL_R_OCSP_CALLBACK_FAILURE
+ {"OCSP_CALLBACK_FAILURE", ERR_LIB_SSL, SSL_R_OCSP_CALLBACK_FAILURE},
+ #else
+ {"OCSP_CALLBACK_FAILURE", 20, 305},
+ #endif
#ifdef SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED
{"OLD_SESSION_CIPHER_NOT_RETURNED", ERR_LIB_SSL, SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED},
#else
diff --git a/Modules/_ssl_data_31.h b/Modules/_ssl_data_31.h
new file mode 100644
index 00000000000000..c589c501f4e948
--- /dev/null
+++ b/Modules/_ssl_data_31.h
@@ -0,0 +1,8605 @@
+/* File generated by Tools/ssl/make_ssl_data.py *//* Generated on 2023-06-01T03:04:00.275280 */
+static struct py_ssl_library_code library_codes[] = {
+#ifdef ERR_LIB_ASN1
+ {"ASN1", ERR_LIB_ASN1},
+#endif
+#ifdef ERR_LIB_ASYNC
+ {"ASYNC", ERR_LIB_ASYNC},
+#endif
+#ifdef ERR_LIB_BIO
+ {"BIO", ERR_LIB_BIO},
+#endif
+#ifdef ERR_LIB_BN
+ {"BN", ERR_LIB_BN},
+#endif
+#ifdef ERR_LIB_BUF
+ {"BUF", ERR_LIB_BUF},
+#endif
+#ifdef ERR_LIB_CMP
+ {"CMP", ERR_LIB_CMP},
+#endif
+#ifdef ERR_LIB_CMS
+ {"CMS", ERR_LIB_CMS},
+#endif
+#ifdef ERR_LIB_COMP
+ {"COMP", ERR_LIB_COMP},
+#endif
+#ifdef ERR_LIB_CONF
+ {"CONF", ERR_LIB_CONF},
+#endif
+#ifdef ERR_LIB_CRMF
+ {"CRMF", ERR_LIB_CRMF},
+#endif
+#ifdef ERR_LIB_CRYPTO
+ {"CRYPTO", ERR_LIB_CRYPTO},
+#endif
+#ifdef ERR_LIB_CT
+ {"CT", ERR_LIB_CT},
+#endif
+#ifdef ERR_LIB_DH
+ {"DH", ERR_LIB_DH},
+#endif
+#ifdef ERR_LIB_DSA
+ {"DSA", ERR_LIB_DSA},
+#endif
+#ifdef ERR_LIB_DSO
+ {"DSO", ERR_LIB_DSO},
+#endif
+#ifdef ERR_LIB_EC
+ {"EC", ERR_LIB_EC},
+#endif
+#ifdef ERR_LIB_ECDH
+ {"ECDH", ERR_LIB_ECDH},
+#endif
+#ifdef ERR_LIB_ECDSA
+ {"ECDSA", ERR_LIB_ECDSA},
+#endif
+#ifdef ERR_LIB_ENGINE
+ {"ENGINE", ERR_LIB_ENGINE},
+#endif
+#ifdef ERR_LIB_ESS
+ {"ESS", ERR_LIB_ESS},
+#endif
+#ifdef ERR_LIB_EVP
+ {"EVP", ERR_LIB_EVP},
+#endif
+#ifdef ERR_LIB_FIPS
+ {"FIPS", ERR_LIB_FIPS},
+#endif
+#ifdef ERR_LIB_HMAC
+ {"HMAC", ERR_LIB_HMAC},
+#endif
+#ifdef ERR_LIB_HTTP
+ {"HTTP", ERR_LIB_HTTP},
+#endif
+#ifdef ERR_LIB_JPAKE
+ {"JPAKE", ERR_LIB_JPAKE},
+#endif
+#ifdef ERR_LIB_KDF
+ {"KDF", ERR_LIB_KDF},
+#endif
+#ifdef ERR_LIB_MASK
+ {"MASK", ERR_LIB_MASK},
+#endif
+#ifdef ERR_LIB_METH
+ {"METH", ERR_LIB_METH},
+#endif
+#ifdef ERR_LIB_NONE
+ {"NONE", ERR_LIB_NONE},
+#endif
+#ifdef ERR_LIB_OBJ
+ {"OBJ", ERR_LIB_OBJ},
+#endif
+#ifdef ERR_LIB_OCSP
+ {"OCSP", ERR_LIB_OCSP},
+#endif
+#ifdef ERR_LIB_OFFSET
+ {"OFFSET", ERR_LIB_OFFSET},
+#endif
+#ifdef ERR_LIB_OSSL_DECODER
+ {"OSSL_DECODER", ERR_LIB_OSSL_DECODER},
+#endif
+#ifdef ERR_LIB_OSSL_ENCODER
+ {"OSSL_ENCODER", ERR_LIB_OSSL_ENCODER},
+#endif
+#ifdef ERR_LIB_OSSL_STORE
+ {"OSSL_STORE", ERR_LIB_OSSL_STORE},
+#endif
+#ifdef ERR_LIB_PEM
+ {"PEM", ERR_LIB_PEM},
+#endif
+#ifdef ERR_LIB_PKCS12
+ {"PKCS12", ERR_LIB_PKCS12},
+#endif
+#ifdef ERR_LIB_PKCS7
+ {"PKCS7", ERR_LIB_PKCS7},
+#endif
+#ifdef ERR_LIB_PROP
+ {"PROP", ERR_LIB_PROP},
+#endif
+#ifdef ERR_LIB_PROV
+ {"PROV", ERR_LIB_PROV},
+#endif
+#ifdef ERR_LIB_PROXY
+ {"PROXY", ERR_LIB_PROXY},
+#endif
+#ifdef ERR_LIB_RAND
+ {"RAND", ERR_LIB_RAND},
+#endif
+#ifdef ERR_LIB_RSA
+ {"RSA", ERR_LIB_RSA},
+#endif
+#ifdef ERR_LIB_RSAREF
+ {"RSAREF", ERR_LIB_RSAREF},
+#endif
+#ifdef ERR_LIB_SM2
+ {"SM2", ERR_LIB_SM2},
+#endif
+#ifdef ERR_LIB_SSL
+ {"SSL", ERR_LIB_SSL},
+#endif
+#ifdef ERR_LIB_SSL2
+ {"SSL2", ERR_LIB_SSL2},
+#endif
+#ifdef ERR_LIB_SSL23
+ {"SSL23", ERR_LIB_SSL23},
+#endif
+#ifdef ERR_LIB_SSL3
+ {"SSL3", ERR_LIB_SSL3},
+#endif
+#ifdef ERR_LIB_SYS
+ {"SYS", ERR_LIB_SYS},
+#endif
+#ifdef ERR_LIB_TS
+ {"TS", ERR_LIB_TS},
+#endif
+#ifdef ERR_LIB_UI
+ {"UI", ERR_LIB_UI},
+#endif
+#ifdef ERR_LIB_USER
+ {"USER", ERR_LIB_USER},
+#endif
+#ifdef ERR_LIB_X509
+ {"X509", ERR_LIB_X509},
+#endif
+#ifdef ERR_LIB_X509V3
+ {"X509V3", ERR_LIB_X509V3},
+#endif
+ { NULL }
+};
+
+
+static struct py_ssl_error_code error_codes[] = {
+ #ifdef ASN1_R_ADDING_OBJECT
+ {"ADDING_OBJECT", ERR_LIB_ASN1, ASN1_R_ADDING_OBJECT},
+ #else
+ {"ADDING_OBJECT", 13, 171},
+ #endif
+ #ifdef ASN1_R_ASN1_PARSE_ERROR
+ {"ASN1_PARSE_ERROR", ERR_LIB_ASN1, ASN1_R_ASN1_PARSE_ERROR},
+ #else
+ {"ASN1_PARSE_ERROR", 13, 203},
+ #endif
+ #ifdef ASN1_R_ASN1_SIG_PARSE_ERROR
+ {"ASN1_SIG_PARSE_ERROR", ERR_LIB_ASN1, ASN1_R_ASN1_SIG_PARSE_ERROR},
+ #else
+ {"ASN1_SIG_PARSE_ERROR", 13, 204},
+ #endif
+ #ifdef ASN1_R_AUX_ERROR
+ {"AUX_ERROR", ERR_LIB_ASN1, ASN1_R_AUX_ERROR},
+ #else
+ {"AUX_ERROR", 13, 100},
+ #endif
+ #ifdef ASN1_R_BAD_OBJECT_HEADER
+ {"BAD_OBJECT_HEADER", ERR_LIB_ASN1, ASN1_R_BAD_OBJECT_HEADER},
+ #else
+ {"BAD_OBJECT_HEADER", 13, 102},
+ #endif
+ #ifdef ASN1_R_BAD_TEMPLATE
+ {"BAD_TEMPLATE", ERR_LIB_ASN1, ASN1_R_BAD_TEMPLATE},
+ #else
+ {"BAD_TEMPLATE", 13, 230},
+ #endif
+ #ifdef ASN1_R_BMPSTRING_IS_WRONG_LENGTH
+ {"BMPSTRING_IS_WRONG_LENGTH", ERR_LIB_ASN1, ASN1_R_BMPSTRING_IS_WRONG_LENGTH},
+ #else
+ {"BMPSTRING_IS_WRONG_LENGTH", 13, 214},
+ #endif
+ #ifdef ASN1_R_BN_LIB
+ {"BN_LIB", ERR_LIB_ASN1, ASN1_R_BN_LIB},
+ #else
+ {"BN_LIB", 13, 105},
+ #endif
+ #ifdef ASN1_R_BOOLEAN_IS_WRONG_LENGTH
+ {"BOOLEAN_IS_WRONG_LENGTH", ERR_LIB_ASN1, ASN1_R_BOOLEAN_IS_WRONG_LENGTH},
+ #else
+ {"BOOLEAN_IS_WRONG_LENGTH", 13, 106},
+ #endif
+ #ifdef ASN1_R_BUFFER_TOO_SMALL
+ {"BUFFER_TOO_SMALL", ERR_LIB_ASN1, ASN1_R_BUFFER_TOO_SMALL},
+ #else
+ {"BUFFER_TOO_SMALL", 13, 107},
+ #endif
+ #ifdef ASN1_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER
+ {"CIPHER_HAS_NO_OBJECT_IDENTIFIER", ERR_LIB_ASN1, ASN1_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER},
+ #else
+ {"CIPHER_HAS_NO_OBJECT_IDENTIFIER", 13, 108},
+ #endif
+ #ifdef ASN1_R_CONTEXT_NOT_INITIALISED
+ {"CONTEXT_NOT_INITIALISED", ERR_LIB_ASN1, ASN1_R_CONTEXT_NOT_INITIALISED},
+ #else
+ {"CONTEXT_NOT_INITIALISED", 13, 217},
+ #endif
+ #ifdef ASN1_R_DATA_IS_WRONG
+ {"DATA_IS_WRONG", ERR_LIB_ASN1, ASN1_R_DATA_IS_WRONG},
+ #else
+ {"DATA_IS_WRONG", 13, 109},
+ #endif
+ #ifdef ASN1_R_DECODE_ERROR
+ {"DECODE_ERROR", ERR_LIB_ASN1, ASN1_R_DECODE_ERROR},
+ #else
+ {"DECODE_ERROR", 13, 110},
+ #endif
+ #ifdef ASN1_R_DEPTH_EXCEEDED
+ {"DEPTH_EXCEEDED", ERR_LIB_ASN1, ASN1_R_DEPTH_EXCEEDED},
+ #else
+ {"DEPTH_EXCEEDED", 13, 174},
+ #endif
+ #ifdef ASN1_R_DIGEST_AND_KEY_TYPE_NOT_SUPPORTED
+ {"DIGEST_AND_KEY_TYPE_NOT_SUPPORTED", ERR_LIB_ASN1, ASN1_R_DIGEST_AND_KEY_TYPE_NOT_SUPPORTED},
+ #else
+ {"DIGEST_AND_KEY_TYPE_NOT_SUPPORTED", 13, 198},
+ #endif
+ #ifdef ASN1_R_ENCODE_ERROR
+ {"ENCODE_ERROR", ERR_LIB_ASN1, ASN1_R_ENCODE_ERROR},
+ #else
+ {"ENCODE_ERROR", 13, 112},
+ #endif
+ #ifdef ASN1_R_ERROR_GETTING_TIME
+ {"ERROR_GETTING_TIME", ERR_LIB_ASN1, ASN1_R_ERROR_GETTING_TIME},
+ #else
+ {"ERROR_GETTING_TIME", 13, 173},
+ #endif
+ #ifdef ASN1_R_ERROR_LOADING_SECTION
+ {"ERROR_LOADING_SECTION", ERR_LIB_ASN1, ASN1_R_ERROR_LOADING_SECTION},
+ #else
+ {"ERROR_LOADING_SECTION", 13, 172},
+ #endif
+ #ifdef ASN1_R_ERROR_SETTING_CIPHER_PARAMS
+ {"ERROR_SETTING_CIPHER_PARAMS", ERR_LIB_ASN1, ASN1_R_ERROR_SETTING_CIPHER_PARAMS},
+ #else
+ {"ERROR_SETTING_CIPHER_PARAMS", 13, 114},
+ #endif
+ #ifdef ASN1_R_EXPECTING_AN_INTEGER
+ {"EXPECTING_AN_INTEGER", ERR_LIB_ASN1, ASN1_R_EXPECTING_AN_INTEGER},
+ #else
+ {"EXPECTING_AN_INTEGER", 13, 115},
+ #endif
+ #ifdef ASN1_R_EXPECTING_AN_OBJECT
+ {"EXPECTING_AN_OBJECT", ERR_LIB_ASN1, ASN1_R_EXPECTING_AN_OBJECT},
+ #else
+ {"EXPECTING_AN_OBJECT", 13, 116},
+ #endif
+ #ifdef ASN1_R_EXPLICIT_LENGTH_MISMATCH
+ {"EXPLICIT_LENGTH_MISMATCH", ERR_LIB_ASN1, ASN1_R_EXPLICIT_LENGTH_MISMATCH},
+ #else
+ {"EXPLICIT_LENGTH_MISMATCH", 13, 119},
+ #endif
+ #ifdef ASN1_R_EXPLICIT_TAG_NOT_CONSTRUCTED
+ {"EXPLICIT_TAG_NOT_CONSTRUCTED", ERR_LIB_ASN1, ASN1_R_EXPLICIT_TAG_NOT_CONSTRUCTED},
+ #else
+ {"EXPLICIT_TAG_NOT_CONSTRUCTED", 13, 120},
+ #endif
+ #ifdef ASN1_R_FIELD_MISSING
+ {"FIELD_MISSING", ERR_LIB_ASN1, ASN1_R_FIELD_MISSING},
+ #else
+ {"FIELD_MISSING", 13, 121},
+ #endif
+ #ifdef ASN1_R_FIRST_NUM_TOO_LARGE
+ {"FIRST_NUM_TOO_LARGE", ERR_LIB_ASN1, ASN1_R_FIRST_NUM_TOO_LARGE},
+ #else
+ {"FIRST_NUM_TOO_LARGE", 13, 122},
+ #endif
+ #ifdef ASN1_R_HEADER_TOO_LONG
+ {"HEADER_TOO_LONG", ERR_LIB_ASN1, ASN1_R_HEADER_TOO_LONG},
+ #else
+ {"HEADER_TOO_LONG", 13, 123},
+ #endif
+ #ifdef ASN1_R_ILLEGAL_BITSTRING_FORMAT
+ {"ILLEGAL_BITSTRING_FORMAT", ERR_LIB_ASN1, ASN1_R_ILLEGAL_BITSTRING_FORMAT},
+ #else
+ {"ILLEGAL_BITSTRING_FORMAT", 13, 175},
+ #endif
+ #ifdef ASN1_R_ILLEGAL_BOOLEAN
+ {"ILLEGAL_BOOLEAN", ERR_LIB_ASN1, ASN1_R_ILLEGAL_BOOLEAN},
+ #else
+ {"ILLEGAL_BOOLEAN", 13, 176},
+ #endif
+ #ifdef ASN1_R_ILLEGAL_CHARACTERS
+ {"ILLEGAL_CHARACTERS", ERR_LIB_ASN1, ASN1_R_ILLEGAL_CHARACTERS},
+ #else
+ {"ILLEGAL_CHARACTERS", 13, 124},
+ #endif
+ #ifdef ASN1_R_ILLEGAL_FORMAT
+ {"ILLEGAL_FORMAT", ERR_LIB_ASN1, ASN1_R_ILLEGAL_FORMAT},
+ #else
+ {"ILLEGAL_FORMAT", 13, 177},
+ #endif
+ #ifdef ASN1_R_ILLEGAL_HEX
+ {"ILLEGAL_HEX", ERR_LIB_ASN1, ASN1_R_ILLEGAL_HEX},
+ #else
+ {"ILLEGAL_HEX", 13, 178},
+ #endif
+ #ifdef ASN1_R_ILLEGAL_IMPLICIT_TAG
+ {"ILLEGAL_IMPLICIT_TAG", ERR_LIB_ASN1, ASN1_R_ILLEGAL_IMPLICIT_TAG},
+ #else
+ {"ILLEGAL_IMPLICIT_TAG", 13, 179},
+ #endif
+ #ifdef ASN1_R_ILLEGAL_INTEGER
+ {"ILLEGAL_INTEGER", ERR_LIB_ASN1, ASN1_R_ILLEGAL_INTEGER},
+ #else
+ {"ILLEGAL_INTEGER", 13, 180},
+ #endif
+ #ifdef ASN1_R_ILLEGAL_NEGATIVE_VALUE
+ {"ILLEGAL_NEGATIVE_VALUE", ERR_LIB_ASN1, ASN1_R_ILLEGAL_NEGATIVE_VALUE},
+ #else
+ {"ILLEGAL_NEGATIVE_VALUE", 13, 226},
+ #endif
+ #ifdef ASN1_R_ILLEGAL_NESTED_TAGGING
+ {"ILLEGAL_NESTED_TAGGING", ERR_LIB_ASN1, ASN1_R_ILLEGAL_NESTED_TAGGING},
+ #else
+ {"ILLEGAL_NESTED_TAGGING", 13, 181},
+ #endif
+ #ifdef ASN1_R_ILLEGAL_NULL
+ {"ILLEGAL_NULL", ERR_LIB_ASN1, ASN1_R_ILLEGAL_NULL},
+ #else
+ {"ILLEGAL_NULL", 13, 125},
+ #endif
+ #ifdef ASN1_R_ILLEGAL_NULL_VALUE
+ {"ILLEGAL_NULL_VALUE", ERR_LIB_ASN1, ASN1_R_ILLEGAL_NULL_VALUE},
+ #else
+ {"ILLEGAL_NULL_VALUE", 13, 182},
+ #endif
+ #ifdef ASN1_R_ILLEGAL_OBJECT
+ {"ILLEGAL_OBJECT", ERR_LIB_ASN1, ASN1_R_ILLEGAL_OBJECT},
+ #else
+ {"ILLEGAL_OBJECT", 13, 183},
+ #endif
+ #ifdef ASN1_R_ILLEGAL_OPTIONAL_ANY
+ {"ILLEGAL_OPTIONAL_ANY", ERR_LIB_ASN1, ASN1_R_ILLEGAL_OPTIONAL_ANY},
+ #else
+ {"ILLEGAL_OPTIONAL_ANY", 13, 126},
+ #endif
+ #ifdef ASN1_R_ILLEGAL_OPTIONS_ON_ITEM_TEMPLATE
+ {"ILLEGAL_OPTIONS_ON_ITEM_TEMPLATE", ERR_LIB_ASN1, ASN1_R_ILLEGAL_OPTIONS_ON_ITEM_TEMPLATE},
+ #else
+ {"ILLEGAL_OPTIONS_ON_ITEM_TEMPLATE", 13, 170},
+ #endif
+ #ifdef ASN1_R_ILLEGAL_PADDING
+ {"ILLEGAL_PADDING", ERR_LIB_ASN1, ASN1_R_ILLEGAL_PADDING},
+ #else
+ {"ILLEGAL_PADDING", 13, 221},
+ #endif
+ #ifdef ASN1_R_ILLEGAL_TAGGED_ANY
+ {"ILLEGAL_TAGGED_ANY", ERR_LIB_ASN1, ASN1_R_ILLEGAL_TAGGED_ANY},
+ #else
+ {"ILLEGAL_TAGGED_ANY", 13, 127},
+ #endif
+ #ifdef ASN1_R_ILLEGAL_TIME_VALUE
+ {"ILLEGAL_TIME_VALUE", ERR_LIB_ASN1, ASN1_R_ILLEGAL_TIME_VALUE},
+ #else
+ {"ILLEGAL_TIME_VALUE", 13, 184},
+ #endif
+ #ifdef ASN1_R_ILLEGAL_ZERO_CONTENT
+ {"ILLEGAL_ZERO_CONTENT", ERR_LIB_ASN1, ASN1_R_ILLEGAL_ZERO_CONTENT},
+ #else
+ {"ILLEGAL_ZERO_CONTENT", 13, 222},
+ #endif
+ #ifdef ASN1_R_INTEGER_NOT_ASCII_FORMAT
+ {"INTEGER_NOT_ASCII_FORMAT", ERR_LIB_ASN1, ASN1_R_INTEGER_NOT_ASCII_FORMAT},
+ #else
+ {"INTEGER_NOT_ASCII_FORMAT", 13, 185},
+ #endif
+ #ifdef ASN1_R_INTEGER_TOO_LARGE_FOR_LONG
+ {"INTEGER_TOO_LARGE_FOR_LONG", ERR_LIB_ASN1, ASN1_R_INTEGER_TOO_LARGE_FOR_LONG},
+ #else
+ {"INTEGER_TOO_LARGE_FOR_LONG", 13, 128},
+ #endif
+ #ifdef ASN1_R_INVALID_BIT_STRING_BITS_LEFT
+ {"INVALID_BIT_STRING_BITS_LEFT", ERR_LIB_ASN1, ASN1_R_INVALID_BIT_STRING_BITS_LEFT},
+ #else
+ {"INVALID_BIT_STRING_BITS_LEFT", 13, 220},
+ #endif
+ #ifdef ASN1_R_INVALID_BMPSTRING_LENGTH
+ {"INVALID_BMPSTRING_LENGTH", ERR_LIB_ASN1, ASN1_R_INVALID_BMPSTRING_LENGTH},
+ #else
+ {"INVALID_BMPSTRING_LENGTH", 13, 129},
+ #endif
+ #ifdef ASN1_R_INVALID_DIGIT
+ {"INVALID_DIGIT", ERR_LIB_ASN1, ASN1_R_INVALID_DIGIT},
+ #else
+ {"INVALID_DIGIT", 13, 130},
+ #endif
+ #ifdef ASN1_R_INVALID_MIME_TYPE
+ {"INVALID_MIME_TYPE", ERR_LIB_ASN1, ASN1_R_INVALID_MIME_TYPE},
+ #else
+ {"INVALID_MIME_TYPE", 13, 205},
+ #endif
+ #ifdef ASN1_R_INVALID_MODIFIER
+ {"INVALID_MODIFIER", ERR_LIB_ASN1, ASN1_R_INVALID_MODIFIER},
+ #else
+ {"INVALID_MODIFIER", 13, 186},
+ #endif
+ #ifdef ASN1_R_INVALID_NUMBER
+ {"INVALID_NUMBER", ERR_LIB_ASN1, ASN1_R_INVALID_NUMBER},
+ #else
+ {"INVALID_NUMBER", 13, 187},
+ #endif
+ #ifdef ASN1_R_INVALID_OBJECT_ENCODING
+ {"INVALID_OBJECT_ENCODING", ERR_LIB_ASN1, ASN1_R_INVALID_OBJECT_ENCODING},
+ #else
+ {"INVALID_OBJECT_ENCODING", 13, 216},
+ #endif
+ #ifdef ASN1_R_INVALID_SCRYPT_PARAMETERS
+ {"INVALID_SCRYPT_PARAMETERS", ERR_LIB_ASN1, ASN1_R_INVALID_SCRYPT_PARAMETERS},
+ #else
+ {"INVALID_SCRYPT_PARAMETERS", 13, 227},
+ #endif
+ #ifdef ASN1_R_INVALID_SEPARATOR
+ {"INVALID_SEPARATOR", ERR_LIB_ASN1, ASN1_R_INVALID_SEPARATOR},
+ #else
+ {"INVALID_SEPARATOR", 13, 131},
+ #endif
+ #ifdef ASN1_R_INVALID_STRING_TABLE_VALUE
+ {"INVALID_STRING_TABLE_VALUE", ERR_LIB_ASN1, ASN1_R_INVALID_STRING_TABLE_VALUE},
+ #else
+ {"INVALID_STRING_TABLE_VALUE", 13, 218},
+ #endif
+ #ifdef ASN1_R_INVALID_UNIVERSALSTRING_LENGTH
+ {"INVALID_UNIVERSALSTRING_LENGTH", ERR_LIB_ASN1, ASN1_R_INVALID_UNIVERSALSTRING_LENGTH},
+ #else
+ {"INVALID_UNIVERSALSTRING_LENGTH", 13, 133},
+ #endif
+ #ifdef ASN1_R_INVALID_UTF8STRING
+ {"INVALID_UTF8STRING", ERR_LIB_ASN1, ASN1_R_INVALID_UTF8STRING},
+ #else
+ {"INVALID_UTF8STRING", 13, 134},
+ #endif
+ #ifdef ASN1_R_INVALID_VALUE
+ {"INVALID_VALUE", ERR_LIB_ASN1, ASN1_R_INVALID_VALUE},
+ #else
+ {"INVALID_VALUE", 13, 219},
+ #endif
+ #ifdef ASN1_R_LENGTH_TOO_LONG
+ {"LENGTH_TOO_LONG", ERR_LIB_ASN1, ASN1_R_LENGTH_TOO_LONG},
+ #else
+ {"LENGTH_TOO_LONG", 13, 231},
+ #endif
+ #ifdef ASN1_R_LIST_ERROR
+ {"LIST_ERROR", ERR_LIB_ASN1, ASN1_R_LIST_ERROR},
+ #else
+ {"LIST_ERROR", 13, 188},
+ #endif
+ #ifdef ASN1_R_MIME_NO_CONTENT_TYPE
+ {"MIME_NO_CONTENT_TYPE", ERR_LIB_ASN1, ASN1_R_MIME_NO_CONTENT_TYPE},
+ #else
+ {"MIME_NO_CONTENT_TYPE", 13, 206},
+ #endif
+ #ifdef ASN1_R_MIME_PARSE_ERROR
+ {"MIME_PARSE_ERROR", ERR_LIB_ASN1, ASN1_R_MIME_PARSE_ERROR},
+ #else
+ {"MIME_PARSE_ERROR", 13, 207},
+ #endif
+ #ifdef ASN1_R_MIME_SIG_PARSE_ERROR
+ {"MIME_SIG_PARSE_ERROR", ERR_LIB_ASN1, ASN1_R_MIME_SIG_PARSE_ERROR},
+ #else
+ {"MIME_SIG_PARSE_ERROR", 13, 208},
+ #endif
+ #ifdef ASN1_R_MISSING_EOC
+ {"MISSING_EOC", ERR_LIB_ASN1, ASN1_R_MISSING_EOC},
+ #else
+ {"MISSING_EOC", 13, 137},
+ #endif
+ #ifdef ASN1_R_MISSING_SECOND_NUMBER
+ {"MISSING_SECOND_NUMBER", ERR_LIB_ASN1, ASN1_R_MISSING_SECOND_NUMBER},
+ #else
+ {"MISSING_SECOND_NUMBER", 13, 138},
+ #endif
+ #ifdef ASN1_R_MISSING_VALUE
+ {"MISSING_VALUE", ERR_LIB_ASN1, ASN1_R_MISSING_VALUE},
+ #else
+ {"MISSING_VALUE", 13, 189},
+ #endif
+ #ifdef ASN1_R_MSTRING_NOT_UNIVERSAL
+ {"MSTRING_NOT_UNIVERSAL", ERR_LIB_ASN1, ASN1_R_MSTRING_NOT_UNIVERSAL},
+ #else
+ {"MSTRING_NOT_UNIVERSAL", 13, 139},
+ #endif
+ #ifdef ASN1_R_MSTRING_WRONG_TAG
+ {"MSTRING_WRONG_TAG", ERR_LIB_ASN1, ASN1_R_MSTRING_WRONG_TAG},
+ #else
+ {"MSTRING_WRONG_TAG", 13, 140},
+ #endif
+ #ifdef ASN1_R_NESTED_ASN1_STRING
+ {"NESTED_ASN1_STRING", ERR_LIB_ASN1, ASN1_R_NESTED_ASN1_STRING},
+ #else
+ {"NESTED_ASN1_STRING", 13, 197},
+ #endif
+ #ifdef ASN1_R_NESTED_TOO_DEEP
+ {"NESTED_TOO_DEEP", ERR_LIB_ASN1, ASN1_R_NESTED_TOO_DEEP},
+ #else
+ {"NESTED_TOO_DEEP", 13, 201},
+ #endif
+ #ifdef ASN1_R_NON_HEX_CHARACTERS
+ {"NON_HEX_CHARACTERS", ERR_LIB_ASN1, ASN1_R_NON_HEX_CHARACTERS},
+ #else
+ {"NON_HEX_CHARACTERS", 13, 141},
+ #endif
+ #ifdef ASN1_R_NOT_ASCII_FORMAT
+ {"NOT_ASCII_FORMAT", ERR_LIB_ASN1, ASN1_R_NOT_ASCII_FORMAT},
+ #else
+ {"NOT_ASCII_FORMAT", 13, 190},
+ #endif
+ #ifdef ASN1_R_NOT_ENOUGH_DATA
+ {"NOT_ENOUGH_DATA", ERR_LIB_ASN1, ASN1_R_NOT_ENOUGH_DATA},
+ #else
+ {"NOT_ENOUGH_DATA", 13, 142},
+ #endif
+ #ifdef ASN1_R_NO_CONTENT_TYPE
+ {"NO_CONTENT_TYPE", ERR_LIB_ASN1, ASN1_R_NO_CONTENT_TYPE},
+ #else
+ {"NO_CONTENT_TYPE", 13, 209},
+ #endif
+ #ifdef ASN1_R_NO_MATCHING_CHOICE_TYPE
+ {"NO_MATCHING_CHOICE_TYPE", ERR_LIB_ASN1, ASN1_R_NO_MATCHING_CHOICE_TYPE},
+ #else
+ {"NO_MATCHING_CHOICE_TYPE", 13, 143},
+ #endif
+ #ifdef ASN1_R_NO_MULTIPART_BODY_FAILURE
+ {"NO_MULTIPART_BODY_FAILURE", ERR_LIB_ASN1, ASN1_R_NO_MULTIPART_BODY_FAILURE},
+ #else
+ {"NO_MULTIPART_BODY_FAILURE", 13, 210},
+ #endif
+ #ifdef ASN1_R_NO_MULTIPART_BOUNDARY
+ {"NO_MULTIPART_BOUNDARY", ERR_LIB_ASN1, ASN1_R_NO_MULTIPART_BOUNDARY},
+ #else
+ {"NO_MULTIPART_BOUNDARY", 13, 211},
+ #endif
+ #ifdef ASN1_R_NO_SIG_CONTENT_TYPE
+ {"NO_SIG_CONTENT_TYPE", ERR_LIB_ASN1, ASN1_R_NO_SIG_CONTENT_TYPE},
+ #else
+ {"NO_SIG_CONTENT_TYPE", 13, 212},
+ #endif
+ #ifdef ASN1_R_NULL_IS_WRONG_LENGTH
+ {"NULL_IS_WRONG_LENGTH", ERR_LIB_ASN1, ASN1_R_NULL_IS_WRONG_LENGTH},
+ #else
+ {"NULL_IS_WRONG_LENGTH", 13, 144},
+ #endif
+ #ifdef ASN1_R_OBJECT_NOT_ASCII_FORMAT
+ {"OBJECT_NOT_ASCII_FORMAT", ERR_LIB_ASN1, ASN1_R_OBJECT_NOT_ASCII_FORMAT},
+ #else
+ {"OBJECT_NOT_ASCII_FORMAT", 13, 191},
+ #endif
+ #ifdef ASN1_R_ODD_NUMBER_OF_CHARS
+ {"ODD_NUMBER_OF_CHARS", ERR_LIB_ASN1, ASN1_R_ODD_NUMBER_OF_CHARS},
+ #else
+ {"ODD_NUMBER_OF_CHARS", 13, 145},
+ #endif
+ #ifdef ASN1_R_SECOND_NUMBER_TOO_LARGE
+ {"SECOND_NUMBER_TOO_LARGE", ERR_LIB_ASN1, ASN1_R_SECOND_NUMBER_TOO_LARGE},
+ #else
+ {"SECOND_NUMBER_TOO_LARGE", 13, 147},
+ #endif
+ #ifdef ASN1_R_SEQUENCE_LENGTH_MISMATCH
+ {"SEQUENCE_LENGTH_MISMATCH", ERR_LIB_ASN1, ASN1_R_SEQUENCE_LENGTH_MISMATCH},
+ #else
+ {"SEQUENCE_LENGTH_MISMATCH", 13, 148},
+ #endif
+ #ifdef ASN1_R_SEQUENCE_NOT_CONSTRUCTED
+ {"SEQUENCE_NOT_CONSTRUCTED", ERR_LIB_ASN1, ASN1_R_SEQUENCE_NOT_CONSTRUCTED},
+ #else
+ {"SEQUENCE_NOT_CONSTRUCTED", 13, 149},
+ #endif
+ #ifdef ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG
+ {"SEQUENCE_OR_SET_NEEDS_CONFIG", ERR_LIB_ASN1, ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG},
+ #else
+ {"SEQUENCE_OR_SET_NEEDS_CONFIG", 13, 192},
+ #endif
+ #ifdef ASN1_R_SHORT_LINE
+ {"SHORT_LINE", ERR_LIB_ASN1, ASN1_R_SHORT_LINE},
+ #else
+ {"SHORT_LINE", 13, 150},
+ #endif
+ #ifdef ASN1_R_SIG_INVALID_MIME_TYPE
+ {"SIG_INVALID_MIME_TYPE", ERR_LIB_ASN1, ASN1_R_SIG_INVALID_MIME_TYPE},
+ #else
+ {"SIG_INVALID_MIME_TYPE", 13, 213},
+ #endif
+ #ifdef ASN1_R_STREAMING_NOT_SUPPORTED
+ {"STREAMING_NOT_SUPPORTED", ERR_LIB_ASN1, ASN1_R_STREAMING_NOT_SUPPORTED},
+ #else
+ {"STREAMING_NOT_SUPPORTED", 13, 202},
+ #endif
+ #ifdef ASN1_R_STRING_TOO_LONG
+ {"STRING_TOO_LONG", ERR_LIB_ASN1, ASN1_R_STRING_TOO_LONG},
+ #else
+ {"STRING_TOO_LONG", 13, 151},
+ #endif
+ #ifdef ASN1_R_STRING_TOO_SHORT
+ {"STRING_TOO_SHORT", ERR_LIB_ASN1, ASN1_R_STRING_TOO_SHORT},
+ #else
+ {"STRING_TOO_SHORT", 13, 152},
+ #endif
+ #ifdef ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD
+ {"THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD", ERR_LIB_ASN1, ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD},
+ #else
+ {"THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD", 13, 154},
+ #endif
+ #ifdef ASN1_R_TIME_NOT_ASCII_FORMAT
+ {"TIME_NOT_ASCII_FORMAT", ERR_LIB_ASN1, ASN1_R_TIME_NOT_ASCII_FORMAT},
+ #else
+ {"TIME_NOT_ASCII_FORMAT", 13, 193},
+ #endif
+ #ifdef ASN1_R_TOO_LARGE
+ {"TOO_LARGE", ERR_LIB_ASN1, ASN1_R_TOO_LARGE},
+ #else
+ {"TOO_LARGE", 13, 223},
+ #endif
+ #ifdef ASN1_R_TOO_LONG
+ {"TOO_LONG", ERR_LIB_ASN1, ASN1_R_TOO_LONG},
+ #else
+ {"TOO_LONG", 13, 155},
+ #endif
+ #ifdef ASN1_R_TOO_SMALL
+ {"TOO_SMALL", ERR_LIB_ASN1, ASN1_R_TOO_SMALL},
+ #else
+ {"TOO_SMALL", 13, 224},
+ #endif
+ #ifdef ASN1_R_TYPE_NOT_CONSTRUCTED
+ {"TYPE_NOT_CONSTRUCTED", ERR_LIB_ASN1, ASN1_R_TYPE_NOT_CONSTRUCTED},
+ #else
+ {"TYPE_NOT_CONSTRUCTED", 13, 156},
+ #endif
+ #ifdef ASN1_R_TYPE_NOT_PRIMITIVE
+ {"TYPE_NOT_PRIMITIVE", ERR_LIB_ASN1, ASN1_R_TYPE_NOT_PRIMITIVE},
+ #else
+ {"TYPE_NOT_PRIMITIVE", 13, 195},
+ #endif
+ #ifdef ASN1_R_UNEXPECTED_EOC
+ {"UNEXPECTED_EOC", ERR_LIB_ASN1, ASN1_R_UNEXPECTED_EOC},
+ #else
+ {"UNEXPECTED_EOC", 13, 159},
+ #endif
+ #ifdef ASN1_R_UNIVERSALSTRING_IS_WRONG_LENGTH
+ {"UNIVERSALSTRING_IS_WRONG_LENGTH", ERR_LIB_ASN1, ASN1_R_UNIVERSALSTRING_IS_WRONG_LENGTH},
+ #else
+ {"UNIVERSALSTRING_IS_WRONG_LENGTH", 13, 215},
+ #endif
+ #ifdef ASN1_R_UNKNOWN_DIGEST
+ {"UNKNOWN_DIGEST", ERR_LIB_ASN1, ASN1_R_UNKNOWN_DIGEST},
+ #else
+ {"UNKNOWN_DIGEST", 13, 229},
+ #endif
+ #ifdef ASN1_R_UNKNOWN_FORMAT
+ {"UNKNOWN_FORMAT", ERR_LIB_ASN1, ASN1_R_UNKNOWN_FORMAT},
+ #else
+ {"UNKNOWN_FORMAT", 13, 160},
+ #endif
+ #ifdef ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM
+ {"UNKNOWN_MESSAGE_DIGEST_ALGORITHM", ERR_LIB_ASN1, ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM},
+ #else
+ {"UNKNOWN_MESSAGE_DIGEST_ALGORITHM", 13, 161},
+ #endif
+ #ifdef ASN1_R_UNKNOWN_OBJECT_TYPE
+ {"UNKNOWN_OBJECT_TYPE", ERR_LIB_ASN1, ASN1_R_UNKNOWN_OBJECT_TYPE},
+ #else
+ {"UNKNOWN_OBJECT_TYPE", 13, 162},
+ #endif
+ #ifdef ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE
+ {"UNKNOWN_PUBLIC_KEY_TYPE", ERR_LIB_ASN1, ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE},
+ #else
+ {"UNKNOWN_PUBLIC_KEY_TYPE", 13, 163},
+ #endif
+ #ifdef ASN1_R_UNKNOWN_SIGNATURE_ALGORITHM
+ {"UNKNOWN_SIGNATURE_ALGORITHM", ERR_LIB_ASN1, ASN1_R_UNKNOWN_SIGNATURE_ALGORITHM},
+ #else
+ {"UNKNOWN_SIGNATURE_ALGORITHM", 13, 199},
+ #endif
+ #ifdef ASN1_R_UNKNOWN_TAG
+ {"UNKNOWN_TAG", ERR_LIB_ASN1, ASN1_R_UNKNOWN_TAG},
+ #else
+ {"UNKNOWN_TAG", 13, 194},
+ #endif
+ #ifdef ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE
+ {"UNSUPPORTED_ANY_DEFINED_BY_TYPE", ERR_LIB_ASN1, ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE},
+ #else
+ {"UNSUPPORTED_ANY_DEFINED_BY_TYPE", 13, 164},
+ #endif
+ #ifdef ASN1_R_UNSUPPORTED_CIPHER
+ {"UNSUPPORTED_CIPHER", ERR_LIB_ASN1, ASN1_R_UNSUPPORTED_CIPHER},
+ #else
+ {"UNSUPPORTED_CIPHER", 13, 228},
+ #endif
+ #ifdef ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE
+ {"UNSUPPORTED_PUBLIC_KEY_TYPE", ERR_LIB_ASN1, ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE},
+ #else
+ {"UNSUPPORTED_PUBLIC_KEY_TYPE", 13, 167},
+ #endif
+ #ifdef ASN1_R_UNSUPPORTED_TYPE
+ {"UNSUPPORTED_TYPE", ERR_LIB_ASN1, ASN1_R_UNSUPPORTED_TYPE},
+ #else
+ {"UNSUPPORTED_TYPE", 13, 196},
+ #endif
+ #ifdef ASN1_R_WRONG_INTEGER_TYPE
+ {"WRONG_INTEGER_TYPE", ERR_LIB_ASN1, ASN1_R_WRONG_INTEGER_TYPE},
+ #else
+ {"WRONG_INTEGER_TYPE", 13, 225},
+ #endif
+ #ifdef ASN1_R_WRONG_PUBLIC_KEY_TYPE
+ {"WRONG_PUBLIC_KEY_TYPE", ERR_LIB_ASN1, ASN1_R_WRONG_PUBLIC_KEY_TYPE},
+ #else
+ {"WRONG_PUBLIC_KEY_TYPE", 13, 200},
+ #endif
+ #ifdef ASN1_R_WRONG_TAG
+ {"WRONG_TAG", ERR_LIB_ASN1, ASN1_R_WRONG_TAG},
+ #else
+ {"WRONG_TAG", 13, 168},
+ #endif
+ #ifdef ASYNC_R_FAILED_TO_SET_POOL
+ {"FAILED_TO_SET_POOL", ERR_LIB_ASYNC, ASYNC_R_FAILED_TO_SET_POOL},
+ #else
+ {"FAILED_TO_SET_POOL", 51, 101},
+ #endif
+ #ifdef ASYNC_R_FAILED_TO_SWAP_CONTEXT
+ {"FAILED_TO_SWAP_CONTEXT", ERR_LIB_ASYNC, ASYNC_R_FAILED_TO_SWAP_CONTEXT},
+ #else
+ {"FAILED_TO_SWAP_CONTEXT", 51, 102},
+ #endif
+ #ifdef ASYNC_R_INIT_FAILED
+ {"INIT_FAILED", ERR_LIB_ASYNC, ASYNC_R_INIT_FAILED},
+ #else
+ {"INIT_FAILED", 51, 105},
+ #endif
+ #ifdef ASYNC_R_INVALID_POOL_SIZE
+ {"INVALID_POOL_SIZE", ERR_LIB_ASYNC, ASYNC_R_INVALID_POOL_SIZE},
+ #else
+ {"INVALID_POOL_SIZE", 51, 103},
+ #endif
+ #ifdef BIO_R_ACCEPT_ERROR
+ {"ACCEPT_ERROR", ERR_LIB_BIO, BIO_R_ACCEPT_ERROR},
+ #else
+ {"ACCEPT_ERROR", 32, 100},
+ #endif
+ #ifdef BIO_R_ADDRINFO_ADDR_IS_NOT_AF_INET
+ {"ADDRINFO_ADDR_IS_NOT_AF_INET", ERR_LIB_BIO, BIO_R_ADDRINFO_ADDR_IS_NOT_AF_INET},
+ #else
+ {"ADDRINFO_ADDR_IS_NOT_AF_INET", 32, 141},
+ #endif
+ #ifdef BIO_R_AMBIGUOUS_HOST_OR_SERVICE
+ {"AMBIGUOUS_HOST_OR_SERVICE", ERR_LIB_BIO, BIO_R_AMBIGUOUS_HOST_OR_SERVICE},
+ #else
+ {"AMBIGUOUS_HOST_OR_SERVICE", 32, 129},
+ #endif
+ #ifdef BIO_R_BAD_FOPEN_MODE
+ {"BAD_FOPEN_MODE", ERR_LIB_BIO, BIO_R_BAD_FOPEN_MODE},
+ #else
+ {"BAD_FOPEN_MODE", 32, 101},
+ #endif
+ #ifdef BIO_R_BROKEN_PIPE
+ {"BROKEN_PIPE", ERR_LIB_BIO, BIO_R_BROKEN_PIPE},
+ #else
+ {"BROKEN_PIPE", 32, 124},
+ #endif
+ #ifdef BIO_R_CONNECT_ERROR
+ {"CONNECT_ERROR", ERR_LIB_BIO, BIO_R_CONNECT_ERROR},
+ #else
+ {"CONNECT_ERROR", 32, 103},
+ #endif
+ #ifdef BIO_R_CONNECT_TIMEOUT
+ {"CONNECT_TIMEOUT", ERR_LIB_BIO, BIO_R_CONNECT_TIMEOUT},
+ #else
+ {"CONNECT_TIMEOUT", 32, 147},
+ #endif
+ #ifdef BIO_R_GETHOSTBYNAME_ADDR_IS_NOT_AF_INET
+ {"GETHOSTBYNAME_ADDR_IS_NOT_AF_INET", ERR_LIB_BIO, BIO_R_GETHOSTBYNAME_ADDR_IS_NOT_AF_INET},
+ #else
+ {"GETHOSTBYNAME_ADDR_IS_NOT_AF_INET", 32, 107},
+ #endif
+ #ifdef BIO_R_GETSOCKNAME_ERROR
+ {"GETSOCKNAME_ERROR", ERR_LIB_BIO, BIO_R_GETSOCKNAME_ERROR},
+ #else
+ {"GETSOCKNAME_ERROR", 32, 132},
+ #endif
+ #ifdef BIO_R_GETSOCKNAME_TRUNCATED_ADDRESS
+ {"GETSOCKNAME_TRUNCATED_ADDRESS", ERR_LIB_BIO, BIO_R_GETSOCKNAME_TRUNCATED_ADDRESS},
+ #else
+ {"GETSOCKNAME_TRUNCATED_ADDRESS", 32, 133},
+ #endif
+ #ifdef BIO_R_GETTING_SOCKTYPE
+ {"GETTING_SOCKTYPE", ERR_LIB_BIO, BIO_R_GETTING_SOCKTYPE},
+ #else
+ {"GETTING_SOCKTYPE", 32, 134},
+ #endif
+ #ifdef BIO_R_INVALID_ARGUMENT
+ {"INVALID_ARGUMENT", ERR_LIB_BIO, BIO_R_INVALID_ARGUMENT},
+ #else
+ {"INVALID_ARGUMENT", 32, 125},
+ #endif
+ #ifdef BIO_R_INVALID_SOCKET
+ {"INVALID_SOCKET", ERR_LIB_BIO, BIO_R_INVALID_SOCKET},
+ #else
+ {"INVALID_SOCKET", 32, 135},
+ #endif
+ #ifdef BIO_R_IN_USE
+ {"IN_USE", ERR_LIB_BIO, BIO_R_IN_USE},
+ #else
+ {"IN_USE", 32, 123},
+ #endif
+ #ifdef BIO_R_LENGTH_TOO_LONG
+ {"LENGTH_TOO_LONG", ERR_LIB_BIO, BIO_R_LENGTH_TOO_LONG},
+ #else
+ {"LENGTH_TOO_LONG", 32, 102},
+ #endif
+ #ifdef BIO_R_LISTEN_V6_ONLY
+ {"LISTEN_V6_ONLY", ERR_LIB_BIO, BIO_R_LISTEN_V6_ONLY},
+ #else
+ {"LISTEN_V6_ONLY", 32, 136},
+ #endif
+ #ifdef BIO_R_LOOKUP_RETURNED_NOTHING
+ {"LOOKUP_RETURNED_NOTHING", ERR_LIB_BIO, BIO_R_LOOKUP_RETURNED_NOTHING},
+ #else
+ {"LOOKUP_RETURNED_NOTHING", 32, 142},
+ #endif
+ #ifdef BIO_R_MALFORMED_HOST_OR_SERVICE
+ {"MALFORMED_HOST_OR_SERVICE", ERR_LIB_BIO, BIO_R_MALFORMED_HOST_OR_SERVICE},
+ #else
+ {"MALFORMED_HOST_OR_SERVICE", 32, 130},
+ #endif
+ #ifdef BIO_R_NBIO_CONNECT_ERROR
+ {"NBIO_CONNECT_ERROR", ERR_LIB_BIO, BIO_R_NBIO_CONNECT_ERROR},
+ #else
+ {"NBIO_CONNECT_ERROR", 32, 110},
+ #endif
+ #ifdef BIO_R_NO_ACCEPT_ADDR_OR_SERVICE_SPECIFIED
+ {"NO_ACCEPT_ADDR_OR_SERVICE_SPECIFIED", ERR_LIB_BIO, BIO_R_NO_ACCEPT_ADDR_OR_SERVICE_SPECIFIED},
+ #else
+ {"NO_ACCEPT_ADDR_OR_SERVICE_SPECIFIED", 32, 143},
+ #endif
+ #ifdef BIO_R_NO_HOSTNAME_OR_SERVICE_SPECIFIED
+ {"NO_HOSTNAME_OR_SERVICE_SPECIFIED", ERR_LIB_BIO, BIO_R_NO_HOSTNAME_OR_SERVICE_SPECIFIED},
+ #else
+ {"NO_HOSTNAME_OR_SERVICE_SPECIFIED", 32, 144},
+ #endif
+ #ifdef BIO_R_NO_PORT_DEFINED
+ {"NO_PORT_DEFINED", ERR_LIB_BIO, BIO_R_NO_PORT_DEFINED},
+ #else
+ {"NO_PORT_DEFINED", 32, 113},
+ #endif
+ #ifdef BIO_R_NO_SUCH_FILE
+ {"NO_SUCH_FILE", ERR_LIB_BIO, BIO_R_NO_SUCH_FILE},
+ #else
+ {"NO_SUCH_FILE", 32, 128},
+ #endif
+ #ifdef BIO_R_TRANSFER_ERROR
+ {"TRANSFER_ERROR", ERR_LIB_BIO, BIO_R_TRANSFER_ERROR},
+ #else
+ {"TRANSFER_ERROR", 32, 104},
+ #endif
+ #ifdef BIO_R_TRANSFER_TIMEOUT
+ {"TRANSFER_TIMEOUT", ERR_LIB_BIO, BIO_R_TRANSFER_TIMEOUT},
+ #else
+ {"TRANSFER_TIMEOUT", 32, 105},
+ #endif
+ #ifdef BIO_R_UNABLE_TO_BIND_SOCKET
+ {"UNABLE_TO_BIND_SOCKET", ERR_LIB_BIO, BIO_R_UNABLE_TO_BIND_SOCKET},
+ #else
+ {"UNABLE_TO_BIND_SOCKET", 32, 117},
+ #endif
+ #ifdef BIO_R_UNABLE_TO_CREATE_SOCKET
+ {"UNABLE_TO_CREATE_SOCKET", ERR_LIB_BIO, BIO_R_UNABLE_TO_CREATE_SOCKET},
+ #else
+ {"UNABLE_TO_CREATE_SOCKET", 32, 118},
+ #endif
+ #ifdef BIO_R_UNABLE_TO_KEEPALIVE
+ {"UNABLE_TO_KEEPALIVE", ERR_LIB_BIO, BIO_R_UNABLE_TO_KEEPALIVE},
+ #else
+ {"UNABLE_TO_KEEPALIVE", 32, 137},
+ #endif
+ #ifdef BIO_R_UNABLE_TO_LISTEN_SOCKET
+ {"UNABLE_TO_LISTEN_SOCKET", ERR_LIB_BIO, BIO_R_UNABLE_TO_LISTEN_SOCKET},
+ #else
+ {"UNABLE_TO_LISTEN_SOCKET", 32, 119},
+ #endif
+ #ifdef BIO_R_UNABLE_TO_NODELAY
+ {"UNABLE_TO_NODELAY", ERR_LIB_BIO, BIO_R_UNABLE_TO_NODELAY},
+ #else
+ {"UNABLE_TO_NODELAY", 32, 138},
+ #endif
+ #ifdef BIO_R_UNABLE_TO_REUSEADDR
+ {"UNABLE_TO_REUSEADDR", ERR_LIB_BIO, BIO_R_UNABLE_TO_REUSEADDR},
+ #else
+ {"UNABLE_TO_REUSEADDR", 32, 139},
+ #endif
+ #ifdef BIO_R_UNAVAILABLE_IP_FAMILY
+ {"UNAVAILABLE_IP_FAMILY", ERR_LIB_BIO, BIO_R_UNAVAILABLE_IP_FAMILY},
+ #else
+ {"UNAVAILABLE_IP_FAMILY", 32, 145},
+ #endif
+ #ifdef BIO_R_UNINITIALIZED
+ {"UNINITIALIZED", ERR_LIB_BIO, BIO_R_UNINITIALIZED},
+ #else
+ {"UNINITIALIZED", 32, 120},
+ #endif
+ #ifdef BIO_R_UNKNOWN_INFO_TYPE
+ {"UNKNOWN_INFO_TYPE", ERR_LIB_BIO, BIO_R_UNKNOWN_INFO_TYPE},
+ #else
+ {"UNKNOWN_INFO_TYPE", 32, 140},
+ #endif
+ #ifdef BIO_R_UNSUPPORTED_IP_FAMILY
+ {"UNSUPPORTED_IP_FAMILY", ERR_LIB_BIO, BIO_R_UNSUPPORTED_IP_FAMILY},
+ #else
+ {"UNSUPPORTED_IP_FAMILY", 32, 146},
+ #endif
+ #ifdef BIO_R_UNSUPPORTED_METHOD
+ {"UNSUPPORTED_METHOD", ERR_LIB_BIO, BIO_R_UNSUPPORTED_METHOD},
+ #else
+ {"UNSUPPORTED_METHOD", 32, 121},
+ #endif
+ #ifdef BIO_R_UNSUPPORTED_PROTOCOL_FAMILY
+ {"UNSUPPORTED_PROTOCOL_FAMILY", ERR_LIB_BIO, BIO_R_UNSUPPORTED_PROTOCOL_FAMILY},
+ #else
+ {"UNSUPPORTED_PROTOCOL_FAMILY", 32, 131},
+ #endif
+ #ifdef BIO_R_WRITE_TO_READ_ONLY_BIO
+ {"WRITE_TO_READ_ONLY_BIO", ERR_LIB_BIO, BIO_R_WRITE_TO_READ_ONLY_BIO},
+ #else
+ {"WRITE_TO_READ_ONLY_BIO", 32, 126},
+ #endif
+ #ifdef BIO_R_WSASTARTUP
+ {"WSASTARTUP", ERR_LIB_BIO, BIO_R_WSASTARTUP},
+ #else
+ {"WSASTARTUP", 32, 122},
+ #endif
+ #ifdef BN_R_ARG2_LT_ARG3
+ {"ARG2_LT_ARG3", ERR_LIB_BN, BN_R_ARG2_LT_ARG3},
+ #else
+ {"ARG2_LT_ARG3", 3, 100},
+ #endif
+ #ifdef BN_R_BAD_RECIPROCAL
+ {"BAD_RECIPROCAL", ERR_LIB_BN, BN_R_BAD_RECIPROCAL},
+ #else
+ {"BAD_RECIPROCAL", 3, 101},
+ #endif
+ #ifdef BN_R_BIGNUM_TOO_LONG
+ {"BIGNUM_TOO_LONG", ERR_LIB_BN, BN_R_BIGNUM_TOO_LONG},
+ #else
+ {"BIGNUM_TOO_LONG", 3, 114},
+ #endif
+ #ifdef BN_R_BITS_TOO_SMALL
+ {"BITS_TOO_SMALL", ERR_LIB_BN, BN_R_BITS_TOO_SMALL},
+ #else
+ {"BITS_TOO_SMALL", 3, 118},
+ #endif
+ #ifdef BN_R_CALLED_WITH_EVEN_MODULUS
+ {"CALLED_WITH_EVEN_MODULUS", ERR_LIB_BN, BN_R_CALLED_WITH_EVEN_MODULUS},
+ #else
+ {"CALLED_WITH_EVEN_MODULUS", 3, 102},
+ #endif
+ #ifdef BN_R_DIV_BY_ZERO
+ {"DIV_BY_ZERO", ERR_LIB_BN, BN_R_DIV_BY_ZERO},
+ #else
+ {"DIV_BY_ZERO", 3, 103},
+ #endif
+ #ifdef BN_R_ENCODING_ERROR
+ {"ENCODING_ERROR", ERR_LIB_BN, BN_R_ENCODING_ERROR},
+ #else
+ {"ENCODING_ERROR", 3, 104},
+ #endif
+ #ifdef BN_R_EXPAND_ON_STATIC_BIGNUM_DATA
+ {"EXPAND_ON_STATIC_BIGNUM_DATA", ERR_LIB_BN, BN_R_EXPAND_ON_STATIC_BIGNUM_DATA},
+ #else
+ {"EXPAND_ON_STATIC_BIGNUM_DATA", 3, 105},
+ #endif
+ #ifdef BN_R_INPUT_NOT_REDUCED
+ {"INPUT_NOT_REDUCED", ERR_LIB_BN, BN_R_INPUT_NOT_REDUCED},
+ #else
+ {"INPUT_NOT_REDUCED", 3, 110},
+ #endif
+ #ifdef BN_R_INVALID_LENGTH
+ {"INVALID_LENGTH", ERR_LIB_BN, BN_R_INVALID_LENGTH},
+ #else
+ {"INVALID_LENGTH", 3, 106},
+ #endif
+ #ifdef BN_R_INVALID_RANGE
+ {"INVALID_RANGE", ERR_LIB_BN, BN_R_INVALID_RANGE},
+ #else
+ {"INVALID_RANGE", 3, 115},
+ #endif
+ #ifdef BN_R_INVALID_SHIFT
+ {"INVALID_SHIFT", ERR_LIB_BN, BN_R_INVALID_SHIFT},
+ #else
+ {"INVALID_SHIFT", 3, 119},
+ #endif
+ #ifdef BN_R_NOT_A_SQUARE
+ {"NOT_A_SQUARE", ERR_LIB_BN, BN_R_NOT_A_SQUARE},
+ #else
+ {"NOT_A_SQUARE", 3, 111},
+ #endif
+ #ifdef BN_R_NOT_INITIALIZED
+ {"NOT_INITIALIZED", ERR_LIB_BN, BN_R_NOT_INITIALIZED},
+ #else
+ {"NOT_INITIALIZED", 3, 107},
+ #endif
+ #ifdef BN_R_NO_INVERSE
+ {"NO_INVERSE", ERR_LIB_BN, BN_R_NO_INVERSE},
+ #else
+ {"NO_INVERSE", 3, 108},
+ #endif
+ #ifdef BN_R_NO_PRIME_CANDIDATE
+ {"NO_PRIME_CANDIDATE", ERR_LIB_BN, BN_R_NO_PRIME_CANDIDATE},
+ #else
+ {"NO_PRIME_CANDIDATE", 3, 121},
+ #endif
+ #ifdef BN_R_NO_SOLUTION
+ {"NO_SOLUTION", ERR_LIB_BN, BN_R_NO_SOLUTION},
+ #else
+ {"NO_SOLUTION", 3, 116},
+ #endif
+ #ifdef BN_R_NO_SUITABLE_DIGEST
+ {"NO_SUITABLE_DIGEST", ERR_LIB_BN, BN_R_NO_SUITABLE_DIGEST},
+ #else
+ {"NO_SUITABLE_DIGEST", 3, 120},
+ #endif
+ #ifdef BN_R_PRIVATE_KEY_TOO_LARGE
+ {"PRIVATE_KEY_TOO_LARGE", ERR_LIB_BN, BN_R_PRIVATE_KEY_TOO_LARGE},
+ #else
+ {"PRIVATE_KEY_TOO_LARGE", 3, 117},
+ #endif
+ #ifdef BN_R_P_IS_NOT_PRIME
+ {"P_IS_NOT_PRIME", ERR_LIB_BN, BN_R_P_IS_NOT_PRIME},
+ #else
+ {"P_IS_NOT_PRIME", 3, 112},
+ #endif
+ #ifdef BN_R_TOO_MANY_ITERATIONS
+ {"TOO_MANY_ITERATIONS", ERR_LIB_BN, BN_R_TOO_MANY_ITERATIONS},
+ #else
+ {"TOO_MANY_ITERATIONS", 3, 113},
+ #endif
+ #ifdef BN_R_TOO_MANY_TEMPORARY_VARIABLES
+ {"TOO_MANY_TEMPORARY_VARIABLES", ERR_LIB_BN, BN_R_TOO_MANY_TEMPORARY_VARIABLES},
+ #else
+ {"TOO_MANY_TEMPORARY_VARIABLES", 3, 109},
+ #endif
+ #ifdef CMP_R_ALGORITHM_NOT_SUPPORTED
+ {"ALGORITHM_NOT_SUPPORTED", ERR_LIB_CMP, CMP_R_ALGORITHM_NOT_SUPPORTED},
+ #else
+ {"ALGORITHM_NOT_SUPPORTED", 58, 139},
+ #endif
+ #ifdef CMP_R_BAD_CHECKAFTER_IN_POLLREP
+ {"BAD_CHECKAFTER_IN_POLLREP", ERR_LIB_CMP, CMP_R_BAD_CHECKAFTER_IN_POLLREP},
+ #else
+ {"BAD_CHECKAFTER_IN_POLLREP", 58, 167},
+ #endif
+ #ifdef CMP_R_BAD_REQUEST_ID
+ {"BAD_REQUEST_ID", ERR_LIB_CMP, CMP_R_BAD_REQUEST_ID},
+ #else
+ {"BAD_REQUEST_ID", 58, 108},
+ #endif
+ #ifdef CMP_R_CERTHASH_UNMATCHED
+ {"CERTHASH_UNMATCHED", ERR_LIB_CMP, CMP_R_CERTHASH_UNMATCHED},
+ #else
+ {"CERTHASH_UNMATCHED", 58, 156},
+ #endif
+ #ifdef CMP_R_CERTID_NOT_FOUND
+ {"CERTID_NOT_FOUND", ERR_LIB_CMP, CMP_R_CERTID_NOT_FOUND},
+ #else
+ {"CERTID_NOT_FOUND", 58, 109},
+ #endif
+ #ifdef CMP_R_CERTIFICATE_NOT_ACCEPTED
+ {"CERTIFICATE_NOT_ACCEPTED", ERR_LIB_CMP, CMP_R_CERTIFICATE_NOT_ACCEPTED},
+ #else
+ {"CERTIFICATE_NOT_ACCEPTED", 58, 169},
+ #endif
+ #ifdef CMP_R_CERTIFICATE_NOT_FOUND
+ {"CERTIFICATE_NOT_FOUND", ERR_LIB_CMP, CMP_R_CERTIFICATE_NOT_FOUND},
+ #else
+ {"CERTIFICATE_NOT_FOUND", 58, 112},
+ #endif
+ #ifdef CMP_R_CERTREQMSG_NOT_FOUND
+ {"CERTREQMSG_NOT_FOUND", ERR_LIB_CMP, CMP_R_CERTREQMSG_NOT_FOUND},
+ #else
+ {"CERTREQMSG_NOT_FOUND", 58, 157},
+ #endif
+ #ifdef CMP_R_CERTRESPONSE_NOT_FOUND
+ {"CERTRESPONSE_NOT_FOUND", ERR_LIB_CMP, CMP_R_CERTRESPONSE_NOT_FOUND},
+ #else
+ {"CERTRESPONSE_NOT_FOUND", 58, 113},
+ #endif
+ #ifdef CMP_R_CERT_AND_KEY_DO_NOT_MATCH
+ {"CERT_AND_KEY_DO_NOT_MATCH", ERR_LIB_CMP, CMP_R_CERT_AND_KEY_DO_NOT_MATCH},
+ #else
+ {"CERT_AND_KEY_DO_NOT_MATCH", 58, 114},
+ #endif
+ #ifdef CMP_R_CHECKAFTER_OUT_OF_RANGE
+ {"CHECKAFTER_OUT_OF_RANGE", ERR_LIB_CMP, CMP_R_CHECKAFTER_OUT_OF_RANGE},
+ #else
+ {"CHECKAFTER_OUT_OF_RANGE", 58, 181},
+ #endif
+ #ifdef CMP_R_ENCOUNTERED_KEYUPDATEWARNING
+ {"ENCOUNTERED_KEYUPDATEWARNING", ERR_LIB_CMP, CMP_R_ENCOUNTERED_KEYUPDATEWARNING},
+ #else
+ {"ENCOUNTERED_KEYUPDATEWARNING", 58, 176},
+ #endif
+ #ifdef CMP_R_ENCOUNTERED_WAITING
+ {"ENCOUNTERED_WAITING", ERR_LIB_CMP, CMP_R_ENCOUNTERED_WAITING},
+ #else
+ {"ENCOUNTERED_WAITING", 58, 162},
+ #endif
+ #ifdef CMP_R_ERROR_CALCULATING_PROTECTION
+ {"ERROR_CALCULATING_PROTECTION", ERR_LIB_CMP, CMP_R_ERROR_CALCULATING_PROTECTION},
+ #else
+ {"ERROR_CALCULATING_PROTECTION", 58, 115},
+ #endif
+ #ifdef CMP_R_ERROR_CREATING_CERTCONF
+ {"ERROR_CREATING_CERTCONF", ERR_LIB_CMP, CMP_R_ERROR_CREATING_CERTCONF},
+ #else
+ {"ERROR_CREATING_CERTCONF", 58, 116},
+ #endif
+ #ifdef CMP_R_ERROR_CREATING_CERTREP
+ {"ERROR_CREATING_CERTREP", ERR_LIB_CMP, CMP_R_ERROR_CREATING_CERTREP},
+ #else
+ {"ERROR_CREATING_CERTREP", 58, 117},
+ #endif
+ #ifdef CMP_R_ERROR_CREATING_CERTREQ
+ {"ERROR_CREATING_CERTREQ", ERR_LIB_CMP, CMP_R_ERROR_CREATING_CERTREQ},
+ #else
+ {"ERROR_CREATING_CERTREQ", 58, 163},
+ #endif
+ #ifdef CMP_R_ERROR_CREATING_ERROR
+ {"ERROR_CREATING_ERROR", ERR_LIB_CMP, CMP_R_ERROR_CREATING_ERROR},
+ #else
+ {"ERROR_CREATING_ERROR", 58, 118},
+ #endif
+ #ifdef CMP_R_ERROR_CREATING_GENM
+ {"ERROR_CREATING_GENM", ERR_LIB_CMP, CMP_R_ERROR_CREATING_GENM},
+ #else
+ {"ERROR_CREATING_GENM", 58, 119},
+ #endif
+ #ifdef CMP_R_ERROR_CREATING_GENP
+ {"ERROR_CREATING_GENP", ERR_LIB_CMP, CMP_R_ERROR_CREATING_GENP},
+ #else
+ {"ERROR_CREATING_GENP", 58, 120},
+ #endif
+ #ifdef CMP_R_ERROR_CREATING_PKICONF
+ {"ERROR_CREATING_PKICONF", ERR_LIB_CMP, CMP_R_ERROR_CREATING_PKICONF},
+ #else
+ {"ERROR_CREATING_PKICONF", 58, 122},
+ #endif
+ #ifdef CMP_R_ERROR_CREATING_POLLREP
+ {"ERROR_CREATING_POLLREP", ERR_LIB_CMP, CMP_R_ERROR_CREATING_POLLREP},
+ #else
+ {"ERROR_CREATING_POLLREP", 58, 123},
+ #endif
+ #ifdef CMP_R_ERROR_CREATING_POLLREQ
+ {"ERROR_CREATING_POLLREQ", ERR_LIB_CMP, CMP_R_ERROR_CREATING_POLLREQ},
+ #else
+ {"ERROR_CREATING_POLLREQ", 58, 124},
+ #endif
+ #ifdef CMP_R_ERROR_CREATING_RP
+ {"ERROR_CREATING_RP", ERR_LIB_CMP, CMP_R_ERROR_CREATING_RP},
+ #else
+ {"ERROR_CREATING_RP", 58, 125},
+ #endif
+ #ifdef CMP_R_ERROR_CREATING_RR
+ {"ERROR_CREATING_RR", ERR_LIB_CMP, CMP_R_ERROR_CREATING_RR},
+ #else
+ {"ERROR_CREATING_RR", 58, 126},
+ #endif
+ #ifdef CMP_R_ERROR_PARSING_PKISTATUS
+ {"ERROR_PARSING_PKISTATUS", ERR_LIB_CMP, CMP_R_ERROR_PARSING_PKISTATUS},
+ #else
+ {"ERROR_PARSING_PKISTATUS", 58, 107},
+ #endif
+ #ifdef CMP_R_ERROR_PROCESSING_MESSAGE
+ {"ERROR_PROCESSING_MESSAGE", ERR_LIB_CMP, CMP_R_ERROR_PROCESSING_MESSAGE},
+ #else
+ {"ERROR_PROCESSING_MESSAGE", 58, 158},
+ #endif
+ #ifdef CMP_R_ERROR_PROTECTING_MESSAGE
+ {"ERROR_PROTECTING_MESSAGE", ERR_LIB_CMP, CMP_R_ERROR_PROTECTING_MESSAGE},
+ #else
+ {"ERROR_PROTECTING_MESSAGE", 58, 127},
+ #endif
+ #ifdef CMP_R_ERROR_SETTING_CERTHASH
+ {"ERROR_SETTING_CERTHASH", ERR_LIB_CMP, CMP_R_ERROR_SETTING_CERTHASH},
+ #else
+ {"ERROR_SETTING_CERTHASH", 58, 128},
+ #endif
+ #ifdef CMP_R_ERROR_UNEXPECTED_CERTCONF
+ {"ERROR_UNEXPECTED_CERTCONF", ERR_LIB_CMP, CMP_R_ERROR_UNEXPECTED_CERTCONF},
+ #else
+ {"ERROR_UNEXPECTED_CERTCONF", 58, 160},
+ #endif
+ #ifdef CMP_R_ERROR_VALIDATING_PROTECTION
+ {"ERROR_VALIDATING_PROTECTION", ERR_LIB_CMP, CMP_R_ERROR_VALIDATING_PROTECTION},
+ #else
+ {"ERROR_VALIDATING_PROTECTION", 58, 140},
+ #endif
+ #ifdef CMP_R_ERROR_VALIDATING_SIGNATURE
+ {"ERROR_VALIDATING_SIGNATURE", ERR_LIB_CMP, CMP_R_ERROR_VALIDATING_SIGNATURE},
+ #else
+ {"ERROR_VALIDATING_SIGNATURE", 58, 171},
+ #endif
+ #ifdef CMP_R_FAILED_BUILDING_OWN_CHAIN
+ {"FAILED_BUILDING_OWN_CHAIN", ERR_LIB_CMP, CMP_R_FAILED_BUILDING_OWN_CHAIN},
+ #else
+ {"FAILED_BUILDING_OWN_CHAIN", 58, 164},
+ #endif
+ #ifdef CMP_R_FAILED_EXTRACTING_PUBKEY
+ {"FAILED_EXTRACTING_PUBKEY", ERR_LIB_CMP, CMP_R_FAILED_EXTRACTING_PUBKEY},
+ #else
+ {"FAILED_EXTRACTING_PUBKEY", 58, 141},
+ #endif
+ #ifdef CMP_R_FAILURE_OBTAINING_RANDOM
+ {"FAILURE_OBTAINING_RANDOM", ERR_LIB_CMP, CMP_R_FAILURE_OBTAINING_RANDOM},
+ #else
+ {"FAILURE_OBTAINING_RANDOM", 58, 110},
+ #endif
+ #ifdef CMP_R_FAIL_INFO_OUT_OF_RANGE
+ {"FAIL_INFO_OUT_OF_RANGE", ERR_LIB_CMP, CMP_R_FAIL_INFO_OUT_OF_RANGE},
+ #else
+ {"FAIL_INFO_OUT_OF_RANGE", 58, 129},
+ #endif
+ #ifdef CMP_R_INVALID_ARGS
+ {"INVALID_ARGS", ERR_LIB_CMP, CMP_R_INVALID_ARGS},
+ #else
+ {"INVALID_ARGS", 58, 100},
+ #endif
+ #ifdef CMP_R_INVALID_OPTION
+ {"INVALID_OPTION", ERR_LIB_CMP, CMP_R_INVALID_OPTION},
+ #else
+ {"INVALID_OPTION", 58, 174},
+ #endif
+ #ifdef CMP_R_MISSING_CERTID
+ {"MISSING_CERTID", ERR_LIB_CMP, CMP_R_MISSING_CERTID},
+ #else
+ {"MISSING_CERTID", 58, 165},
+ #endif
+ #ifdef CMP_R_MISSING_KEY_INPUT_FOR_CREATING_PROTECTION
+ {"MISSING_KEY_INPUT_FOR_CREATING_PROTECTION", ERR_LIB_CMP, CMP_R_MISSING_KEY_INPUT_FOR_CREATING_PROTECTION},
+ #else
+ {"MISSING_KEY_INPUT_FOR_CREATING_PROTECTION", 58, 130},
+ #endif
+ #ifdef CMP_R_MISSING_KEY_USAGE_DIGITALSIGNATURE
+ {"MISSING_KEY_USAGE_DIGITALSIGNATURE", ERR_LIB_CMP, CMP_R_MISSING_KEY_USAGE_DIGITALSIGNATURE},
+ #else
+ {"MISSING_KEY_USAGE_DIGITALSIGNATURE", 58, 142},
+ #endif
+ #ifdef CMP_R_MISSING_P10CSR
+ {"MISSING_P10CSR", ERR_LIB_CMP, CMP_R_MISSING_P10CSR},
+ #else
+ {"MISSING_P10CSR", 58, 121},
+ #endif
+ #ifdef CMP_R_MISSING_PBM_SECRET
+ {"MISSING_PBM_SECRET", ERR_LIB_CMP, CMP_R_MISSING_PBM_SECRET},
+ #else
+ {"MISSING_PBM_SECRET", 58, 166},
+ #endif
+ #ifdef CMP_R_MISSING_PRIVATE_KEY
+ {"MISSING_PRIVATE_KEY", ERR_LIB_CMP, CMP_R_MISSING_PRIVATE_KEY},
+ #else
+ {"MISSING_PRIVATE_KEY", 58, 131},
+ #endif
+ #ifdef CMP_R_MISSING_PRIVATE_KEY_FOR_POPO
+ {"MISSING_PRIVATE_KEY_FOR_POPO", ERR_LIB_CMP, CMP_R_MISSING_PRIVATE_KEY_FOR_POPO},
+ #else
+ {"MISSING_PRIVATE_KEY_FOR_POPO", 58, 190},
+ #endif
+ #ifdef CMP_R_MISSING_PROTECTION
+ {"MISSING_PROTECTION", ERR_LIB_CMP, CMP_R_MISSING_PROTECTION},
+ #else
+ {"MISSING_PROTECTION", 58, 143},
+ #endif
+ #ifdef CMP_R_MISSING_PUBLIC_KEY
+ {"MISSING_PUBLIC_KEY", ERR_LIB_CMP, CMP_R_MISSING_PUBLIC_KEY},
+ #else
+ {"MISSING_PUBLIC_KEY", 58, 183},
+ #endif
+ #ifdef CMP_R_MISSING_REFERENCE_CERT
+ {"MISSING_REFERENCE_CERT", ERR_LIB_CMP, CMP_R_MISSING_REFERENCE_CERT},
+ #else
+ {"MISSING_REFERENCE_CERT", 58, 168},
+ #endif
+ #ifdef CMP_R_MISSING_SECRET
+ {"MISSING_SECRET", ERR_LIB_CMP, CMP_R_MISSING_SECRET},
+ #else
+ {"MISSING_SECRET", 58, 178},
+ #endif
+ #ifdef CMP_R_MISSING_SENDER_IDENTIFICATION
+ {"MISSING_SENDER_IDENTIFICATION", ERR_LIB_CMP, CMP_R_MISSING_SENDER_IDENTIFICATION},
+ #else
+ {"MISSING_SENDER_IDENTIFICATION", 58, 111},
+ #endif
+ #ifdef CMP_R_MISSING_TRUST_ANCHOR
+ {"MISSING_TRUST_ANCHOR", ERR_LIB_CMP, CMP_R_MISSING_TRUST_ANCHOR},
+ #else
+ {"MISSING_TRUST_ANCHOR", 58, 179},
+ #endif
+ #ifdef CMP_R_MISSING_TRUST_STORE
+ {"MISSING_TRUST_STORE", ERR_LIB_CMP, CMP_R_MISSING_TRUST_STORE},
+ #else
+ {"MISSING_TRUST_STORE", 58, 144},
+ #endif
+ #ifdef CMP_R_MULTIPLE_REQUESTS_NOT_SUPPORTED
+ {"MULTIPLE_REQUESTS_NOT_SUPPORTED", ERR_LIB_CMP, CMP_R_MULTIPLE_REQUESTS_NOT_SUPPORTED},
+ #else
+ {"MULTIPLE_REQUESTS_NOT_SUPPORTED", 58, 161},
+ #endif
+ #ifdef CMP_R_MULTIPLE_RESPONSES_NOT_SUPPORTED
+ {"MULTIPLE_RESPONSES_NOT_SUPPORTED", ERR_LIB_CMP, CMP_R_MULTIPLE_RESPONSES_NOT_SUPPORTED},
+ #else
+ {"MULTIPLE_RESPONSES_NOT_SUPPORTED", 58, 170},
+ #endif
+ #ifdef CMP_R_MULTIPLE_SAN_SOURCES
+ {"MULTIPLE_SAN_SOURCES", ERR_LIB_CMP, CMP_R_MULTIPLE_SAN_SOURCES},
+ #else
+ {"MULTIPLE_SAN_SOURCES", 58, 102},
+ #endif
+ #ifdef CMP_R_NO_STDIO
+ {"NO_STDIO", ERR_LIB_CMP, CMP_R_NO_STDIO},
+ #else
+ {"NO_STDIO", 58, 194},
+ #endif
+ #ifdef CMP_R_NO_SUITABLE_SENDER_CERT
+ {"NO_SUITABLE_SENDER_CERT", ERR_LIB_CMP, CMP_R_NO_SUITABLE_SENDER_CERT},
+ #else
+ {"NO_SUITABLE_SENDER_CERT", 58, 145},
+ #endif
+ #ifdef CMP_R_NULL_ARGUMENT
+ {"NULL_ARGUMENT", ERR_LIB_CMP, CMP_R_NULL_ARGUMENT},
+ #else
+ {"NULL_ARGUMENT", 58, 103},
+ #endif
+ #ifdef CMP_R_PKIBODY_ERROR
+ {"PKIBODY_ERROR", ERR_LIB_CMP, CMP_R_PKIBODY_ERROR},
+ #else
+ {"PKIBODY_ERROR", 58, 146},
+ #endif
+ #ifdef CMP_R_PKISTATUSINFO_NOT_FOUND
+ {"PKISTATUSINFO_NOT_FOUND", ERR_LIB_CMP, CMP_R_PKISTATUSINFO_NOT_FOUND},
+ #else
+ {"PKISTATUSINFO_NOT_FOUND", 58, 132},
+ #endif
+ #ifdef CMP_R_POLLING_FAILED
+ {"POLLING_FAILED", ERR_LIB_CMP, CMP_R_POLLING_FAILED},
+ #else
+ {"POLLING_FAILED", 58, 172},
+ #endif
+ #ifdef CMP_R_POTENTIALLY_INVALID_CERTIFICATE
+ {"POTENTIALLY_INVALID_CERTIFICATE", ERR_LIB_CMP, CMP_R_POTENTIALLY_INVALID_CERTIFICATE},
+ #else
+ {"POTENTIALLY_INVALID_CERTIFICATE", 58, 147},
+ #endif
+ #ifdef CMP_R_RECEIVED_ERROR
+ {"RECEIVED_ERROR", ERR_LIB_CMP, CMP_R_RECEIVED_ERROR},
+ #else
+ {"RECEIVED_ERROR", 58, 180},
+ #endif
+ #ifdef CMP_R_RECIPNONCE_UNMATCHED
+ {"RECIPNONCE_UNMATCHED", ERR_LIB_CMP, CMP_R_RECIPNONCE_UNMATCHED},
+ #else
+ {"RECIPNONCE_UNMATCHED", 58, 148},
+ #endif
+ #ifdef CMP_R_REQUEST_NOT_ACCEPTED
+ {"REQUEST_NOT_ACCEPTED", ERR_LIB_CMP, CMP_R_REQUEST_NOT_ACCEPTED},
+ #else
+ {"REQUEST_NOT_ACCEPTED", 58, 149},
+ #endif
+ #ifdef CMP_R_REQUEST_REJECTED_BY_SERVER
+ {"REQUEST_REJECTED_BY_SERVER", ERR_LIB_CMP, CMP_R_REQUEST_REJECTED_BY_SERVER},
+ #else
+ {"REQUEST_REJECTED_BY_SERVER", 58, 182},
+ #endif
+ #ifdef CMP_R_SENDER_GENERALNAME_TYPE_NOT_SUPPORTED
+ {"SENDER_GENERALNAME_TYPE_NOT_SUPPORTED", ERR_LIB_CMP, CMP_R_SENDER_GENERALNAME_TYPE_NOT_SUPPORTED},
+ #else
+ {"SENDER_GENERALNAME_TYPE_NOT_SUPPORTED", 58, 150},
+ #endif
+ #ifdef CMP_R_SRVCERT_DOES_NOT_VALIDATE_MSG
+ {"SRVCERT_DOES_NOT_VALIDATE_MSG", ERR_LIB_CMP, CMP_R_SRVCERT_DOES_NOT_VALIDATE_MSG},
+ #else
+ {"SRVCERT_DOES_NOT_VALIDATE_MSG", 58, 151},
+ #endif
+ #ifdef CMP_R_TOTAL_TIMEOUT
+ {"TOTAL_TIMEOUT", ERR_LIB_CMP, CMP_R_TOTAL_TIMEOUT},
+ #else
+ {"TOTAL_TIMEOUT", 58, 184},
+ #endif
+ #ifdef CMP_R_TRANSACTIONID_UNMATCHED
+ {"TRANSACTIONID_UNMATCHED", ERR_LIB_CMP, CMP_R_TRANSACTIONID_UNMATCHED},
+ #else
+ {"TRANSACTIONID_UNMATCHED", 58, 152},
+ #endif
+ #ifdef CMP_R_TRANSFER_ERROR
+ {"TRANSFER_ERROR", ERR_LIB_CMP, CMP_R_TRANSFER_ERROR},
+ #else
+ {"TRANSFER_ERROR", 58, 159},
+ #endif
+ #ifdef CMP_R_UNEXPECTED_PKIBODY
+ {"UNEXPECTED_PKIBODY", ERR_LIB_CMP, CMP_R_UNEXPECTED_PKIBODY},
+ #else
+ {"UNEXPECTED_PKIBODY", 58, 133},
+ #endif
+ #ifdef CMP_R_UNEXPECTED_PKISTATUS
+ {"UNEXPECTED_PKISTATUS", ERR_LIB_CMP, CMP_R_UNEXPECTED_PKISTATUS},
+ #else
+ {"UNEXPECTED_PKISTATUS", 58, 185},
+ #endif
+ #ifdef CMP_R_UNEXPECTED_PVNO
+ {"UNEXPECTED_PVNO", ERR_LIB_CMP, CMP_R_UNEXPECTED_PVNO},
+ #else
+ {"UNEXPECTED_PVNO", 58, 153},
+ #endif
+ #ifdef CMP_R_UNKNOWN_ALGORITHM_ID
+ {"UNKNOWN_ALGORITHM_ID", ERR_LIB_CMP, CMP_R_UNKNOWN_ALGORITHM_ID},
+ #else
+ {"UNKNOWN_ALGORITHM_ID", 58, 134},
+ #endif
+ #ifdef CMP_R_UNKNOWN_CERT_TYPE
+ {"UNKNOWN_CERT_TYPE", ERR_LIB_CMP, CMP_R_UNKNOWN_CERT_TYPE},
+ #else
+ {"UNKNOWN_CERT_TYPE", 58, 135},
+ #endif
+ #ifdef CMP_R_UNKNOWN_PKISTATUS
+ {"UNKNOWN_PKISTATUS", ERR_LIB_CMP, CMP_R_UNKNOWN_PKISTATUS},
+ #else
+ {"UNKNOWN_PKISTATUS", 58, 186},
+ #endif
+ #ifdef CMP_R_UNSUPPORTED_ALGORITHM
+ {"UNSUPPORTED_ALGORITHM", ERR_LIB_CMP, CMP_R_UNSUPPORTED_ALGORITHM},
+ #else
+ {"UNSUPPORTED_ALGORITHM", 58, 136},
+ #endif
+ #ifdef CMP_R_UNSUPPORTED_KEY_TYPE
+ {"UNSUPPORTED_KEY_TYPE", ERR_LIB_CMP, CMP_R_UNSUPPORTED_KEY_TYPE},
+ #else
+ {"UNSUPPORTED_KEY_TYPE", 58, 137},
+ #endif
+ #ifdef CMP_R_UNSUPPORTED_PROTECTION_ALG_DHBASEDMAC
+ {"UNSUPPORTED_PROTECTION_ALG_DHBASEDMAC", ERR_LIB_CMP, CMP_R_UNSUPPORTED_PROTECTION_ALG_DHBASEDMAC},
+ #else
+ {"UNSUPPORTED_PROTECTION_ALG_DHBASEDMAC", 58, 154},
+ #endif
+ #ifdef CMP_R_VALUE_TOO_LARGE
+ {"VALUE_TOO_LARGE", ERR_LIB_CMP, CMP_R_VALUE_TOO_LARGE},
+ #else
+ {"VALUE_TOO_LARGE", 58, 175},
+ #endif
+ #ifdef CMP_R_VALUE_TOO_SMALL
+ {"VALUE_TOO_SMALL", ERR_LIB_CMP, CMP_R_VALUE_TOO_SMALL},
+ #else
+ {"VALUE_TOO_SMALL", 58, 177},
+ #endif
+ #ifdef CMP_R_WRONG_ALGORITHM_OID
+ {"WRONG_ALGORITHM_OID", ERR_LIB_CMP, CMP_R_WRONG_ALGORITHM_OID},
+ #else
+ {"WRONG_ALGORITHM_OID", 58, 138},
+ #endif
+ #ifdef CMP_R_WRONG_CERTID
+ {"WRONG_CERTID", ERR_LIB_CMP, CMP_R_WRONG_CERTID},
+ #else
+ {"WRONG_CERTID", 58, 189},
+ #endif
+ #ifdef CMP_R_WRONG_CERTID_IN_RP
+ {"WRONG_CERTID_IN_RP", ERR_LIB_CMP, CMP_R_WRONG_CERTID_IN_RP},
+ #else
+ {"WRONG_CERTID_IN_RP", 58, 187},
+ #endif
+ #ifdef CMP_R_WRONG_PBM_VALUE
+ {"WRONG_PBM_VALUE", ERR_LIB_CMP, CMP_R_WRONG_PBM_VALUE},
+ #else
+ {"WRONG_PBM_VALUE", 58, 155},
+ #endif
+ #ifdef CMP_R_WRONG_RP_COMPONENT_COUNT
+ {"WRONG_RP_COMPONENT_COUNT", ERR_LIB_CMP, CMP_R_WRONG_RP_COMPONENT_COUNT},
+ #else
+ {"WRONG_RP_COMPONENT_COUNT", 58, 188},
+ #endif
+ #ifdef CMP_R_WRONG_SERIAL_IN_RP
+ {"WRONG_SERIAL_IN_RP", ERR_LIB_CMP, CMP_R_WRONG_SERIAL_IN_RP},
+ #else
+ {"WRONG_SERIAL_IN_RP", 58, 173},
+ #endif
+ #ifdef CMS_R_ADD_SIGNER_ERROR
+ {"ADD_SIGNER_ERROR", ERR_LIB_CMS, CMS_R_ADD_SIGNER_ERROR},
+ #else
+ {"ADD_SIGNER_ERROR", 46, 99},
+ #endif
+ #ifdef CMS_R_ATTRIBUTE_ERROR
+ {"ATTRIBUTE_ERROR", ERR_LIB_CMS, CMS_R_ATTRIBUTE_ERROR},
+ #else
+ {"ATTRIBUTE_ERROR", 46, 161},
+ #endif
+ #ifdef CMS_R_CERTIFICATE_ALREADY_PRESENT
+ {"CERTIFICATE_ALREADY_PRESENT", ERR_LIB_CMS, CMS_R_CERTIFICATE_ALREADY_PRESENT},
+ #else
+ {"CERTIFICATE_ALREADY_PRESENT", 46, 175},
+ #endif
+ #ifdef CMS_R_CERTIFICATE_HAS_NO_KEYID
+ {"CERTIFICATE_HAS_NO_KEYID", ERR_LIB_CMS, CMS_R_CERTIFICATE_HAS_NO_KEYID},
+ #else
+ {"CERTIFICATE_HAS_NO_KEYID", 46, 160},
+ #endif
+ #ifdef CMS_R_CERTIFICATE_VERIFY_ERROR
+ {"CERTIFICATE_VERIFY_ERROR", ERR_LIB_CMS, CMS_R_CERTIFICATE_VERIFY_ERROR},
+ #else
+ {"CERTIFICATE_VERIFY_ERROR", 46, 100},
+ #endif
+ #ifdef CMS_R_CIPHER_AEAD_SET_TAG_ERROR
+ {"CIPHER_AEAD_SET_TAG_ERROR", ERR_LIB_CMS, CMS_R_CIPHER_AEAD_SET_TAG_ERROR},
+ #else
+ {"CIPHER_AEAD_SET_TAG_ERROR", 46, 184},
+ #endif
+ #ifdef CMS_R_CIPHER_GET_TAG
+ {"CIPHER_GET_TAG", ERR_LIB_CMS, CMS_R_CIPHER_GET_TAG},
+ #else
+ {"CIPHER_GET_TAG", 46, 185},
+ #endif
+ #ifdef CMS_R_CIPHER_INITIALISATION_ERROR
+ {"CIPHER_INITIALISATION_ERROR", ERR_LIB_CMS, CMS_R_CIPHER_INITIALISATION_ERROR},
+ #else
+ {"CIPHER_INITIALISATION_ERROR", 46, 101},
+ #endif
+ #ifdef CMS_R_CIPHER_PARAMETER_INITIALISATION_ERROR
+ {"CIPHER_PARAMETER_INITIALISATION_ERROR", ERR_LIB_CMS, CMS_R_CIPHER_PARAMETER_INITIALISATION_ERROR},
+ #else
+ {"CIPHER_PARAMETER_INITIALISATION_ERROR", 46, 102},
+ #endif
+ #ifdef CMS_R_CMS_DATAFINAL_ERROR
+ {"CMS_DATAFINAL_ERROR", ERR_LIB_CMS, CMS_R_CMS_DATAFINAL_ERROR},
+ #else
+ {"CMS_DATAFINAL_ERROR", 46, 103},
+ #endif
+ #ifdef CMS_R_CMS_LIB
+ {"CMS_LIB", ERR_LIB_CMS, CMS_R_CMS_LIB},
+ #else
+ {"CMS_LIB", 46, 104},
+ #endif
+ #ifdef CMS_R_CONTENTIDENTIFIER_MISMATCH
+ {"CONTENTIDENTIFIER_MISMATCH", ERR_LIB_CMS, CMS_R_CONTENTIDENTIFIER_MISMATCH},
+ #else
+ {"CONTENTIDENTIFIER_MISMATCH", 46, 170},
+ #endif
+ #ifdef CMS_R_CONTENT_NOT_FOUND
+ {"CONTENT_NOT_FOUND", ERR_LIB_CMS, CMS_R_CONTENT_NOT_FOUND},
+ #else
+ {"CONTENT_NOT_FOUND", 46, 105},
+ #endif
+ #ifdef CMS_R_CONTENT_TYPE_MISMATCH
+ {"CONTENT_TYPE_MISMATCH", ERR_LIB_CMS, CMS_R_CONTENT_TYPE_MISMATCH},
+ #else
+ {"CONTENT_TYPE_MISMATCH", 46, 171},
+ #endif
+ #ifdef CMS_R_CONTENT_TYPE_NOT_COMPRESSED_DATA
+ {"CONTENT_TYPE_NOT_COMPRESSED_DATA", ERR_LIB_CMS, CMS_R_CONTENT_TYPE_NOT_COMPRESSED_DATA},
+ #else
+ {"CONTENT_TYPE_NOT_COMPRESSED_DATA", 46, 106},
+ #endif
+ #ifdef CMS_R_CONTENT_TYPE_NOT_ENVELOPED_DATA
+ {"CONTENT_TYPE_NOT_ENVELOPED_DATA", ERR_LIB_CMS, CMS_R_CONTENT_TYPE_NOT_ENVELOPED_DATA},
+ #else
+ {"CONTENT_TYPE_NOT_ENVELOPED_DATA", 46, 107},
+ #endif
+ #ifdef CMS_R_CONTENT_TYPE_NOT_SIGNED_DATA
+ {"CONTENT_TYPE_NOT_SIGNED_DATA", ERR_LIB_CMS, CMS_R_CONTENT_TYPE_NOT_SIGNED_DATA},
+ #else
+ {"CONTENT_TYPE_NOT_SIGNED_DATA", 46, 108},
+ #endif
+ #ifdef CMS_R_CONTENT_VERIFY_ERROR
+ {"CONTENT_VERIFY_ERROR", ERR_LIB_CMS, CMS_R_CONTENT_VERIFY_ERROR},
+ #else
+ {"CONTENT_VERIFY_ERROR", 46, 109},
+ #endif
+ #ifdef CMS_R_CTRL_ERROR
+ {"CTRL_ERROR", ERR_LIB_CMS, CMS_R_CTRL_ERROR},
+ #else
+ {"CTRL_ERROR", 46, 110},
+ #endif
+ #ifdef CMS_R_CTRL_FAILURE
+ {"CTRL_FAILURE", ERR_LIB_CMS, CMS_R_CTRL_FAILURE},
+ #else
+ {"CTRL_FAILURE", 46, 111},
+ #endif
+ #ifdef CMS_R_DECODE_ERROR
+ {"DECODE_ERROR", ERR_LIB_CMS, CMS_R_DECODE_ERROR},
+ #else
+ {"DECODE_ERROR", 46, 187},
+ #endif
+ #ifdef CMS_R_DECRYPT_ERROR
+ {"DECRYPT_ERROR", ERR_LIB_CMS, CMS_R_DECRYPT_ERROR},
+ #else
+ {"DECRYPT_ERROR", 46, 112},
+ #endif
+ #ifdef CMS_R_ERROR_GETTING_PUBLIC_KEY
+ {"ERROR_GETTING_PUBLIC_KEY", ERR_LIB_CMS, CMS_R_ERROR_GETTING_PUBLIC_KEY},
+ #else
+ {"ERROR_GETTING_PUBLIC_KEY", 46, 113},
+ #endif
+ #ifdef CMS_R_ERROR_READING_MESSAGEDIGEST_ATTRIBUTE
+ {"ERROR_READING_MESSAGEDIGEST_ATTRIBUTE", ERR_LIB_CMS, CMS_R_ERROR_READING_MESSAGEDIGEST_ATTRIBUTE},
+ #else
+ {"ERROR_READING_MESSAGEDIGEST_ATTRIBUTE", 46, 114},
+ #endif
+ #ifdef CMS_R_ERROR_SETTING_KEY
+ {"ERROR_SETTING_KEY", ERR_LIB_CMS, CMS_R_ERROR_SETTING_KEY},
+ #else
+ {"ERROR_SETTING_KEY", 46, 115},
+ #endif
+ #ifdef CMS_R_ERROR_SETTING_RECIPIENTINFO
+ {"ERROR_SETTING_RECIPIENTINFO", ERR_LIB_CMS, CMS_R_ERROR_SETTING_RECIPIENTINFO},
+ #else
+ {"ERROR_SETTING_RECIPIENTINFO", 46, 116},
+ #endif
+ #ifdef CMS_R_ESS_SIGNING_CERTID_MISMATCH_ERROR
+ {"ESS_SIGNING_CERTID_MISMATCH_ERROR", ERR_LIB_CMS, CMS_R_ESS_SIGNING_CERTID_MISMATCH_ERROR},
+ #else
+ {"ESS_SIGNING_CERTID_MISMATCH_ERROR", 46, 183},
+ #endif
+ #ifdef CMS_R_INVALID_ENCRYPTED_KEY_LENGTH
+ {"INVALID_ENCRYPTED_KEY_LENGTH", ERR_LIB_CMS, CMS_R_INVALID_ENCRYPTED_KEY_LENGTH},
+ #else
+ {"INVALID_ENCRYPTED_KEY_LENGTH", 46, 117},
+ #endif
+ #ifdef CMS_R_INVALID_KEY_ENCRYPTION_PARAMETER
+ {"INVALID_KEY_ENCRYPTION_PARAMETER", ERR_LIB_CMS, CMS_R_INVALID_KEY_ENCRYPTION_PARAMETER},
+ #else
+ {"INVALID_KEY_ENCRYPTION_PARAMETER", 46, 176},
+ #endif
+ #ifdef CMS_R_INVALID_KEY_LENGTH
+ {"INVALID_KEY_LENGTH", ERR_LIB_CMS, CMS_R_INVALID_KEY_LENGTH},
+ #else
+ {"INVALID_KEY_LENGTH", 46, 118},
+ #endif
+ #ifdef CMS_R_INVALID_LABEL
+ {"INVALID_LABEL", ERR_LIB_CMS, CMS_R_INVALID_LABEL},
+ #else
+ {"INVALID_LABEL", 46, 190},
+ #endif
+ #ifdef CMS_R_INVALID_OAEP_PARAMETERS
+ {"INVALID_OAEP_PARAMETERS", ERR_LIB_CMS, CMS_R_INVALID_OAEP_PARAMETERS},
+ #else
+ {"INVALID_OAEP_PARAMETERS", 46, 191},
+ #endif
+ #ifdef CMS_R_KDF_PARAMETER_ERROR
+ {"KDF_PARAMETER_ERROR", ERR_LIB_CMS, CMS_R_KDF_PARAMETER_ERROR},
+ #else
+ {"KDF_PARAMETER_ERROR", 46, 186},
+ #endif
+ #ifdef CMS_R_MD_BIO_INIT_ERROR
+ {"MD_BIO_INIT_ERROR", ERR_LIB_CMS, CMS_R_MD_BIO_INIT_ERROR},
+ #else
+ {"MD_BIO_INIT_ERROR", 46, 119},
+ #endif
+ #ifdef CMS_R_MESSAGEDIGEST_ATTRIBUTE_WRONG_LENGTH
+ {"MESSAGEDIGEST_ATTRIBUTE_WRONG_LENGTH", ERR_LIB_CMS, CMS_R_MESSAGEDIGEST_ATTRIBUTE_WRONG_LENGTH},
+ #else
+ {"MESSAGEDIGEST_ATTRIBUTE_WRONG_LENGTH", 46, 120},
+ #endif
+ #ifdef CMS_R_MESSAGEDIGEST_WRONG_LENGTH
+ {"MESSAGEDIGEST_WRONG_LENGTH", ERR_LIB_CMS, CMS_R_MESSAGEDIGEST_WRONG_LENGTH},
+ #else
+ {"MESSAGEDIGEST_WRONG_LENGTH", 46, 121},
+ #endif
+ #ifdef CMS_R_MSGSIGDIGEST_ERROR
+ {"MSGSIGDIGEST_ERROR", ERR_LIB_CMS, CMS_R_MSGSIGDIGEST_ERROR},
+ #else
+ {"MSGSIGDIGEST_ERROR", 46, 172},
+ #endif
+ #ifdef CMS_R_MSGSIGDIGEST_VERIFICATION_FAILURE
+ {"MSGSIGDIGEST_VERIFICATION_FAILURE", ERR_LIB_CMS, CMS_R_MSGSIGDIGEST_VERIFICATION_FAILURE},
+ #else
+ {"MSGSIGDIGEST_VERIFICATION_FAILURE", 46, 162},
+ #endif
+ #ifdef CMS_R_MSGSIGDIGEST_WRONG_LENGTH
+ {"MSGSIGDIGEST_WRONG_LENGTH", ERR_LIB_CMS, CMS_R_MSGSIGDIGEST_WRONG_LENGTH},
+ #else
+ {"MSGSIGDIGEST_WRONG_LENGTH", 46, 163},
+ #endif
+ #ifdef CMS_R_NEED_ONE_SIGNER
+ {"NEED_ONE_SIGNER", ERR_LIB_CMS, CMS_R_NEED_ONE_SIGNER},
+ #else
+ {"NEED_ONE_SIGNER", 46, 164},
+ #endif
+ #ifdef CMS_R_NOT_A_SIGNED_RECEIPT
+ {"NOT_A_SIGNED_RECEIPT", ERR_LIB_CMS, CMS_R_NOT_A_SIGNED_RECEIPT},
+ #else
+ {"NOT_A_SIGNED_RECEIPT", 46, 165},
+ #endif
+ #ifdef CMS_R_NOT_ENCRYPTED_DATA
+ {"NOT_ENCRYPTED_DATA", ERR_LIB_CMS, CMS_R_NOT_ENCRYPTED_DATA},
+ #else
+ {"NOT_ENCRYPTED_DATA", 46, 122},
+ #endif
+ #ifdef CMS_R_NOT_KEK
+ {"NOT_KEK", ERR_LIB_CMS, CMS_R_NOT_KEK},
+ #else
+ {"NOT_KEK", 46, 123},
+ #endif
+ #ifdef CMS_R_NOT_KEY_AGREEMENT
+ {"NOT_KEY_AGREEMENT", ERR_LIB_CMS, CMS_R_NOT_KEY_AGREEMENT},
+ #else
+ {"NOT_KEY_AGREEMENT", 46, 181},
+ #endif
+ #ifdef CMS_R_NOT_KEY_TRANSPORT
+ {"NOT_KEY_TRANSPORT", ERR_LIB_CMS, CMS_R_NOT_KEY_TRANSPORT},
+ #else
+ {"NOT_KEY_TRANSPORT", 46, 124},
+ #endif
+ #ifdef CMS_R_NOT_PWRI
+ {"NOT_PWRI", ERR_LIB_CMS, CMS_R_NOT_PWRI},
+ #else
+ {"NOT_PWRI", 46, 177},
+ #endif
+ #ifdef CMS_R_NOT_SUPPORTED_FOR_THIS_KEY_TYPE
+ {"NOT_SUPPORTED_FOR_THIS_KEY_TYPE", ERR_LIB_CMS, CMS_R_NOT_SUPPORTED_FOR_THIS_KEY_TYPE},
+ #else
+ {"NOT_SUPPORTED_FOR_THIS_KEY_TYPE", 46, 125},
+ #endif
+ #ifdef CMS_R_NO_CIPHER
+ {"NO_CIPHER", ERR_LIB_CMS, CMS_R_NO_CIPHER},
+ #else
+ {"NO_CIPHER", 46, 126},
+ #endif
+ #ifdef CMS_R_NO_CONTENT
+ {"NO_CONTENT", ERR_LIB_CMS, CMS_R_NO_CONTENT},
+ #else
+ {"NO_CONTENT", 46, 127},
+ #endif
+ #ifdef CMS_R_NO_CONTENT_TYPE
+ {"NO_CONTENT_TYPE", ERR_LIB_CMS, CMS_R_NO_CONTENT_TYPE},
+ #else
+ {"NO_CONTENT_TYPE", 46, 173},
+ #endif
+ #ifdef CMS_R_NO_DEFAULT_DIGEST
+ {"NO_DEFAULT_DIGEST", ERR_LIB_CMS, CMS_R_NO_DEFAULT_DIGEST},
+ #else
+ {"NO_DEFAULT_DIGEST", 46, 128},
+ #endif
+ #ifdef CMS_R_NO_DIGEST_SET
+ {"NO_DIGEST_SET", ERR_LIB_CMS, CMS_R_NO_DIGEST_SET},
+ #else
+ {"NO_DIGEST_SET", 46, 129},
+ #endif
+ #ifdef CMS_R_NO_KEY
+ {"NO_KEY", ERR_LIB_CMS, CMS_R_NO_KEY},
+ #else
+ {"NO_KEY", 46, 130},
+ #endif
+ #ifdef CMS_R_NO_KEY_OR_CERT
+ {"NO_KEY_OR_CERT", ERR_LIB_CMS, CMS_R_NO_KEY_OR_CERT},
+ #else
+ {"NO_KEY_OR_CERT", 46, 174},
+ #endif
+ #ifdef CMS_R_NO_MATCHING_DIGEST
+ {"NO_MATCHING_DIGEST", ERR_LIB_CMS, CMS_R_NO_MATCHING_DIGEST},
+ #else
+ {"NO_MATCHING_DIGEST", 46, 131},
+ #endif
+ #ifdef CMS_R_NO_MATCHING_RECIPIENT
+ {"NO_MATCHING_RECIPIENT", ERR_LIB_CMS, CMS_R_NO_MATCHING_RECIPIENT},
+ #else
+ {"NO_MATCHING_RECIPIENT", 46, 132},
+ #endif
+ #ifdef CMS_R_NO_MATCHING_SIGNATURE
+ {"NO_MATCHING_SIGNATURE", ERR_LIB_CMS, CMS_R_NO_MATCHING_SIGNATURE},
+ #else
+ {"NO_MATCHING_SIGNATURE", 46, 166},
+ #endif
+ #ifdef CMS_R_NO_MSGSIGDIGEST
+ {"NO_MSGSIGDIGEST", ERR_LIB_CMS, CMS_R_NO_MSGSIGDIGEST},
+ #else
+ {"NO_MSGSIGDIGEST", 46, 167},
+ #endif
+ #ifdef CMS_R_NO_PASSWORD
+ {"NO_PASSWORD", ERR_LIB_CMS, CMS_R_NO_PASSWORD},
+ #else
+ {"NO_PASSWORD", 46, 178},
+ #endif
+ #ifdef CMS_R_NO_PRIVATE_KEY
+ {"NO_PRIVATE_KEY", ERR_LIB_CMS, CMS_R_NO_PRIVATE_KEY},
+ #else
+ {"NO_PRIVATE_KEY", 46, 133},
+ #endif
+ #ifdef CMS_R_NO_PUBLIC_KEY
+ {"NO_PUBLIC_KEY", ERR_LIB_CMS, CMS_R_NO_PUBLIC_KEY},
+ #else
+ {"NO_PUBLIC_KEY", 46, 134},
+ #endif
+ #ifdef CMS_R_NO_RECEIPT_REQUEST
+ {"NO_RECEIPT_REQUEST", ERR_LIB_CMS, CMS_R_NO_RECEIPT_REQUEST},
+ #else
+ {"NO_RECEIPT_REQUEST", 46, 168},
+ #endif
+ #ifdef CMS_R_NO_SIGNERS
+ {"NO_SIGNERS", ERR_LIB_CMS, CMS_R_NO_SIGNERS},
+ #else
+ {"NO_SIGNERS", 46, 135},
+ #endif
+ #ifdef CMS_R_PEER_KEY_ERROR
+ {"PEER_KEY_ERROR", ERR_LIB_CMS, CMS_R_PEER_KEY_ERROR},
+ #else
+ {"PEER_KEY_ERROR", 46, 188},
+ #endif
+ #ifdef CMS_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE
+ {"PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE", ERR_LIB_CMS, CMS_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE},
+ #else
+ {"PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE", 46, 136},
+ #endif
+ #ifdef CMS_R_RECEIPT_DECODE_ERROR
+ {"RECEIPT_DECODE_ERROR", ERR_LIB_CMS, CMS_R_RECEIPT_DECODE_ERROR},
+ #else
+ {"RECEIPT_DECODE_ERROR", 46, 169},
+ #endif
+ #ifdef CMS_R_RECIPIENT_ERROR
+ {"RECIPIENT_ERROR", ERR_LIB_CMS, CMS_R_RECIPIENT_ERROR},
+ #else
+ {"RECIPIENT_ERROR", 46, 137},
+ #endif
+ #ifdef CMS_R_SHARED_INFO_ERROR
+ {"SHARED_INFO_ERROR", ERR_LIB_CMS, CMS_R_SHARED_INFO_ERROR},
+ #else
+ {"SHARED_INFO_ERROR", 46, 189},
+ #endif
+ #ifdef CMS_R_SIGNER_CERTIFICATE_NOT_FOUND
+ {"SIGNER_CERTIFICATE_NOT_FOUND", ERR_LIB_CMS, CMS_R_SIGNER_CERTIFICATE_NOT_FOUND},
+ #else
+ {"SIGNER_CERTIFICATE_NOT_FOUND", 46, 138},
+ #endif
+ #ifdef CMS_R_SIGNFINAL_ERROR
+ {"SIGNFINAL_ERROR", ERR_LIB_CMS, CMS_R_SIGNFINAL_ERROR},
+ #else
+ {"SIGNFINAL_ERROR", 46, 139},
+ #endif
+ #ifdef CMS_R_SMIME_TEXT_ERROR
+ {"SMIME_TEXT_ERROR", ERR_LIB_CMS, CMS_R_SMIME_TEXT_ERROR},
+ #else
+ {"SMIME_TEXT_ERROR", 46, 140},
+ #endif
+ #ifdef CMS_R_STORE_INIT_ERROR
+ {"STORE_INIT_ERROR", ERR_LIB_CMS, CMS_R_STORE_INIT_ERROR},
+ #else
+ {"STORE_INIT_ERROR", 46, 141},
+ #endif
+ #ifdef CMS_R_TYPE_NOT_COMPRESSED_DATA
+ {"TYPE_NOT_COMPRESSED_DATA", ERR_LIB_CMS, CMS_R_TYPE_NOT_COMPRESSED_DATA},
+ #else
+ {"TYPE_NOT_COMPRESSED_DATA", 46, 142},
+ #endif
+ #ifdef CMS_R_TYPE_NOT_DATA
+ {"TYPE_NOT_DATA", ERR_LIB_CMS, CMS_R_TYPE_NOT_DATA},
+ #else
+ {"TYPE_NOT_DATA", 46, 143},
+ #endif
+ #ifdef CMS_R_TYPE_NOT_DIGESTED_DATA
+ {"TYPE_NOT_DIGESTED_DATA", ERR_LIB_CMS, CMS_R_TYPE_NOT_DIGESTED_DATA},
+ #else
+ {"TYPE_NOT_DIGESTED_DATA", 46, 144},
+ #endif
+ #ifdef CMS_R_TYPE_NOT_ENCRYPTED_DATA
+ {"TYPE_NOT_ENCRYPTED_DATA", ERR_LIB_CMS, CMS_R_TYPE_NOT_ENCRYPTED_DATA},
+ #else
+ {"TYPE_NOT_ENCRYPTED_DATA", 46, 145},
+ #endif
+ #ifdef CMS_R_TYPE_NOT_ENVELOPED_DATA
+ {"TYPE_NOT_ENVELOPED_DATA", ERR_LIB_CMS, CMS_R_TYPE_NOT_ENVELOPED_DATA},
+ #else
+ {"TYPE_NOT_ENVELOPED_DATA", 46, 146},
+ #endif
+ #ifdef CMS_R_UNABLE_TO_FINALIZE_CONTEXT
+ {"UNABLE_TO_FINALIZE_CONTEXT", ERR_LIB_CMS, CMS_R_UNABLE_TO_FINALIZE_CONTEXT},
+ #else
+ {"UNABLE_TO_FINALIZE_CONTEXT", 46, 147},
+ #endif
+ #ifdef CMS_R_UNKNOWN_CIPHER
+ {"UNKNOWN_CIPHER", ERR_LIB_CMS, CMS_R_UNKNOWN_CIPHER},
+ #else
+ {"UNKNOWN_CIPHER", 46, 148},
+ #endif
+ #ifdef CMS_R_UNKNOWN_DIGEST_ALGORITHM
+ {"UNKNOWN_DIGEST_ALGORITHM", ERR_LIB_CMS, CMS_R_UNKNOWN_DIGEST_ALGORITHM},
+ #else
+ {"UNKNOWN_DIGEST_ALGORITHM", 46, 149},
+ #endif
+ #ifdef CMS_R_UNKNOWN_ID
+ {"UNKNOWN_ID", ERR_LIB_CMS, CMS_R_UNKNOWN_ID},
+ #else
+ {"UNKNOWN_ID", 46, 150},
+ #endif
+ #ifdef CMS_R_UNSUPPORTED_COMPRESSION_ALGORITHM
+ {"UNSUPPORTED_COMPRESSION_ALGORITHM", ERR_LIB_CMS, CMS_R_UNSUPPORTED_COMPRESSION_ALGORITHM},
+ #else
+ {"UNSUPPORTED_COMPRESSION_ALGORITHM", 46, 151},
+ #endif
+ #ifdef CMS_R_UNSUPPORTED_CONTENT_ENCRYPTION_ALGORITHM
+ {"UNSUPPORTED_CONTENT_ENCRYPTION_ALGORITHM", ERR_LIB_CMS, CMS_R_UNSUPPORTED_CONTENT_ENCRYPTION_ALGORITHM},
+ #else
+ {"UNSUPPORTED_CONTENT_ENCRYPTION_ALGORITHM", 46, 194},
+ #endif
+ #ifdef CMS_R_UNSUPPORTED_CONTENT_TYPE
+ {"UNSUPPORTED_CONTENT_TYPE", ERR_LIB_CMS, CMS_R_UNSUPPORTED_CONTENT_TYPE},
+ #else
+ {"UNSUPPORTED_CONTENT_TYPE", 46, 152},
+ #endif
+ #ifdef CMS_R_UNSUPPORTED_ENCRYPTION_TYPE
+ {"UNSUPPORTED_ENCRYPTION_TYPE", ERR_LIB_CMS, CMS_R_UNSUPPORTED_ENCRYPTION_TYPE},
+ #else
+ {"UNSUPPORTED_ENCRYPTION_TYPE", 46, 192},
+ #endif
+ #ifdef CMS_R_UNSUPPORTED_KEK_ALGORITHM
+ {"UNSUPPORTED_KEK_ALGORITHM", ERR_LIB_CMS, CMS_R_UNSUPPORTED_KEK_ALGORITHM},
+ #else
+ {"UNSUPPORTED_KEK_ALGORITHM", 46, 153},
+ #endif
+ #ifdef CMS_R_UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM
+ {"UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM", ERR_LIB_CMS, CMS_R_UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM},
+ #else
+ {"UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM", 46, 179},
+ #endif
+ #ifdef CMS_R_UNSUPPORTED_LABEL_SOURCE
+ {"UNSUPPORTED_LABEL_SOURCE", ERR_LIB_CMS, CMS_R_UNSUPPORTED_LABEL_SOURCE},
+ #else
+ {"UNSUPPORTED_LABEL_SOURCE", 46, 193},
+ #endif
+ #ifdef CMS_R_UNSUPPORTED_RECIPIENTINFO_TYPE
+ {"UNSUPPORTED_RECIPIENTINFO_TYPE", ERR_LIB_CMS, CMS_R_UNSUPPORTED_RECIPIENTINFO_TYPE},
+ #else
+ {"UNSUPPORTED_RECIPIENTINFO_TYPE", 46, 155},
+ #endif
+ #ifdef CMS_R_UNSUPPORTED_RECIPIENT_TYPE
+ {"UNSUPPORTED_RECIPIENT_TYPE", ERR_LIB_CMS, CMS_R_UNSUPPORTED_RECIPIENT_TYPE},
+ #else
+ {"UNSUPPORTED_RECIPIENT_TYPE", 46, 154},
+ #endif
+ #ifdef CMS_R_UNSUPPORTED_TYPE
+ {"UNSUPPORTED_TYPE", ERR_LIB_CMS, CMS_R_UNSUPPORTED_TYPE},
+ #else
+ {"UNSUPPORTED_TYPE", 46, 156},
+ #endif
+ #ifdef CMS_R_UNWRAP_ERROR
+ {"UNWRAP_ERROR", ERR_LIB_CMS, CMS_R_UNWRAP_ERROR},
+ #else
+ {"UNWRAP_ERROR", 46, 157},
+ #endif
+ #ifdef CMS_R_UNWRAP_FAILURE
+ {"UNWRAP_FAILURE", ERR_LIB_CMS, CMS_R_UNWRAP_FAILURE},
+ #else
+ {"UNWRAP_FAILURE", 46, 180},
+ #endif
+ #ifdef CMS_R_VERIFICATION_FAILURE
+ {"VERIFICATION_FAILURE", ERR_LIB_CMS, CMS_R_VERIFICATION_FAILURE},
+ #else
+ {"VERIFICATION_FAILURE", 46, 158},
+ #endif
+ #ifdef CMS_R_WRAP_ERROR
+ {"WRAP_ERROR", ERR_LIB_CMS, CMS_R_WRAP_ERROR},
+ #else
+ {"WRAP_ERROR", 46, 159},
+ #endif
+ #ifdef COMP_R_ZLIB_DEFLATE_ERROR
+ {"ZLIB_DEFLATE_ERROR", ERR_LIB_COMP, COMP_R_ZLIB_DEFLATE_ERROR},
+ #else
+ {"ZLIB_DEFLATE_ERROR", 41, 99},
+ #endif
+ #ifdef COMP_R_ZLIB_INFLATE_ERROR
+ {"ZLIB_INFLATE_ERROR", ERR_LIB_COMP, COMP_R_ZLIB_INFLATE_ERROR},
+ #else
+ {"ZLIB_INFLATE_ERROR", 41, 100},
+ #endif
+ #ifdef COMP_R_ZLIB_NOT_SUPPORTED
+ {"ZLIB_NOT_SUPPORTED", ERR_LIB_COMP, COMP_R_ZLIB_NOT_SUPPORTED},
+ #else
+ {"ZLIB_NOT_SUPPORTED", 41, 101},
+ #endif
+ #ifdef CONF_R_ERROR_LOADING_DSO
+ {"ERROR_LOADING_DSO", ERR_LIB_CONF, CONF_R_ERROR_LOADING_DSO},
+ #else
+ {"ERROR_LOADING_DSO", 14, 110},
+ #endif
+ #ifdef CONF_R_INVALID_PRAGMA
+ {"INVALID_PRAGMA", ERR_LIB_CONF, CONF_R_INVALID_PRAGMA},
+ #else
+ {"INVALID_PRAGMA", 14, 122},
+ #endif
+ #ifdef CONF_R_LIST_CANNOT_BE_NULL
+ {"LIST_CANNOT_BE_NULL", ERR_LIB_CONF, CONF_R_LIST_CANNOT_BE_NULL},
+ #else
+ {"LIST_CANNOT_BE_NULL", 14, 115},
+ #endif
+ #ifdef CONF_R_MANDATORY_BRACES_IN_VARIABLE_EXPANSION
+ {"MANDATORY_BRACES_IN_VARIABLE_EXPANSION", ERR_LIB_CONF, CONF_R_MANDATORY_BRACES_IN_VARIABLE_EXPANSION},
+ #else
+ {"MANDATORY_BRACES_IN_VARIABLE_EXPANSION", 14, 123},
+ #endif
+ #ifdef CONF_R_MISSING_CLOSE_SQUARE_BRACKET
+ {"MISSING_CLOSE_SQUARE_BRACKET", ERR_LIB_CONF, CONF_R_MISSING_CLOSE_SQUARE_BRACKET},
+ #else
+ {"MISSING_CLOSE_SQUARE_BRACKET", 14, 100},
+ #endif
+ #ifdef CONF_R_MISSING_EQUAL_SIGN
+ {"MISSING_EQUAL_SIGN", ERR_LIB_CONF, CONF_R_MISSING_EQUAL_SIGN},
+ #else
+ {"MISSING_EQUAL_SIGN", 14, 101},
+ #endif
+ #ifdef CONF_R_MISSING_INIT_FUNCTION
+ {"MISSING_INIT_FUNCTION", ERR_LIB_CONF, CONF_R_MISSING_INIT_FUNCTION},
+ #else
+ {"MISSING_INIT_FUNCTION", 14, 112},
+ #endif
+ #ifdef CONF_R_MODULE_INITIALIZATION_ERROR
+ {"MODULE_INITIALIZATION_ERROR", ERR_LIB_CONF, CONF_R_MODULE_INITIALIZATION_ERROR},
+ #else
+ {"MODULE_INITIALIZATION_ERROR", 14, 109},
+ #endif
+ #ifdef CONF_R_NO_CLOSE_BRACE
+ {"NO_CLOSE_BRACE", ERR_LIB_CONF, CONF_R_NO_CLOSE_BRACE},
+ #else
+ {"NO_CLOSE_BRACE", 14, 102},
+ #endif
+ #ifdef CONF_R_NO_CONF
+ {"NO_CONF", ERR_LIB_CONF, CONF_R_NO_CONF},
+ #else
+ {"NO_CONF", 14, 105},
+ #endif
+ #ifdef CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE
+ {"NO_CONF_OR_ENVIRONMENT_VARIABLE", ERR_LIB_CONF, CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE},
+ #else
+ {"NO_CONF_OR_ENVIRONMENT_VARIABLE", 14, 106},
+ #endif
+ #ifdef CONF_R_NO_SECTION
+ {"NO_SECTION", ERR_LIB_CONF, CONF_R_NO_SECTION},
+ #else
+ {"NO_SECTION", 14, 107},
+ #endif
+ #ifdef CONF_R_NO_SUCH_FILE
+ {"NO_SUCH_FILE", ERR_LIB_CONF, CONF_R_NO_SUCH_FILE},
+ #else
+ {"NO_SUCH_FILE", 14, 114},
+ #endif
+ #ifdef CONF_R_NO_VALUE
+ {"NO_VALUE", ERR_LIB_CONF, CONF_R_NO_VALUE},
+ #else
+ {"NO_VALUE", 14, 108},
+ #endif
+ #ifdef CONF_R_NUMBER_TOO_LARGE
+ {"NUMBER_TOO_LARGE", ERR_LIB_CONF, CONF_R_NUMBER_TOO_LARGE},
+ #else
+ {"NUMBER_TOO_LARGE", 14, 121},
+ #endif
+ #ifdef CONF_R_OPENSSL_CONF_REFERENCES_MISSING_SECTION
+ {"OPENSSL_CONF_REFERENCES_MISSING_SECTION", ERR_LIB_CONF, CONF_R_OPENSSL_CONF_REFERENCES_MISSING_SECTION},
+ #else
+ {"OPENSSL_CONF_REFERENCES_MISSING_SECTION", 14, 124},
+ #endif
+ #ifdef CONF_R_RECURSIVE_DIRECTORY_INCLUDE
+ {"RECURSIVE_DIRECTORY_INCLUDE", ERR_LIB_CONF, CONF_R_RECURSIVE_DIRECTORY_INCLUDE},
+ #else
+ {"RECURSIVE_DIRECTORY_INCLUDE", 14, 111},
+ #endif
+ #ifdef CONF_R_RELATIVE_PATH
+ {"RELATIVE_PATH", ERR_LIB_CONF, CONF_R_RELATIVE_PATH},
+ #else
+ {"RELATIVE_PATH", 14, 125},
+ #endif
+ #ifdef CONF_R_SSL_COMMAND_SECTION_EMPTY
+ {"SSL_COMMAND_SECTION_EMPTY", ERR_LIB_CONF, CONF_R_SSL_COMMAND_SECTION_EMPTY},
+ #else
+ {"SSL_COMMAND_SECTION_EMPTY", 14, 117},
+ #endif
+ #ifdef CONF_R_SSL_COMMAND_SECTION_NOT_FOUND
+ {"SSL_COMMAND_SECTION_NOT_FOUND", ERR_LIB_CONF, CONF_R_SSL_COMMAND_SECTION_NOT_FOUND},
+ #else
+ {"SSL_COMMAND_SECTION_NOT_FOUND", 14, 118},
+ #endif
+ #ifdef CONF_R_SSL_SECTION_EMPTY
+ {"SSL_SECTION_EMPTY", ERR_LIB_CONF, CONF_R_SSL_SECTION_EMPTY},
+ #else
+ {"SSL_SECTION_EMPTY", 14, 119},
+ #endif
+ #ifdef CONF_R_SSL_SECTION_NOT_FOUND
+ {"SSL_SECTION_NOT_FOUND", ERR_LIB_CONF, CONF_R_SSL_SECTION_NOT_FOUND},
+ #else
+ {"SSL_SECTION_NOT_FOUND", 14, 120},
+ #endif
+ #ifdef CONF_R_UNABLE_TO_CREATE_NEW_SECTION
+ {"UNABLE_TO_CREATE_NEW_SECTION", ERR_LIB_CONF, CONF_R_UNABLE_TO_CREATE_NEW_SECTION},
+ #else
+ {"UNABLE_TO_CREATE_NEW_SECTION", 14, 103},
+ #endif
+ #ifdef CONF_R_UNKNOWN_MODULE_NAME
+ {"UNKNOWN_MODULE_NAME", ERR_LIB_CONF, CONF_R_UNKNOWN_MODULE_NAME},
+ #else
+ {"UNKNOWN_MODULE_NAME", 14, 113},
+ #endif
+ #ifdef CONF_R_VARIABLE_EXPANSION_TOO_LONG
+ {"VARIABLE_EXPANSION_TOO_LONG", ERR_LIB_CONF, CONF_R_VARIABLE_EXPANSION_TOO_LONG},
+ #else
+ {"VARIABLE_EXPANSION_TOO_LONG", 14, 116},
+ #endif
+ #ifdef CONF_R_VARIABLE_HAS_NO_VALUE
+ {"VARIABLE_HAS_NO_VALUE", ERR_LIB_CONF, CONF_R_VARIABLE_HAS_NO_VALUE},
+ #else
+ {"VARIABLE_HAS_NO_VALUE", 14, 104},
+ #endif
+ #ifdef CRMF_R_BAD_PBM_ITERATIONCOUNT
+ {"BAD_PBM_ITERATIONCOUNT", ERR_LIB_CRMF, CRMF_R_BAD_PBM_ITERATIONCOUNT},
+ #else
+ {"BAD_PBM_ITERATIONCOUNT", 56, 100},
+ #endif
+ #ifdef CRMF_R_CRMFERROR
+ {"CRMFERROR", ERR_LIB_CRMF, CRMF_R_CRMFERROR},
+ #else
+ {"CRMFERROR", 56, 102},
+ #endif
+ #ifdef CRMF_R_ERROR
+ {"ERROR", ERR_LIB_CRMF, CRMF_R_ERROR},
+ #else
+ {"ERROR", 56, 103},
+ #endif
+ #ifdef CRMF_R_ERROR_DECODING_CERTIFICATE
+ {"ERROR_DECODING_CERTIFICATE", ERR_LIB_CRMF, CRMF_R_ERROR_DECODING_CERTIFICATE},
+ #else
+ {"ERROR_DECODING_CERTIFICATE", 56, 104},
+ #endif
+ #ifdef CRMF_R_ERROR_DECRYPTING_CERTIFICATE
+ {"ERROR_DECRYPTING_CERTIFICATE", ERR_LIB_CRMF, CRMF_R_ERROR_DECRYPTING_CERTIFICATE},
+ #else
+ {"ERROR_DECRYPTING_CERTIFICATE", 56, 105},
+ #endif
+ #ifdef CRMF_R_ERROR_DECRYPTING_SYMMETRIC_KEY
+ {"ERROR_DECRYPTING_SYMMETRIC_KEY", ERR_LIB_CRMF, CRMF_R_ERROR_DECRYPTING_SYMMETRIC_KEY},
+ #else
+ {"ERROR_DECRYPTING_SYMMETRIC_KEY", 56, 106},
+ #endif
+ #ifdef CRMF_R_FAILURE_OBTAINING_RANDOM
+ {"FAILURE_OBTAINING_RANDOM", ERR_LIB_CRMF, CRMF_R_FAILURE_OBTAINING_RANDOM},
+ #else
+ {"FAILURE_OBTAINING_RANDOM", 56, 107},
+ #endif
+ #ifdef CRMF_R_ITERATIONCOUNT_BELOW_100
+ {"ITERATIONCOUNT_BELOW_100", ERR_LIB_CRMF, CRMF_R_ITERATIONCOUNT_BELOW_100},
+ #else
+ {"ITERATIONCOUNT_BELOW_100", 56, 108},
+ #endif
+ #ifdef CRMF_R_MALFORMED_IV
+ {"MALFORMED_IV", ERR_LIB_CRMF, CRMF_R_MALFORMED_IV},
+ #else
+ {"MALFORMED_IV", 56, 101},
+ #endif
+ #ifdef CRMF_R_NULL_ARGUMENT
+ {"NULL_ARGUMENT", ERR_LIB_CRMF, CRMF_R_NULL_ARGUMENT},
+ #else
+ {"NULL_ARGUMENT", 56, 109},
+ #endif
+ #ifdef CRMF_R_POPOSKINPUT_NOT_SUPPORTED
+ {"POPOSKINPUT_NOT_SUPPORTED", ERR_LIB_CRMF, CRMF_R_POPOSKINPUT_NOT_SUPPORTED},
+ #else
+ {"POPOSKINPUT_NOT_SUPPORTED", 56, 113},
+ #endif
+ #ifdef CRMF_R_POPO_INCONSISTENT_PUBLIC_KEY
+ {"POPO_INCONSISTENT_PUBLIC_KEY", ERR_LIB_CRMF, CRMF_R_POPO_INCONSISTENT_PUBLIC_KEY},
+ #else
+ {"POPO_INCONSISTENT_PUBLIC_KEY", 56, 117},
+ #endif
+ #ifdef CRMF_R_POPO_MISSING
+ {"POPO_MISSING", ERR_LIB_CRMF, CRMF_R_POPO_MISSING},
+ #else
+ {"POPO_MISSING", 56, 121},
+ #endif
+ #ifdef CRMF_R_POPO_MISSING_PUBLIC_KEY
+ {"POPO_MISSING_PUBLIC_KEY", ERR_LIB_CRMF, CRMF_R_POPO_MISSING_PUBLIC_KEY},
+ #else
+ {"POPO_MISSING_PUBLIC_KEY", 56, 118},
+ #endif
+ #ifdef CRMF_R_POPO_MISSING_SUBJECT
+ {"POPO_MISSING_SUBJECT", ERR_LIB_CRMF, CRMF_R_POPO_MISSING_SUBJECT},
+ #else
+ {"POPO_MISSING_SUBJECT", 56, 119},
+ #endif
+ #ifdef CRMF_R_POPO_RAVERIFIED_NOT_ACCEPTED
+ {"POPO_RAVERIFIED_NOT_ACCEPTED", ERR_LIB_CRMF, CRMF_R_POPO_RAVERIFIED_NOT_ACCEPTED},
+ #else
+ {"POPO_RAVERIFIED_NOT_ACCEPTED", 56, 120},
+ #endif
+ #ifdef CRMF_R_SETTING_MAC_ALGOR_FAILURE
+ {"SETTING_MAC_ALGOR_FAILURE", ERR_LIB_CRMF, CRMF_R_SETTING_MAC_ALGOR_FAILURE},
+ #else
+ {"SETTING_MAC_ALGOR_FAILURE", 56, 110},
+ #endif
+ #ifdef CRMF_R_SETTING_OWF_ALGOR_FAILURE
+ {"SETTING_OWF_ALGOR_FAILURE", ERR_LIB_CRMF, CRMF_R_SETTING_OWF_ALGOR_FAILURE},
+ #else
+ {"SETTING_OWF_ALGOR_FAILURE", 56, 111},
+ #endif
+ #ifdef CRMF_R_UNSUPPORTED_ALGORITHM
+ {"UNSUPPORTED_ALGORITHM", ERR_LIB_CRMF, CRMF_R_UNSUPPORTED_ALGORITHM},
+ #else
+ {"UNSUPPORTED_ALGORITHM", 56, 112},
+ #endif
+ #ifdef CRMF_R_UNSUPPORTED_CIPHER
+ {"UNSUPPORTED_CIPHER", ERR_LIB_CRMF, CRMF_R_UNSUPPORTED_CIPHER},
+ #else
+ {"UNSUPPORTED_CIPHER", 56, 114},
+ #endif
+ #ifdef CRMF_R_UNSUPPORTED_METHOD_FOR_CREATING_POPO
+ {"UNSUPPORTED_METHOD_FOR_CREATING_POPO", ERR_LIB_CRMF, CRMF_R_UNSUPPORTED_METHOD_FOR_CREATING_POPO},
+ #else
+ {"UNSUPPORTED_METHOD_FOR_CREATING_POPO", 56, 115},
+ #endif
+ #ifdef CRMF_R_UNSUPPORTED_POPO_METHOD
+ {"UNSUPPORTED_POPO_METHOD", ERR_LIB_CRMF, CRMF_R_UNSUPPORTED_POPO_METHOD},
+ #else
+ {"UNSUPPORTED_POPO_METHOD", 56, 116},
+ #endif
+ #ifdef CRYPTO_R_BAD_ALGORITHM_NAME
+ {"BAD_ALGORITHM_NAME", ERR_LIB_CRYPTO, CRYPTO_R_BAD_ALGORITHM_NAME},
+ #else
+ {"BAD_ALGORITHM_NAME", 15, 117},
+ #endif
+ #ifdef CRYPTO_R_CONFLICTING_NAMES
+ {"CONFLICTING_NAMES", ERR_LIB_CRYPTO, CRYPTO_R_CONFLICTING_NAMES},
+ #else
+ {"CONFLICTING_NAMES", 15, 118},
+ #endif
+ #ifdef CRYPTO_R_HEX_STRING_TOO_SHORT
+ {"HEX_STRING_TOO_SHORT", ERR_LIB_CRYPTO, CRYPTO_R_HEX_STRING_TOO_SHORT},
+ #else
+ {"HEX_STRING_TOO_SHORT", 15, 121},
+ #endif
+ #ifdef CRYPTO_R_ILLEGAL_HEX_DIGIT
+ {"ILLEGAL_HEX_DIGIT", ERR_LIB_CRYPTO, CRYPTO_R_ILLEGAL_HEX_DIGIT},
+ #else
+ {"ILLEGAL_HEX_DIGIT", 15, 102},
+ #endif
+ #ifdef CRYPTO_R_INSUFFICIENT_DATA_SPACE
+ {"INSUFFICIENT_DATA_SPACE", ERR_LIB_CRYPTO, CRYPTO_R_INSUFFICIENT_DATA_SPACE},
+ #else
+ {"INSUFFICIENT_DATA_SPACE", 15, 106},
+ #endif
+ #ifdef CRYPTO_R_INSUFFICIENT_PARAM_SIZE
+ {"INSUFFICIENT_PARAM_SIZE", ERR_LIB_CRYPTO, CRYPTO_R_INSUFFICIENT_PARAM_SIZE},
+ #else
+ {"INSUFFICIENT_PARAM_SIZE", 15, 107},
+ #endif
+ #ifdef CRYPTO_R_INSUFFICIENT_SECURE_DATA_SPACE
+ {"INSUFFICIENT_SECURE_DATA_SPACE", ERR_LIB_CRYPTO, CRYPTO_R_INSUFFICIENT_SECURE_DATA_SPACE},
+ #else
+ {"INSUFFICIENT_SECURE_DATA_SPACE", 15, 108},
+ #endif
+ #ifdef CRYPTO_R_INTEGER_OVERFLOW
+ {"INTEGER_OVERFLOW", ERR_LIB_CRYPTO, CRYPTO_R_INTEGER_OVERFLOW},
+ #else
+ {"INTEGER_OVERFLOW", 15, 127},
+ #endif
+ #ifdef CRYPTO_R_INVALID_NEGATIVE_VALUE
+ {"INVALID_NEGATIVE_VALUE", ERR_LIB_CRYPTO, CRYPTO_R_INVALID_NEGATIVE_VALUE},
+ #else
+ {"INVALID_NEGATIVE_VALUE", 15, 122},
+ #endif
+ #ifdef CRYPTO_R_INVALID_NULL_ARGUMENT
+ {"INVALID_NULL_ARGUMENT", ERR_LIB_CRYPTO, CRYPTO_R_INVALID_NULL_ARGUMENT},
+ #else
+ {"INVALID_NULL_ARGUMENT", 15, 109},
+ #endif
+ #ifdef CRYPTO_R_INVALID_OSSL_PARAM_TYPE
+ {"INVALID_OSSL_PARAM_TYPE", ERR_LIB_CRYPTO, CRYPTO_R_INVALID_OSSL_PARAM_TYPE},
+ #else
+ {"INVALID_OSSL_PARAM_TYPE", 15, 110},
+ #endif
+ #ifdef CRYPTO_R_NO_PARAMS_TO_MERGE
+ {"NO_PARAMS_TO_MERGE", ERR_LIB_CRYPTO, CRYPTO_R_NO_PARAMS_TO_MERGE},
+ #else
+ {"NO_PARAMS_TO_MERGE", 15, 131},
+ #endif
+ #ifdef CRYPTO_R_NO_SPACE_FOR_TERMINATING_NULL
+ {"NO_SPACE_FOR_TERMINATING_NULL", ERR_LIB_CRYPTO, CRYPTO_R_NO_SPACE_FOR_TERMINATING_NULL},
+ #else
+ {"NO_SPACE_FOR_TERMINATING_NULL", 15, 128},
+ #endif
+ #ifdef CRYPTO_R_ODD_NUMBER_OF_DIGITS
+ {"ODD_NUMBER_OF_DIGITS", ERR_LIB_CRYPTO, CRYPTO_R_ODD_NUMBER_OF_DIGITS},
+ #else
+ {"ODD_NUMBER_OF_DIGITS", 15, 103},
+ #endif
+ #ifdef CRYPTO_R_PARAM_CANNOT_BE_REPRESENTED_EXACTLY
+ {"PARAM_CANNOT_BE_REPRESENTED_EXACTLY", ERR_LIB_CRYPTO, CRYPTO_R_PARAM_CANNOT_BE_REPRESENTED_EXACTLY},
+ #else
+ {"PARAM_CANNOT_BE_REPRESENTED_EXACTLY", 15, 123},
+ #endif
+ #ifdef CRYPTO_R_PARAM_NOT_INTEGER_TYPE
+ {"PARAM_NOT_INTEGER_TYPE", ERR_LIB_CRYPTO, CRYPTO_R_PARAM_NOT_INTEGER_TYPE},
+ #else
+ {"PARAM_NOT_INTEGER_TYPE", 15, 124},
+ #endif
+ #ifdef CRYPTO_R_PARAM_OF_INCOMPATIBLE_TYPE
+ {"PARAM_OF_INCOMPATIBLE_TYPE", ERR_LIB_CRYPTO, CRYPTO_R_PARAM_OF_INCOMPATIBLE_TYPE},
+ #else
+ {"PARAM_OF_INCOMPATIBLE_TYPE", 15, 129},
+ #endif
+ #ifdef CRYPTO_R_PARAM_UNSIGNED_INTEGER_NEGATIVE_VALUE_UNSUPPORTED
+ {"PARAM_UNSIGNED_INTEGER_NEGATIVE_VALUE_UNSUPPORTED", ERR_LIB_CRYPTO, CRYPTO_R_PARAM_UNSIGNED_INTEGER_NEGATIVE_VALUE_UNSUPPORTED},
+ #else
+ {"PARAM_UNSIGNED_INTEGER_NEGATIVE_VALUE_UNSUPPORTED", 15, 125},
+ #endif
+ #ifdef CRYPTO_R_PARAM_UNSUPPORTED_FLOATING_POINT_FORMAT
+ {"PARAM_UNSUPPORTED_FLOATING_POINT_FORMAT", ERR_LIB_CRYPTO, CRYPTO_R_PARAM_UNSUPPORTED_FLOATING_POINT_FORMAT},
+ #else
+ {"PARAM_UNSUPPORTED_FLOATING_POINT_FORMAT", 15, 130},
+ #endif
+ #ifdef CRYPTO_R_PARAM_VALUE_TOO_LARGE_FOR_DESTINATION
+ {"PARAM_VALUE_TOO_LARGE_FOR_DESTINATION", ERR_LIB_CRYPTO, CRYPTO_R_PARAM_VALUE_TOO_LARGE_FOR_DESTINATION},
+ #else
+ {"PARAM_VALUE_TOO_LARGE_FOR_DESTINATION", 15, 126},
+ #endif
+ #ifdef CRYPTO_R_PROVIDER_ALREADY_EXISTS
+ {"PROVIDER_ALREADY_EXISTS", ERR_LIB_CRYPTO, CRYPTO_R_PROVIDER_ALREADY_EXISTS},
+ #else
+ {"PROVIDER_ALREADY_EXISTS", 15, 104},
+ #endif
+ #ifdef CRYPTO_R_PROVIDER_SECTION_ERROR
+ {"PROVIDER_SECTION_ERROR", ERR_LIB_CRYPTO, CRYPTO_R_PROVIDER_SECTION_ERROR},
+ #else
+ {"PROVIDER_SECTION_ERROR", 15, 105},
+ #endif
+ #ifdef CRYPTO_R_RANDOM_SECTION_ERROR
+ {"RANDOM_SECTION_ERROR", ERR_LIB_CRYPTO, CRYPTO_R_RANDOM_SECTION_ERROR},
+ #else
+ {"RANDOM_SECTION_ERROR", 15, 119},
+ #endif
+ #ifdef CRYPTO_R_SECURE_MALLOC_FAILURE
+ {"SECURE_MALLOC_FAILURE", ERR_LIB_CRYPTO, CRYPTO_R_SECURE_MALLOC_FAILURE},
+ #else
+ {"SECURE_MALLOC_FAILURE", 15, 111},
+ #endif
+ #ifdef CRYPTO_R_STRING_TOO_LONG
+ {"STRING_TOO_LONG", ERR_LIB_CRYPTO, CRYPTO_R_STRING_TOO_LONG},
+ #else
+ {"STRING_TOO_LONG", 15, 112},
+ #endif
+ #ifdef CRYPTO_R_TOO_MANY_BYTES
+ {"TOO_MANY_BYTES", ERR_LIB_CRYPTO, CRYPTO_R_TOO_MANY_BYTES},
+ #else
+ {"TOO_MANY_BYTES", 15, 113},
+ #endif
+ #ifdef CRYPTO_R_TOO_MANY_RECORDS
+ {"TOO_MANY_RECORDS", ERR_LIB_CRYPTO, CRYPTO_R_TOO_MANY_RECORDS},
+ #else
+ {"TOO_MANY_RECORDS", 15, 114},
+ #endif
+ #ifdef CRYPTO_R_TOO_SMALL_BUFFER
+ {"TOO_SMALL_BUFFER", ERR_LIB_CRYPTO, CRYPTO_R_TOO_SMALL_BUFFER},
+ #else
+ {"TOO_SMALL_BUFFER", 15, 116},
+ #endif
+ #ifdef CRYPTO_R_UNKNOWN_NAME_IN_RANDOM_SECTION
+ {"UNKNOWN_NAME_IN_RANDOM_SECTION", ERR_LIB_CRYPTO, CRYPTO_R_UNKNOWN_NAME_IN_RANDOM_SECTION},
+ #else
+ {"UNKNOWN_NAME_IN_RANDOM_SECTION", 15, 120},
+ #endif
+ #ifdef CRYPTO_R_ZERO_LENGTH_NUMBER
+ {"ZERO_LENGTH_NUMBER", ERR_LIB_CRYPTO, CRYPTO_R_ZERO_LENGTH_NUMBER},
+ #else
+ {"ZERO_LENGTH_NUMBER", 15, 115},
+ #endif
+ #ifdef CT_R_BASE64_DECODE_ERROR
+ {"BASE64_DECODE_ERROR", ERR_LIB_CT, CT_R_BASE64_DECODE_ERROR},
+ #else
+ {"BASE64_DECODE_ERROR", 50, 108},
+ #endif
+ #ifdef CT_R_INVALID_LOG_ID_LENGTH
+ {"INVALID_LOG_ID_LENGTH", ERR_LIB_CT, CT_R_INVALID_LOG_ID_LENGTH},
+ #else
+ {"INVALID_LOG_ID_LENGTH", 50, 100},
+ #endif
+ #ifdef CT_R_LOG_CONF_INVALID
+ {"LOG_CONF_INVALID", ERR_LIB_CT, CT_R_LOG_CONF_INVALID},
+ #else
+ {"LOG_CONF_INVALID", 50, 109},
+ #endif
+ #ifdef CT_R_LOG_CONF_INVALID_KEY
+ {"LOG_CONF_INVALID_KEY", ERR_LIB_CT, CT_R_LOG_CONF_INVALID_KEY},
+ #else
+ {"LOG_CONF_INVALID_KEY", 50, 110},
+ #endif
+ #ifdef CT_R_LOG_CONF_MISSING_DESCRIPTION
+ {"LOG_CONF_MISSING_DESCRIPTION", ERR_LIB_CT, CT_R_LOG_CONF_MISSING_DESCRIPTION},
+ #else
+ {"LOG_CONF_MISSING_DESCRIPTION", 50, 111},
+ #endif
+ #ifdef CT_R_LOG_CONF_MISSING_KEY
+ {"LOG_CONF_MISSING_KEY", ERR_LIB_CT, CT_R_LOG_CONF_MISSING_KEY},
+ #else
+ {"LOG_CONF_MISSING_KEY", 50, 112},
+ #endif
+ #ifdef CT_R_LOG_KEY_INVALID
+ {"LOG_KEY_INVALID", ERR_LIB_CT, CT_R_LOG_KEY_INVALID},
+ #else
+ {"LOG_KEY_INVALID", 50, 113},
+ #endif
+ #ifdef CT_R_SCT_FUTURE_TIMESTAMP
+ {"SCT_FUTURE_TIMESTAMP", ERR_LIB_CT, CT_R_SCT_FUTURE_TIMESTAMP},
+ #else
+ {"SCT_FUTURE_TIMESTAMP", 50, 116},
+ #endif
+ #ifdef CT_R_SCT_INVALID
+ {"SCT_INVALID", ERR_LIB_CT, CT_R_SCT_INVALID},
+ #else
+ {"SCT_INVALID", 50, 104},
+ #endif
+ #ifdef CT_R_SCT_INVALID_SIGNATURE
+ {"SCT_INVALID_SIGNATURE", ERR_LIB_CT, CT_R_SCT_INVALID_SIGNATURE},
+ #else
+ {"SCT_INVALID_SIGNATURE", 50, 107},
+ #endif
+ #ifdef CT_R_SCT_LIST_INVALID
+ {"SCT_LIST_INVALID", ERR_LIB_CT, CT_R_SCT_LIST_INVALID},
+ #else
+ {"SCT_LIST_INVALID", 50, 105},
+ #endif
+ #ifdef CT_R_SCT_LOG_ID_MISMATCH
+ {"SCT_LOG_ID_MISMATCH", ERR_LIB_CT, CT_R_SCT_LOG_ID_MISMATCH},
+ #else
+ {"SCT_LOG_ID_MISMATCH", 50, 114},
+ #endif
+ #ifdef CT_R_SCT_NOT_SET
+ {"SCT_NOT_SET", ERR_LIB_CT, CT_R_SCT_NOT_SET},
+ #else
+ {"SCT_NOT_SET", 50, 106},
+ #endif
+ #ifdef CT_R_SCT_UNSUPPORTED_VERSION
+ {"SCT_UNSUPPORTED_VERSION", ERR_LIB_CT, CT_R_SCT_UNSUPPORTED_VERSION},
+ #else
+ {"SCT_UNSUPPORTED_VERSION", 50, 115},
+ #endif
+ #ifdef CT_R_UNRECOGNIZED_SIGNATURE_NID
+ {"UNRECOGNIZED_SIGNATURE_NID", ERR_LIB_CT, CT_R_UNRECOGNIZED_SIGNATURE_NID},
+ #else
+ {"UNRECOGNIZED_SIGNATURE_NID", 50, 101},
+ #endif
+ #ifdef CT_R_UNSUPPORTED_ENTRY_TYPE
+ {"UNSUPPORTED_ENTRY_TYPE", ERR_LIB_CT, CT_R_UNSUPPORTED_ENTRY_TYPE},
+ #else
+ {"UNSUPPORTED_ENTRY_TYPE", 50, 102},
+ #endif
+ #ifdef CT_R_UNSUPPORTED_VERSION
+ {"UNSUPPORTED_VERSION", ERR_LIB_CT, CT_R_UNSUPPORTED_VERSION},
+ #else
+ {"UNSUPPORTED_VERSION", 50, 103},
+ #endif
+ #ifdef DH_R_BAD_FFC_PARAMETERS
+ {"BAD_FFC_PARAMETERS", ERR_LIB_DH, DH_R_BAD_FFC_PARAMETERS},
+ #else
+ {"BAD_FFC_PARAMETERS", 5, 127},
+ #endif
+ #ifdef DH_R_BAD_GENERATOR
+ {"BAD_GENERATOR", ERR_LIB_DH, DH_R_BAD_GENERATOR},
+ #else
+ {"BAD_GENERATOR", 5, 101},
+ #endif
+ #ifdef DH_R_BN_DECODE_ERROR
+ {"BN_DECODE_ERROR", ERR_LIB_DH, DH_R_BN_DECODE_ERROR},
+ #else
+ {"BN_DECODE_ERROR", 5, 109},
+ #endif
+ #ifdef DH_R_BN_ERROR
+ {"BN_ERROR", ERR_LIB_DH, DH_R_BN_ERROR},
+ #else
+ {"BN_ERROR", 5, 106},
+ #endif
+ #ifdef DH_R_CHECK_INVALID_J_VALUE
+ {"CHECK_INVALID_J_VALUE", ERR_LIB_DH, DH_R_CHECK_INVALID_J_VALUE},
+ #else
+ {"CHECK_INVALID_J_VALUE", 5, 115},
+ #endif
+ #ifdef DH_R_CHECK_INVALID_Q_VALUE
+ {"CHECK_INVALID_Q_VALUE", ERR_LIB_DH, DH_R_CHECK_INVALID_Q_VALUE},
+ #else
+ {"CHECK_INVALID_Q_VALUE", 5, 116},
+ #endif
+ #ifdef DH_R_CHECK_PUBKEY_INVALID
+ {"CHECK_PUBKEY_INVALID", ERR_LIB_DH, DH_R_CHECK_PUBKEY_INVALID},
+ #else
+ {"CHECK_PUBKEY_INVALID", 5, 122},
+ #endif
+ #ifdef DH_R_CHECK_PUBKEY_TOO_LARGE
+ {"CHECK_PUBKEY_TOO_LARGE", ERR_LIB_DH, DH_R_CHECK_PUBKEY_TOO_LARGE},
+ #else
+ {"CHECK_PUBKEY_TOO_LARGE", 5, 123},
+ #endif
+ #ifdef DH_R_CHECK_PUBKEY_TOO_SMALL
+ {"CHECK_PUBKEY_TOO_SMALL", ERR_LIB_DH, DH_R_CHECK_PUBKEY_TOO_SMALL},
+ #else
+ {"CHECK_PUBKEY_TOO_SMALL", 5, 124},
+ #endif
+ #ifdef DH_R_CHECK_P_NOT_PRIME
+ {"CHECK_P_NOT_PRIME", ERR_LIB_DH, DH_R_CHECK_P_NOT_PRIME},
+ #else
+ {"CHECK_P_NOT_PRIME", 5, 117},
+ #endif
+ #ifdef DH_R_CHECK_P_NOT_SAFE_PRIME
+ {"CHECK_P_NOT_SAFE_PRIME", ERR_LIB_DH, DH_R_CHECK_P_NOT_SAFE_PRIME},
+ #else
+ {"CHECK_P_NOT_SAFE_PRIME", 5, 118},
+ #endif
+ #ifdef DH_R_CHECK_Q_NOT_PRIME
+ {"CHECK_Q_NOT_PRIME", ERR_LIB_DH, DH_R_CHECK_Q_NOT_PRIME},
+ #else
+ {"CHECK_Q_NOT_PRIME", 5, 119},
+ #endif
+ #ifdef DH_R_DECODE_ERROR
+ {"DECODE_ERROR", ERR_LIB_DH, DH_R_DECODE_ERROR},
+ #else
+ {"DECODE_ERROR", 5, 104},
+ #endif
+ #ifdef DH_R_INVALID_PARAMETER_NAME
+ {"INVALID_PARAMETER_NAME", ERR_LIB_DH, DH_R_INVALID_PARAMETER_NAME},
+ #else
+ {"INVALID_PARAMETER_NAME", 5, 110},
+ #endif
+ #ifdef DH_R_INVALID_PARAMETER_NID
+ {"INVALID_PARAMETER_NID", ERR_LIB_DH, DH_R_INVALID_PARAMETER_NID},
+ #else
+ {"INVALID_PARAMETER_NID", 5, 114},
+ #endif
+ #ifdef DH_R_INVALID_PUBKEY
+ {"INVALID_PUBKEY", ERR_LIB_DH, DH_R_INVALID_PUBKEY},
+ #else
+ {"INVALID_PUBKEY", 5, 102},
+ #endif
+ #ifdef DH_R_INVALID_SECRET
+ {"INVALID_SECRET", ERR_LIB_DH, DH_R_INVALID_SECRET},
+ #else
+ {"INVALID_SECRET", 5, 128},
+ #endif
+ #ifdef DH_R_KDF_PARAMETER_ERROR
+ {"KDF_PARAMETER_ERROR", ERR_LIB_DH, DH_R_KDF_PARAMETER_ERROR},
+ #else
+ {"KDF_PARAMETER_ERROR", 5, 112},
+ #endif
+ #ifdef DH_R_KEYS_NOT_SET
+ {"KEYS_NOT_SET", ERR_LIB_DH, DH_R_KEYS_NOT_SET},
+ #else
+ {"KEYS_NOT_SET", 5, 108},
+ #endif
+ #ifdef DH_R_MISSING_PUBKEY
+ {"MISSING_PUBKEY", ERR_LIB_DH, DH_R_MISSING_PUBKEY},
+ #else
+ {"MISSING_PUBKEY", 5, 125},
+ #endif
+ #ifdef DH_R_MODULUS_TOO_LARGE
+ {"MODULUS_TOO_LARGE", ERR_LIB_DH, DH_R_MODULUS_TOO_LARGE},
+ #else
+ {"MODULUS_TOO_LARGE", 5, 103},
+ #endif
+ #ifdef DH_R_MODULUS_TOO_SMALL
+ {"MODULUS_TOO_SMALL", ERR_LIB_DH, DH_R_MODULUS_TOO_SMALL},
+ #else
+ {"MODULUS_TOO_SMALL", 5, 126},
+ #endif
+ #ifdef DH_R_NOT_SUITABLE_GENERATOR
+ {"NOT_SUITABLE_GENERATOR", ERR_LIB_DH, DH_R_NOT_SUITABLE_GENERATOR},
+ #else
+ {"NOT_SUITABLE_GENERATOR", 5, 120},
+ #endif
+ #ifdef DH_R_NO_PARAMETERS_SET
+ {"NO_PARAMETERS_SET", ERR_LIB_DH, DH_R_NO_PARAMETERS_SET},
+ #else
+ {"NO_PARAMETERS_SET", 5, 107},
+ #endif
+ #ifdef DH_R_NO_PRIVATE_VALUE
+ {"NO_PRIVATE_VALUE", ERR_LIB_DH, DH_R_NO_PRIVATE_VALUE},
+ #else
+ {"NO_PRIVATE_VALUE", 5, 100},
+ #endif
+ #ifdef DH_R_PARAMETER_ENCODING_ERROR
+ {"PARAMETER_ENCODING_ERROR", ERR_LIB_DH, DH_R_PARAMETER_ENCODING_ERROR},
+ #else
+ {"PARAMETER_ENCODING_ERROR", 5, 105},
+ #endif
+ #ifdef DH_R_PEER_KEY_ERROR
+ {"PEER_KEY_ERROR", ERR_LIB_DH, DH_R_PEER_KEY_ERROR},
+ #else
+ {"PEER_KEY_ERROR", 5, 111},
+ #endif
+ #ifdef DH_R_SHARED_INFO_ERROR
+ {"SHARED_INFO_ERROR", ERR_LIB_DH, DH_R_SHARED_INFO_ERROR},
+ #else
+ {"SHARED_INFO_ERROR", 5, 113},
+ #endif
+ #ifdef DH_R_UNABLE_TO_CHECK_GENERATOR
+ {"UNABLE_TO_CHECK_GENERATOR", ERR_LIB_DH, DH_R_UNABLE_TO_CHECK_GENERATOR},
+ #else
+ {"UNABLE_TO_CHECK_GENERATOR", 5, 121},
+ #endif
+ #ifdef DSA_R_BAD_FFC_PARAMETERS
+ {"BAD_FFC_PARAMETERS", ERR_LIB_DSA, DSA_R_BAD_FFC_PARAMETERS},
+ #else
+ {"BAD_FFC_PARAMETERS", 10, 114},
+ #endif
+ #ifdef DSA_R_BAD_Q_VALUE
+ {"BAD_Q_VALUE", ERR_LIB_DSA, DSA_R_BAD_Q_VALUE},
+ #else
+ {"BAD_Q_VALUE", 10, 102},
+ #endif
+ #ifdef DSA_R_BN_DECODE_ERROR
+ {"BN_DECODE_ERROR", ERR_LIB_DSA, DSA_R_BN_DECODE_ERROR},
+ #else
+ {"BN_DECODE_ERROR", 10, 108},
+ #endif
+ #ifdef DSA_R_BN_ERROR
+ {"BN_ERROR", ERR_LIB_DSA, DSA_R_BN_ERROR},
+ #else
+ {"BN_ERROR", 10, 109},
+ #endif
+ #ifdef DSA_R_DECODE_ERROR
+ {"DECODE_ERROR", ERR_LIB_DSA, DSA_R_DECODE_ERROR},
+ #else
+ {"DECODE_ERROR", 10, 104},
+ #endif
+ #ifdef DSA_R_INVALID_DIGEST_TYPE
+ {"INVALID_DIGEST_TYPE", ERR_LIB_DSA, DSA_R_INVALID_DIGEST_TYPE},
+ #else
+ {"INVALID_DIGEST_TYPE", 10, 106},
+ #endif
+ #ifdef DSA_R_INVALID_PARAMETERS
+ {"INVALID_PARAMETERS", ERR_LIB_DSA, DSA_R_INVALID_PARAMETERS},
+ #else
+ {"INVALID_PARAMETERS", 10, 112},
+ #endif
+ #ifdef DSA_R_MISSING_PARAMETERS
+ {"MISSING_PARAMETERS", ERR_LIB_DSA, DSA_R_MISSING_PARAMETERS},
+ #else
+ {"MISSING_PARAMETERS", 10, 101},
+ #endif
+ #ifdef DSA_R_MISSING_PRIVATE_KEY
+ {"MISSING_PRIVATE_KEY", ERR_LIB_DSA, DSA_R_MISSING_PRIVATE_KEY},
+ #else
+ {"MISSING_PRIVATE_KEY", 10, 111},
+ #endif
+ #ifdef DSA_R_MODULUS_TOO_LARGE
+ {"MODULUS_TOO_LARGE", ERR_LIB_DSA, DSA_R_MODULUS_TOO_LARGE},
+ #else
+ {"MODULUS_TOO_LARGE", 10, 103},
+ #endif
+ #ifdef DSA_R_NO_PARAMETERS_SET
+ {"NO_PARAMETERS_SET", ERR_LIB_DSA, DSA_R_NO_PARAMETERS_SET},
+ #else
+ {"NO_PARAMETERS_SET", 10, 107},
+ #endif
+ #ifdef DSA_R_PARAMETER_ENCODING_ERROR
+ {"PARAMETER_ENCODING_ERROR", ERR_LIB_DSA, DSA_R_PARAMETER_ENCODING_ERROR},
+ #else
+ {"PARAMETER_ENCODING_ERROR", 10, 105},
+ #endif
+ #ifdef DSA_R_P_NOT_PRIME
+ {"P_NOT_PRIME", ERR_LIB_DSA, DSA_R_P_NOT_PRIME},
+ #else
+ {"P_NOT_PRIME", 10, 115},
+ #endif
+ #ifdef DSA_R_Q_NOT_PRIME
+ {"Q_NOT_PRIME", ERR_LIB_DSA, DSA_R_Q_NOT_PRIME},
+ #else
+ {"Q_NOT_PRIME", 10, 113},
+ #endif
+ #ifdef DSA_R_SEED_LEN_SMALL
+ {"SEED_LEN_SMALL", ERR_LIB_DSA, DSA_R_SEED_LEN_SMALL},
+ #else
+ {"SEED_LEN_SMALL", 10, 110},
+ #endif
+ #ifdef DSA_R_TOO_MANY_RETRIES
+ {"TOO_MANY_RETRIES", ERR_LIB_DSA, DSA_R_TOO_MANY_RETRIES},
+ #else
+ {"TOO_MANY_RETRIES", 10, 116},
+ #endif
+ #ifdef DSO_R_CTRL_FAILED
+ {"CTRL_FAILED", ERR_LIB_DSO, DSO_R_CTRL_FAILED},
+ #else
+ {"CTRL_FAILED", 37, 100},
+ #endif
+ #ifdef DSO_R_DSO_ALREADY_LOADED
+ {"DSO_ALREADY_LOADED", ERR_LIB_DSO, DSO_R_DSO_ALREADY_LOADED},
+ #else
+ {"DSO_ALREADY_LOADED", 37, 110},
+ #endif
+ #ifdef DSO_R_EMPTY_FILE_STRUCTURE
+ {"EMPTY_FILE_STRUCTURE", ERR_LIB_DSO, DSO_R_EMPTY_FILE_STRUCTURE},
+ #else
+ {"EMPTY_FILE_STRUCTURE", 37, 113},
+ #endif
+ #ifdef DSO_R_FAILURE
+ {"FAILURE", ERR_LIB_DSO, DSO_R_FAILURE},
+ #else
+ {"FAILURE", 37, 114},
+ #endif
+ #ifdef DSO_R_FILENAME_TOO_BIG
+ {"FILENAME_TOO_BIG", ERR_LIB_DSO, DSO_R_FILENAME_TOO_BIG},
+ #else
+ {"FILENAME_TOO_BIG", 37, 101},
+ #endif
+ #ifdef DSO_R_FINISH_FAILED
+ {"FINISH_FAILED", ERR_LIB_DSO, DSO_R_FINISH_FAILED},
+ #else
+ {"FINISH_FAILED", 37, 102},
+ #endif
+ #ifdef DSO_R_INCORRECT_FILE_SYNTAX
+ {"INCORRECT_FILE_SYNTAX", ERR_LIB_DSO, DSO_R_INCORRECT_FILE_SYNTAX},
+ #else
+ {"INCORRECT_FILE_SYNTAX", 37, 115},
+ #endif
+ #ifdef DSO_R_LOAD_FAILED
+ {"LOAD_FAILED", ERR_LIB_DSO, DSO_R_LOAD_FAILED},
+ #else
+ {"LOAD_FAILED", 37, 103},
+ #endif
+ #ifdef DSO_R_NAME_TRANSLATION_FAILED
+ {"NAME_TRANSLATION_FAILED", ERR_LIB_DSO, DSO_R_NAME_TRANSLATION_FAILED},
+ #else
+ {"NAME_TRANSLATION_FAILED", 37, 109},
+ #endif
+ #ifdef DSO_R_NO_FILENAME
+ {"NO_FILENAME", ERR_LIB_DSO, DSO_R_NO_FILENAME},
+ #else
+ {"NO_FILENAME", 37, 111},
+ #endif
+ #ifdef DSO_R_NULL_HANDLE
+ {"NULL_HANDLE", ERR_LIB_DSO, DSO_R_NULL_HANDLE},
+ #else
+ {"NULL_HANDLE", 37, 104},
+ #endif
+ #ifdef DSO_R_SET_FILENAME_FAILED
+ {"SET_FILENAME_FAILED", ERR_LIB_DSO, DSO_R_SET_FILENAME_FAILED},
+ #else
+ {"SET_FILENAME_FAILED", 37, 112},
+ #endif
+ #ifdef DSO_R_STACK_ERROR
+ {"STACK_ERROR", ERR_LIB_DSO, DSO_R_STACK_ERROR},
+ #else
+ {"STACK_ERROR", 37, 105},
+ #endif
+ #ifdef DSO_R_SYM_FAILURE
+ {"SYM_FAILURE", ERR_LIB_DSO, DSO_R_SYM_FAILURE},
+ #else
+ {"SYM_FAILURE", 37, 106},
+ #endif
+ #ifdef DSO_R_UNLOAD_FAILED
+ {"UNLOAD_FAILED", ERR_LIB_DSO, DSO_R_UNLOAD_FAILED},
+ #else
+ {"UNLOAD_FAILED", 37, 107},
+ #endif
+ #ifdef DSO_R_UNSUPPORTED
+ {"UNSUPPORTED", ERR_LIB_DSO, DSO_R_UNSUPPORTED},
+ #else
+ {"UNSUPPORTED", 37, 108},
+ #endif
+ #ifdef EC_R_ASN1_ERROR
+ {"ASN1_ERROR", ERR_LIB_EC, EC_R_ASN1_ERROR},
+ #else
+ {"ASN1_ERROR", 16, 115},
+ #endif
+ #ifdef EC_R_BAD_SIGNATURE
+ {"BAD_SIGNATURE", ERR_LIB_EC, EC_R_BAD_SIGNATURE},
+ #else
+ {"BAD_SIGNATURE", 16, 156},
+ #endif
+ #ifdef EC_R_BIGNUM_OUT_OF_RANGE
+ {"BIGNUM_OUT_OF_RANGE", ERR_LIB_EC, EC_R_BIGNUM_OUT_OF_RANGE},
+ #else
+ {"BIGNUM_OUT_OF_RANGE", 16, 144},
+ #endif
+ #ifdef EC_R_BUFFER_TOO_SMALL
+ {"BUFFER_TOO_SMALL", ERR_LIB_EC, EC_R_BUFFER_TOO_SMALL},
+ #else
+ {"BUFFER_TOO_SMALL", 16, 100},
+ #endif
+ #ifdef EC_R_CANNOT_INVERT
+ {"CANNOT_INVERT", ERR_LIB_EC, EC_R_CANNOT_INVERT},
+ #else
+ {"CANNOT_INVERT", 16, 165},
+ #endif
+ #ifdef EC_R_COORDINATES_OUT_OF_RANGE
+ {"COORDINATES_OUT_OF_RANGE", ERR_LIB_EC, EC_R_COORDINATES_OUT_OF_RANGE},
+ #else
+ {"COORDINATES_OUT_OF_RANGE", 16, 146},
+ #endif
+ #ifdef EC_R_CURVE_DOES_NOT_SUPPORT_ECDH
+ {"CURVE_DOES_NOT_SUPPORT_ECDH", ERR_LIB_EC, EC_R_CURVE_DOES_NOT_SUPPORT_ECDH},
+ #else
+ {"CURVE_DOES_NOT_SUPPORT_ECDH", 16, 160},
+ #endif
+ #ifdef EC_R_CURVE_DOES_NOT_SUPPORT_ECDSA
+ {"CURVE_DOES_NOT_SUPPORT_ECDSA", ERR_LIB_EC, EC_R_CURVE_DOES_NOT_SUPPORT_ECDSA},
+ #else
+ {"CURVE_DOES_NOT_SUPPORT_ECDSA", 16, 170},
+ #endif
+ #ifdef EC_R_CURVE_DOES_NOT_SUPPORT_SIGNING
+ {"CURVE_DOES_NOT_SUPPORT_SIGNING", ERR_LIB_EC, EC_R_CURVE_DOES_NOT_SUPPORT_SIGNING},
+ #else
+ {"CURVE_DOES_NOT_SUPPORT_SIGNING", 16, 159},
+ #endif
+ #ifdef EC_R_DECODE_ERROR
+ {"DECODE_ERROR", ERR_LIB_EC, EC_R_DECODE_ERROR},
+ #else
+ {"DECODE_ERROR", 16, 142},
+ #endif
+ #ifdef EC_R_DISCRIMINANT_IS_ZERO
+ {"DISCRIMINANT_IS_ZERO", ERR_LIB_EC, EC_R_DISCRIMINANT_IS_ZERO},
+ #else
+ {"DISCRIMINANT_IS_ZERO", 16, 118},
+ #endif
+ #ifdef EC_R_EC_GROUP_NEW_BY_NAME_FAILURE
+ {"EC_GROUP_NEW_BY_NAME_FAILURE", ERR_LIB_EC, EC_R_EC_GROUP_NEW_BY_NAME_FAILURE},
+ #else
+ {"EC_GROUP_NEW_BY_NAME_FAILURE", 16, 119},
+ #endif
+ #ifdef EC_R_EXPLICIT_PARAMS_NOT_SUPPORTED
+ {"EXPLICIT_PARAMS_NOT_SUPPORTED", ERR_LIB_EC, EC_R_EXPLICIT_PARAMS_NOT_SUPPORTED},
+ #else
+ {"EXPLICIT_PARAMS_NOT_SUPPORTED", 16, 127},
+ #endif
+ #ifdef EC_R_FAILED_MAKING_PUBLIC_KEY
+ {"FAILED_MAKING_PUBLIC_KEY", ERR_LIB_EC, EC_R_FAILED_MAKING_PUBLIC_KEY},
+ #else
+ {"FAILED_MAKING_PUBLIC_KEY", 16, 166},
+ #endif
+ #ifdef EC_R_FIELD_TOO_LARGE
+ {"FIELD_TOO_LARGE", ERR_LIB_EC, EC_R_FIELD_TOO_LARGE},
+ #else
+ {"FIELD_TOO_LARGE", 16, 143},
+ #endif
+ #ifdef EC_R_GF2M_NOT_SUPPORTED
+ {"GF2M_NOT_SUPPORTED", ERR_LIB_EC, EC_R_GF2M_NOT_SUPPORTED},
+ #else
+ {"GF2M_NOT_SUPPORTED", 16, 147},
+ #endif
+ #ifdef EC_R_GROUP2PKPARAMETERS_FAILURE
+ {"GROUP2PKPARAMETERS_FAILURE", ERR_LIB_EC, EC_R_GROUP2PKPARAMETERS_FAILURE},
+ #else
+ {"GROUP2PKPARAMETERS_FAILURE", 16, 120},
+ #endif
+ #ifdef EC_R_I2D_ECPKPARAMETERS_FAILURE
+ {"I2D_ECPKPARAMETERS_FAILURE", ERR_LIB_EC, EC_R_I2D_ECPKPARAMETERS_FAILURE},
+ #else
+ {"I2D_ECPKPARAMETERS_FAILURE", 16, 121},
+ #endif
+ #ifdef EC_R_INCOMPATIBLE_OBJECTS
+ {"INCOMPATIBLE_OBJECTS", ERR_LIB_EC, EC_R_INCOMPATIBLE_OBJECTS},
+ #else
+ {"INCOMPATIBLE_OBJECTS", 16, 101},
+ #endif
+ #ifdef EC_R_INVALID_A
+ {"INVALID_A", ERR_LIB_EC, EC_R_INVALID_A},
+ #else
+ {"INVALID_A", 16, 168},
+ #endif
+ #ifdef EC_R_INVALID_ARGUMENT
+ {"INVALID_ARGUMENT", ERR_LIB_EC, EC_R_INVALID_ARGUMENT},
+ #else
+ {"INVALID_ARGUMENT", 16, 112},
+ #endif
+ #ifdef EC_R_INVALID_B
+ {"INVALID_B", ERR_LIB_EC, EC_R_INVALID_B},
+ #else
+ {"INVALID_B", 16, 169},
+ #endif
+ #ifdef EC_R_INVALID_COFACTOR
+ {"INVALID_COFACTOR", ERR_LIB_EC, EC_R_INVALID_COFACTOR},
+ #else
+ {"INVALID_COFACTOR", 16, 171},
+ #endif
+ #ifdef EC_R_INVALID_COMPRESSED_POINT
+ {"INVALID_COMPRESSED_POINT", ERR_LIB_EC, EC_R_INVALID_COMPRESSED_POINT},
+ #else
+ {"INVALID_COMPRESSED_POINT", 16, 110},
+ #endif
+ #ifdef EC_R_INVALID_COMPRESSION_BIT
+ {"INVALID_COMPRESSION_BIT", ERR_LIB_EC, EC_R_INVALID_COMPRESSION_BIT},
+ #else
+ {"INVALID_COMPRESSION_BIT", 16, 109},
+ #endif
+ #ifdef EC_R_INVALID_CURVE
+ {"INVALID_CURVE", ERR_LIB_EC, EC_R_INVALID_CURVE},
+ #else
+ {"INVALID_CURVE", 16, 141},
+ #endif
+ #ifdef EC_R_INVALID_DIGEST
+ {"INVALID_DIGEST", ERR_LIB_EC, EC_R_INVALID_DIGEST},
+ #else
+ {"INVALID_DIGEST", 16, 151},
+ #endif
+ #ifdef EC_R_INVALID_DIGEST_TYPE
+ {"INVALID_DIGEST_TYPE", ERR_LIB_EC, EC_R_INVALID_DIGEST_TYPE},
+ #else
+ {"INVALID_DIGEST_TYPE", 16, 138},
+ #endif
+ #ifdef EC_R_INVALID_ENCODING
+ {"INVALID_ENCODING", ERR_LIB_EC, EC_R_INVALID_ENCODING},
+ #else
+ {"INVALID_ENCODING", 16, 102},
+ #endif
+ #ifdef EC_R_INVALID_FIELD
+ {"INVALID_FIELD", ERR_LIB_EC, EC_R_INVALID_FIELD},
+ #else
+ {"INVALID_FIELD", 16, 103},
+ #endif
+ #ifdef EC_R_INVALID_FORM
+ {"INVALID_FORM", ERR_LIB_EC, EC_R_INVALID_FORM},
+ #else
+ {"INVALID_FORM", 16, 104},
+ #endif
+ #ifdef EC_R_INVALID_GENERATOR
+ {"INVALID_GENERATOR", ERR_LIB_EC, EC_R_INVALID_GENERATOR},
+ #else
+ {"INVALID_GENERATOR", 16, 173},
+ #endif
+ #ifdef EC_R_INVALID_GROUP_ORDER
+ {"INVALID_GROUP_ORDER", ERR_LIB_EC, EC_R_INVALID_GROUP_ORDER},
+ #else
+ {"INVALID_GROUP_ORDER", 16, 122},
+ #endif
+ #ifdef EC_R_INVALID_KEY
+ {"INVALID_KEY", ERR_LIB_EC, EC_R_INVALID_KEY},
+ #else
+ {"INVALID_KEY", 16, 116},
+ #endif
+ #ifdef EC_R_INVALID_LENGTH
+ {"INVALID_LENGTH", ERR_LIB_EC, EC_R_INVALID_LENGTH},
+ #else
+ {"INVALID_LENGTH", 16, 117},
+ #endif
+ #ifdef EC_R_INVALID_NAMED_GROUP_CONVERSION
+ {"INVALID_NAMED_GROUP_CONVERSION", ERR_LIB_EC, EC_R_INVALID_NAMED_GROUP_CONVERSION},
+ #else
+ {"INVALID_NAMED_GROUP_CONVERSION", 16, 174},
+ #endif
+ #ifdef EC_R_INVALID_OUTPUT_LENGTH
+ {"INVALID_OUTPUT_LENGTH", ERR_LIB_EC, EC_R_INVALID_OUTPUT_LENGTH},
+ #else
+ {"INVALID_OUTPUT_LENGTH", 16, 161},
+ #endif
+ #ifdef EC_R_INVALID_P
+ {"INVALID_P", ERR_LIB_EC, EC_R_INVALID_P},
+ #else
+ {"INVALID_P", 16, 172},
+ #endif
+ #ifdef EC_R_INVALID_PEER_KEY
+ {"INVALID_PEER_KEY", ERR_LIB_EC, EC_R_INVALID_PEER_KEY},
+ #else
+ {"INVALID_PEER_KEY", 16, 133},
+ #endif
+ #ifdef EC_R_INVALID_PENTANOMIAL_BASIS
+ {"INVALID_PENTANOMIAL_BASIS", ERR_LIB_EC, EC_R_INVALID_PENTANOMIAL_BASIS},
+ #else
+ {"INVALID_PENTANOMIAL_BASIS", 16, 132},
+ #endif
+ #ifdef EC_R_INVALID_PRIVATE_KEY
+ {"INVALID_PRIVATE_KEY", ERR_LIB_EC, EC_R_INVALID_PRIVATE_KEY},
+ #else
+ {"INVALID_PRIVATE_KEY", 16, 123},
+ #endif
+ #ifdef EC_R_INVALID_SEED
+ {"INVALID_SEED", ERR_LIB_EC, EC_R_INVALID_SEED},
+ #else
+ {"INVALID_SEED", 16, 175},
+ #endif
+ #ifdef EC_R_INVALID_TRINOMIAL_BASIS
+ {"INVALID_TRINOMIAL_BASIS", ERR_LIB_EC, EC_R_INVALID_TRINOMIAL_BASIS},
+ #else
+ {"INVALID_TRINOMIAL_BASIS", 16, 137},
+ #endif
+ #ifdef EC_R_KDF_PARAMETER_ERROR
+ {"KDF_PARAMETER_ERROR", ERR_LIB_EC, EC_R_KDF_PARAMETER_ERROR},
+ #else
+ {"KDF_PARAMETER_ERROR", 16, 148},
+ #endif
+ #ifdef EC_R_KEYS_NOT_SET
+ {"KEYS_NOT_SET", ERR_LIB_EC, EC_R_KEYS_NOT_SET},
+ #else
+ {"KEYS_NOT_SET", 16, 140},
+ #endif
+ #ifdef EC_R_LADDER_POST_FAILURE
+ {"LADDER_POST_FAILURE", ERR_LIB_EC, EC_R_LADDER_POST_FAILURE},
+ #else
+ {"LADDER_POST_FAILURE", 16, 136},
+ #endif
+ #ifdef EC_R_LADDER_PRE_FAILURE
+ {"LADDER_PRE_FAILURE", ERR_LIB_EC, EC_R_LADDER_PRE_FAILURE},
+ #else
+ {"LADDER_PRE_FAILURE", 16, 153},
+ #endif
+ #ifdef EC_R_LADDER_STEP_FAILURE
+ {"LADDER_STEP_FAILURE", ERR_LIB_EC, EC_R_LADDER_STEP_FAILURE},
+ #else
+ {"LADDER_STEP_FAILURE", 16, 162},
+ #endif
+ #ifdef EC_R_MISSING_OID
+ {"MISSING_OID", ERR_LIB_EC, EC_R_MISSING_OID},
+ #else
+ {"MISSING_OID", 16, 167},
+ #endif
+ #ifdef EC_R_MISSING_PARAMETERS
+ {"MISSING_PARAMETERS", ERR_LIB_EC, EC_R_MISSING_PARAMETERS},
+ #else
+ {"MISSING_PARAMETERS", 16, 124},
+ #endif
+ #ifdef EC_R_MISSING_PRIVATE_KEY
+ {"MISSING_PRIVATE_KEY", ERR_LIB_EC, EC_R_MISSING_PRIVATE_KEY},
+ #else
+ {"MISSING_PRIVATE_KEY", 16, 125},
+ #endif
+ #ifdef EC_R_NEED_NEW_SETUP_VALUES
+ {"NEED_NEW_SETUP_VALUES", ERR_LIB_EC, EC_R_NEED_NEW_SETUP_VALUES},
+ #else
+ {"NEED_NEW_SETUP_VALUES", 16, 157},
+ #endif
+ #ifdef EC_R_NOT_A_NIST_PRIME
+ {"NOT_A_NIST_PRIME", ERR_LIB_EC, EC_R_NOT_A_NIST_PRIME},
+ #else
+ {"NOT_A_NIST_PRIME", 16, 135},
+ #endif
+ #ifdef EC_R_NOT_IMPLEMENTED
+ {"NOT_IMPLEMENTED", ERR_LIB_EC, EC_R_NOT_IMPLEMENTED},
+ #else
+ {"NOT_IMPLEMENTED", 16, 126},
+ #endif
+ #ifdef EC_R_NOT_INITIALIZED
+ {"NOT_INITIALIZED", ERR_LIB_EC, EC_R_NOT_INITIALIZED},
+ #else
+ {"NOT_INITIALIZED", 16, 111},
+ #endif
+ #ifdef EC_R_NO_PARAMETERS_SET
+ {"NO_PARAMETERS_SET", ERR_LIB_EC, EC_R_NO_PARAMETERS_SET},
+ #else
+ {"NO_PARAMETERS_SET", 16, 139},
+ #endif
+ #ifdef EC_R_NO_PRIVATE_VALUE
+ {"NO_PRIVATE_VALUE", ERR_LIB_EC, EC_R_NO_PRIVATE_VALUE},
+ #else
+ {"NO_PRIVATE_VALUE", 16, 154},
+ #endif
+ #ifdef EC_R_OPERATION_NOT_SUPPORTED
+ {"OPERATION_NOT_SUPPORTED", ERR_LIB_EC, EC_R_OPERATION_NOT_SUPPORTED},
+ #else
+ {"OPERATION_NOT_SUPPORTED", 16, 152},
+ #endif
+ #ifdef EC_R_PASSED_NULL_PARAMETER
+ {"PASSED_NULL_PARAMETER", ERR_LIB_EC, EC_R_PASSED_NULL_PARAMETER},
+ #else
+ {"PASSED_NULL_PARAMETER", 16, 134},
+ #endif
+ #ifdef EC_R_PEER_KEY_ERROR
+ {"PEER_KEY_ERROR", ERR_LIB_EC, EC_R_PEER_KEY_ERROR},
+ #else
+ {"PEER_KEY_ERROR", 16, 149},
+ #endif
+ #ifdef EC_R_POINT_ARITHMETIC_FAILURE
+ {"POINT_ARITHMETIC_FAILURE", ERR_LIB_EC, EC_R_POINT_ARITHMETIC_FAILURE},
+ #else
+ {"POINT_ARITHMETIC_FAILURE", 16, 155},
+ #endif
+ #ifdef EC_R_POINT_AT_INFINITY
+ {"POINT_AT_INFINITY", ERR_LIB_EC, EC_R_POINT_AT_INFINITY},
+ #else
+ {"POINT_AT_INFINITY", 16, 106},
+ #endif
+ #ifdef EC_R_POINT_COORDINATES_BLIND_FAILURE
+ {"POINT_COORDINATES_BLIND_FAILURE", ERR_LIB_EC, EC_R_POINT_COORDINATES_BLIND_FAILURE},
+ #else
+ {"POINT_COORDINATES_BLIND_FAILURE", 16, 163},
+ #endif
+ #ifdef EC_R_POINT_IS_NOT_ON_CURVE
+ {"POINT_IS_NOT_ON_CURVE", ERR_LIB_EC, EC_R_POINT_IS_NOT_ON_CURVE},
+ #else
+ {"POINT_IS_NOT_ON_CURVE", 16, 107},
+ #endif
+ #ifdef EC_R_RANDOM_NUMBER_GENERATION_FAILED
+ {"RANDOM_NUMBER_GENERATION_FAILED", ERR_LIB_EC, EC_R_RANDOM_NUMBER_GENERATION_FAILED},
+ #else
+ {"RANDOM_NUMBER_GENERATION_FAILED", 16, 158},
+ #endif
+ #ifdef EC_R_SHARED_INFO_ERROR
+ {"SHARED_INFO_ERROR", ERR_LIB_EC, EC_R_SHARED_INFO_ERROR},
+ #else
+ {"SHARED_INFO_ERROR", 16, 150},
+ #endif
+ #ifdef EC_R_SLOT_FULL
+ {"SLOT_FULL", ERR_LIB_EC, EC_R_SLOT_FULL},
+ #else
+ {"SLOT_FULL", 16, 108},
+ #endif
+ #ifdef EC_R_TOO_MANY_RETRIES
+ {"TOO_MANY_RETRIES", ERR_LIB_EC, EC_R_TOO_MANY_RETRIES},
+ #else
+ {"TOO_MANY_RETRIES", 16, 176},
+ #endif
+ #ifdef EC_R_UNDEFINED_GENERATOR
+ {"UNDEFINED_GENERATOR", ERR_LIB_EC, EC_R_UNDEFINED_GENERATOR},
+ #else
+ {"UNDEFINED_GENERATOR", 16, 113},
+ #endif
+ #ifdef EC_R_UNDEFINED_ORDER
+ {"UNDEFINED_ORDER", ERR_LIB_EC, EC_R_UNDEFINED_ORDER},
+ #else
+ {"UNDEFINED_ORDER", 16, 128},
+ #endif
+ #ifdef EC_R_UNKNOWN_COFACTOR
+ {"UNKNOWN_COFACTOR", ERR_LIB_EC, EC_R_UNKNOWN_COFACTOR},
+ #else
+ {"UNKNOWN_COFACTOR", 16, 164},
+ #endif
+ #ifdef EC_R_UNKNOWN_GROUP
+ {"UNKNOWN_GROUP", ERR_LIB_EC, EC_R_UNKNOWN_GROUP},
+ #else
+ {"UNKNOWN_GROUP", 16, 129},
+ #endif
+ #ifdef EC_R_UNKNOWN_ORDER
+ {"UNKNOWN_ORDER", ERR_LIB_EC, EC_R_UNKNOWN_ORDER},
+ #else
+ {"UNKNOWN_ORDER", 16, 114},
+ #endif
+ #ifdef EC_R_UNSUPPORTED_FIELD
+ {"UNSUPPORTED_FIELD", ERR_LIB_EC, EC_R_UNSUPPORTED_FIELD},
+ #else
+ {"UNSUPPORTED_FIELD", 16, 131},
+ #endif
+ #ifdef EC_R_WRONG_CURVE_PARAMETERS
+ {"WRONG_CURVE_PARAMETERS", ERR_LIB_EC, EC_R_WRONG_CURVE_PARAMETERS},
+ #else
+ {"WRONG_CURVE_PARAMETERS", 16, 145},
+ #endif
+ #ifdef EC_R_WRONG_ORDER
+ {"WRONG_ORDER", ERR_LIB_EC, EC_R_WRONG_ORDER},
+ #else
+ {"WRONG_ORDER", 16, 130},
+ #endif
+ #ifdef ENGINE_R_ALREADY_LOADED
+ {"ALREADY_LOADED", ERR_LIB_ENGINE, ENGINE_R_ALREADY_LOADED},
+ #else
+ {"ALREADY_LOADED", 38, 100},
+ #endif
+ #ifdef ENGINE_R_ARGUMENT_IS_NOT_A_NUMBER
+ {"ARGUMENT_IS_NOT_A_NUMBER", ERR_LIB_ENGINE, ENGINE_R_ARGUMENT_IS_NOT_A_NUMBER},
+ #else
+ {"ARGUMENT_IS_NOT_A_NUMBER", 38, 133},
+ #endif
+ #ifdef ENGINE_R_CMD_NOT_EXECUTABLE
+ {"CMD_NOT_EXECUTABLE", ERR_LIB_ENGINE, ENGINE_R_CMD_NOT_EXECUTABLE},
+ #else
+ {"CMD_NOT_EXECUTABLE", 38, 134},
+ #endif
+ #ifdef ENGINE_R_COMMAND_TAKES_INPUT
+ {"COMMAND_TAKES_INPUT", ERR_LIB_ENGINE, ENGINE_R_COMMAND_TAKES_INPUT},
+ #else
+ {"COMMAND_TAKES_INPUT", 38, 135},
+ #endif
+ #ifdef ENGINE_R_COMMAND_TAKES_NO_INPUT
+ {"COMMAND_TAKES_NO_INPUT", ERR_LIB_ENGINE, ENGINE_R_COMMAND_TAKES_NO_INPUT},
+ #else
+ {"COMMAND_TAKES_NO_INPUT", 38, 136},
+ #endif
+ #ifdef ENGINE_R_CONFLICTING_ENGINE_ID
+ {"CONFLICTING_ENGINE_ID", ERR_LIB_ENGINE, ENGINE_R_CONFLICTING_ENGINE_ID},
+ #else
+ {"CONFLICTING_ENGINE_ID", 38, 103},
+ #endif
+ #ifdef ENGINE_R_CTRL_COMMAND_NOT_IMPLEMENTED
+ {"CTRL_COMMAND_NOT_IMPLEMENTED", ERR_LIB_ENGINE, ENGINE_R_CTRL_COMMAND_NOT_IMPLEMENTED},
+ #else
+ {"CTRL_COMMAND_NOT_IMPLEMENTED", 38, 119},
+ #endif
+ #ifdef ENGINE_R_DSO_FAILURE
+ {"DSO_FAILURE", ERR_LIB_ENGINE, ENGINE_R_DSO_FAILURE},
+ #else
+ {"DSO_FAILURE", 38, 104},
+ #endif
+ #ifdef ENGINE_R_DSO_NOT_FOUND
+ {"DSO_NOT_FOUND", ERR_LIB_ENGINE, ENGINE_R_DSO_NOT_FOUND},
+ #else
+ {"DSO_NOT_FOUND", 38, 132},
+ #endif
+ #ifdef ENGINE_R_ENGINES_SECTION_ERROR
+ {"ENGINES_SECTION_ERROR", ERR_LIB_ENGINE, ENGINE_R_ENGINES_SECTION_ERROR},
+ #else
+ {"ENGINES_SECTION_ERROR", 38, 148},
+ #endif
+ #ifdef ENGINE_R_ENGINE_CONFIGURATION_ERROR
+ {"ENGINE_CONFIGURATION_ERROR", ERR_LIB_ENGINE, ENGINE_R_ENGINE_CONFIGURATION_ERROR},
+ #else
+ {"ENGINE_CONFIGURATION_ERROR", 38, 102},
+ #endif
+ #ifdef ENGINE_R_ENGINE_IS_NOT_IN_LIST
+ {"ENGINE_IS_NOT_IN_LIST", ERR_LIB_ENGINE, ENGINE_R_ENGINE_IS_NOT_IN_LIST},
+ #else
+ {"ENGINE_IS_NOT_IN_LIST", 38, 105},
+ #endif
+ #ifdef ENGINE_R_ENGINE_SECTION_ERROR
+ {"ENGINE_SECTION_ERROR", ERR_LIB_ENGINE, ENGINE_R_ENGINE_SECTION_ERROR},
+ #else
+ {"ENGINE_SECTION_ERROR", 38, 149},
+ #endif
+ #ifdef ENGINE_R_FAILED_LOADING_PRIVATE_KEY
+ {"FAILED_LOADING_PRIVATE_KEY", ERR_LIB_ENGINE, ENGINE_R_FAILED_LOADING_PRIVATE_KEY},
+ #else
+ {"FAILED_LOADING_PRIVATE_KEY", 38, 128},
+ #endif
+ #ifdef ENGINE_R_FAILED_LOADING_PUBLIC_KEY
+ {"FAILED_LOADING_PUBLIC_KEY", ERR_LIB_ENGINE, ENGINE_R_FAILED_LOADING_PUBLIC_KEY},
+ #else
+ {"FAILED_LOADING_PUBLIC_KEY", 38, 129},
+ #endif
+ #ifdef ENGINE_R_FINISH_FAILED
+ {"FINISH_FAILED", ERR_LIB_ENGINE, ENGINE_R_FINISH_FAILED},
+ #else
+ {"FINISH_FAILED", 38, 106},
+ #endif
+ #ifdef ENGINE_R_ID_OR_NAME_MISSING
+ {"ID_OR_NAME_MISSING", ERR_LIB_ENGINE, ENGINE_R_ID_OR_NAME_MISSING},
+ #else
+ {"ID_OR_NAME_MISSING", 38, 108},
+ #endif
+ #ifdef ENGINE_R_INIT_FAILED
+ {"INIT_FAILED", ERR_LIB_ENGINE, ENGINE_R_INIT_FAILED},
+ #else
+ {"INIT_FAILED", 38, 109},
+ #endif
+ #ifdef ENGINE_R_INTERNAL_LIST_ERROR
+ {"INTERNAL_LIST_ERROR", ERR_LIB_ENGINE, ENGINE_R_INTERNAL_LIST_ERROR},
+ #else
+ {"INTERNAL_LIST_ERROR", 38, 110},
+ #endif
+ #ifdef ENGINE_R_INVALID_ARGUMENT
+ {"INVALID_ARGUMENT", ERR_LIB_ENGINE, ENGINE_R_INVALID_ARGUMENT},
+ #else
+ {"INVALID_ARGUMENT", 38, 143},
+ #endif
+ #ifdef ENGINE_R_INVALID_CMD_NAME
+ {"INVALID_CMD_NAME", ERR_LIB_ENGINE, ENGINE_R_INVALID_CMD_NAME},
+ #else
+ {"INVALID_CMD_NAME", 38, 137},
+ #endif
+ #ifdef ENGINE_R_INVALID_CMD_NUMBER
+ {"INVALID_CMD_NUMBER", ERR_LIB_ENGINE, ENGINE_R_INVALID_CMD_NUMBER},
+ #else
+ {"INVALID_CMD_NUMBER", 38, 138},
+ #endif
+ #ifdef ENGINE_R_INVALID_INIT_VALUE
+ {"INVALID_INIT_VALUE", ERR_LIB_ENGINE, ENGINE_R_INVALID_INIT_VALUE},
+ #else
+ {"INVALID_INIT_VALUE", 38, 151},
+ #endif
+ #ifdef ENGINE_R_INVALID_STRING
+ {"INVALID_STRING", ERR_LIB_ENGINE, ENGINE_R_INVALID_STRING},
+ #else
+ {"INVALID_STRING", 38, 150},
+ #endif
+ #ifdef ENGINE_R_NOT_INITIALISED
+ {"NOT_INITIALISED", ERR_LIB_ENGINE, ENGINE_R_NOT_INITIALISED},
+ #else
+ {"NOT_INITIALISED", 38, 117},
+ #endif
+ #ifdef ENGINE_R_NOT_LOADED
+ {"NOT_LOADED", ERR_LIB_ENGINE, ENGINE_R_NOT_LOADED},
+ #else
+ {"NOT_LOADED", 38, 112},
+ #endif
+ #ifdef ENGINE_R_NO_CONTROL_FUNCTION
+ {"NO_CONTROL_FUNCTION", ERR_LIB_ENGINE, ENGINE_R_NO_CONTROL_FUNCTION},
+ #else
+ {"NO_CONTROL_FUNCTION", 38, 120},
+ #endif
+ #ifdef ENGINE_R_NO_INDEX
+ {"NO_INDEX", ERR_LIB_ENGINE, ENGINE_R_NO_INDEX},
+ #else
+ {"NO_INDEX", 38, 144},
+ #endif
+ #ifdef ENGINE_R_NO_LOAD_FUNCTION
+ {"NO_LOAD_FUNCTION", ERR_LIB_ENGINE, ENGINE_R_NO_LOAD_FUNCTION},
+ #else
+ {"NO_LOAD_FUNCTION", 38, 125},
+ #endif
+ #ifdef ENGINE_R_NO_REFERENCE
+ {"NO_REFERENCE", ERR_LIB_ENGINE, ENGINE_R_NO_REFERENCE},
+ #else
+ {"NO_REFERENCE", 38, 130},
+ #endif
+ #ifdef ENGINE_R_NO_SUCH_ENGINE
+ {"NO_SUCH_ENGINE", ERR_LIB_ENGINE, ENGINE_R_NO_SUCH_ENGINE},
+ #else
+ {"NO_SUCH_ENGINE", 38, 116},
+ #endif
+ #ifdef ENGINE_R_UNIMPLEMENTED_CIPHER
+ {"UNIMPLEMENTED_CIPHER", ERR_LIB_ENGINE, ENGINE_R_UNIMPLEMENTED_CIPHER},
+ #else
+ {"UNIMPLEMENTED_CIPHER", 38, 146},
+ #endif
+ #ifdef ENGINE_R_UNIMPLEMENTED_DIGEST
+ {"UNIMPLEMENTED_DIGEST", ERR_LIB_ENGINE, ENGINE_R_UNIMPLEMENTED_DIGEST},
+ #else
+ {"UNIMPLEMENTED_DIGEST", 38, 147},
+ #endif
+ #ifdef ENGINE_R_UNIMPLEMENTED_PUBLIC_KEY_METHOD
+ {"UNIMPLEMENTED_PUBLIC_KEY_METHOD", ERR_LIB_ENGINE, ENGINE_R_UNIMPLEMENTED_PUBLIC_KEY_METHOD},
+ #else
+ {"UNIMPLEMENTED_PUBLIC_KEY_METHOD", 38, 101},
+ #endif
+ #ifdef ENGINE_R_VERSION_INCOMPATIBILITY
+ {"VERSION_INCOMPATIBILITY", ERR_LIB_ENGINE, ENGINE_R_VERSION_INCOMPATIBILITY},
+ #else
+ {"VERSION_INCOMPATIBILITY", 38, 145},
+ #endif
+ #ifdef ESS_R_EMPTY_ESS_CERT_ID_LIST
+ {"EMPTY_ESS_CERT_ID_LIST", ERR_LIB_ESS, ESS_R_EMPTY_ESS_CERT_ID_LIST},
+ #else
+ {"EMPTY_ESS_CERT_ID_LIST", 54, 107},
+ #endif
+ #ifdef ESS_R_ESS_CERT_DIGEST_ERROR
+ {"ESS_CERT_DIGEST_ERROR", ERR_LIB_ESS, ESS_R_ESS_CERT_DIGEST_ERROR},
+ #else
+ {"ESS_CERT_DIGEST_ERROR", 54, 103},
+ #endif
+ #ifdef ESS_R_ESS_CERT_ID_NOT_FOUND
+ {"ESS_CERT_ID_NOT_FOUND", ERR_LIB_ESS, ESS_R_ESS_CERT_ID_NOT_FOUND},
+ #else
+ {"ESS_CERT_ID_NOT_FOUND", 54, 104},
+ #endif
+ #ifdef ESS_R_ESS_CERT_ID_WRONG_ORDER
+ {"ESS_CERT_ID_WRONG_ORDER", ERR_LIB_ESS, ESS_R_ESS_CERT_ID_WRONG_ORDER},
+ #else
+ {"ESS_CERT_ID_WRONG_ORDER", 54, 105},
+ #endif
+ #ifdef ESS_R_ESS_DIGEST_ALG_UNKNOWN
+ {"ESS_DIGEST_ALG_UNKNOWN", ERR_LIB_ESS, ESS_R_ESS_DIGEST_ALG_UNKNOWN},
+ #else
+ {"ESS_DIGEST_ALG_UNKNOWN", 54, 106},
+ #endif
+ #ifdef ESS_R_ESS_SIGNING_CERTIFICATE_ERROR
+ {"ESS_SIGNING_CERTIFICATE_ERROR", ERR_LIB_ESS, ESS_R_ESS_SIGNING_CERTIFICATE_ERROR},
+ #else
+ {"ESS_SIGNING_CERTIFICATE_ERROR", 54, 102},
+ #endif
+ #ifdef ESS_R_ESS_SIGNING_CERT_ADD_ERROR
+ {"ESS_SIGNING_CERT_ADD_ERROR", ERR_LIB_ESS, ESS_R_ESS_SIGNING_CERT_ADD_ERROR},
+ #else
+ {"ESS_SIGNING_CERT_ADD_ERROR", 54, 100},
+ #endif
+ #ifdef ESS_R_ESS_SIGNING_CERT_V2_ADD_ERROR
+ {"ESS_SIGNING_CERT_V2_ADD_ERROR", ERR_LIB_ESS, ESS_R_ESS_SIGNING_CERT_V2_ADD_ERROR},
+ #else
+ {"ESS_SIGNING_CERT_V2_ADD_ERROR", 54, 101},
+ #endif
+ #ifdef ESS_R_MISSING_SIGNING_CERTIFICATE_ATTRIBUTE
+ {"MISSING_SIGNING_CERTIFICATE_ATTRIBUTE", ERR_LIB_ESS, ESS_R_MISSING_SIGNING_CERTIFICATE_ATTRIBUTE},
+ #else
+ {"MISSING_SIGNING_CERTIFICATE_ATTRIBUTE", 54, 108},
+ #endif
+ #ifdef EVP_R_AES_KEY_SETUP_FAILED
+ {"AES_KEY_SETUP_FAILED", ERR_LIB_EVP, EVP_R_AES_KEY_SETUP_FAILED},
+ #else
+ {"AES_KEY_SETUP_FAILED", 6, 143},
+ #endif
+ #ifdef EVP_R_ARIA_KEY_SETUP_FAILED
+ {"ARIA_KEY_SETUP_FAILED", ERR_LIB_EVP, EVP_R_ARIA_KEY_SETUP_FAILED},
+ #else
+ {"ARIA_KEY_SETUP_FAILED", 6, 176},
+ #endif
+ #ifdef EVP_R_BAD_ALGORITHM_NAME
+ {"BAD_ALGORITHM_NAME", ERR_LIB_EVP, EVP_R_BAD_ALGORITHM_NAME},
+ #else
+ {"BAD_ALGORITHM_NAME", 6, 200},
+ #endif
+ #ifdef EVP_R_BAD_DECRYPT
+ {"BAD_DECRYPT", ERR_LIB_EVP, EVP_R_BAD_DECRYPT},
+ #else
+ {"BAD_DECRYPT", 6, 100},
+ #endif
+ #ifdef EVP_R_BAD_KEY_LENGTH
+ {"BAD_KEY_LENGTH", ERR_LIB_EVP, EVP_R_BAD_KEY_LENGTH},
+ #else
+ {"BAD_KEY_LENGTH", 6, 195},
+ #endif
+ #ifdef EVP_R_BUFFER_TOO_SMALL
+ {"BUFFER_TOO_SMALL", ERR_LIB_EVP, EVP_R_BUFFER_TOO_SMALL},
+ #else
+ {"BUFFER_TOO_SMALL", 6, 155},
+ #endif
+ #ifdef EVP_R_CACHE_CONSTANTS_FAILED
+ {"CACHE_CONSTANTS_FAILED", ERR_LIB_EVP, EVP_R_CACHE_CONSTANTS_FAILED},
+ #else
+ {"CACHE_CONSTANTS_FAILED", 6, 225},
+ #endif
+ #ifdef EVP_R_CAMELLIA_KEY_SETUP_FAILED
+ {"CAMELLIA_KEY_SETUP_FAILED", ERR_LIB_EVP, EVP_R_CAMELLIA_KEY_SETUP_FAILED},
+ #else
+ {"CAMELLIA_KEY_SETUP_FAILED", 6, 157},
+ #endif
+ #ifdef EVP_R_CANNOT_GET_PARAMETERS
+ {"CANNOT_GET_PARAMETERS", ERR_LIB_EVP, EVP_R_CANNOT_GET_PARAMETERS},
+ #else
+ {"CANNOT_GET_PARAMETERS", 6, 197},
+ #endif
+ #ifdef EVP_R_CANNOT_SET_PARAMETERS
+ {"CANNOT_SET_PARAMETERS", ERR_LIB_EVP, EVP_R_CANNOT_SET_PARAMETERS},
+ #else
+ {"CANNOT_SET_PARAMETERS", 6, 198},
+ #endif
+ #ifdef EVP_R_CIPHER_NOT_GCM_MODE
+ {"CIPHER_NOT_GCM_MODE", ERR_LIB_EVP, EVP_R_CIPHER_NOT_GCM_MODE},
+ #else
+ {"CIPHER_NOT_GCM_MODE", 6, 184},
+ #endif
+ #ifdef EVP_R_CIPHER_PARAMETER_ERROR
+ {"CIPHER_PARAMETER_ERROR", ERR_LIB_EVP, EVP_R_CIPHER_PARAMETER_ERROR},
+ #else
+ {"CIPHER_PARAMETER_ERROR", 6, 122},
+ #endif
+ #ifdef EVP_R_COMMAND_NOT_SUPPORTED
+ {"COMMAND_NOT_SUPPORTED", ERR_LIB_EVP, EVP_R_COMMAND_NOT_SUPPORTED},
+ #else
+ {"COMMAND_NOT_SUPPORTED", 6, 147},
+ #endif
+ #ifdef EVP_R_CONFLICTING_ALGORITHM_NAME
+ {"CONFLICTING_ALGORITHM_NAME", ERR_LIB_EVP, EVP_R_CONFLICTING_ALGORITHM_NAME},
+ #else
+ {"CONFLICTING_ALGORITHM_NAME", 6, 201},
+ #endif
+ #ifdef EVP_R_COPY_ERROR
+ {"COPY_ERROR", ERR_LIB_EVP, EVP_R_COPY_ERROR},
+ #else
+ {"COPY_ERROR", 6, 173},
+ #endif
+ #ifdef EVP_R_CTRL_NOT_IMPLEMENTED
+ {"CTRL_NOT_IMPLEMENTED", ERR_LIB_EVP, EVP_R_CTRL_NOT_IMPLEMENTED},
+ #else
+ {"CTRL_NOT_IMPLEMENTED", 6, 132},
+ #endif
+ #ifdef EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED
+ {"CTRL_OPERATION_NOT_IMPLEMENTED", ERR_LIB_EVP, EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED},
+ #else
+ {"CTRL_OPERATION_NOT_IMPLEMENTED", 6, 133},
+ #endif
+ #ifdef EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH
+ {"DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH", ERR_LIB_EVP, EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH},
+ #else
+ {"DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH", 6, 138},
+ #endif
+ #ifdef EVP_R_DECODE_ERROR
+ {"DECODE_ERROR", ERR_LIB_EVP, EVP_R_DECODE_ERROR},
+ #else
+ {"DECODE_ERROR", 6, 114},
+ #endif
+ #ifdef EVP_R_DEFAULT_QUERY_PARSE_ERROR
+ {"DEFAULT_QUERY_PARSE_ERROR", ERR_LIB_EVP, EVP_R_DEFAULT_QUERY_PARSE_ERROR},
+ #else
+ {"DEFAULT_QUERY_PARSE_ERROR", 6, 210},
+ #endif
+ #ifdef EVP_R_DIFFERENT_KEY_TYPES
+ {"DIFFERENT_KEY_TYPES", ERR_LIB_EVP, EVP_R_DIFFERENT_KEY_TYPES},
+ #else
+ {"DIFFERENT_KEY_TYPES", 6, 101},
+ #endif
+ #ifdef EVP_R_DIFFERENT_PARAMETERS
+ {"DIFFERENT_PARAMETERS", ERR_LIB_EVP, EVP_R_DIFFERENT_PARAMETERS},
+ #else
+ {"DIFFERENT_PARAMETERS", 6, 153},
+ #endif
+ #ifdef EVP_R_ERROR_LOADING_SECTION
+ {"ERROR_LOADING_SECTION", ERR_LIB_EVP, EVP_R_ERROR_LOADING_SECTION},
+ #else
+ {"ERROR_LOADING_SECTION", 6, 165},
+ #endif
+ #ifdef EVP_R_EXPECTING_AN_HMAC_KEY
+ {"EXPECTING_AN_HMAC_KEY", ERR_LIB_EVP, EVP_R_EXPECTING_AN_HMAC_KEY},
+ #else
+ {"EXPECTING_AN_HMAC_KEY", 6, 174},
+ #endif
+ #ifdef EVP_R_EXPECTING_AN_RSA_KEY
+ {"EXPECTING_AN_RSA_KEY", ERR_LIB_EVP, EVP_R_EXPECTING_AN_RSA_KEY},
+ #else
+ {"EXPECTING_AN_RSA_KEY", 6, 127},
+ #endif
+ #ifdef EVP_R_EXPECTING_A_DH_KEY
+ {"EXPECTING_A_DH_KEY", ERR_LIB_EVP, EVP_R_EXPECTING_A_DH_KEY},
+ #else
+ {"EXPECTING_A_DH_KEY", 6, 128},
+ #endif
+ #ifdef EVP_R_EXPECTING_A_DSA_KEY
+ {"EXPECTING_A_DSA_KEY", ERR_LIB_EVP, EVP_R_EXPECTING_A_DSA_KEY},
+ #else
+ {"EXPECTING_A_DSA_KEY", 6, 129},
+ #endif
+ #ifdef EVP_R_EXPECTING_A_ECX_KEY
+ {"EXPECTING_A_ECX_KEY", ERR_LIB_EVP, EVP_R_EXPECTING_A_ECX_KEY},
+ #else
+ {"EXPECTING_A_ECX_KEY", 6, 219},
+ #endif
+ #ifdef EVP_R_EXPECTING_A_EC_KEY
+ {"EXPECTING_A_EC_KEY", ERR_LIB_EVP, EVP_R_EXPECTING_A_EC_KEY},
+ #else
+ {"EXPECTING_A_EC_KEY", 6, 142},
+ #endif
+ #ifdef EVP_R_EXPECTING_A_POLY1305_KEY
+ {"EXPECTING_A_POLY1305_KEY", ERR_LIB_EVP, EVP_R_EXPECTING_A_POLY1305_KEY},
+ #else
+ {"EXPECTING_A_POLY1305_KEY", 6, 164},
+ #endif
+ #ifdef EVP_R_EXPECTING_A_SIPHASH_KEY
+ {"EXPECTING_A_SIPHASH_KEY", ERR_LIB_EVP, EVP_R_EXPECTING_A_SIPHASH_KEY},
+ #else
+ {"EXPECTING_A_SIPHASH_KEY", 6, 175},
+ #endif
+ #ifdef EVP_R_FINAL_ERROR
+ {"FINAL_ERROR", ERR_LIB_EVP, EVP_R_FINAL_ERROR},
+ #else
+ {"FINAL_ERROR", 6, 188},
+ #endif
+ #ifdef EVP_R_GENERATE_ERROR
+ {"GENERATE_ERROR", ERR_LIB_EVP, EVP_R_GENERATE_ERROR},
+ #else
+ {"GENERATE_ERROR", 6, 214},
+ #endif
+ #ifdef EVP_R_GET_RAW_KEY_FAILED
+ {"GET_RAW_KEY_FAILED", ERR_LIB_EVP, EVP_R_GET_RAW_KEY_FAILED},
+ #else
+ {"GET_RAW_KEY_FAILED", 6, 182},
+ #endif
+ #ifdef EVP_R_ILLEGAL_SCRYPT_PARAMETERS
+ {"ILLEGAL_SCRYPT_PARAMETERS", ERR_LIB_EVP, EVP_R_ILLEGAL_SCRYPT_PARAMETERS},
+ #else
+ {"ILLEGAL_SCRYPT_PARAMETERS", 6, 171},
+ #endif
+ #ifdef EVP_R_INACCESSIBLE_DOMAIN_PARAMETERS
+ {"INACCESSIBLE_DOMAIN_PARAMETERS", ERR_LIB_EVP, EVP_R_INACCESSIBLE_DOMAIN_PARAMETERS},
+ #else
+ {"INACCESSIBLE_DOMAIN_PARAMETERS", 6, 204},
+ #endif
+ #ifdef EVP_R_INACCESSIBLE_KEY
+ {"INACCESSIBLE_KEY", ERR_LIB_EVP, EVP_R_INACCESSIBLE_KEY},
+ #else
+ {"INACCESSIBLE_KEY", 6, 203},
+ #endif
+ #ifdef EVP_R_INITIALIZATION_ERROR
+ {"INITIALIZATION_ERROR", ERR_LIB_EVP, EVP_R_INITIALIZATION_ERROR},
+ #else
+ {"INITIALIZATION_ERROR", 6, 134},
+ #endif
+ #ifdef EVP_R_INPUT_NOT_INITIALIZED
+ {"INPUT_NOT_INITIALIZED", ERR_LIB_EVP, EVP_R_INPUT_NOT_INITIALIZED},
+ #else
+ {"INPUT_NOT_INITIALIZED", 6, 111},
+ #endif
+ #ifdef EVP_R_INVALID_CUSTOM_LENGTH
+ {"INVALID_CUSTOM_LENGTH", ERR_LIB_EVP, EVP_R_INVALID_CUSTOM_LENGTH},
+ #else
+ {"INVALID_CUSTOM_LENGTH", 6, 185},
+ #endif
+ #ifdef EVP_R_INVALID_DIGEST
+ {"INVALID_DIGEST", ERR_LIB_EVP, EVP_R_INVALID_DIGEST},
+ #else
+ {"INVALID_DIGEST", 6, 152},
+ #endif
+ #ifdef EVP_R_INVALID_IV_LENGTH
+ {"INVALID_IV_LENGTH", ERR_LIB_EVP, EVP_R_INVALID_IV_LENGTH},
+ #else
+ {"INVALID_IV_LENGTH", 6, 194},
+ #endif
+ #ifdef EVP_R_INVALID_KEY
+ {"INVALID_KEY", ERR_LIB_EVP, EVP_R_INVALID_KEY},
+ #else
+ {"INVALID_KEY", 6, 163},
+ #endif
+ #ifdef EVP_R_INVALID_KEY_LENGTH
+ {"INVALID_KEY_LENGTH", ERR_LIB_EVP, EVP_R_INVALID_KEY_LENGTH},
+ #else
+ {"INVALID_KEY_LENGTH", 6, 130},
+ #endif
+ #ifdef EVP_R_INVALID_LENGTH
+ {"INVALID_LENGTH", ERR_LIB_EVP, EVP_R_INVALID_LENGTH},
+ #else
+ {"INVALID_LENGTH", 6, 221},
+ #endif
+ #ifdef EVP_R_INVALID_NULL_ALGORITHM
+ {"INVALID_NULL_ALGORITHM", ERR_LIB_EVP, EVP_R_INVALID_NULL_ALGORITHM},
+ #else
+ {"INVALID_NULL_ALGORITHM", 6, 218},
+ #endif
+ #ifdef EVP_R_INVALID_OPERATION
+ {"INVALID_OPERATION", ERR_LIB_EVP, EVP_R_INVALID_OPERATION},
+ #else
+ {"INVALID_OPERATION", 6, 148},
+ #endif
+ #ifdef EVP_R_INVALID_PROVIDER_FUNCTIONS
+ {"INVALID_PROVIDER_FUNCTIONS", ERR_LIB_EVP, EVP_R_INVALID_PROVIDER_FUNCTIONS},
+ #else
+ {"INVALID_PROVIDER_FUNCTIONS", 6, 193},
+ #endif
+ #ifdef EVP_R_INVALID_SALT_LENGTH
+ {"INVALID_SALT_LENGTH", ERR_LIB_EVP, EVP_R_INVALID_SALT_LENGTH},
+ #else
+ {"INVALID_SALT_LENGTH", 6, 186},
+ #endif
+ #ifdef EVP_R_INVALID_SECRET_LENGTH
+ {"INVALID_SECRET_LENGTH", ERR_LIB_EVP, EVP_R_INVALID_SECRET_LENGTH},
+ #else
+ {"INVALID_SECRET_LENGTH", 6, 223},
+ #endif
+ #ifdef EVP_R_INVALID_SEED_LENGTH
+ {"INVALID_SEED_LENGTH", ERR_LIB_EVP, EVP_R_INVALID_SEED_LENGTH},
+ #else
+ {"INVALID_SEED_LENGTH", 6, 220},
+ #endif
+ #ifdef EVP_R_INVALID_VALUE
+ {"INVALID_VALUE", ERR_LIB_EVP, EVP_R_INVALID_VALUE},
+ #else
+ {"INVALID_VALUE", 6, 222},
+ #endif
+ #ifdef EVP_R_KEYMGMT_EXPORT_FAILURE
+ {"KEYMGMT_EXPORT_FAILURE", ERR_LIB_EVP, EVP_R_KEYMGMT_EXPORT_FAILURE},
+ #else
+ {"KEYMGMT_EXPORT_FAILURE", 6, 205},
+ #endif
+ #ifdef EVP_R_KEY_SETUP_FAILED
+ {"KEY_SETUP_FAILED", ERR_LIB_EVP, EVP_R_KEY_SETUP_FAILED},
+ #else
+ {"KEY_SETUP_FAILED", 6, 180},
+ #endif
+ #ifdef EVP_R_LOCKING_NOT_SUPPORTED
+ {"LOCKING_NOT_SUPPORTED", ERR_LIB_EVP, EVP_R_LOCKING_NOT_SUPPORTED},
+ #else
+ {"LOCKING_NOT_SUPPORTED", 6, 213},
+ #endif
+ #ifdef EVP_R_MEMORY_LIMIT_EXCEEDED
+ {"MEMORY_LIMIT_EXCEEDED", ERR_LIB_EVP, EVP_R_MEMORY_LIMIT_EXCEEDED},
+ #else
+ {"MEMORY_LIMIT_EXCEEDED", 6, 172},
+ #endif
+ #ifdef EVP_R_MESSAGE_DIGEST_IS_NULL
+ {"MESSAGE_DIGEST_IS_NULL", ERR_LIB_EVP, EVP_R_MESSAGE_DIGEST_IS_NULL},
+ #else
+ {"MESSAGE_DIGEST_IS_NULL", 6, 159},
+ #endif
+ #ifdef EVP_R_METHOD_NOT_SUPPORTED
+ {"METHOD_NOT_SUPPORTED", ERR_LIB_EVP, EVP_R_METHOD_NOT_SUPPORTED},
+ #else
+ {"METHOD_NOT_SUPPORTED", 6, 144},
+ #endif
+ #ifdef EVP_R_MISSING_PARAMETERS
+ {"MISSING_PARAMETERS", ERR_LIB_EVP, EVP_R_MISSING_PARAMETERS},
+ #else
+ {"MISSING_PARAMETERS", 6, 103},
+ #endif
+ #ifdef EVP_R_NOT_ABLE_TO_COPY_CTX
+ {"NOT_ABLE_TO_COPY_CTX", ERR_LIB_EVP, EVP_R_NOT_ABLE_TO_COPY_CTX},
+ #else
+ {"NOT_ABLE_TO_COPY_CTX", 6, 190},
+ #endif
+ #ifdef EVP_R_NOT_XOF_OR_INVALID_LENGTH
+ {"NOT_XOF_OR_INVALID_LENGTH", ERR_LIB_EVP, EVP_R_NOT_XOF_OR_INVALID_LENGTH},
+ #else
+ {"NOT_XOF_OR_INVALID_LENGTH", 6, 178},
+ #endif
+ #ifdef EVP_R_NO_CIPHER_SET
+ {"NO_CIPHER_SET", ERR_LIB_EVP, EVP_R_NO_CIPHER_SET},
+ #else
+ {"NO_CIPHER_SET", 6, 131},
+ #endif
+ #ifdef EVP_R_NO_DEFAULT_DIGEST
+ {"NO_DEFAULT_DIGEST", ERR_LIB_EVP, EVP_R_NO_DEFAULT_DIGEST},
+ #else
+ {"NO_DEFAULT_DIGEST", 6, 158},
+ #endif
+ #ifdef EVP_R_NO_DIGEST_SET
+ {"NO_DIGEST_SET", ERR_LIB_EVP, EVP_R_NO_DIGEST_SET},
+ #else
+ {"NO_DIGEST_SET", 6, 139},
+ #endif
+ #ifdef EVP_R_NO_IMPORT_FUNCTION
+ {"NO_IMPORT_FUNCTION", ERR_LIB_EVP, EVP_R_NO_IMPORT_FUNCTION},
+ #else
+ {"NO_IMPORT_FUNCTION", 6, 206},
+ #endif
+ #ifdef EVP_R_NO_KEYMGMT_AVAILABLE
+ {"NO_KEYMGMT_AVAILABLE", ERR_LIB_EVP, EVP_R_NO_KEYMGMT_AVAILABLE},
+ #else
+ {"NO_KEYMGMT_AVAILABLE", 6, 199},
+ #endif
+ #ifdef EVP_R_NO_KEYMGMT_PRESENT
+ {"NO_KEYMGMT_PRESENT", ERR_LIB_EVP, EVP_R_NO_KEYMGMT_PRESENT},
+ #else
+ {"NO_KEYMGMT_PRESENT", 6, 196},
+ #endif
+ #ifdef EVP_R_NO_KEY_SET
+ {"NO_KEY_SET", ERR_LIB_EVP, EVP_R_NO_KEY_SET},
+ #else
+ {"NO_KEY_SET", 6, 154},
+ #endif
+ #ifdef EVP_R_NO_OPERATION_SET
+ {"NO_OPERATION_SET", ERR_LIB_EVP, EVP_R_NO_OPERATION_SET},
+ #else
+ {"NO_OPERATION_SET", 6, 149},
+ #endif
+ #ifdef EVP_R_NULL_MAC_PKEY_CTX
+ {"NULL_MAC_PKEY_CTX", ERR_LIB_EVP, EVP_R_NULL_MAC_PKEY_CTX},
+ #else
+ {"NULL_MAC_PKEY_CTX", 6, 208},
+ #endif
+ #ifdef EVP_R_ONLY_ONESHOT_SUPPORTED
+ {"ONLY_ONESHOT_SUPPORTED", ERR_LIB_EVP, EVP_R_ONLY_ONESHOT_SUPPORTED},
+ #else
+ {"ONLY_ONESHOT_SUPPORTED", 6, 177},
+ #endif
+ #ifdef EVP_R_OPERATION_NOT_INITIALIZED
+ {"OPERATION_NOT_INITIALIZED", ERR_LIB_EVP, EVP_R_OPERATION_NOT_INITIALIZED},
+ #else
+ {"OPERATION_NOT_INITIALIZED", 6, 151},
+ #endif
+ #ifdef EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE
+ {"OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE", ERR_LIB_EVP, EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE},
+ #else
+ {"OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE", 6, 150},
+ #endif
+ #ifdef EVP_R_OUTPUT_WOULD_OVERFLOW
+ {"OUTPUT_WOULD_OVERFLOW", ERR_LIB_EVP, EVP_R_OUTPUT_WOULD_OVERFLOW},
+ #else
+ {"OUTPUT_WOULD_OVERFLOW", 6, 202},
+ #endif
+ #ifdef EVP_R_PARAMETER_TOO_LARGE
+ {"PARAMETER_TOO_LARGE", ERR_LIB_EVP, EVP_R_PARAMETER_TOO_LARGE},
+ #else
+ {"PARAMETER_TOO_LARGE", 6, 187},
+ #endif
+ #ifdef EVP_R_PARTIALLY_OVERLAPPING
+ {"PARTIALLY_OVERLAPPING", ERR_LIB_EVP, EVP_R_PARTIALLY_OVERLAPPING},
+ #else
+ {"PARTIALLY_OVERLAPPING", 6, 162},
+ #endif
+ #ifdef EVP_R_PBKDF2_ERROR
+ {"PBKDF2_ERROR", ERR_LIB_EVP, EVP_R_PBKDF2_ERROR},
+ #else
+ {"PBKDF2_ERROR", 6, 181},
+ #endif
+ #ifdef EVP_R_PKEY_APPLICATION_ASN1_METHOD_ALREADY_REGISTERED
+ {"PKEY_APPLICATION_ASN1_METHOD_ALREADY_REGISTERED", ERR_LIB_EVP, EVP_R_PKEY_APPLICATION_ASN1_METHOD_ALREADY_REGISTERED},
+ #else
+ {"PKEY_APPLICATION_ASN1_METHOD_ALREADY_REGISTERED", 6, 179},
+ #endif
+ #ifdef EVP_R_PRIVATE_KEY_DECODE_ERROR
+ {"PRIVATE_KEY_DECODE_ERROR", ERR_LIB_EVP, EVP_R_PRIVATE_KEY_DECODE_ERROR},
+ #else
+ {"PRIVATE_KEY_DECODE_ERROR", 6, 145},
+ #endif
+ #ifdef EVP_R_PRIVATE_KEY_ENCODE_ERROR
+ {"PRIVATE_KEY_ENCODE_ERROR", ERR_LIB_EVP, EVP_R_PRIVATE_KEY_ENCODE_ERROR},
+ #else
+ {"PRIVATE_KEY_ENCODE_ERROR", 6, 146},
+ #endif
+ #ifdef EVP_R_PUBLIC_KEY_NOT_RSA
+ {"PUBLIC_KEY_NOT_RSA", ERR_LIB_EVP, EVP_R_PUBLIC_KEY_NOT_RSA},
+ #else
+ {"PUBLIC_KEY_NOT_RSA", 6, 106},
+ #endif
+ #ifdef EVP_R_SETTING_XOF_FAILED
+ {"SETTING_XOF_FAILED", ERR_LIB_EVP, EVP_R_SETTING_XOF_FAILED},
+ #else
+ {"SETTING_XOF_FAILED", 6, 227},
+ #endif
+ #ifdef EVP_R_SET_DEFAULT_PROPERTY_FAILURE
+ {"SET_DEFAULT_PROPERTY_FAILURE", ERR_LIB_EVP, EVP_R_SET_DEFAULT_PROPERTY_FAILURE},
+ #else
+ {"SET_DEFAULT_PROPERTY_FAILURE", 6, 209},
+ #endif
+ #ifdef EVP_R_TOO_MANY_RECORDS
+ {"TOO_MANY_RECORDS", ERR_LIB_EVP, EVP_R_TOO_MANY_RECORDS},
+ #else
+ {"TOO_MANY_RECORDS", 6, 183},
+ #endif
+ #ifdef EVP_R_UNABLE_TO_ENABLE_LOCKING
+ {"UNABLE_TO_ENABLE_LOCKING", ERR_LIB_EVP, EVP_R_UNABLE_TO_ENABLE_LOCKING},
+ #else
+ {"UNABLE_TO_ENABLE_LOCKING", 6, 212},
+ #endif
+ #ifdef EVP_R_UNABLE_TO_GET_MAXIMUM_REQUEST_SIZE
+ {"UNABLE_TO_GET_MAXIMUM_REQUEST_SIZE", ERR_LIB_EVP, EVP_R_UNABLE_TO_GET_MAXIMUM_REQUEST_SIZE},
+ #else
+ {"UNABLE_TO_GET_MAXIMUM_REQUEST_SIZE", 6, 215},
+ #endif
+ #ifdef EVP_R_UNABLE_TO_GET_RANDOM_STRENGTH
+ {"UNABLE_TO_GET_RANDOM_STRENGTH", ERR_LIB_EVP, EVP_R_UNABLE_TO_GET_RANDOM_STRENGTH},
+ #else
+ {"UNABLE_TO_GET_RANDOM_STRENGTH", 6, 216},
+ #endif
+ #ifdef EVP_R_UNABLE_TO_LOCK_CONTEXT
+ {"UNABLE_TO_LOCK_CONTEXT", ERR_LIB_EVP, EVP_R_UNABLE_TO_LOCK_CONTEXT},
+ #else
+ {"UNABLE_TO_LOCK_CONTEXT", 6, 211},
+ #endif
+ #ifdef EVP_R_UNABLE_TO_SET_CALLBACKS
+ {"UNABLE_TO_SET_CALLBACKS", ERR_LIB_EVP, EVP_R_UNABLE_TO_SET_CALLBACKS},
+ #else
+ {"UNABLE_TO_SET_CALLBACKS", 6, 217},
+ #endif
+ #ifdef EVP_R_UNKNOWN_CIPHER
+ {"UNKNOWN_CIPHER", ERR_LIB_EVP, EVP_R_UNKNOWN_CIPHER},
+ #else
+ {"UNKNOWN_CIPHER", 6, 160},
+ #endif
+ #ifdef EVP_R_UNKNOWN_DIGEST
+ {"UNKNOWN_DIGEST", ERR_LIB_EVP, EVP_R_UNKNOWN_DIGEST},
+ #else
+ {"UNKNOWN_DIGEST", 6, 161},
+ #endif
+ #ifdef EVP_R_UNKNOWN_KEY_TYPE
+ {"UNKNOWN_KEY_TYPE", ERR_LIB_EVP, EVP_R_UNKNOWN_KEY_TYPE},
+ #else
+ {"UNKNOWN_KEY_TYPE", 6, 207},
+ #endif
+ #ifdef EVP_R_UNKNOWN_OPTION
+ {"UNKNOWN_OPTION", ERR_LIB_EVP, EVP_R_UNKNOWN_OPTION},
+ #else
+ {"UNKNOWN_OPTION", 6, 169},
+ #endif
+ #ifdef EVP_R_UNKNOWN_PBE_ALGORITHM
+ {"UNKNOWN_PBE_ALGORITHM", ERR_LIB_EVP, EVP_R_UNKNOWN_PBE_ALGORITHM},
+ #else
+ {"UNKNOWN_PBE_ALGORITHM", 6, 121},
+ #endif
+ #ifdef EVP_R_UNSUPPORTED_ALGORITHM
+ {"UNSUPPORTED_ALGORITHM", ERR_LIB_EVP, EVP_R_UNSUPPORTED_ALGORITHM},
+ #else
+ {"UNSUPPORTED_ALGORITHM", 6, 156},
+ #endif
+ #ifdef EVP_R_UNSUPPORTED_CIPHER
+ {"UNSUPPORTED_CIPHER", ERR_LIB_EVP, EVP_R_UNSUPPORTED_CIPHER},
+ #else
+ {"UNSUPPORTED_CIPHER", 6, 107},
+ #endif
+ #ifdef EVP_R_UNSUPPORTED_KEYLENGTH
+ {"UNSUPPORTED_KEYLENGTH", ERR_LIB_EVP, EVP_R_UNSUPPORTED_KEYLENGTH},
+ #else
+ {"UNSUPPORTED_KEYLENGTH", 6, 123},
+ #endif
+ #ifdef EVP_R_UNSUPPORTED_KEY_DERIVATION_FUNCTION
+ {"UNSUPPORTED_KEY_DERIVATION_FUNCTION", ERR_LIB_EVP, EVP_R_UNSUPPORTED_KEY_DERIVATION_FUNCTION},
+ #else
+ {"UNSUPPORTED_KEY_DERIVATION_FUNCTION", 6, 124},
+ #endif
+ #ifdef EVP_R_UNSUPPORTED_KEY_SIZE
+ {"UNSUPPORTED_KEY_SIZE", ERR_LIB_EVP, EVP_R_UNSUPPORTED_KEY_SIZE},
+ #else
+ {"UNSUPPORTED_KEY_SIZE", 6, 108},
+ #endif
+ #ifdef EVP_R_UNSUPPORTED_KEY_TYPE
+ {"UNSUPPORTED_KEY_TYPE", ERR_LIB_EVP, EVP_R_UNSUPPORTED_KEY_TYPE},
+ #else
+ {"UNSUPPORTED_KEY_TYPE", 6, 224},
+ #endif
+ #ifdef EVP_R_UNSUPPORTED_NUMBER_OF_ROUNDS
+ {"UNSUPPORTED_NUMBER_OF_ROUNDS", ERR_LIB_EVP, EVP_R_UNSUPPORTED_NUMBER_OF_ROUNDS},
+ #else
+ {"UNSUPPORTED_NUMBER_OF_ROUNDS", 6, 135},
+ #endif
+ #ifdef EVP_R_UNSUPPORTED_PRF
+ {"UNSUPPORTED_PRF", ERR_LIB_EVP, EVP_R_UNSUPPORTED_PRF},
+ #else
+ {"UNSUPPORTED_PRF", 6, 125},
+ #endif
+ #ifdef EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM
+ {"UNSUPPORTED_PRIVATE_KEY_ALGORITHM", ERR_LIB_EVP, EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM},
+ #else
+ {"UNSUPPORTED_PRIVATE_KEY_ALGORITHM", 6, 118},
+ #endif
+ #ifdef EVP_R_UNSUPPORTED_SALT_TYPE
+ {"UNSUPPORTED_SALT_TYPE", ERR_LIB_EVP, EVP_R_UNSUPPORTED_SALT_TYPE},
+ #else
+ {"UNSUPPORTED_SALT_TYPE", 6, 126},
+ #endif
+ #ifdef EVP_R_UPDATE_ERROR
+ {"UPDATE_ERROR", ERR_LIB_EVP, EVP_R_UPDATE_ERROR},
+ #else
+ {"UPDATE_ERROR", 6, 189},
+ #endif
+ #ifdef EVP_R_WRAP_MODE_NOT_ALLOWED
+ {"WRAP_MODE_NOT_ALLOWED", ERR_LIB_EVP, EVP_R_WRAP_MODE_NOT_ALLOWED},
+ #else
+ {"WRAP_MODE_NOT_ALLOWED", 6, 170},
+ #endif
+ #ifdef EVP_R_WRONG_FINAL_BLOCK_LENGTH
+ {"WRONG_FINAL_BLOCK_LENGTH", ERR_LIB_EVP, EVP_R_WRONG_FINAL_BLOCK_LENGTH},
+ #else
+ {"WRONG_FINAL_BLOCK_LENGTH", 6, 109},
+ #endif
+ #ifdef EVP_R_XTS_DATA_UNIT_IS_TOO_LARGE
+ {"XTS_DATA_UNIT_IS_TOO_LARGE", ERR_LIB_EVP, EVP_R_XTS_DATA_UNIT_IS_TOO_LARGE},
+ #else
+ {"XTS_DATA_UNIT_IS_TOO_LARGE", 6, 191},
+ #endif
+ #ifdef EVP_R_XTS_DUPLICATED_KEYS
+ {"XTS_DUPLICATED_KEYS", ERR_LIB_EVP, EVP_R_XTS_DUPLICATED_KEYS},
+ #else
+ {"XTS_DUPLICATED_KEYS", 6, 192},
+ #endif
+ #ifdef HTTP_R_ASN1_LEN_EXCEEDS_MAX_RESP_LEN
+ {"ASN1_LEN_EXCEEDS_MAX_RESP_LEN", ERR_LIB_HTTP, HTTP_R_ASN1_LEN_EXCEEDS_MAX_RESP_LEN},
+ #else
+ {"ASN1_LEN_EXCEEDS_MAX_RESP_LEN", 61, 108},
+ #endif
+ #ifdef HTTP_R_CONNECT_FAILURE
+ {"CONNECT_FAILURE", ERR_LIB_HTTP, HTTP_R_CONNECT_FAILURE},
+ #else
+ {"CONNECT_FAILURE", 61, 100},
+ #endif
+ #ifdef HTTP_R_ERROR_PARSING_ASN1_LENGTH
+ {"ERROR_PARSING_ASN1_LENGTH", ERR_LIB_HTTP, HTTP_R_ERROR_PARSING_ASN1_LENGTH},
+ #else
+ {"ERROR_PARSING_ASN1_LENGTH", 61, 109},
+ #endif
+ #ifdef HTTP_R_ERROR_PARSING_CONTENT_LENGTH
+ {"ERROR_PARSING_CONTENT_LENGTH", ERR_LIB_HTTP, HTTP_R_ERROR_PARSING_CONTENT_LENGTH},
+ #else
+ {"ERROR_PARSING_CONTENT_LENGTH", 61, 119},
+ #endif
+ #ifdef HTTP_R_ERROR_PARSING_URL
+ {"ERROR_PARSING_URL", ERR_LIB_HTTP, HTTP_R_ERROR_PARSING_URL},
+ #else
+ {"ERROR_PARSING_URL", 61, 101},
+ #endif
+ #ifdef HTTP_R_ERROR_RECEIVING
+ {"ERROR_RECEIVING", ERR_LIB_HTTP, HTTP_R_ERROR_RECEIVING},
+ #else
+ {"ERROR_RECEIVING", 61, 103},
+ #endif
+ #ifdef HTTP_R_ERROR_SENDING
+ {"ERROR_SENDING", ERR_LIB_HTTP, HTTP_R_ERROR_SENDING},
+ #else
+ {"ERROR_SENDING", 61, 102},
+ #endif
+ #ifdef HTTP_R_FAILED_READING_DATA
+ {"FAILED_READING_DATA", ERR_LIB_HTTP, HTTP_R_FAILED_READING_DATA},
+ #else
+ {"FAILED_READING_DATA", 61, 128},
+ #endif
+ #ifdef HTTP_R_HEADER_PARSE_ERROR
+ {"HEADER_PARSE_ERROR", ERR_LIB_HTTP, HTTP_R_HEADER_PARSE_ERROR},
+ #else
+ {"HEADER_PARSE_ERROR", 61, 126},
+ #endif
+ #ifdef HTTP_R_INCONSISTENT_CONTENT_LENGTH
+ {"INCONSISTENT_CONTENT_LENGTH", ERR_LIB_HTTP, HTTP_R_INCONSISTENT_CONTENT_LENGTH},
+ #else
+ {"INCONSISTENT_CONTENT_LENGTH", 61, 120},
+ #endif
+ #ifdef HTTP_R_INVALID_PORT_NUMBER
+ {"INVALID_PORT_NUMBER", ERR_LIB_HTTP, HTTP_R_INVALID_PORT_NUMBER},
+ #else
+ {"INVALID_PORT_NUMBER", 61, 123},
+ #endif
+ #ifdef HTTP_R_INVALID_URL_PATH
+ {"INVALID_URL_PATH", ERR_LIB_HTTP, HTTP_R_INVALID_URL_PATH},
+ #else
+ {"INVALID_URL_PATH", 61, 125},
+ #endif
+ #ifdef HTTP_R_INVALID_URL_SCHEME
+ {"INVALID_URL_SCHEME", ERR_LIB_HTTP, HTTP_R_INVALID_URL_SCHEME},
+ #else
+ {"INVALID_URL_SCHEME", 61, 124},
+ #endif
+ #ifdef HTTP_R_MAX_RESP_LEN_EXCEEDED
+ {"MAX_RESP_LEN_EXCEEDED", ERR_LIB_HTTP, HTTP_R_MAX_RESP_LEN_EXCEEDED},
+ #else
+ {"MAX_RESP_LEN_EXCEEDED", 61, 117},
+ #endif
+ #ifdef HTTP_R_MISSING_ASN1_ENCODING
+ {"MISSING_ASN1_ENCODING", ERR_LIB_HTTP, HTTP_R_MISSING_ASN1_ENCODING},
+ #else
+ {"MISSING_ASN1_ENCODING", 61, 110},
+ #endif
+ #ifdef HTTP_R_MISSING_CONTENT_TYPE
+ {"MISSING_CONTENT_TYPE", ERR_LIB_HTTP, HTTP_R_MISSING_CONTENT_TYPE},
+ #else
+ {"MISSING_CONTENT_TYPE", 61, 121},
+ #endif
+ #ifdef HTTP_R_MISSING_REDIRECT_LOCATION
+ {"MISSING_REDIRECT_LOCATION", ERR_LIB_HTTP, HTTP_R_MISSING_REDIRECT_LOCATION},
+ #else
+ {"MISSING_REDIRECT_LOCATION", 61, 111},
+ #endif
+ #ifdef HTTP_R_RECEIVED_ERROR
+ {"RECEIVED_ERROR", ERR_LIB_HTTP, HTTP_R_RECEIVED_ERROR},
+ #else
+ {"RECEIVED_ERROR", 61, 105},
+ #endif
+ #ifdef HTTP_R_RECEIVED_WRONG_HTTP_VERSION
+ {"RECEIVED_WRONG_HTTP_VERSION", ERR_LIB_HTTP, HTTP_R_RECEIVED_WRONG_HTTP_VERSION},
+ #else
+ {"RECEIVED_WRONG_HTTP_VERSION", 61, 106},
+ #endif
+ #ifdef HTTP_R_REDIRECTION_FROM_HTTPS_TO_HTTP
+ {"REDIRECTION_FROM_HTTPS_TO_HTTP", ERR_LIB_HTTP, HTTP_R_REDIRECTION_FROM_HTTPS_TO_HTTP},
+ #else
+ {"REDIRECTION_FROM_HTTPS_TO_HTTP", 61, 112},
+ #endif
+ #ifdef HTTP_R_REDIRECTION_NOT_ENABLED
+ {"REDIRECTION_NOT_ENABLED", ERR_LIB_HTTP, HTTP_R_REDIRECTION_NOT_ENABLED},
+ #else
+ {"REDIRECTION_NOT_ENABLED", 61, 116},
+ #endif
+ #ifdef HTTP_R_RESPONSE_LINE_TOO_LONG
+ {"RESPONSE_LINE_TOO_LONG", ERR_LIB_HTTP, HTTP_R_RESPONSE_LINE_TOO_LONG},
+ #else
+ {"RESPONSE_LINE_TOO_LONG", 61, 113},
+ #endif
+ #ifdef HTTP_R_RESPONSE_PARSE_ERROR
+ {"RESPONSE_PARSE_ERROR", ERR_LIB_HTTP, HTTP_R_RESPONSE_PARSE_ERROR},
+ #else
+ {"RESPONSE_PARSE_ERROR", 61, 104},
+ #endif
+ #ifdef HTTP_R_RETRY_TIMEOUT
+ {"RETRY_TIMEOUT", ERR_LIB_HTTP, HTTP_R_RETRY_TIMEOUT},
+ #else
+ {"RETRY_TIMEOUT", 61, 129},
+ #endif
+ #ifdef HTTP_R_SERVER_CANCELED_CONNECTION
+ {"SERVER_CANCELED_CONNECTION", ERR_LIB_HTTP, HTTP_R_SERVER_CANCELED_CONNECTION},
+ #else
+ {"SERVER_CANCELED_CONNECTION", 61, 127},
+ #endif
+ #ifdef HTTP_R_SOCK_NOT_SUPPORTED
+ {"SOCK_NOT_SUPPORTED", ERR_LIB_HTTP, HTTP_R_SOCK_NOT_SUPPORTED},
+ #else
+ {"SOCK_NOT_SUPPORTED", 61, 122},
+ #endif
+ #ifdef HTTP_R_STATUS_CODE_UNSUPPORTED
+ {"STATUS_CODE_UNSUPPORTED", ERR_LIB_HTTP, HTTP_R_STATUS_CODE_UNSUPPORTED},
+ #else
+ {"STATUS_CODE_UNSUPPORTED", 61, 114},
+ #endif
+ #ifdef HTTP_R_TLS_NOT_ENABLED
+ {"TLS_NOT_ENABLED", ERR_LIB_HTTP, HTTP_R_TLS_NOT_ENABLED},
+ #else
+ {"TLS_NOT_ENABLED", 61, 107},
+ #endif
+ #ifdef HTTP_R_TOO_MANY_REDIRECTIONS
+ {"TOO_MANY_REDIRECTIONS", ERR_LIB_HTTP, HTTP_R_TOO_MANY_REDIRECTIONS},
+ #else
+ {"TOO_MANY_REDIRECTIONS", 61, 115},
+ #endif
+ #ifdef HTTP_R_UNEXPECTED_CONTENT_TYPE
+ {"UNEXPECTED_CONTENT_TYPE", ERR_LIB_HTTP, HTTP_R_UNEXPECTED_CONTENT_TYPE},
+ #else
+ {"UNEXPECTED_CONTENT_TYPE", 61, 118},
+ #endif
+ #ifdef OBJ_R_OID_EXISTS
+ {"OID_EXISTS", ERR_LIB_OBJ, OBJ_R_OID_EXISTS},
+ #else
+ {"OID_EXISTS", 8, 102},
+ #endif
+ #ifdef OBJ_R_UNKNOWN_NID
+ {"UNKNOWN_NID", ERR_LIB_OBJ, OBJ_R_UNKNOWN_NID},
+ #else
+ {"UNKNOWN_NID", 8, 101},
+ #endif
+ #ifdef OBJ_R_UNKNOWN_OBJECT_NAME
+ {"UNKNOWN_OBJECT_NAME", ERR_LIB_OBJ, OBJ_R_UNKNOWN_OBJECT_NAME},
+ #else
+ {"UNKNOWN_OBJECT_NAME", 8, 103},
+ #endif
+ #ifdef OCSP_R_CERTIFICATE_VERIFY_ERROR
+ {"CERTIFICATE_VERIFY_ERROR", ERR_LIB_OCSP, OCSP_R_CERTIFICATE_VERIFY_ERROR},
+ #else
+ {"CERTIFICATE_VERIFY_ERROR", 39, 101},
+ #endif
+ #ifdef OCSP_R_DIGEST_ERR
+ {"DIGEST_ERR", ERR_LIB_OCSP, OCSP_R_DIGEST_ERR},
+ #else
+ {"DIGEST_ERR", 39, 102},
+ #endif
+ #ifdef OCSP_R_DIGEST_NAME_ERR
+ {"DIGEST_NAME_ERR", ERR_LIB_OCSP, OCSP_R_DIGEST_NAME_ERR},
+ #else
+ {"DIGEST_NAME_ERR", 39, 106},
+ #endif
+ #ifdef OCSP_R_DIGEST_SIZE_ERR
+ {"DIGEST_SIZE_ERR", ERR_LIB_OCSP, OCSP_R_DIGEST_SIZE_ERR},
+ #else
+ {"DIGEST_SIZE_ERR", 39, 107},
+ #endif
+ #ifdef OCSP_R_ERROR_IN_NEXTUPDATE_FIELD
+ {"ERROR_IN_NEXTUPDATE_FIELD", ERR_LIB_OCSP, OCSP_R_ERROR_IN_NEXTUPDATE_FIELD},
+ #else
+ {"ERROR_IN_NEXTUPDATE_FIELD", 39, 122},
+ #endif
+ #ifdef OCSP_R_ERROR_IN_THISUPDATE_FIELD
+ {"ERROR_IN_THISUPDATE_FIELD", ERR_LIB_OCSP, OCSP_R_ERROR_IN_THISUPDATE_FIELD},
+ #else
+ {"ERROR_IN_THISUPDATE_FIELD", 39, 123},
+ #endif
+ #ifdef OCSP_R_MISSING_OCSPSIGNING_USAGE
+ {"MISSING_OCSPSIGNING_USAGE", ERR_LIB_OCSP, OCSP_R_MISSING_OCSPSIGNING_USAGE},
+ #else
+ {"MISSING_OCSPSIGNING_USAGE", 39, 103},
+ #endif
+ #ifdef OCSP_R_NEXTUPDATE_BEFORE_THISUPDATE
+ {"NEXTUPDATE_BEFORE_THISUPDATE", ERR_LIB_OCSP, OCSP_R_NEXTUPDATE_BEFORE_THISUPDATE},
+ #else
+ {"NEXTUPDATE_BEFORE_THISUPDATE", 39, 124},
+ #endif
+ #ifdef OCSP_R_NOT_BASIC_RESPONSE
+ {"NOT_BASIC_RESPONSE", ERR_LIB_OCSP, OCSP_R_NOT_BASIC_RESPONSE},
+ #else
+ {"NOT_BASIC_RESPONSE", 39, 104},
+ #endif
+ #ifdef OCSP_R_NO_CERTIFICATES_IN_CHAIN
+ {"NO_CERTIFICATES_IN_CHAIN", ERR_LIB_OCSP, OCSP_R_NO_CERTIFICATES_IN_CHAIN},
+ #else
+ {"NO_CERTIFICATES_IN_CHAIN", 39, 105},
+ #endif
+ #ifdef OCSP_R_NO_RESPONSE_DATA
+ {"NO_RESPONSE_DATA", ERR_LIB_OCSP, OCSP_R_NO_RESPONSE_DATA},
+ #else
+ {"NO_RESPONSE_DATA", 39, 108},
+ #endif
+ #ifdef OCSP_R_NO_REVOKED_TIME
+ {"NO_REVOKED_TIME", ERR_LIB_OCSP, OCSP_R_NO_REVOKED_TIME},
+ #else
+ {"NO_REVOKED_TIME", 39, 109},
+ #endif
+ #ifdef OCSP_R_NO_SIGNER_KEY
+ {"NO_SIGNER_KEY", ERR_LIB_OCSP, OCSP_R_NO_SIGNER_KEY},
+ #else
+ {"NO_SIGNER_KEY", 39, 130},
+ #endif
+ #ifdef OCSP_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE
+ {"PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE", ERR_LIB_OCSP, OCSP_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE},
+ #else
+ {"PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE", 39, 110},
+ #endif
+ #ifdef OCSP_R_REQUEST_NOT_SIGNED
+ {"REQUEST_NOT_SIGNED", ERR_LIB_OCSP, OCSP_R_REQUEST_NOT_SIGNED},
+ #else
+ {"REQUEST_NOT_SIGNED", 39, 128},
+ #endif
+ #ifdef OCSP_R_RESPONSE_CONTAINS_NO_REVOCATION_DATA
+ {"RESPONSE_CONTAINS_NO_REVOCATION_DATA", ERR_LIB_OCSP, OCSP_R_RESPONSE_CONTAINS_NO_REVOCATION_DATA},
+ #else
+ {"RESPONSE_CONTAINS_NO_REVOCATION_DATA", 39, 111},
+ #endif
+ #ifdef OCSP_R_ROOT_CA_NOT_TRUSTED
+ {"ROOT_CA_NOT_TRUSTED", ERR_LIB_OCSP, OCSP_R_ROOT_CA_NOT_TRUSTED},
+ #else
+ {"ROOT_CA_NOT_TRUSTED", 39, 112},
+ #endif
+ #ifdef OCSP_R_SIGNATURE_FAILURE
+ {"SIGNATURE_FAILURE", ERR_LIB_OCSP, OCSP_R_SIGNATURE_FAILURE},
+ #else
+ {"SIGNATURE_FAILURE", 39, 117},
+ #endif
+ #ifdef OCSP_R_SIGNER_CERTIFICATE_NOT_FOUND
+ {"SIGNER_CERTIFICATE_NOT_FOUND", ERR_LIB_OCSP, OCSP_R_SIGNER_CERTIFICATE_NOT_FOUND},
+ #else
+ {"SIGNER_CERTIFICATE_NOT_FOUND", 39, 118},
+ #endif
+ #ifdef OCSP_R_STATUS_EXPIRED
+ {"STATUS_EXPIRED", ERR_LIB_OCSP, OCSP_R_STATUS_EXPIRED},
+ #else
+ {"STATUS_EXPIRED", 39, 125},
+ #endif
+ #ifdef OCSP_R_STATUS_NOT_YET_VALID
+ {"STATUS_NOT_YET_VALID", ERR_LIB_OCSP, OCSP_R_STATUS_NOT_YET_VALID},
+ #else
+ {"STATUS_NOT_YET_VALID", 39, 126},
+ #endif
+ #ifdef OCSP_R_STATUS_TOO_OLD
+ {"STATUS_TOO_OLD", ERR_LIB_OCSP, OCSP_R_STATUS_TOO_OLD},
+ #else
+ {"STATUS_TOO_OLD", 39, 127},
+ #endif
+ #ifdef OCSP_R_UNKNOWN_MESSAGE_DIGEST
+ {"UNKNOWN_MESSAGE_DIGEST", ERR_LIB_OCSP, OCSP_R_UNKNOWN_MESSAGE_DIGEST},
+ #else
+ {"UNKNOWN_MESSAGE_DIGEST", 39, 119},
+ #endif
+ #ifdef OCSP_R_UNKNOWN_NID
+ {"UNKNOWN_NID", ERR_LIB_OCSP, OCSP_R_UNKNOWN_NID},
+ #else
+ {"UNKNOWN_NID", 39, 120},
+ #endif
+ #ifdef OCSP_R_UNSUPPORTED_REQUESTORNAME_TYPE
+ {"UNSUPPORTED_REQUESTORNAME_TYPE", ERR_LIB_OCSP, OCSP_R_UNSUPPORTED_REQUESTORNAME_TYPE},
+ #else
+ {"UNSUPPORTED_REQUESTORNAME_TYPE", 39, 129},
+ #endif
+ #ifdef OSSL_DECODER_R_COULD_NOT_DECODE_OBJECT
+ {"COULD_NOT_DECODE_OBJECT", ERR_LIB_OSSL_DECODER, OSSL_DECODER_R_COULD_NOT_DECODE_OBJECT},
+ #else
+ {"COULD_NOT_DECODE_OBJECT", 60, 101},
+ #endif
+ #ifdef OSSL_DECODER_R_DECODER_NOT_FOUND
+ {"DECODER_NOT_FOUND", ERR_LIB_OSSL_DECODER, OSSL_DECODER_R_DECODER_NOT_FOUND},
+ #else
+ {"DECODER_NOT_FOUND", 60, 102},
+ #endif
+ #ifdef OSSL_DECODER_R_MISSING_GET_PARAMS
+ {"MISSING_GET_PARAMS", ERR_LIB_OSSL_DECODER, OSSL_DECODER_R_MISSING_GET_PARAMS},
+ #else
+ {"MISSING_GET_PARAMS", 60, 100},
+ #endif
+ #ifdef OSSL_ENCODER_R_ENCODER_NOT_FOUND
+ {"ENCODER_NOT_FOUND", ERR_LIB_OSSL_ENCODER, OSSL_ENCODER_R_ENCODER_NOT_FOUND},
+ #else
+ {"ENCODER_NOT_FOUND", 59, 101},
+ #endif
+ #ifdef OSSL_ENCODER_R_INCORRECT_PROPERTY_QUERY
+ {"INCORRECT_PROPERTY_QUERY", ERR_LIB_OSSL_ENCODER, OSSL_ENCODER_R_INCORRECT_PROPERTY_QUERY},
+ #else
+ {"INCORRECT_PROPERTY_QUERY", 59, 100},
+ #endif
+ #ifdef OSSL_ENCODER_R_MISSING_GET_PARAMS
+ {"MISSING_GET_PARAMS", ERR_LIB_OSSL_ENCODER, OSSL_ENCODER_R_MISSING_GET_PARAMS},
+ #else
+ {"MISSING_GET_PARAMS", 59, 102},
+ #endif
+ #ifdef OSSL_STORE_R_AMBIGUOUS_CONTENT_TYPE
+ {"AMBIGUOUS_CONTENT_TYPE", ERR_LIB_OSSL_STORE, OSSL_STORE_R_AMBIGUOUS_CONTENT_TYPE},
+ #else
+ {"AMBIGUOUS_CONTENT_TYPE", 44, 107},
+ #endif
+ #ifdef OSSL_STORE_R_BAD_PASSWORD_READ
+ {"BAD_PASSWORD_READ", ERR_LIB_OSSL_STORE, OSSL_STORE_R_BAD_PASSWORD_READ},
+ #else
+ {"BAD_PASSWORD_READ", 44, 115},
+ #endif
+ #ifdef OSSL_STORE_R_ERROR_VERIFYING_PKCS12_MAC
+ {"ERROR_VERIFYING_PKCS12_MAC", ERR_LIB_OSSL_STORE, OSSL_STORE_R_ERROR_VERIFYING_PKCS12_MAC},
+ #else
+ {"ERROR_VERIFYING_PKCS12_MAC", 44, 113},
+ #endif
+ #ifdef OSSL_STORE_R_FINGERPRINT_SIZE_DOES_NOT_MATCH_DIGEST
+ {"FINGERPRINT_SIZE_DOES_NOT_MATCH_DIGEST", ERR_LIB_OSSL_STORE, OSSL_STORE_R_FINGERPRINT_SIZE_DOES_NOT_MATCH_DIGEST},
+ #else
+ {"FINGERPRINT_SIZE_DOES_NOT_MATCH_DIGEST", 44, 121},
+ #endif
+ #ifdef OSSL_STORE_R_INVALID_SCHEME
+ {"INVALID_SCHEME", ERR_LIB_OSSL_STORE, OSSL_STORE_R_INVALID_SCHEME},
+ #else
+ {"INVALID_SCHEME", 44, 106},
+ #endif
+ #ifdef OSSL_STORE_R_IS_NOT_A
+ {"IS_NOT_A", ERR_LIB_OSSL_STORE, OSSL_STORE_R_IS_NOT_A},
+ #else
+ {"IS_NOT_A", 44, 112},
+ #endif
+ #ifdef OSSL_STORE_R_LOADER_INCOMPLETE
+ {"LOADER_INCOMPLETE", ERR_LIB_OSSL_STORE, OSSL_STORE_R_LOADER_INCOMPLETE},
+ #else
+ {"LOADER_INCOMPLETE", 44, 116},
+ #endif
+ #ifdef OSSL_STORE_R_LOADING_STARTED
+ {"LOADING_STARTED", ERR_LIB_OSSL_STORE, OSSL_STORE_R_LOADING_STARTED},
+ #else
+ {"LOADING_STARTED", 44, 117},
+ #endif
+ #ifdef OSSL_STORE_R_NOT_A_CERTIFICATE
+ {"NOT_A_CERTIFICATE", ERR_LIB_OSSL_STORE, OSSL_STORE_R_NOT_A_CERTIFICATE},
+ #else
+ {"NOT_A_CERTIFICATE", 44, 100},
+ #endif
+ #ifdef OSSL_STORE_R_NOT_A_CRL
+ {"NOT_A_CRL", ERR_LIB_OSSL_STORE, OSSL_STORE_R_NOT_A_CRL},
+ #else
+ {"NOT_A_CRL", 44, 101},
+ #endif
+ #ifdef OSSL_STORE_R_NOT_A_NAME
+ {"NOT_A_NAME", ERR_LIB_OSSL_STORE, OSSL_STORE_R_NOT_A_NAME},
+ #else
+ {"NOT_A_NAME", 44, 103},
+ #endif
+ #ifdef OSSL_STORE_R_NOT_A_PRIVATE_KEY
+ {"NOT_A_PRIVATE_KEY", ERR_LIB_OSSL_STORE, OSSL_STORE_R_NOT_A_PRIVATE_KEY},
+ #else
+ {"NOT_A_PRIVATE_KEY", 44, 102},
+ #endif
+ #ifdef OSSL_STORE_R_NOT_A_PUBLIC_KEY
+ {"NOT_A_PUBLIC_KEY", ERR_LIB_OSSL_STORE, OSSL_STORE_R_NOT_A_PUBLIC_KEY},
+ #else
+ {"NOT_A_PUBLIC_KEY", 44, 122},
+ #endif
+ #ifdef OSSL_STORE_R_NOT_PARAMETERS
+ {"NOT_PARAMETERS", ERR_LIB_OSSL_STORE, OSSL_STORE_R_NOT_PARAMETERS},
+ #else
+ {"NOT_PARAMETERS", 44, 104},
+ #endif
+ #ifdef OSSL_STORE_R_NO_LOADERS_FOUND
+ {"NO_LOADERS_FOUND", ERR_LIB_OSSL_STORE, OSSL_STORE_R_NO_LOADERS_FOUND},
+ #else
+ {"NO_LOADERS_FOUND", 44, 123},
+ #endif
+ #ifdef OSSL_STORE_R_PASSPHRASE_CALLBACK_ERROR
+ {"PASSPHRASE_CALLBACK_ERROR", ERR_LIB_OSSL_STORE, OSSL_STORE_R_PASSPHRASE_CALLBACK_ERROR},
+ #else
+ {"PASSPHRASE_CALLBACK_ERROR", 44, 114},
+ #endif
+ #ifdef OSSL_STORE_R_PATH_MUST_BE_ABSOLUTE
+ {"PATH_MUST_BE_ABSOLUTE", ERR_LIB_OSSL_STORE, OSSL_STORE_R_PATH_MUST_BE_ABSOLUTE},
+ #else
+ {"PATH_MUST_BE_ABSOLUTE", 44, 108},
+ #endif
+ #ifdef OSSL_STORE_R_SEARCH_ONLY_SUPPORTED_FOR_DIRECTORIES
+ {"SEARCH_ONLY_SUPPORTED_FOR_DIRECTORIES", ERR_LIB_OSSL_STORE, OSSL_STORE_R_SEARCH_ONLY_SUPPORTED_FOR_DIRECTORIES},
+ #else
+ {"SEARCH_ONLY_SUPPORTED_FOR_DIRECTORIES", 44, 119},
+ #endif
+ #ifdef OSSL_STORE_R_UI_PROCESS_INTERRUPTED_OR_CANCELLED
+ {"UI_PROCESS_INTERRUPTED_OR_CANCELLED", ERR_LIB_OSSL_STORE, OSSL_STORE_R_UI_PROCESS_INTERRUPTED_OR_CANCELLED},
+ #else
+ {"UI_PROCESS_INTERRUPTED_OR_CANCELLED", 44, 109},
+ #endif
+ #ifdef OSSL_STORE_R_UNREGISTERED_SCHEME
+ {"UNREGISTERED_SCHEME", ERR_LIB_OSSL_STORE, OSSL_STORE_R_UNREGISTERED_SCHEME},
+ #else
+ {"UNREGISTERED_SCHEME", 44, 105},
+ #endif
+ #ifdef OSSL_STORE_R_UNSUPPORTED_CONTENT_TYPE
+ {"UNSUPPORTED_CONTENT_TYPE", ERR_LIB_OSSL_STORE, OSSL_STORE_R_UNSUPPORTED_CONTENT_TYPE},
+ #else
+ {"UNSUPPORTED_CONTENT_TYPE", 44, 110},
+ #endif
+ #ifdef OSSL_STORE_R_UNSUPPORTED_OPERATION
+ {"UNSUPPORTED_OPERATION", ERR_LIB_OSSL_STORE, OSSL_STORE_R_UNSUPPORTED_OPERATION},
+ #else
+ {"UNSUPPORTED_OPERATION", 44, 118},
+ #endif
+ #ifdef OSSL_STORE_R_UNSUPPORTED_SEARCH_TYPE
+ {"UNSUPPORTED_SEARCH_TYPE", ERR_LIB_OSSL_STORE, OSSL_STORE_R_UNSUPPORTED_SEARCH_TYPE},
+ #else
+ {"UNSUPPORTED_SEARCH_TYPE", 44, 120},
+ #endif
+ #ifdef OSSL_STORE_R_URI_AUTHORITY_UNSUPPORTED
+ {"URI_AUTHORITY_UNSUPPORTED", ERR_LIB_OSSL_STORE, OSSL_STORE_R_URI_AUTHORITY_UNSUPPORTED},
+ #else
+ {"URI_AUTHORITY_UNSUPPORTED", 44, 111},
+ #endif
+ #ifdef PEM_R_BAD_BASE64_DECODE
+ {"BAD_BASE64_DECODE", ERR_LIB_PEM, PEM_R_BAD_BASE64_DECODE},
+ #else
+ {"BAD_BASE64_DECODE", 9, 100},
+ #endif
+ #ifdef PEM_R_BAD_DECRYPT
+ {"BAD_DECRYPT", ERR_LIB_PEM, PEM_R_BAD_DECRYPT},
+ #else
+ {"BAD_DECRYPT", 9, 101},
+ #endif
+ #ifdef PEM_R_BAD_END_LINE
+ {"BAD_END_LINE", ERR_LIB_PEM, PEM_R_BAD_END_LINE},
+ #else
+ {"BAD_END_LINE", 9, 102},
+ #endif
+ #ifdef PEM_R_BAD_IV_CHARS
+ {"BAD_IV_CHARS", ERR_LIB_PEM, PEM_R_BAD_IV_CHARS},
+ #else
+ {"BAD_IV_CHARS", 9, 103},
+ #endif
+ #ifdef PEM_R_BAD_MAGIC_NUMBER
+ {"BAD_MAGIC_NUMBER", ERR_LIB_PEM, PEM_R_BAD_MAGIC_NUMBER},
+ #else
+ {"BAD_MAGIC_NUMBER", 9, 116},
+ #endif
+ #ifdef PEM_R_BAD_PASSWORD_READ
+ {"BAD_PASSWORD_READ", ERR_LIB_PEM, PEM_R_BAD_PASSWORD_READ},
+ #else
+ {"BAD_PASSWORD_READ", 9, 104},
+ #endif
+ #ifdef PEM_R_BAD_VERSION_NUMBER
+ {"BAD_VERSION_NUMBER", ERR_LIB_PEM, PEM_R_BAD_VERSION_NUMBER},
+ #else
+ {"BAD_VERSION_NUMBER", 9, 117},
+ #endif
+ #ifdef PEM_R_BIO_WRITE_FAILURE
+ {"BIO_WRITE_FAILURE", ERR_LIB_PEM, PEM_R_BIO_WRITE_FAILURE},
+ #else
+ {"BIO_WRITE_FAILURE", 9, 118},
+ #endif
+ #ifdef PEM_R_CIPHER_IS_NULL
+ {"CIPHER_IS_NULL", ERR_LIB_PEM, PEM_R_CIPHER_IS_NULL},
+ #else
+ {"CIPHER_IS_NULL", 9, 127},
+ #endif
+ #ifdef PEM_R_ERROR_CONVERTING_PRIVATE_KEY
+ {"ERROR_CONVERTING_PRIVATE_KEY", ERR_LIB_PEM, PEM_R_ERROR_CONVERTING_PRIVATE_KEY},
+ #else
+ {"ERROR_CONVERTING_PRIVATE_KEY", 9, 115},
+ #endif
+ #ifdef PEM_R_EXPECTING_DSS_KEY_BLOB
+ {"EXPECTING_DSS_KEY_BLOB", ERR_LIB_PEM, PEM_R_EXPECTING_DSS_KEY_BLOB},
+ #else
+ {"EXPECTING_DSS_KEY_BLOB", 9, 131},
+ #endif
+ #ifdef PEM_R_EXPECTING_PRIVATE_KEY_BLOB
+ {"EXPECTING_PRIVATE_KEY_BLOB", ERR_LIB_PEM, PEM_R_EXPECTING_PRIVATE_KEY_BLOB},
+ #else
+ {"EXPECTING_PRIVATE_KEY_BLOB", 9, 119},
+ #endif
+ #ifdef PEM_R_EXPECTING_PUBLIC_KEY_BLOB
+ {"EXPECTING_PUBLIC_KEY_BLOB", ERR_LIB_PEM, PEM_R_EXPECTING_PUBLIC_KEY_BLOB},
+ #else
+ {"EXPECTING_PUBLIC_KEY_BLOB", 9, 120},
+ #endif
+ #ifdef PEM_R_EXPECTING_RSA_KEY_BLOB
+ {"EXPECTING_RSA_KEY_BLOB", ERR_LIB_PEM, PEM_R_EXPECTING_RSA_KEY_BLOB},
+ #else
+ {"EXPECTING_RSA_KEY_BLOB", 9, 132},
+ #endif
+ #ifdef PEM_R_HEADER_TOO_LONG
+ {"HEADER_TOO_LONG", ERR_LIB_PEM, PEM_R_HEADER_TOO_LONG},
+ #else
+ {"HEADER_TOO_LONG", 9, 128},
+ #endif
+ #ifdef PEM_R_INCONSISTENT_HEADER
+ {"INCONSISTENT_HEADER", ERR_LIB_PEM, PEM_R_INCONSISTENT_HEADER},
+ #else
+ {"INCONSISTENT_HEADER", 9, 121},
+ #endif
+ #ifdef PEM_R_KEYBLOB_HEADER_PARSE_ERROR
+ {"KEYBLOB_HEADER_PARSE_ERROR", ERR_LIB_PEM, PEM_R_KEYBLOB_HEADER_PARSE_ERROR},
+ #else
+ {"KEYBLOB_HEADER_PARSE_ERROR", 9, 122},
+ #endif
+ #ifdef PEM_R_KEYBLOB_TOO_SHORT
+ {"KEYBLOB_TOO_SHORT", ERR_LIB_PEM, PEM_R_KEYBLOB_TOO_SHORT},
+ #else
+ {"KEYBLOB_TOO_SHORT", 9, 123},
+ #endif
+ #ifdef PEM_R_MISSING_DEK_IV
+ {"MISSING_DEK_IV", ERR_LIB_PEM, PEM_R_MISSING_DEK_IV},
+ #else
+ {"MISSING_DEK_IV", 9, 129},
+ #endif
+ #ifdef PEM_R_NOT_DEK_INFO
+ {"NOT_DEK_INFO", ERR_LIB_PEM, PEM_R_NOT_DEK_INFO},
+ #else
+ {"NOT_DEK_INFO", 9, 105},
+ #endif
+ #ifdef PEM_R_NOT_ENCRYPTED
+ {"NOT_ENCRYPTED", ERR_LIB_PEM, PEM_R_NOT_ENCRYPTED},
+ #else
+ {"NOT_ENCRYPTED", 9, 106},
+ #endif
+ #ifdef PEM_R_NOT_PROC_TYPE
+ {"NOT_PROC_TYPE", ERR_LIB_PEM, PEM_R_NOT_PROC_TYPE},
+ #else
+ {"NOT_PROC_TYPE", 9, 107},
+ #endif
+ #ifdef PEM_R_NO_START_LINE
+ {"NO_START_LINE", ERR_LIB_PEM, PEM_R_NO_START_LINE},
+ #else
+ {"NO_START_LINE", 9, 108},
+ #endif
+ #ifdef PEM_R_PROBLEMS_GETTING_PASSWORD
+ {"PROBLEMS_GETTING_PASSWORD", ERR_LIB_PEM, PEM_R_PROBLEMS_GETTING_PASSWORD},
+ #else
+ {"PROBLEMS_GETTING_PASSWORD", 9, 109},
+ #endif
+ #ifdef PEM_R_PVK_DATA_TOO_SHORT
+ {"PVK_DATA_TOO_SHORT", ERR_LIB_PEM, PEM_R_PVK_DATA_TOO_SHORT},
+ #else
+ {"PVK_DATA_TOO_SHORT", 9, 124},
+ #endif
+ #ifdef PEM_R_PVK_TOO_SHORT
+ {"PVK_TOO_SHORT", ERR_LIB_PEM, PEM_R_PVK_TOO_SHORT},
+ #else
+ {"PVK_TOO_SHORT", 9, 125},
+ #endif
+ #ifdef PEM_R_READ_KEY
+ {"READ_KEY", ERR_LIB_PEM, PEM_R_READ_KEY},
+ #else
+ {"READ_KEY", 9, 111},
+ #endif
+ #ifdef PEM_R_SHORT_HEADER
+ {"SHORT_HEADER", ERR_LIB_PEM, PEM_R_SHORT_HEADER},
+ #else
+ {"SHORT_HEADER", 9, 112},
+ #endif
+ #ifdef PEM_R_UNEXPECTED_DEK_IV
+ {"UNEXPECTED_DEK_IV", ERR_LIB_PEM, PEM_R_UNEXPECTED_DEK_IV},
+ #else
+ {"UNEXPECTED_DEK_IV", 9, 130},
+ #endif
+ #ifdef PEM_R_UNSUPPORTED_CIPHER
+ {"UNSUPPORTED_CIPHER", ERR_LIB_PEM, PEM_R_UNSUPPORTED_CIPHER},
+ #else
+ {"UNSUPPORTED_CIPHER", 9, 113},
+ #endif
+ #ifdef PEM_R_UNSUPPORTED_ENCRYPTION
+ {"UNSUPPORTED_ENCRYPTION", ERR_LIB_PEM, PEM_R_UNSUPPORTED_ENCRYPTION},
+ #else
+ {"UNSUPPORTED_ENCRYPTION", 9, 114},
+ #endif
+ #ifdef PEM_R_UNSUPPORTED_KEY_COMPONENTS
+ {"UNSUPPORTED_KEY_COMPONENTS", ERR_LIB_PEM, PEM_R_UNSUPPORTED_KEY_COMPONENTS},
+ #else
+ {"UNSUPPORTED_KEY_COMPONENTS", 9, 126},
+ #endif
+ #ifdef PEM_R_UNSUPPORTED_PUBLIC_KEY_TYPE
+ {"UNSUPPORTED_PUBLIC_KEY_TYPE", ERR_LIB_PEM, PEM_R_UNSUPPORTED_PUBLIC_KEY_TYPE},
+ #else
+ {"UNSUPPORTED_PUBLIC_KEY_TYPE", 9, 110},
+ #endif
+ #ifdef PKCS12_R_CANT_PACK_STRUCTURE
+ {"CANT_PACK_STRUCTURE", ERR_LIB_PKCS12, PKCS12_R_CANT_PACK_STRUCTURE},
+ #else
+ {"CANT_PACK_STRUCTURE", 35, 100},
+ #endif
+ #ifdef PKCS12_R_CONTENT_TYPE_NOT_DATA
+ {"CONTENT_TYPE_NOT_DATA", ERR_LIB_PKCS12, PKCS12_R_CONTENT_TYPE_NOT_DATA},
+ #else
+ {"CONTENT_TYPE_NOT_DATA", 35, 121},
+ #endif
+ #ifdef PKCS12_R_DECODE_ERROR
+ {"DECODE_ERROR", ERR_LIB_PKCS12, PKCS12_R_DECODE_ERROR},
+ #else
+ {"DECODE_ERROR", 35, 101},
+ #endif
+ #ifdef PKCS12_R_ENCODE_ERROR
+ {"ENCODE_ERROR", ERR_LIB_PKCS12, PKCS12_R_ENCODE_ERROR},
+ #else
+ {"ENCODE_ERROR", 35, 102},
+ #endif
+ #ifdef PKCS12_R_ENCRYPT_ERROR
+ {"ENCRYPT_ERROR", ERR_LIB_PKCS12, PKCS12_R_ENCRYPT_ERROR},
+ #else
+ {"ENCRYPT_ERROR", 35, 103},
+ #endif
+ #ifdef PKCS12_R_ERROR_SETTING_ENCRYPTED_DATA_TYPE
+ {"ERROR_SETTING_ENCRYPTED_DATA_TYPE", ERR_LIB_PKCS12, PKCS12_R_ERROR_SETTING_ENCRYPTED_DATA_TYPE},
+ #else
+ {"ERROR_SETTING_ENCRYPTED_DATA_TYPE", 35, 120},
+ #endif
+ #ifdef PKCS12_R_INVALID_NULL_ARGUMENT
+ {"INVALID_NULL_ARGUMENT", ERR_LIB_PKCS12, PKCS12_R_INVALID_NULL_ARGUMENT},
+ #else
+ {"INVALID_NULL_ARGUMENT", 35, 104},
+ #endif
+ #ifdef PKCS12_R_INVALID_NULL_PKCS12_POINTER
+ {"INVALID_NULL_PKCS12_POINTER", ERR_LIB_PKCS12, PKCS12_R_INVALID_NULL_PKCS12_POINTER},
+ #else
+ {"INVALID_NULL_PKCS12_POINTER", 35, 105},
+ #endif
+ #ifdef PKCS12_R_INVALID_TYPE
+ {"INVALID_TYPE", ERR_LIB_PKCS12, PKCS12_R_INVALID_TYPE},
+ #else
+ {"INVALID_TYPE", 35, 112},
+ #endif
+ #ifdef PKCS12_R_IV_GEN_ERROR
+ {"IV_GEN_ERROR", ERR_LIB_PKCS12, PKCS12_R_IV_GEN_ERROR},
+ #else
+ {"IV_GEN_ERROR", 35, 106},
+ #endif
+ #ifdef PKCS12_R_KEY_GEN_ERROR
+ {"KEY_GEN_ERROR", ERR_LIB_PKCS12, PKCS12_R_KEY_GEN_ERROR},
+ #else
+ {"KEY_GEN_ERROR", 35, 107},
+ #endif
+ #ifdef PKCS12_R_MAC_ABSENT
+ {"MAC_ABSENT", ERR_LIB_PKCS12, PKCS12_R_MAC_ABSENT},
+ #else
+ {"MAC_ABSENT", 35, 108},
+ #endif
+ #ifdef PKCS12_R_MAC_GENERATION_ERROR
+ {"MAC_GENERATION_ERROR", ERR_LIB_PKCS12, PKCS12_R_MAC_GENERATION_ERROR},
+ #else
+ {"MAC_GENERATION_ERROR", 35, 109},
+ #endif
+ #ifdef PKCS12_R_MAC_SETUP_ERROR
+ {"MAC_SETUP_ERROR", ERR_LIB_PKCS12, PKCS12_R_MAC_SETUP_ERROR},
+ #else
+ {"MAC_SETUP_ERROR", 35, 110},
+ #endif
+ #ifdef PKCS12_R_MAC_STRING_SET_ERROR
+ {"MAC_STRING_SET_ERROR", ERR_LIB_PKCS12, PKCS12_R_MAC_STRING_SET_ERROR},
+ #else
+ {"MAC_STRING_SET_ERROR", 35, 111},
+ #endif
+ #ifdef PKCS12_R_MAC_VERIFY_FAILURE
+ {"MAC_VERIFY_FAILURE", ERR_LIB_PKCS12, PKCS12_R_MAC_VERIFY_FAILURE},
+ #else
+ {"MAC_VERIFY_FAILURE", 35, 113},
+ #endif
+ #ifdef PKCS12_R_PARSE_ERROR
+ {"PARSE_ERROR", ERR_LIB_PKCS12, PKCS12_R_PARSE_ERROR},
+ #else
+ {"PARSE_ERROR", 35, 114},
+ #endif
+ #ifdef PKCS12_R_PKCS12_CIPHERFINAL_ERROR
+ {"PKCS12_CIPHERFINAL_ERROR", ERR_LIB_PKCS12, PKCS12_R_PKCS12_CIPHERFINAL_ERROR},
+ #else
+ {"PKCS12_CIPHERFINAL_ERROR", 35, 116},
+ #endif
+ #ifdef PKCS12_R_UNKNOWN_DIGEST_ALGORITHM
+ {"UNKNOWN_DIGEST_ALGORITHM", ERR_LIB_PKCS12, PKCS12_R_UNKNOWN_DIGEST_ALGORITHM},
+ #else
+ {"UNKNOWN_DIGEST_ALGORITHM", 35, 118},
+ #endif
+ #ifdef PKCS12_R_UNSUPPORTED_PKCS12_MODE
+ {"UNSUPPORTED_PKCS12_MODE", ERR_LIB_PKCS12, PKCS12_R_UNSUPPORTED_PKCS12_MODE},
+ #else
+ {"UNSUPPORTED_PKCS12_MODE", 35, 119},
+ #endif
+ #ifdef PKCS7_R_CERTIFICATE_VERIFY_ERROR
+ {"CERTIFICATE_VERIFY_ERROR", ERR_LIB_PKCS7, PKCS7_R_CERTIFICATE_VERIFY_ERROR},
+ #else
+ {"CERTIFICATE_VERIFY_ERROR", 33, 117},
+ #endif
+ #ifdef PKCS7_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER
+ {"CIPHER_HAS_NO_OBJECT_IDENTIFIER", ERR_LIB_PKCS7, PKCS7_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER},
+ #else
+ {"CIPHER_HAS_NO_OBJECT_IDENTIFIER", 33, 144},
+ #endif
+ #ifdef PKCS7_R_CIPHER_NOT_INITIALIZED
+ {"CIPHER_NOT_INITIALIZED", ERR_LIB_PKCS7, PKCS7_R_CIPHER_NOT_INITIALIZED},
+ #else
+ {"CIPHER_NOT_INITIALIZED", 33, 116},
+ #endif
+ #ifdef PKCS7_R_CONTENT_AND_DATA_PRESENT
+ {"CONTENT_AND_DATA_PRESENT", ERR_LIB_PKCS7, PKCS7_R_CONTENT_AND_DATA_PRESENT},
+ #else
+ {"CONTENT_AND_DATA_PRESENT", 33, 118},
+ #endif
+ #ifdef PKCS7_R_CTRL_ERROR
+ {"CTRL_ERROR", ERR_LIB_PKCS7, PKCS7_R_CTRL_ERROR},
+ #else
+ {"CTRL_ERROR", 33, 152},
+ #endif
+ #ifdef PKCS7_R_DECRYPT_ERROR
+ {"DECRYPT_ERROR", ERR_LIB_PKCS7, PKCS7_R_DECRYPT_ERROR},
+ #else
+ {"DECRYPT_ERROR", 33, 119},
+ #endif
+ #ifdef PKCS7_R_DIGEST_FAILURE
+ {"DIGEST_FAILURE", ERR_LIB_PKCS7, PKCS7_R_DIGEST_FAILURE},
+ #else
+ {"DIGEST_FAILURE", 33, 101},
+ #endif
+ #ifdef PKCS7_R_ENCRYPTION_CTRL_FAILURE
+ {"ENCRYPTION_CTRL_FAILURE", ERR_LIB_PKCS7, PKCS7_R_ENCRYPTION_CTRL_FAILURE},
+ #else
+ {"ENCRYPTION_CTRL_FAILURE", 33, 149},
+ #endif
+ #ifdef PKCS7_R_ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE
+ {"ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE", ERR_LIB_PKCS7, PKCS7_R_ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE},
+ #else
+ {"ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE", 33, 150},
+ #endif
+ #ifdef PKCS7_R_ERROR_ADDING_RECIPIENT
+ {"ERROR_ADDING_RECIPIENT", ERR_LIB_PKCS7, PKCS7_R_ERROR_ADDING_RECIPIENT},
+ #else
+ {"ERROR_ADDING_RECIPIENT", 33, 120},
+ #endif
+ #ifdef PKCS7_R_ERROR_SETTING_CIPHER
+ {"ERROR_SETTING_CIPHER", ERR_LIB_PKCS7, PKCS7_R_ERROR_SETTING_CIPHER},
+ #else
+ {"ERROR_SETTING_CIPHER", 33, 121},
+ #endif
+ #ifdef PKCS7_R_INVALID_NULL_POINTER
+ {"INVALID_NULL_POINTER", ERR_LIB_PKCS7, PKCS7_R_INVALID_NULL_POINTER},
+ #else
+ {"INVALID_NULL_POINTER", 33, 143},
+ #endif
+ #ifdef PKCS7_R_INVALID_SIGNED_DATA_TYPE
+ {"INVALID_SIGNED_DATA_TYPE", ERR_LIB_PKCS7, PKCS7_R_INVALID_SIGNED_DATA_TYPE},
+ #else
+ {"INVALID_SIGNED_DATA_TYPE", 33, 155},
+ #endif
+ #ifdef PKCS7_R_NO_CONTENT
+ {"NO_CONTENT", ERR_LIB_PKCS7, PKCS7_R_NO_CONTENT},
+ #else
+ {"NO_CONTENT", 33, 122},
+ #endif
+ #ifdef PKCS7_R_NO_DEFAULT_DIGEST
+ {"NO_DEFAULT_DIGEST", ERR_LIB_PKCS7, PKCS7_R_NO_DEFAULT_DIGEST},
+ #else
+ {"NO_DEFAULT_DIGEST", 33, 151},
+ #endif
+ #ifdef PKCS7_R_NO_MATCHING_DIGEST_TYPE_FOUND
+ {"NO_MATCHING_DIGEST_TYPE_FOUND", ERR_LIB_PKCS7, PKCS7_R_NO_MATCHING_DIGEST_TYPE_FOUND},
+ #else
+ {"NO_MATCHING_DIGEST_TYPE_FOUND", 33, 154},
+ #endif
+ #ifdef PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE
+ {"NO_RECIPIENT_MATCHES_CERTIFICATE", ERR_LIB_PKCS7, PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE},
+ #else
+ {"NO_RECIPIENT_MATCHES_CERTIFICATE", 33, 115},
+ #endif
+ #ifdef PKCS7_R_NO_SIGNATURES_ON_DATA
+ {"NO_SIGNATURES_ON_DATA", ERR_LIB_PKCS7, PKCS7_R_NO_SIGNATURES_ON_DATA},
+ #else
+ {"NO_SIGNATURES_ON_DATA", 33, 123},
+ #endif
+ #ifdef PKCS7_R_NO_SIGNERS
+ {"NO_SIGNERS", ERR_LIB_PKCS7, PKCS7_R_NO_SIGNERS},
+ #else
+ {"NO_SIGNERS", 33, 142},
+ #endif
+ #ifdef PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE
+ {"OPERATION_NOT_SUPPORTED_ON_THIS_TYPE", ERR_LIB_PKCS7, PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE},
+ #else
+ {"OPERATION_NOT_SUPPORTED_ON_THIS_TYPE", 33, 104},
+ #endif
+ #ifdef PKCS7_R_PKCS7_ADD_SIGNATURE_ERROR
+ {"PKCS7_ADD_SIGNATURE_ERROR", ERR_LIB_PKCS7, PKCS7_R_PKCS7_ADD_SIGNATURE_ERROR},
+ #else
+ {"PKCS7_ADD_SIGNATURE_ERROR", 33, 124},
+ #endif
+ #ifdef PKCS7_R_PKCS7_ADD_SIGNER_ERROR
+ {"PKCS7_ADD_SIGNER_ERROR", ERR_LIB_PKCS7, PKCS7_R_PKCS7_ADD_SIGNER_ERROR},
+ #else
+ {"PKCS7_ADD_SIGNER_ERROR", 33, 153},
+ #endif
+ #ifdef PKCS7_R_PKCS7_DATASIGN
+ {"PKCS7_DATASIGN", ERR_LIB_PKCS7, PKCS7_R_PKCS7_DATASIGN},
+ #else
+ {"PKCS7_DATASIGN", 33, 145},
+ #endif
+ #ifdef PKCS7_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE
+ {"PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE", ERR_LIB_PKCS7, PKCS7_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE},
+ #else
+ {"PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE", 33, 127},
+ #endif
+ #ifdef PKCS7_R_SIGNATURE_FAILURE
+ {"SIGNATURE_FAILURE", ERR_LIB_PKCS7, PKCS7_R_SIGNATURE_FAILURE},
+ #else
+ {"SIGNATURE_FAILURE", 33, 105},
+ #endif
+ #ifdef PKCS7_R_SIGNER_CERTIFICATE_NOT_FOUND
+ {"SIGNER_CERTIFICATE_NOT_FOUND", ERR_LIB_PKCS7, PKCS7_R_SIGNER_CERTIFICATE_NOT_FOUND},
+ #else
+ {"SIGNER_CERTIFICATE_NOT_FOUND", 33, 128},
+ #endif
+ #ifdef PKCS7_R_SIGNING_CTRL_FAILURE
+ {"SIGNING_CTRL_FAILURE", ERR_LIB_PKCS7, PKCS7_R_SIGNING_CTRL_FAILURE},
+ #else
+ {"SIGNING_CTRL_FAILURE", 33, 147},
+ #endif
+ #ifdef PKCS7_R_SIGNING_NOT_SUPPORTED_FOR_THIS_KEY_TYPE
+ {"SIGNING_NOT_SUPPORTED_FOR_THIS_KEY_TYPE", ERR_LIB_PKCS7, PKCS7_R_SIGNING_NOT_SUPPORTED_FOR_THIS_KEY_TYPE},
+ #else
+ {"SIGNING_NOT_SUPPORTED_FOR_THIS_KEY_TYPE", 33, 148},
+ #endif
+ #ifdef PKCS7_R_SMIME_TEXT_ERROR
+ {"SMIME_TEXT_ERROR", ERR_LIB_PKCS7, PKCS7_R_SMIME_TEXT_ERROR},
+ #else
+ {"SMIME_TEXT_ERROR", 33, 129},
+ #endif
+ #ifdef PKCS7_R_UNABLE_TO_FIND_CERTIFICATE
+ {"UNABLE_TO_FIND_CERTIFICATE", ERR_LIB_PKCS7, PKCS7_R_UNABLE_TO_FIND_CERTIFICATE},
+ #else
+ {"UNABLE_TO_FIND_CERTIFICATE", 33, 106},
+ #endif
+ #ifdef PKCS7_R_UNABLE_TO_FIND_MEM_BIO
+ {"UNABLE_TO_FIND_MEM_BIO", ERR_LIB_PKCS7, PKCS7_R_UNABLE_TO_FIND_MEM_BIO},
+ #else
+ {"UNABLE_TO_FIND_MEM_BIO", 33, 107},
+ #endif
+ #ifdef PKCS7_R_UNABLE_TO_FIND_MESSAGE_DIGEST
+ {"UNABLE_TO_FIND_MESSAGE_DIGEST", ERR_LIB_PKCS7, PKCS7_R_UNABLE_TO_FIND_MESSAGE_DIGEST},
+ #else
+ {"UNABLE_TO_FIND_MESSAGE_DIGEST", 33, 108},
+ #endif
+ #ifdef PKCS7_R_UNKNOWN_DIGEST_TYPE
+ {"UNKNOWN_DIGEST_TYPE", ERR_LIB_PKCS7, PKCS7_R_UNKNOWN_DIGEST_TYPE},
+ #else
+ {"UNKNOWN_DIGEST_TYPE", 33, 109},
+ #endif
+ #ifdef PKCS7_R_UNKNOWN_OPERATION
+ {"UNKNOWN_OPERATION", ERR_LIB_PKCS7, PKCS7_R_UNKNOWN_OPERATION},
+ #else
+ {"UNKNOWN_OPERATION", 33, 110},
+ #endif
+ #ifdef PKCS7_R_UNSUPPORTED_CIPHER_TYPE
+ {"UNSUPPORTED_CIPHER_TYPE", ERR_LIB_PKCS7, PKCS7_R_UNSUPPORTED_CIPHER_TYPE},
+ #else
+ {"UNSUPPORTED_CIPHER_TYPE", 33, 111},
+ #endif
+ #ifdef PKCS7_R_UNSUPPORTED_CONTENT_TYPE
+ {"UNSUPPORTED_CONTENT_TYPE", ERR_LIB_PKCS7, PKCS7_R_UNSUPPORTED_CONTENT_TYPE},
+ #else
+ {"UNSUPPORTED_CONTENT_TYPE", 33, 112},
+ #endif
+ #ifdef PKCS7_R_WRONG_CONTENT_TYPE
+ {"WRONG_CONTENT_TYPE", ERR_LIB_PKCS7, PKCS7_R_WRONG_CONTENT_TYPE},
+ #else
+ {"WRONG_CONTENT_TYPE", 33, 113},
+ #endif
+ #ifdef PKCS7_R_WRONG_PKCS7_TYPE
+ {"WRONG_PKCS7_TYPE", ERR_LIB_PKCS7, PKCS7_R_WRONG_PKCS7_TYPE},
+ #else
+ {"WRONG_PKCS7_TYPE", 33, 114},
+ #endif
+ #ifdef PROP_R_NAME_TOO_LONG
+ {"NAME_TOO_LONG", ERR_LIB_PROP, PROP_R_NAME_TOO_LONG},
+ #else
+ {"NAME_TOO_LONG", 55, 100},
+ #endif
+ #ifdef PROP_R_NOT_AN_ASCII_CHARACTER
+ {"NOT_AN_ASCII_CHARACTER", ERR_LIB_PROP, PROP_R_NOT_AN_ASCII_CHARACTER},
+ #else
+ {"NOT_AN_ASCII_CHARACTER", 55, 101},
+ #endif
+ #ifdef PROP_R_NOT_AN_HEXADECIMAL_DIGIT
+ {"NOT_AN_HEXADECIMAL_DIGIT", ERR_LIB_PROP, PROP_R_NOT_AN_HEXADECIMAL_DIGIT},
+ #else
+ {"NOT_AN_HEXADECIMAL_DIGIT", 55, 102},
+ #endif
+ #ifdef PROP_R_NOT_AN_IDENTIFIER
+ {"NOT_AN_IDENTIFIER", ERR_LIB_PROP, PROP_R_NOT_AN_IDENTIFIER},
+ #else
+ {"NOT_AN_IDENTIFIER", 55, 103},
+ #endif
+ #ifdef PROP_R_NOT_AN_OCTAL_DIGIT
+ {"NOT_AN_OCTAL_DIGIT", ERR_LIB_PROP, PROP_R_NOT_AN_OCTAL_DIGIT},
+ #else
+ {"NOT_AN_OCTAL_DIGIT", 55, 104},
+ #endif
+ #ifdef PROP_R_NOT_A_DECIMAL_DIGIT
+ {"NOT_A_DECIMAL_DIGIT", ERR_LIB_PROP, PROP_R_NOT_A_DECIMAL_DIGIT},
+ #else
+ {"NOT_A_DECIMAL_DIGIT", 55, 105},
+ #endif
+ #ifdef PROP_R_NO_MATCHING_STRING_DELIMITER
+ {"NO_MATCHING_STRING_DELIMITER", ERR_LIB_PROP, PROP_R_NO_MATCHING_STRING_DELIMITER},
+ #else
+ {"NO_MATCHING_STRING_DELIMITER", 55, 106},
+ #endif
+ #ifdef PROP_R_NO_VALUE
+ {"NO_VALUE", ERR_LIB_PROP, PROP_R_NO_VALUE},
+ #else
+ {"NO_VALUE", 55, 107},
+ #endif
+ #ifdef PROP_R_PARSE_FAILED
+ {"PARSE_FAILED", ERR_LIB_PROP, PROP_R_PARSE_FAILED},
+ #else
+ {"PARSE_FAILED", 55, 108},
+ #endif
+ #ifdef PROP_R_STRING_TOO_LONG
+ {"STRING_TOO_LONG", ERR_LIB_PROP, PROP_R_STRING_TOO_LONG},
+ #else
+ {"STRING_TOO_LONG", 55, 109},
+ #endif
+ #ifdef PROP_R_TRAILING_CHARACTERS
+ {"TRAILING_CHARACTERS", ERR_LIB_PROP, PROP_R_TRAILING_CHARACTERS},
+ #else
+ {"TRAILING_CHARACTERS", 55, 110},
+ #endif
+ #ifdef PROV_R_ADDITIONAL_INPUT_TOO_LONG
+ {"ADDITIONAL_INPUT_TOO_LONG", ERR_LIB_PROV, PROV_R_ADDITIONAL_INPUT_TOO_LONG},
+ #else
+ {"ADDITIONAL_INPUT_TOO_LONG", 57, 184},
+ #endif
+ #ifdef PROV_R_ALGORITHM_MISMATCH
+ {"ALGORITHM_MISMATCH", ERR_LIB_PROV, PROV_R_ALGORITHM_MISMATCH},
+ #else
+ {"ALGORITHM_MISMATCH", 57, 173},
+ #endif
+ #ifdef PROV_R_ALREADY_INSTANTIATED
+ {"ALREADY_INSTANTIATED", ERR_LIB_PROV, PROV_R_ALREADY_INSTANTIATED},
+ #else
+ {"ALREADY_INSTANTIATED", 57, 185},
+ #endif
+ #ifdef PROV_R_BAD_DECRYPT
+ {"BAD_DECRYPT", ERR_LIB_PROV, PROV_R_BAD_DECRYPT},
+ #else
+ {"BAD_DECRYPT", 57, 100},
+ #endif
+ #ifdef PROV_R_BAD_ENCODING
+ {"BAD_ENCODING", ERR_LIB_PROV, PROV_R_BAD_ENCODING},
+ #else
+ {"BAD_ENCODING", 57, 141},
+ #endif
+ #ifdef PROV_R_BAD_LENGTH
+ {"BAD_LENGTH", ERR_LIB_PROV, PROV_R_BAD_LENGTH},
+ #else
+ {"BAD_LENGTH", 57, 142},
+ #endif
+ #ifdef PROV_R_BAD_TLS_CLIENT_VERSION
+ {"BAD_TLS_CLIENT_VERSION", ERR_LIB_PROV, PROV_R_BAD_TLS_CLIENT_VERSION},
+ #else
+ {"BAD_TLS_CLIENT_VERSION", 57, 161},
+ #endif
+ #ifdef PROV_R_BN_ERROR
+ {"BN_ERROR", ERR_LIB_PROV, PROV_R_BN_ERROR},
+ #else
+ {"BN_ERROR", 57, 160},
+ #endif
+ #ifdef PROV_R_CIPHER_OPERATION_FAILED
+ {"CIPHER_OPERATION_FAILED", ERR_LIB_PROV, PROV_R_CIPHER_OPERATION_FAILED},
+ #else
+ {"CIPHER_OPERATION_FAILED", 57, 102},
+ #endif
+ #ifdef PROV_R_DERIVATION_FUNCTION_INIT_FAILED
+ {"DERIVATION_FUNCTION_INIT_FAILED", ERR_LIB_PROV, PROV_R_DERIVATION_FUNCTION_INIT_FAILED},
+ #else
+ {"DERIVATION_FUNCTION_INIT_FAILED", 57, 205},
+ #endif
+ #ifdef PROV_R_DIGEST_NOT_ALLOWED
+ {"DIGEST_NOT_ALLOWED", ERR_LIB_PROV, PROV_R_DIGEST_NOT_ALLOWED},
+ #else
+ {"DIGEST_NOT_ALLOWED", 57, 174},
+ #endif
+ #ifdef PROV_R_EMS_NOT_ENABLED
+ {"EMS_NOT_ENABLED", ERR_LIB_PROV, PROV_R_EMS_NOT_ENABLED},
+ #else
+ {"EMS_NOT_ENABLED", 57, 233},
+ #endif
+ #ifdef PROV_R_ENTROPY_SOURCE_STRENGTH_TOO_WEAK
+ {"ENTROPY_SOURCE_STRENGTH_TOO_WEAK", ERR_LIB_PROV, PROV_R_ENTROPY_SOURCE_STRENGTH_TOO_WEAK},
+ #else
+ {"ENTROPY_SOURCE_STRENGTH_TOO_WEAK", 57, 186},
+ #endif
+ #ifdef PROV_R_ERROR_INSTANTIATING_DRBG
+ {"ERROR_INSTANTIATING_DRBG", ERR_LIB_PROV, PROV_R_ERROR_INSTANTIATING_DRBG},
+ #else
+ {"ERROR_INSTANTIATING_DRBG", 57, 188},
+ #endif
+ #ifdef PROV_R_ERROR_RETRIEVING_ENTROPY
+ {"ERROR_RETRIEVING_ENTROPY", ERR_LIB_PROV, PROV_R_ERROR_RETRIEVING_ENTROPY},
+ #else
+ {"ERROR_RETRIEVING_ENTROPY", 57, 189},
+ #endif
+ #ifdef PROV_R_ERROR_RETRIEVING_NONCE
+ {"ERROR_RETRIEVING_NONCE", ERR_LIB_PROV, PROV_R_ERROR_RETRIEVING_NONCE},
+ #else
+ {"ERROR_RETRIEVING_NONCE", 57, 190},
+ #endif
+ #ifdef PROV_R_FAILED_DURING_DERIVATION
+ {"FAILED_DURING_DERIVATION", ERR_LIB_PROV, PROV_R_FAILED_DURING_DERIVATION},
+ #else
+ {"FAILED_DURING_DERIVATION", 57, 164},
+ #endif
+ #ifdef PROV_R_FAILED_TO_CREATE_LOCK
+ {"FAILED_TO_CREATE_LOCK", ERR_LIB_PROV, PROV_R_FAILED_TO_CREATE_LOCK},
+ #else
+ {"FAILED_TO_CREATE_LOCK", 57, 180},
+ #endif
+ #ifdef PROV_R_FAILED_TO_DECRYPT
+ {"FAILED_TO_DECRYPT", ERR_LIB_PROV, PROV_R_FAILED_TO_DECRYPT},
+ #else
+ {"FAILED_TO_DECRYPT", 57, 162},
+ #endif
+ #ifdef PROV_R_FAILED_TO_GENERATE_KEY
+ {"FAILED_TO_GENERATE_KEY", ERR_LIB_PROV, PROV_R_FAILED_TO_GENERATE_KEY},
+ #else
+ {"FAILED_TO_GENERATE_KEY", 57, 121},
+ #endif
+ #ifdef PROV_R_FAILED_TO_GET_PARAMETER
+ {"FAILED_TO_GET_PARAMETER", ERR_LIB_PROV, PROV_R_FAILED_TO_GET_PARAMETER},
+ #else
+ {"FAILED_TO_GET_PARAMETER", 57, 103},
+ #endif
+ #ifdef PROV_R_FAILED_TO_SET_PARAMETER
+ {"FAILED_TO_SET_PARAMETER", ERR_LIB_PROV, PROV_R_FAILED_TO_SET_PARAMETER},
+ #else
+ {"FAILED_TO_SET_PARAMETER", 57, 104},
+ #endif
+ #ifdef PROV_R_FAILED_TO_SIGN
+ {"FAILED_TO_SIGN", ERR_LIB_PROV, PROV_R_FAILED_TO_SIGN},
+ #else
+ {"FAILED_TO_SIGN", 57, 175},
+ #endif
+ #ifdef PROV_R_FIPS_MODULE_CONDITIONAL_ERROR
+ {"FIPS_MODULE_CONDITIONAL_ERROR", ERR_LIB_PROV, PROV_R_FIPS_MODULE_CONDITIONAL_ERROR},
+ #else
+ {"FIPS_MODULE_CONDITIONAL_ERROR", 57, 227},
+ #endif
+ #ifdef PROV_R_FIPS_MODULE_ENTERING_ERROR_STATE
+ {"FIPS_MODULE_ENTERING_ERROR_STATE", ERR_LIB_PROV, PROV_R_FIPS_MODULE_ENTERING_ERROR_STATE},
+ #else
+ {"FIPS_MODULE_ENTERING_ERROR_STATE", 57, 224},
+ #endif
+ #ifdef PROV_R_FIPS_MODULE_IN_ERROR_STATE
+ {"FIPS_MODULE_IN_ERROR_STATE", ERR_LIB_PROV, PROV_R_FIPS_MODULE_IN_ERROR_STATE},
+ #else
+ {"FIPS_MODULE_IN_ERROR_STATE", 57, 225},
+ #endif
+ #ifdef PROV_R_GENERATE_ERROR
+ {"GENERATE_ERROR", ERR_LIB_PROV, PROV_R_GENERATE_ERROR},
+ #else
+ {"GENERATE_ERROR", 57, 191},
+ #endif
+ #ifdef PROV_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE
+ {"ILLEGAL_OR_UNSUPPORTED_PADDING_MODE", ERR_LIB_PROV, PROV_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE},
+ #else
+ {"ILLEGAL_OR_UNSUPPORTED_PADDING_MODE", 57, 165},
+ #endif
+ #ifdef PROV_R_INDICATOR_INTEGRITY_FAILURE
+ {"INDICATOR_INTEGRITY_FAILURE", ERR_LIB_PROV, PROV_R_INDICATOR_INTEGRITY_FAILURE},
+ #else
+ {"INDICATOR_INTEGRITY_FAILURE", 57, 210},
+ #endif
+ #ifdef PROV_R_INSUFFICIENT_DRBG_STRENGTH
+ {"INSUFFICIENT_DRBG_STRENGTH", ERR_LIB_PROV, PROV_R_INSUFFICIENT_DRBG_STRENGTH},
+ #else
+ {"INSUFFICIENT_DRBG_STRENGTH", 57, 181},
+ #endif
+ #ifdef PROV_R_INVALID_AAD
+ {"INVALID_AAD", ERR_LIB_PROV, PROV_R_INVALID_AAD},
+ #else
+ {"INVALID_AAD", 57, 108},
+ #endif
+ #ifdef PROV_R_INVALID_CONFIG_DATA
+ {"INVALID_CONFIG_DATA", ERR_LIB_PROV, PROV_R_INVALID_CONFIG_DATA},
+ #else
+ {"INVALID_CONFIG_DATA", 57, 211},
+ #endif
+ #ifdef PROV_R_INVALID_CONSTANT_LENGTH
+ {"INVALID_CONSTANT_LENGTH", ERR_LIB_PROV, PROV_R_INVALID_CONSTANT_LENGTH},
+ #else
+ {"INVALID_CONSTANT_LENGTH", 57, 157},
+ #endif
+ #ifdef PROV_R_INVALID_CURVE
+ {"INVALID_CURVE", ERR_LIB_PROV, PROV_R_INVALID_CURVE},
+ #else
+ {"INVALID_CURVE", 57, 176},
+ #endif
+ #ifdef PROV_R_INVALID_CUSTOM_LENGTH
+ {"INVALID_CUSTOM_LENGTH", ERR_LIB_PROV, PROV_R_INVALID_CUSTOM_LENGTH},
+ #else
+ {"INVALID_CUSTOM_LENGTH", 57, 111},
+ #endif
+ #ifdef PROV_R_INVALID_DATA
+ {"INVALID_DATA", ERR_LIB_PROV, PROV_R_INVALID_DATA},
+ #else
+ {"INVALID_DATA", 57, 115},
+ #endif
+ #ifdef PROV_R_INVALID_DIGEST
+ {"INVALID_DIGEST", ERR_LIB_PROV, PROV_R_INVALID_DIGEST},
+ #else
+ {"INVALID_DIGEST", 57, 122},
+ #endif
+ #ifdef PROV_R_INVALID_DIGEST_LENGTH
+ {"INVALID_DIGEST_LENGTH", ERR_LIB_PROV, PROV_R_INVALID_DIGEST_LENGTH},
+ #else
+ {"INVALID_DIGEST_LENGTH", 57, 166},
+ #endif
+ #ifdef PROV_R_INVALID_DIGEST_SIZE
+ {"INVALID_DIGEST_SIZE", ERR_LIB_PROV, PROV_R_INVALID_DIGEST_SIZE},
+ #else
+ {"INVALID_DIGEST_SIZE", 57, 218},
+ #endif
+ #ifdef PROV_R_INVALID_INPUT_LENGTH
+ {"INVALID_INPUT_LENGTH", ERR_LIB_PROV, PROV_R_INVALID_INPUT_LENGTH},
+ #else
+ {"INVALID_INPUT_LENGTH", 57, 230},
+ #endif
+ #ifdef PROV_R_INVALID_ITERATION_COUNT
+ {"INVALID_ITERATION_COUNT", ERR_LIB_PROV, PROV_R_INVALID_ITERATION_COUNT},
+ #else
+ {"INVALID_ITERATION_COUNT", 57, 123},
+ #endif
+ #ifdef PROV_R_INVALID_IV_LENGTH
+ {"INVALID_IV_LENGTH", ERR_LIB_PROV, PROV_R_INVALID_IV_LENGTH},
+ #else
+ {"INVALID_IV_LENGTH", 57, 109},
+ #endif
+ #ifdef PROV_R_INVALID_KEY
+ {"INVALID_KEY", ERR_LIB_PROV, PROV_R_INVALID_KEY},
+ #else
+ {"INVALID_KEY", 57, 158},
+ #endif
+ #ifdef PROV_R_INVALID_KEY_LENGTH
+ {"INVALID_KEY_LENGTH", ERR_LIB_PROV, PROV_R_INVALID_KEY_LENGTH},
+ #else
+ {"INVALID_KEY_LENGTH", 57, 105},
+ #endif
+ #ifdef PROV_R_INVALID_MAC
+ {"INVALID_MAC", ERR_LIB_PROV, PROV_R_INVALID_MAC},
+ #else
+ {"INVALID_MAC", 57, 151},
+ #endif
+ #ifdef PROV_R_INVALID_MGF1_MD
+ {"INVALID_MGF1_MD", ERR_LIB_PROV, PROV_R_INVALID_MGF1_MD},
+ #else
+ {"INVALID_MGF1_MD", 57, 167},
+ #endif
+ #ifdef PROV_R_INVALID_MODE
+ {"INVALID_MODE", ERR_LIB_PROV, PROV_R_INVALID_MODE},
+ #else
+ {"INVALID_MODE", 57, 125},
+ #endif
+ #ifdef PROV_R_INVALID_OUTPUT_LENGTH
+ {"INVALID_OUTPUT_LENGTH", ERR_LIB_PROV, PROV_R_INVALID_OUTPUT_LENGTH},
+ #else
+ {"INVALID_OUTPUT_LENGTH", 57, 217},
+ #endif
+ #ifdef PROV_R_INVALID_PADDING_MODE
+ {"INVALID_PADDING_MODE", ERR_LIB_PROV, PROV_R_INVALID_PADDING_MODE},
+ #else
+ {"INVALID_PADDING_MODE", 57, 168},
+ #endif
+ #ifdef PROV_R_INVALID_PUBINFO
+ {"INVALID_PUBINFO", ERR_LIB_PROV, PROV_R_INVALID_PUBINFO},
+ #else
+ {"INVALID_PUBINFO", 57, 198},
+ #endif
+ #ifdef PROV_R_INVALID_SALT_LENGTH
+ {"INVALID_SALT_LENGTH", ERR_LIB_PROV, PROV_R_INVALID_SALT_LENGTH},
+ #else
+ {"INVALID_SALT_LENGTH", 57, 112},
+ #endif
+ #ifdef PROV_R_INVALID_SEED_LENGTH
+ {"INVALID_SEED_LENGTH", ERR_LIB_PROV, PROV_R_INVALID_SEED_LENGTH},
+ #else
+ {"INVALID_SEED_LENGTH", 57, 154},
+ #endif
+ #ifdef PROV_R_INVALID_SIGNATURE_SIZE
+ {"INVALID_SIGNATURE_SIZE", ERR_LIB_PROV, PROV_R_INVALID_SIGNATURE_SIZE},
+ #else
+ {"INVALID_SIGNATURE_SIZE", 57, 179},
+ #endif
+ #ifdef PROV_R_INVALID_STATE
+ {"INVALID_STATE", ERR_LIB_PROV, PROV_R_INVALID_STATE},
+ #else
+ {"INVALID_STATE", 57, 212},
+ #endif
+ #ifdef PROV_R_INVALID_TAG
+ {"INVALID_TAG", ERR_LIB_PROV, PROV_R_INVALID_TAG},
+ #else
+ {"INVALID_TAG", 57, 110},
+ #endif
+ #ifdef PROV_R_INVALID_TAG_LENGTH
+ {"INVALID_TAG_LENGTH", ERR_LIB_PROV, PROV_R_INVALID_TAG_LENGTH},
+ #else
+ {"INVALID_TAG_LENGTH", 57, 118},
+ #endif
+ #ifdef PROV_R_INVALID_UKM_LENGTH
+ {"INVALID_UKM_LENGTH", ERR_LIB_PROV, PROV_R_INVALID_UKM_LENGTH},
+ #else
+ {"INVALID_UKM_LENGTH", 57, 200},
+ #endif
+ #ifdef PROV_R_INVALID_X931_DIGEST
+ {"INVALID_X931_DIGEST", ERR_LIB_PROV, PROV_R_INVALID_X931_DIGEST},
+ #else
+ {"INVALID_X931_DIGEST", 57, 170},
+ #endif
+ #ifdef PROV_R_IN_ERROR_STATE
+ {"IN_ERROR_STATE", ERR_LIB_PROV, PROV_R_IN_ERROR_STATE},
+ #else
+ {"IN_ERROR_STATE", 57, 192},
+ #endif
+ #ifdef PROV_R_KEY_SETUP_FAILED
+ {"KEY_SETUP_FAILED", ERR_LIB_PROV, PROV_R_KEY_SETUP_FAILED},
+ #else
+ {"KEY_SETUP_FAILED", 57, 101},
+ #endif
+ #ifdef PROV_R_KEY_SIZE_TOO_SMALL
+ {"KEY_SIZE_TOO_SMALL", ERR_LIB_PROV, PROV_R_KEY_SIZE_TOO_SMALL},
+ #else
+ {"KEY_SIZE_TOO_SMALL", 57, 171},
+ #endif
+ #ifdef PROV_R_LENGTH_TOO_LARGE
+ {"LENGTH_TOO_LARGE", ERR_LIB_PROV, PROV_R_LENGTH_TOO_LARGE},
+ #else
+ {"LENGTH_TOO_LARGE", 57, 202},
+ #endif
+ #ifdef PROV_R_MISMATCHING_DOMAIN_PARAMETERS
+ {"MISMATCHING_DOMAIN_PARAMETERS", ERR_LIB_PROV, PROV_R_MISMATCHING_DOMAIN_PARAMETERS},
+ #else
+ {"MISMATCHING_DOMAIN_PARAMETERS", 57, 203},
+ #endif
+ #ifdef PROV_R_MISSING_CEK_ALG
+ {"MISSING_CEK_ALG", ERR_LIB_PROV, PROV_R_MISSING_CEK_ALG},
+ #else
+ {"MISSING_CEK_ALG", 57, 144},
+ #endif
+ #ifdef PROV_R_MISSING_CIPHER
+ {"MISSING_CIPHER", ERR_LIB_PROV, PROV_R_MISSING_CIPHER},
+ #else
+ {"MISSING_CIPHER", 57, 155},
+ #endif
+ #ifdef PROV_R_MISSING_CONFIG_DATA
+ {"MISSING_CONFIG_DATA", ERR_LIB_PROV, PROV_R_MISSING_CONFIG_DATA},
+ #else
+ {"MISSING_CONFIG_DATA", 57, 213},
+ #endif
+ #ifdef PROV_R_MISSING_CONSTANT
+ {"MISSING_CONSTANT", ERR_LIB_PROV, PROV_R_MISSING_CONSTANT},
+ #else
+ {"MISSING_CONSTANT", 57, 156},
+ #endif
+ #ifdef PROV_R_MISSING_KEY
+ {"MISSING_KEY", ERR_LIB_PROV, PROV_R_MISSING_KEY},
+ #else
+ {"MISSING_KEY", 57, 128},
+ #endif
+ #ifdef PROV_R_MISSING_MAC
+ {"MISSING_MAC", ERR_LIB_PROV, PROV_R_MISSING_MAC},
+ #else
+ {"MISSING_MAC", 57, 150},
+ #endif
+ #ifdef PROV_R_MISSING_MESSAGE_DIGEST
+ {"MISSING_MESSAGE_DIGEST", ERR_LIB_PROV, PROV_R_MISSING_MESSAGE_DIGEST},
+ #else
+ {"MISSING_MESSAGE_DIGEST", 57, 129},
+ #endif
+ #ifdef PROV_R_MISSING_OID
+ {"MISSING_OID", ERR_LIB_PROV, PROV_R_MISSING_OID},
+ #else
+ {"MISSING_OID", 57, 209},
+ #endif
+ #ifdef PROV_R_MISSING_PASS
+ {"MISSING_PASS", ERR_LIB_PROV, PROV_R_MISSING_PASS},
+ #else
+ {"MISSING_PASS", 57, 130},
+ #endif
+ #ifdef PROV_R_MISSING_SALT
+ {"MISSING_SALT", ERR_LIB_PROV, PROV_R_MISSING_SALT},
+ #else
+ {"MISSING_SALT", 57, 131},
+ #endif
+ #ifdef PROV_R_MISSING_SECRET
+ {"MISSING_SECRET", ERR_LIB_PROV, PROV_R_MISSING_SECRET},
+ #else
+ {"MISSING_SECRET", 57, 132},
+ #endif
+ #ifdef PROV_R_MISSING_SEED
+ {"MISSING_SEED", ERR_LIB_PROV, PROV_R_MISSING_SEED},
+ #else
+ {"MISSING_SEED", 57, 140},
+ #endif
+ #ifdef PROV_R_MISSING_SESSION_ID
+ {"MISSING_SESSION_ID", ERR_LIB_PROV, PROV_R_MISSING_SESSION_ID},
+ #else
+ {"MISSING_SESSION_ID", 57, 133},
+ #endif
+ #ifdef PROV_R_MISSING_TYPE
+ {"MISSING_TYPE", ERR_LIB_PROV, PROV_R_MISSING_TYPE},
+ #else
+ {"MISSING_TYPE", 57, 134},
+ #endif
+ #ifdef PROV_R_MISSING_XCGHASH
+ {"MISSING_XCGHASH", ERR_LIB_PROV, PROV_R_MISSING_XCGHASH},
+ #else
+ {"MISSING_XCGHASH", 57, 135},
+ #endif
+ #ifdef PROV_R_MODULE_INTEGRITY_FAILURE
+ {"MODULE_INTEGRITY_FAILURE", ERR_LIB_PROV, PROV_R_MODULE_INTEGRITY_FAILURE},
+ #else
+ {"MODULE_INTEGRITY_FAILURE", 57, 214},
+ #endif
+ #ifdef PROV_R_NOT_A_PRIVATE_KEY
+ {"NOT_A_PRIVATE_KEY", ERR_LIB_PROV, PROV_R_NOT_A_PRIVATE_KEY},
+ #else
+ {"NOT_A_PRIVATE_KEY", 57, 221},
+ #endif
+ #ifdef PROV_R_NOT_A_PUBLIC_KEY
+ {"NOT_A_PUBLIC_KEY", ERR_LIB_PROV, PROV_R_NOT_A_PUBLIC_KEY},
+ #else
+ {"NOT_A_PUBLIC_KEY", 57, 220},
+ #endif
+ #ifdef PROV_R_NOT_INSTANTIATED
+ {"NOT_INSTANTIATED", ERR_LIB_PROV, PROV_R_NOT_INSTANTIATED},
+ #else
+ {"NOT_INSTANTIATED", 57, 193},
+ #endif
+ #ifdef PROV_R_NOT_PARAMETERS
+ {"NOT_PARAMETERS", ERR_LIB_PROV, PROV_R_NOT_PARAMETERS},
+ #else
+ {"NOT_PARAMETERS", 57, 226},
+ #endif
+ #ifdef PROV_R_NOT_SUPPORTED
+ {"NOT_SUPPORTED", ERR_LIB_PROV, PROV_R_NOT_SUPPORTED},
+ #else
+ {"NOT_SUPPORTED", 57, 136},
+ #endif
+ #ifdef PROV_R_NOT_XOF_OR_INVALID_LENGTH
+ {"NOT_XOF_OR_INVALID_LENGTH", ERR_LIB_PROV, PROV_R_NOT_XOF_OR_INVALID_LENGTH},
+ #else
+ {"NOT_XOF_OR_INVALID_LENGTH", 57, 113},
+ #endif
+ #ifdef PROV_R_NO_KEY_SET
+ {"NO_KEY_SET", ERR_LIB_PROV, PROV_R_NO_KEY_SET},
+ #else
+ {"NO_KEY_SET", 57, 114},
+ #endif
+ #ifdef PROV_R_NO_PARAMETERS_SET
+ {"NO_PARAMETERS_SET", ERR_LIB_PROV, PROV_R_NO_PARAMETERS_SET},
+ #else
+ {"NO_PARAMETERS_SET", 57, 177},
+ #endif
+ #ifdef PROV_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE
+ {"OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE", ERR_LIB_PROV, PROV_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE},
+ #else
+ {"OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE", 57, 178},
+ #endif
+ #ifdef PROV_R_OUTPUT_BUFFER_TOO_SMALL
+ {"OUTPUT_BUFFER_TOO_SMALL", ERR_LIB_PROV, PROV_R_OUTPUT_BUFFER_TOO_SMALL},
+ #else
+ {"OUTPUT_BUFFER_TOO_SMALL", 57, 106},
+ #endif
+ #ifdef PROV_R_PARENT_CANNOT_GENERATE_RANDOM_NUMBERS
+ {"PARENT_CANNOT_GENERATE_RANDOM_NUMBERS", ERR_LIB_PROV, PROV_R_PARENT_CANNOT_GENERATE_RANDOM_NUMBERS},
+ #else
+ {"PARENT_CANNOT_GENERATE_RANDOM_NUMBERS", 57, 228},
+ #endif
+ #ifdef PROV_R_PARENT_CANNOT_SUPPLY_ENTROPY_SEED
+ {"PARENT_CANNOT_SUPPLY_ENTROPY_SEED", ERR_LIB_PROV, PROV_R_PARENT_CANNOT_SUPPLY_ENTROPY_SEED},
+ #else
+ {"PARENT_CANNOT_SUPPLY_ENTROPY_SEED", 57, 187},
+ #endif
+ #ifdef PROV_R_PARENT_LOCKING_NOT_ENABLED
+ {"PARENT_LOCKING_NOT_ENABLED", ERR_LIB_PROV, PROV_R_PARENT_LOCKING_NOT_ENABLED},
+ #else
+ {"PARENT_LOCKING_NOT_ENABLED", 57, 182},
+ #endif
+ #ifdef PROV_R_PARENT_STRENGTH_TOO_WEAK
+ {"PARENT_STRENGTH_TOO_WEAK", ERR_LIB_PROV, PROV_R_PARENT_STRENGTH_TOO_WEAK},
+ #else
+ {"PARENT_STRENGTH_TOO_WEAK", 57, 194},
+ #endif
+ #ifdef PROV_R_PATH_MUST_BE_ABSOLUTE
+ {"PATH_MUST_BE_ABSOLUTE", ERR_LIB_PROV, PROV_R_PATH_MUST_BE_ABSOLUTE},
+ #else
+ {"PATH_MUST_BE_ABSOLUTE", 57, 219},
+ #endif
+ #ifdef PROV_R_PERSONALISATION_STRING_TOO_LONG
+ {"PERSONALISATION_STRING_TOO_LONG", ERR_LIB_PROV, PROV_R_PERSONALISATION_STRING_TOO_LONG},
+ #else
+ {"PERSONALISATION_STRING_TOO_LONG", 57, 195},
+ #endif
+ #ifdef PROV_R_PSS_SALTLEN_TOO_SMALL
+ {"PSS_SALTLEN_TOO_SMALL", ERR_LIB_PROV, PROV_R_PSS_SALTLEN_TOO_SMALL},
+ #else
+ {"PSS_SALTLEN_TOO_SMALL", 57, 172},
+ #endif
+ #ifdef PROV_R_REQUEST_TOO_LARGE_FOR_DRBG
+ {"REQUEST_TOO_LARGE_FOR_DRBG", ERR_LIB_PROV, PROV_R_REQUEST_TOO_LARGE_FOR_DRBG},
+ #else
+ {"REQUEST_TOO_LARGE_FOR_DRBG", 57, 196},
+ #endif
+ #ifdef PROV_R_REQUIRE_CTR_MODE_CIPHER
+ {"REQUIRE_CTR_MODE_CIPHER", ERR_LIB_PROV, PROV_R_REQUIRE_CTR_MODE_CIPHER},
+ #else
+ {"REQUIRE_CTR_MODE_CIPHER", 57, 206},
+ #endif
+ #ifdef PROV_R_RESEED_ERROR
+ {"RESEED_ERROR", ERR_LIB_PROV, PROV_R_RESEED_ERROR},
+ #else
+ {"RESEED_ERROR", 57, 197},
+ #endif
+ #ifdef PROV_R_SEARCH_ONLY_SUPPORTED_FOR_DIRECTORIES
+ {"SEARCH_ONLY_SUPPORTED_FOR_DIRECTORIES", ERR_LIB_PROV, PROV_R_SEARCH_ONLY_SUPPORTED_FOR_DIRECTORIES},
+ #else
+ {"SEARCH_ONLY_SUPPORTED_FOR_DIRECTORIES", 57, 222},
+ #endif
+ #ifdef PROV_R_SEED_SOURCES_MUST_NOT_HAVE_A_PARENT
+ {"SEED_SOURCES_MUST_NOT_HAVE_A_PARENT", ERR_LIB_PROV, PROV_R_SEED_SOURCES_MUST_NOT_HAVE_A_PARENT},
+ #else
+ {"SEED_SOURCES_MUST_NOT_HAVE_A_PARENT", 57, 229},
+ #endif
+ #ifdef PROV_R_SELF_TEST_KAT_FAILURE
+ {"SELF_TEST_KAT_FAILURE", ERR_LIB_PROV, PROV_R_SELF_TEST_KAT_FAILURE},
+ #else
+ {"SELF_TEST_KAT_FAILURE", 57, 215},
+ #endif
+ #ifdef PROV_R_SELF_TEST_POST_FAILURE
+ {"SELF_TEST_POST_FAILURE", ERR_LIB_PROV, PROV_R_SELF_TEST_POST_FAILURE},
+ #else
+ {"SELF_TEST_POST_FAILURE", 57, 216},
+ #endif
+ #ifdef PROV_R_TAG_NOT_NEEDED
+ {"TAG_NOT_NEEDED", ERR_LIB_PROV, PROV_R_TAG_NOT_NEEDED},
+ #else
+ {"TAG_NOT_NEEDED", 57, 120},
+ #endif
+ #ifdef PROV_R_TAG_NOT_SET
+ {"TAG_NOT_SET", ERR_LIB_PROV, PROV_R_TAG_NOT_SET},
+ #else
+ {"TAG_NOT_SET", 57, 119},
+ #endif
+ #ifdef PROV_R_TOO_MANY_RECORDS
+ {"TOO_MANY_RECORDS", ERR_LIB_PROV, PROV_R_TOO_MANY_RECORDS},
+ #else
+ {"TOO_MANY_RECORDS", 57, 126},
+ #endif
+ #ifdef PROV_R_UNABLE_TO_FIND_CIPHERS
+ {"UNABLE_TO_FIND_CIPHERS", ERR_LIB_PROV, PROV_R_UNABLE_TO_FIND_CIPHERS},
+ #else
+ {"UNABLE_TO_FIND_CIPHERS", 57, 207},
+ #endif
+ #ifdef PROV_R_UNABLE_TO_GET_PARENT_STRENGTH
+ {"UNABLE_TO_GET_PARENT_STRENGTH", ERR_LIB_PROV, PROV_R_UNABLE_TO_GET_PARENT_STRENGTH},
+ #else
+ {"UNABLE_TO_GET_PARENT_STRENGTH", 57, 199},
+ #endif
+ #ifdef PROV_R_UNABLE_TO_GET_PASSPHRASE
+ {"UNABLE_TO_GET_PASSPHRASE", ERR_LIB_PROV, PROV_R_UNABLE_TO_GET_PASSPHRASE},
+ #else
+ {"UNABLE_TO_GET_PASSPHRASE", 57, 159},
+ #endif
+ #ifdef PROV_R_UNABLE_TO_INITIALISE_CIPHERS
+ {"UNABLE_TO_INITIALISE_CIPHERS", ERR_LIB_PROV, PROV_R_UNABLE_TO_INITIALISE_CIPHERS},
+ #else
+ {"UNABLE_TO_INITIALISE_CIPHERS", 57, 208},
+ #endif
+ #ifdef PROV_R_UNABLE_TO_LOAD_SHA256
+ {"UNABLE_TO_LOAD_SHA256", ERR_LIB_PROV, PROV_R_UNABLE_TO_LOAD_SHA256},
+ #else
+ {"UNABLE_TO_LOAD_SHA256", 57, 147},
+ #endif
+ #ifdef PROV_R_UNABLE_TO_LOCK_PARENT
+ {"UNABLE_TO_LOCK_PARENT", ERR_LIB_PROV, PROV_R_UNABLE_TO_LOCK_PARENT},
+ #else
+ {"UNABLE_TO_LOCK_PARENT", 57, 201},
+ #endif
+ #ifdef PROV_R_UNABLE_TO_RESEED
+ {"UNABLE_TO_RESEED", ERR_LIB_PROV, PROV_R_UNABLE_TO_RESEED},
+ #else
+ {"UNABLE_TO_RESEED", 57, 204},
+ #endif
+ #ifdef PROV_R_UNSUPPORTED_CEK_ALG
+ {"UNSUPPORTED_CEK_ALG", ERR_LIB_PROV, PROV_R_UNSUPPORTED_CEK_ALG},
+ #else
+ {"UNSUPPORTED_CEK_ALG", 57, 145},
+ #endif
+ #ifdef PROV_R_UNSUPPORTED_KEY_SIZE
+ {"UNSUPPORTED_KEY_SIZE", ERR_LIB_PROV, PROV_R_UNSUPPORTED_KEY_SIZE},
+ #else
+ {"UNSUPPORTED_KEY_SIZE", 57, 153},
+ #endif
+ #ifdef PROV_R_UNSUPPORTED_MAC_TYPE
+ {"UNSUPPORTED_MAC_TYPE", ERR_LIB_PROV, PROV_R_UNSUPPORTED_MAC_TYPE},
+ #else
+ {"UNSUPPORTED_MAC_TYPE", 57, 137},
+ #endif
+ #ifdef PROV_R_UNSUPPORTED_NUMBER_OF_ROUNDS
+ {"UNSUPPORTED_NUMBER_OF_ROUNDS", ERR_LIB_PROV, PROV_R_UNSUPPORTED_NUMBER_OF_ROUNDS},
+ #else
+ {"UNSUPPORTED_NUMBER_OF_ROUNDS", 57, 152},
+ #endif
+ #ifdef PROV_R_URI_AUTHORITY_UNSUPPORTED
+ {"URI_AUTHORITY_UNSUPPORTED", ERR_LIB_PROV, PROV_R_URI_AUTHORITY_UNSUPPORTED},
+ #else
+ {"URI_AUTHORITY_UNSUPPORTED", 57, 223},
+ #endif
+ #ifdef PROV_R_VALUE_ERROR
+ {"VALUE_ERROR", ERR_LIB_PROV, PROV_R_VALUE_ERROR},
+ #else
+ {"VALUE_ERROR", 57, 138},
+ #endif
+ #ifdef PROV_R_WRONG_FINAL_BLOCK_LENGTH
+ {"WRONG_FINAL_BLOCK_LENGTH", ERR_LIB_PROV, PROV_R_WRONG_FINAL_BLOCK_LENGTH},
+ #else
+ {"WRONG_FINAL_BLOCK_LENGTH", 57, 107},
+ #endif
+ #ifdef PROV_R_WRONG_OUTPUT_BUFFER_SIZE
+ {"WRONG_OUTPUT_BUFFER_SIZE", ERR_LIB_PROV, PROV_R_WRONG_OUTPUT_BUFFER_SIZE},
+ #else
+ {"WRONG_OUTPUT_BUFFER_SIZE", 57, 139},
+ #endif
+ #ifdef PROV_R_XOF_DIGESTS_NOT_ALLOWED
+ {"XOF_DIGESTS_NOT_ALLOWED", ERR_LIB_PROV, PROV_R_XOF_DIGESTS_NOT_ALLOWED},
+ #else
+ {"XOF_DIGESTS_NOT_ALLOWED", 57, 183},
+ #endif
+ #ifdef PROV_R_XTS_DATA_UNIT_IS_TOO_LARGE
+ {"XTS_DATA_UNIT_IS_TOO_LARGE", ERR_LIB_PROV, PROV_R_XTS_DATA_UNIT_IS_TOO_LARGE},
+ #else
+ {"XTS_DATA_UNIT_IS_TOO_LARGE", 57, 148},
+ #endif
+ #ifdef PROV_R_XTS_DUPLICATED_KEYS
+ {"XTS_DUPLICATED_KEYS", ERR_LIB_PROV, PROV_R_XTS_DUPLICATED_KEYS},
+ #else
+ {"XTS_DUPLICATED_KEYS", 57, 149},
+ #endif
+ #ifdef RAND_R_ADDITIONAL_INPUT_TOO_LONG
+ {"ADDITIONAL_INPUT_TOO_LONG", ERR_LIB_RAND, RAND_R_ADDITIONAL_INPUT_TOO_LONG},
+ #else
+ {"ADDITIONAL_INPUT_TOO_LONG", 36, 102},
+ #endif
+ #ifdef RAND_R_ALREADY_INSTANTIATED
+ {"ALREADY_INSTANTIATED", ERR_LIB_RAND, RAND_R_ALREADY_INSTANTIATED},
+ #else
+ {"ALREADY_INSTANTIATED", 36, 103},
+ #endif
+ #ifdef RAND_R_ARGUMENT_OUT_OF_RANGE
+ {"ARGUMENT_OUT_OF_RANGE", ERR_LIB_RAND, RAND_R_ARGUMENT_OUT_OF_RANGE},
+ #else
+ {"ARGUMENT_OUT_OF_RANGE", 36, 105},
+ #endif
+ #ifdef RAND_R_CANNOT_OPEN_FILE
+ {"CANNOT_OPEN_FILE", ERR_LIB_RAND, RAND_R_CANNOT_OPEN_FILE},
+ #else
+ {"CANNOT_OPEN_FILE", 36, 121},
+ #endif
+ #ifdef RAND_R_DRBG_ALREADY_INITIALIZED
+ {"DRBG_ALREADY_INITIALIZED", ERR_LIB_RAND, RAND_R_DRBG_ALREADY_INITIALIZED},
+ #else
+ {"DRBG_ALREADY_INITIALIZED", 36, 129},
+ #endif
+ #ifdef RAND_R_DRBG_NOT_INITIALISED
+ {"DRBG_NOT_INITIALISED", ERR_LIB_RAND, RAND_R_DRBG_NOT_INITIALISED},
+ #else
+ {"DRBG_NOT_INITIALISED", 36, 104},
+ #endif
+ #ifdef RAND_R_ENTROPY_INPUT_TOO_LONG
+ {"ENTROPY_INPUT_TOO_LONG", ERR_LIB_RAND, RAND_R_ENTROPY_INPUT_TOO_LONG},
+ #else
+ {"ENTROPY_INPUT_TOO_LONG", 36, 106},
+ #endif
+ #ifdef RAND_R_ENTROPY_OUT_OF_RANGE
+ {"ENTROPY_OUT_OF_RANGE", ERR_LIB_RAND, RAND_R_ENTROPY_OUT_OF_RANGE},
+ #else
+ {"ENTROPY_OUT_OF_RANGE", 36, 124},
+ #endif
+ #ifdef RAND_R_ERROR_ENTROPY_POOL_WAS_IGNORED
+ {"ERROR_ENTROPY_POOL_WAS_IGNORED", ERR_LIB_RAND, RAND_R_ERROR_ENTROPY_POOL_WAS_IGNORED},
+ #else
+ {"ERROR_ENTROPY_POOL_WAS_IGNORED", 36, 127},
+ #endif
+ #ifdef RAND_R_ERROR_INITIALISING_DRBG
+ {"ERROR_INITIALISING_DRBG", ERR_LIB_RAND, RAND_R_ERROR_INITIALISING_DRBG},
+ #else
+ {"ERROR_INITIALISING_DRBG", 36, 107},
+ #endif
+ #ifdef RAND_R_ERROR_INSTANTIATING_DRBG
+ {"ERROR_INSTANTIATING_DRBG", ERR_LIB_RAND, RAND_R_ERROR_INSTANTIATING_DRBG},
+ #else
+ {"ERROR_INSTANTIATING_DRBG", 36, 108},
+ #endif
+ #ifdef RAND_R_ERROR_RETRIEVING_ADDITIONAL_INPUT
+ {"ERROR_RETRIEVING_ADDITIONAL_INPUT", ERR_LIB_RAND, RAND_R_ERROR_RETRIEVING_ADDITIONAL_INPUT},
+ #else
+ {"ERROR_RETRIEVING_ADDITIONAL_INPUT", 36, 109},
+ #endif
+ #ifdef RAND_R_ERROR_RETRIEVING_ENTROPY
+ {"ERROR_RETRIEVING_ENTROPY", ERR_LIB_RAND, RAND_R_ERROR_RETRIEVING_ENTROPY},
+ #else
+ {"ERROR_RETRIEVING_ENTROPY", 36, 110},
+ #endif
+ #ifdef RAND_R_ERROR_RETRIEVING_NONCE
+ {"ERROR_RETRIEVING_NONCE", ERR_LIB_RAND, RAND_R_ERROR_RETRIEVING_NONCE},
+ #else
+ {"ERROR_RETRIEVING_NONCE", 36, 111},
+ #endif
+ #ifdef RAND_R_FAILED_TO_CREATE_LOCK
+ {"FAILED_TO_CREATE_LOCK", ERR_LIB_RAND, RAND_R_FAILED_TO_CREATE_LOCK},
+ #else
+ {"FAILED_TO_CREATE_LOCK", 36, 126},
+ #endif
+ #ifdef RAND_R_FUNC_NOT_IMPLEMENTED
+ {"FUNC_NOT_IMPLEMENTED", ERR_LIB_RAND, RAND_R_FUNC_NOT_IMPLEMENTED},
+ #else
+ {"FUNC_NOT_IMPLEMENTED", 36, 101},
+ #endif
+ #ifdef RAND_R_FWRITE_ERROR
+ {"FWRITE_ERROR", ERR_LIB_RAND, RAND_R_FWRITE_ERROR},
+ #else
+ {"FWRITE_ERROR", 36, 123},
+ #endif
+ #ifdef RAND_R_GENERATE_ERROR
+ {"GENERATE_ERROR", ERR_LIB_RAND, RAND_R_GENERATE_ERROR},
+ #else
+ {"GENERATE_ERROR", 36, 112},
+ #endif
+ #ifdef RAND_R_INSUFFICIENT_DRBG_STRENGTH
+ {"INSUFFICIENT_DRBG_STRENGTH", ERR_LIB_RAND, RAND_R_INSUFFICIENT_DRBG_STRENGTH},
+ #else
+ {"INSUFFICIENT_DRBG_STRENGTH", 36, 139},
+ #endif
+ #ifdef RAND_R_INTERNAL_ERROR
+ {"INTERNAL_ERROR", ERR_LIB_RAND, RAND_R_INTERNAL_ERROR},
+ #else
+ {"INTERNAL_ERROR", 36, 113},
+ #endif
+ #ifdef RAND_R_IN_ERROR_STATE
+ {"IN_ERROR_STATE", ERR_LIB_RAND, RAND_R_IN_ERROR_STATE},
+ #else
+ {"IN_ERROR_STATE", 36, 114},
+ #endif
+ #ifdef RAND_R_NOT_A_REGULAR_FILE
+ {"NOT_A_REGULAR_FILE", ERR_LIB_RAND, RAND_R_NOT_A_REGULAR_FILE},
+ #else
+ {"NOT_A_REGULAR_FILE", 36, 122},
+ #endif
+ #ifdef RAND_R_NOT_INSTANTIATED
+ {"NOT_INSTANTIATED", ERR_LIB_RAND, RAND_R_NOT_INSTANTIATED},
+ #else
+ {"NOT_INSTANTIATED", 36, 115},
+ #endif
+ #ifdef RAND_R_NO_DRBG_IMPLEMENTATION_SELECTED
+ {"NO_DRBG_IMPLEMENTATION_SELECTED", ERR_LIB_RAND, RAND_R_NO_DRBG_IMPLEMENTATION_SELECTED},
+ #else
+ {"NO_DRBG_IMPLEMENTATION_SELECTED", 36, 128},
+ #endif
+ #ifdef RAND_R_PARENT_LOCKING_NOT_ENABLED
+ {"PARENT_LOCKING_NOT_ENABLED", ERR_LIB_RAND, RAND_R_PARENT_LOCKING_NOT_ENABLED},
+ #else
+ {"PARENT_LOCKING_NOT_ENABLED", 36, 130},
+ #endif
+ #ifdef RAND_R_PARENT_STRENGTH_TOO_WEAK
+ {"PARENT_STRENGTH_TOO_WEAK", ERR_LIB_RAND, RAND_R_PARENT_STRENGTH_TOO_WEAK},
+ #else
+ {"PARENT_STRENGTH_TOO_WEAK", 36, 131},
+ #endif
+ #ifdef RAND_R_PERSONALISATION_STRING_TOO_LONG
+ {"PERSONALISATION_STRING_TOO_LONG", ERR_LIB_RAND, RAND_R_PERSONALISATION_STRING_TOO_LONG},
+ #else
+ {"PERSONALISATION_STRING_TOO_LONG", 36, 116},
+ #endif
+ #ifdef RAND_R_PREDICTION_RESISTANCE_NOT_SUPPORTED
+ {"PREDICTION_RESISTANCE_NOT_SUPPORTED", ERR_LIB_RAND, RAND_R_PREDICTION_RESISTANCE_NOT_SUPPORTED},
+ #else
+ {"PREDICTION_RESISTANCE_NOT_SUPPORTED", 36, 133},
+ #endif
+ #ifdef RAND_R_PRNG_NOT_SEEDED
+ {"PRNG_NOT_SEEDED", ERR_LIB_RAND, RAND_R_PRNG_NOT_SEEDED},
+ #else
+ {"PRNG_NOT_SEEDED", 36, 100},
+ #endif
+ #ifdef RAND_R_RANDOM_POOL_OVERFLOW
+ {"RANDOM_POOL_OVERFLOW", ERR_LIB_RAND, RAND_R_RANDOM_POOL_OVERFLOW},
+ #else
+ {"RANDOM_POOL_OVERFLOW", 36, 125},
+ #endif
+ #ifdef RAND_R_RANDOM_POOL_UNDERFLOW
+ {"RANDOM_POOL_UNDERFLOW", ERR_LIB_RAND, RAND_R_RANDOM_POOL_UNDERFLOW},
+ #else
+ {"RANDOM_POOL_UNDERFLOW", 36, 134},
+ #endif
+ #ifdef RAND_R_REQUEST_TOO_LARGE_FOR_DRBG
+ {"REQUEST_TOO_LARGE_FOR_DRBG", ERR_LIB_RAND, RAND_R_REQUEST_TOO_LARGE_FOR_DRBG},
+ #else
+ {"REQUEST_TOO_LARGE_FOR_DRBG", 36, 117},
+ #endif
+ #ifdef RAND_R_RESEED_ERROR
+ {"RESEED_ERROR", ERR_LIB_RAND, RAND_R_RESEED_ERROR},
+ #else
+ {"RESEED_ERROR", 36, 118},
+ #endif
+ #ifdef RAND_R_SELFTEST_FAILURE
+ {"SELFTEST_FAILURE", ERR_LIB_RAND, RAND_R_SELFTEST_FAILURE},
+ #else
+ {"SELFTEST_FAILURE", 36, 119},
+ #endif
+ #ifdef RAND_R_TOO_LITTLE_NONCE_REQUESTED
+ {"TOO_LITTLE_NONCE_REQUESTED", ERR_LIB_RAND, RAND_R_TOO_LITTLE_NONCE_REQUESTED},
+ #else
+ {"TOO_LITTLE_NONCE_REQUESTED", 36, 135},
+ #endif
+ #ifdef RAND_R_TOO_MUCH_NONCE_REQUESTED
+ {"TOO_MUCH_NONCE_REQUESTED", ERR_LIB_RAND, RAND_R_TOO_MUCH_NONCE_REQUESTED},
+ #else
+ {"TOO_MUCH_NONCE_REQUESTED", 36, 136},
+ #endif
+ #ifdef RAND_R_UNABLE_TO_CREATE_DRBG
+ {"UNABLE_TO_CREATE_DRBG", ERR_LIB_RAND, RAND_R_UNABLE_TO_CREATE_DRBG},
+ #else
+ {"UNABLE_TO_CREATE_DRBG", 36, 143},
+ #endif
+ #ifdef RAND_R_UNABLE_TO_FETCH_DRBG
+ {"UNABLE_TO_FETCH_DRBG", ERR_LIB_RAND, RAND_R_UNABLE_TO_FETCH_DRBG},
+ #else
+ {"UNABLE_TO_FETCH_DRBG", 36, 144},
+ #endif
+ #ifdef RAND_R_UNABLE_TO_GET_PARENT_RESEED_PROP_COUNTER
+ {"UNABLE_TO_GET_PARENT_RESEED_PROP_COUNTER", ERR_LIB_RAND, RAND_R_UNABLE_TO_GET_PARENT_RESEED_PROP_COUNTER},
+ #else
+ {"UNABLE_TO_GET_PARENT_RESEED_PROP_COUNTER", 36, 141},
+ #endif
+ #ifdef RAND_R_UNABLE_TO_GET_PARENT_STRENGTH
+ {"UNABLE_TO_GET_PARENT_STRENGTH", ERR_LIB_RAND, RAND_R_UNABLE_TO_GET_PARENT_STRENGTH},
+ #else
+ {"UNABLE_TO_GET_PARENT_STRENGTH", 36, 138},
+ #endif
+ #ifdef RAND_R_UNABLE_TO_LOCK_PARENT
+ {"UNABLE_TO_LOCK_PARENT", ERR_LIB_RAND, RAND_R_UNABLE_TO_LOCK_PARENT},
+ #else
+ {"UNABLE_TO_LOCK_PARENT", 36, 140},
+ #endif
+ #ifdef RAND_R_UNSUPPORTED_DRBG_FLAGS
+ {"UNSUPPORTED_DRBG_FLAGS", ERR_LIB_RAND, RAND_R_UNSUPPORTED_DRBG_FLAGS},
+ #else
+ {"UNSUPPORTED_DRBG_FLAGS", 36, 132},
+ #endif
+ #ifdef RAND_R_UNSUPPORTED_DRBG_TYPE
+ {"UNSUPPORTED_DRBG_TYPE", ERR_LIB_RAND, RAND_R_UNSUPPORTED_DRBG_TYPE},
+ #else
+ {"UNSUPPORTED_DRBG_TYPE", 36, 120},
+ #endif
+ #ifdef RSA_R_ALGORITHM_MISMATCH
+ {"ALGORITHM_MISMATCH", ERR_LIB_RSA, RSA_R_ALGORITHM_MISMATCH},
+ #else
+ {"ALGORITHM_MISMATCH", 4, 100},
+ #endif
+ #ifdef RSA_R_BAD_E_VALUE
+ {"BAD_E_VALUE", ERR_LIB_RSA, RSA_R_BAD_E_VALUE},
+ #else
+ {"BAD_E_VALUE", 4, 101},
+ #endif
+ #ifdef RSA_R_BAD_FIXED_HEADER_DECRYPT
+ {"BAD_FIXED_HEADER_DECRYPT", ERR_LIB_RSA, RSA_R_BAD_FIXED_HEADER_DECRYPT},
+ #else
+ {"BAD_FIXED_HEADER_DECRYPT", 4, 102},
+ #endif
+ #ifdef RSA_R_BAD_PAD_BYTE_COUNT
+ {"BAD_PAD_BYTE_COUNT", ERR_LIB_RSA, RSA_R_BAD_PAD_BYTE_COUNT},
+ #else
+ {"BAD_PAD_BYTE_COUNT", 4, 103},
+ #endif
+ #ifdef RSA_R_BAD_SIGNATURE
+ {"BAD_SIGNATURE", ERR_LIB_RSA, RSA_R_BAD_SIGNATURE},
+ #else
+ {"BAD_SIGNATURE", 4, 104},
+ #endif
+ #ifdef RSA_R_BLOCK_TYPE_IS_NOT_01
+ {"BLOCK_TYPE_IS_NOT_01", ERR_LIB_RSA, RSA_R_BLOCK_TYPE_IS_NOT_01},
+ #else
+ {"BLOCK_TYPE_IS_NOT_01", 4, 106},
+ #endif
+ #ifdef RSA_R_BLOCK_TYPE_IS_NOT_02
+ {"BLOCK_TYPE_IS_NOT_02", ERR_LIB_RSA, RSA_R_BLOCK_TYPE_IS_NOT_02},
+ #else
+ {"BLOCK_TYPE_IS_NOT_02", 4, 107},
+ #endif
+ #ifdef RSA_R_DATA_GREATER_THAN_MOD_LEN
+ {"DATA_GREATER_THAN_MOD_LEN", ERR_LIB_RSA, RSA_R_DATA_GREATER_THAN_MOD_LEN},
+ #else
+ {"DATA_GREATER_THAN_MOD_LEN", 4, 108},
+ #endif
+ #ifdef RSA_R_DATA_TOO_LARGE
+ {"DATA_TOO_LARGE", ERR_LIB_RSA, RSA_R_DATA_TOO_LARGE},
+ #else
+ {"DATA_TOO_LARGE", 4, 109},
+ #endif
+ #ifdef RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE
+ {"DATA_TOO_LARGE_FOR_KEY_SIZE", ERR_LIB_RSA, RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE},
+ #else
+ {"DATA_TOO_LARGE_FOR_KEY_SIZE", 4, 110},
+ #endif
+ #ifdef RSA_R_DATA_TOO_LARGE_FOR_MODULUS
+ {"DATA_TOO_LARGE_FOR_MODULUS", ERR_LIB_RSA, RSA_R_DATA_TOO_LARGE_FOR_MODULUS},
+ #else
+ {"DATA_TOO_LARGE_FOR_MODULUS", 4, 132},
+ #endif
+ #ifdef RSA_R_DATA_TOO_SMALL
+ {"DATA_TOO_SMALL", ERR_LIB_RSA, RSA_R_DATA_TOO_SMALL},
+ #else
+ {"DATA_TOO_SMALL", 4, 111},
+ #endif
+ #ifdef RSA_R_DATA_TOO_SMALL_FOR_KEY_SIZE
+ {"DATA_TOO_SMALL_FOR_KEY_SIZE", ERR_LIB_RSA, RSA_R_DATA_TOO_SMALL_FOR_KEY_SIZE},
+ #else
+ {"DATA_TOO_SMALL_FOR_KEY_SIZE", 4, 122},
+ #endif
+ #ifdef RSA_R_DIGEST_DOES_NOT_MATCH
+ {"DIGEST_DOES_NOT_MATCH", ERR_LIB_RSA, RSA_R_DIGEST_DOES_NOT_MATCH},
+ #else
+ {"DIGEST_DOES_NOT_MATCH", 4, 158},
+ #endif
+ #ifdef RSA_R_DIGEST_NOT_ALLOWED
+ {"DIGEST_NOT_ALLOWED", ERR_LIB_RSA, RSA_R_DIGEST_NOT_ALLOWED},
+ #else
+ {"DIGEST_NOT_ALLOWED", 4, 145},
+ #endif
+ #ifdef RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY
+ {"DIGEST_TOO_BIG_FOR_RSA_KEY", ERR_LIB_RSA, RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY},
+ #else
+ {"DIGEST_TOO_BIG_FOR_RSA_KEY", 4, 112},
+ #endif
+ #ifdef RSA_R_DMP1_NOT_CONGRUENT_TO_D
+ {"DMP1_NOT_CONGRUENT_TO_D", ERR_LIB_RSA, RSA_R_DMP1_NOT_CONGRUENT_TO_D},
+ #else
+ {"DMP1_NOT_CONGRUENT_TO_D", 4, 124},
+ #endif
+ #ifdef RSA_R_DMQ1_NOT_CONGRUENT_TO_D
+ {"DMQ1_NOT_CONGRUENT_TO_D", ERR_LIB_RSA, RSA_R_DMQ1_NOT_CONGRUENT_TO_D},
+ #else
+ {"DMQ1_NOT_CONGRUENT_TO_D", 4, 125},
+ #endif
+ #ifdef RSA_R_D_E_NOT_CONGRUENT_TO_1
+ {"D_E_NOT_CONGRUENT_TO_1", ERR_LIB_RSA, RSA_R_D_E_NOT_CONGRUENT_TO_1},
+ #else
+ {"D_E_NOT_CONGRUENT_TO_1", 4, 123},
+ #endif
+ #ifdef RSA_R_FIRST_OCTET_INVALID
+ {"FIRST_OCTET_INVALID", ERR_LIB_RSA, RSA_R_FIRST_OCTET_INVALID},
+ #else
+ {"FIRST_OCTET_INVALID", 4, 133},
+ #endif
+ #ifdef RSA_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE
+ {"ILLEGAL_OR_UNSUPPORTED_PADDING_MODE", ERR_LIB_RSA, RSA_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE},
+ #else
+ {"ILLEGAL_OR_UNSUPPORTED_PADDING_MODE", 4, 144},
+ #endif
+ #ifdef RSA_R_INVALID_DIGEST
+ {"INVALID_DIGEST", ERR_LIB_RSA, RSA_R_INVALID_DIGEST},
+ #else
+ {"INVALID_DIGEST", 4, 157},
+ #endif
+ #ifdef RSA_R_INVALID_DIGEST_LENGTH
+ {"INVALID_DIGEST_LENGTH", ERR_LIB_RSA, RSA_R_INVALID_DIGEST_LENGTH},
+ #else
+ {"INVALID_DIGEST_LENGTH", 4, 143},
+ #endif
+ #ifdef RSA_R_INVALID_HEADER
+ {"INVALID_HEADER", ERR_LIB_RSA, RSA_R_INVALID_HEADER},
+ #else
+ {"INVALID_HEADER", 4, 137},
+ #endif
+ #ifdef RSA_R_INVALID_KEYPAIR
+ {"INVALID_KEYPAIR", ERR_LIB_RSA, RSA_R_INVALID_KEYPAIR},
+ #else
+ {"INVALID_KEYPAIR", 4, 171},
+ #endif
+ #ifdef RSA_R_INVALID_KEY_LENGTH
+ {"INVALID_KEY_LENGTH", ERR_LIB_RSA, RSA_R_INVALID_KEY_LENGTH},
+ #else
+ {"INVALID_KEY_LENGTH", 4, 173},
+ #endif
+ #ifdef RSA_R_INVALID_LABEL
+ {"INVALID_LABEL", ERR_LIB_RSA, RSA_R_INVALID_LABEL},
+ #else
+ {"INVALID_LABEL", 4, 160},
+ #endif
+ #ifdef RSA_R_INVALID_LENGTH
+ {"INVALID_LENGTH", ERR_LIB_RSA, RSA_R_INVALID_LENGTH},
+ #else
+ {"INVALID_LENGTH", 4, 181},
+ #endif
+ #ifdef RSA_R_INVALID_MESSAGE_LENGTH
+ {"INVALID_MESSAGE_LENGTH", ERR_LIB_RSA, RSA_R_INVALID_MESSAGE_LENGTH},
+ #else
+ {"INVALID_MESSAGE_LENGTH", 4, 131},
+ #endif
+ #ifdef RSA_R_INVALID_MGF1_MD
+ {"INVALID_MGF1_MD", ERR_LIB_RSA, RSA_R_INVALID_MGF1_MD},
+ #else
+ {"INVALID_MGF1_MD", 4, 156},
+ #endif
+ #ifdef RSA_R_INVALID_MODULUS
+ {"INVALID_MODULUS", ERR_LIB_RSA, RSA_R_INVALID_MODULUS},
+ #else
+ {"INVALID_MODULUS", 4, 174},
+ #endif
+ #ifdef RSA_R_INVALID_MULTI_PRIME_KEY
+ {"INVALID_MULTI_PRIME_KEY", ERR_LIB_RSA, RSA_R_INVALID_MULTI_PRIME_KEY},
+ #else
+ {"INVALID_MULTI_PRIME_KEY", 4, 167},
+ #endif
+ #ifdef RSA_R_INVALID_OAEP_PARAMETERS
+ {"INVALID_OAEP_PARAMETERS", ERR_LIB_RSA, RSA_R_INVALID_OAEP_PARAMETERS},
+ #else
+ {"INVALID_OAEP_PARAMETERS", 4, 161},
+ #endif
+ #ifdef RSA_R_INVALID_PADDING
+ {"INVALID_PADDING", ERR_LIB_RSA, RSA_R_INVALID_PADDING},
+ #else
+ {"INVALID_PADDING", 4, 138},
+ #endif
+ #ifdef RSA_R_INVALID_PADDING_MODE
+ {"INVALID_PADDING_MODE", ERR_LIB_RSA, RSA_R_INVALID_PADDING_MODE},
+ #else
+ {"INVALID_PADDING_MODE", 4, 141},
+ #endif
+ #ifdef RSA_R_INVALID_PSS_PARAMETERS
+ {"INVALID_PSS_PARAMETERS", ERR_LIB_RSA, RSA_R_INVALID_PSS_PARAMETERS},
+ #else
+ {"INVALID_PSS_PARAMETERS", 4, 149},
+ #endif
+ #ifdef RSA_R_INVALID_PSS_SALTLEN
+ {"INVALID_PSS_SALTLEN", ERR_LIB_RSA, RSA_R_INVALID_PSS_SALTLEN},
+ #else
+ {"INVALID_PSS_SALTLEN", 4, 146},
+ #endif
+ #ifdef RSA_R_INVALID_REQUEST
+ {"INVALID_REQUEST", ERR_LIB_RSA, RSA_R_INVALID_REQUEST},
+ #else
+ {"INVALID_REQUEST", 4, 175},
+ #endif
+ #ifdef RSA_R_INVALID_SALT_LENGTH
+ {"INVALID_SALT_LENGTH", ERR_LIB_RSA, RSA_R_INVALID_SALT_LENGTH},
+ #else
+ {"INVALID_SALT_LENGTH", 4, 150},
+ #endif
+ #ifdef RSA_R_INVALID_STRENGTH
+ {"INVALID_STRENGTH", ERR_LIB_RSA, RSA_R_INVALID_STRENGTH},
+ #else
+ {"INVALID_STRENGTH", 4, 176},
+ #endif
+ #ifdef RSA_R_INVALID_TRAILER
+ {"INVALID_TRAILER", ERR_LIB_RSA, RSA_R_INVALID_TRAILER},
+ #else
+ {"INVALID_TRAILER", 4, 139},
+ #endif
+ #ifdef RSA_R_INVALID_X931_DIGEST
+ {"INVALID_X931_DIGEST", ERR_LIB_RSA, RSA_R_INVALID_X931_DIGEST},
+ #else
+ {"INVALID_X931_DIGEST", 4, 142},
+ #endif
+ #ifdef RSA_R_IQMP_NOT_INVERSE_OF_Q
+ {"IQMP_NOT_INVERSE_OF_Q", ERR_LIB_RSA, RSA_R_IQMP_NOT_INVERSE_OF_Q},
+ #else
+ {"IQMP_NOT_INVERSE_OF_Q", 4, 126},
+ #endif
+ #ifdef RSA_R_KEY_PRIME_NUM_INVALID
+ {"KEY_PRIME_NUM_INVALID", ERR_LIB_RSA, RSA_R_KEY_PRIME_NUM_INVALID},
+ #else
+ {"KEY_PRIME_NUM_INVALID", 4, 165},
+ #endif
+ #ifdef RSA_R_KEY_SIZE_TOO_SMALL
+ {"KEY_SIZE_TOO_SMALL", ERR_LIB_RSA, RSA_R_KEY_SIZE_TOO_SMALL},
+ #else
+ {"KEY_SIZE_TOO_SMALL", 4, 120},
+ #endif
+ #ifdef RSA_R_LAST_OCTET_INVALID
+ {"LAST_OCTET_INVALID", ERR_LIB_RSA, RSA_R_LAST_OCTET_INVALID},
+ #else
+ {"LAST_OCTET_INVALID", 4, 134},
+ #endif
+ #ifdef RSA_R_MGF1_DIGEST_NOT_ALLOWED
+ {"MGF1_DIGEST_NOT_ALLOWED", ERR_LIB_RSA, RSA_R_MGF1_DIGEST_NOT_ALLOWED},
+ #else
+ {"MGF1_DIGEST_NOT_ALLOWED", 4, 152},
+ #endif
+ #ifdef RSA_R_MISSING_PRIVATE_KEY
+ {"MISSING_PRIVATE_KEY", ERR_LIB_RSA, RSA_R_MISSING_PRIVATE_KEY},
+ #else
+ {"MISSING_PRIVATE_KEY", 4, 179},
+ #endif
+ #ifdef RSA_R_MODULUS_TOO_LARGE
+ {"MODULUS_TOO_LARGE", ERR_LIB_RSA, RSA_R_MODULUS_TOO_LARGE},
+ #else
+ {"MODULUS_TOO_LARGE", 4, 105},
+ #endif
+ #ifdef RSA_R_MP_COEFFICIENT_NOT_INVERSE_OF_R
+ {"MP_COEFFICIENT_NOT_INVERSE_OF_R", ERR_LIB_RSA, RSA_R_MP_COEFFICIENT_NOT_INVERSE_OF_R},
+ #else
+ {"MP_COEFFICIENT_NOT_INVERSE_OF_R", 4, 168},
+ #endif
+ #ifdef RSA_R_MP_EXPONENT_NOT_CONGRUENT_TO_D
+ {"MP_EXPONENT_NOT_CONGRUENT_TO_D", ERR_LIB_RSA, RSA_R_MP_EXPONENT_NOT_CONGRUENT_TO_D},
+ #else
+ {"MP_EXPONENT_NOT_CONGRUENT_TO_D", 4, 169},
+ #endif
+ #ifdef RSA_R_MP_R_NOT_PRIME
+ {"MP_R_NOT_PRIME", ERR_LIB_RSA, RSA_R_MP_R_NOT_PRIME},
+ #else
+ {"MP_R_NOT_PRIME", 4, 170},
+ #endif
+ #ifdef RSA_R_NO_PUBLIC_EXPONENT
+ {"NO_PUBLIC_EXPONENT", ERR_LIB_RSA, RSA_R_NO_PUBLIC_EXPONENT},
+ #else
+ {"NO_PUBLIC_EXPONENT", 4, 140},
+ #endif
+ #ifdef RSA_R_NULL_BEFORE_BLOCK_MISSING
+ {"NULL_BEFORE_BLOCK_MISSING", ERR_LIB_RSA, RSA_R_NULL_BEFORE_BLOCK_MISSING},
+ #else
+ {"NULL_BEFORE_BLOCK_MISSING", 4, 113},
+ #endif
+ #ifdef RSA_R_N_DOES_NOT_EQUAL_PRODUCT_OF_PRIMES
+ {"N_DOES_NOT_EQUAL_PRODUCT_OF_PRIMES", ERR_LIB_RSA, RSA_R_N_DOES_NOT_EQUAL_PRODUCT_OF_PRIMES},
+ #else
+ {"N_DOES_NOT_EQUAL_PRODUCT_OF_PRIMES", 4, 172},
+ #endif
+ #ifdef RSA_R_N_DOES_NOT_EQUAL_P_Q
+ {"N_DOES_NOT_EQUAL_P_Q", ERR_LIB_RSA, RSA_R_N_DOES_NOT_EQUAL_P_Q},
+ #else
+ {"N_DOES_NOT_EQUAL_P_Q", 4, 127},
+ #endif
+ #ifdef RSA_R_OAEP_DECODING_ERROR
+ {"OAEP_DECODING_ERROR", ERR_LIB_RSA, RSA_R_OAEP_DECODING_ERROR},
+ #else
+ {"OAEP_DECODING_ERROR", 4, 121},
+ #endif
+ #ifdef RSA_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE
+ {"OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE", ERR_LIB_RSA, RSA_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE},
+ #else
+ {"OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE", 4, 148},
+ #endif
+ #ifdef RSA_R_PADDING_CHECK_FAILED
+ {"PADDING_CHECK_FAILED", ERR_LIB_RSA, RSA_R_PADDING_CHECK_FAILED},
+ #else
+ {"PADDING_CHECK_FAILED", 4, 114},
+ #endif
+ #ifdef RSA_R_PAIRWISE_TEST_FAILURE
+ {"PAIRWISE_TEST_FAILURE", ERR_LIB_RSA, RSA_R_PAIRWISE_TEST_FAILURE},
+ #else
+ {"PAIRWISE_TEST_FAILURE", 4, 177},
+ #endif
+ #ifdef RSA_R_PKCS_DECODING_ERROR
+ {"PKCS_DECODING_ERROR", ERR_LIB_RSA, RSA_R_PKCS_DECODING_ERROR},
+ #else
+ {"PKCS_DECODING_ERROR", 4, 159},
+ #endif
+ #ifdef RSA_R_PSS_SALTLEN_TOO_SMALL
+ {"PSS_SALTLEN_TOO_SMALL", ERR_LIB_RSA, RSA_R_PSS_SALTLEN_TOO_SMALL},
+ #else
+ {"PSS_SALTLEN_TOO_SMALL", 4, 164},
+ #endif
+ #ifdef RSA_R_PUB_EXPONENT_OUT_OF_RANGE
+ {"PUB_EXPONENT_OUT_OF_RANGE", ERR_LIB_RSA, RSA_R_PUB_EXPONENT_OUT_OF_RANGE},
+ #else
+ {"PUB_EXPONENT_OUT_OF_RANGE", 4, 178},
+ #endif
+ #ifdef RSA_R_P_NOT_PRIME
+ {"P_NOT_PRIME", ERR_LIB_RSA, RSA_R_P_NOT_PRIME},
+ #else
+ {"P_NOT_PRIME", 4, 128},
+ #endif
+ #ifdef RSA_R_Q_NOT_PRIME
+ {"Q_NOT_PRIME", ERR_LIB_RSA, RSA_R_Q_NOT_PRIME},
+ #else
+ {"Q_NOT_PRIME", 4, 129},
+ #endif
+ #ifdef RSA_R_RANDOMNESS_SOURCE_STRENGTH_INSUFFICIENT
+ {"RANDOMNESS_SOURCE_STRENGTH_INSUFFICIENT", ERR_LIB_RSA, RSA_R_RANDOMNESS_SOURCE_STRENGTH_INSUFFICIENT},
+ #else
+ {"RANDOMNESS_SOURCE_STRENGTH_INSUFFICIENT", 4, 180},
+ #endif
+ #ifdef RSA_R_RSA_OPERATIONS_NOT_SUPPORTED
+ {"RSA_OPERATIONS_NOT_SUPPORTED", ERR_LIB_RSA, RSA_R_RSA_OPERATIONS_NOT_SUPPORTED},
+ #else
+ {"RSA_OPERATIONS_NOT_SUPPORTED", 4, 130},
+ #endif
+ #ifdef RSA_R_SLEN_CHECK_FAILED
+ {"SLEN_CHECK_FAILED", ERR_LIB_RSA, RSA_R_SLEN_CHECK_FAILED},
+ #else
+ {"SLEN_CHECK_FAILED", 4, 136},
+ #endif
+ #ifdef RSA_R_SLEN_RECOVERY_FAILED
+ {"SLEN_RECOVERY_FAILED", ERR_LIB_RSA, RSA_R_SLEN_RECOVERY_FAILED},
+ #else
+ {"SLEN_RECOVERY_FAILED", 4, 135},
+ #endif
+ #ifdef RSA_R_SSLV3_ROLLBACK_ATTACK
+ {"SSLV3_ROLLBACK_ATTACK", ERR_LIB_RSA, RSA_R_SSLV3_ROLLBACK_ATTACK},
+ #else
+ {"SSLV3_ROLLBACK_ATTACK", 4, 115},
+ #endif
+ #ifdef RSA_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD
+ {"THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD", ERR_LIB_RSA, RSA_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD},
+ #else
+ {"THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD", 4, 116},
+ #endif
+ #ifdef RSA_R_UNKNOWN_ALGORITHM_TYPE
+ {"UNKNOWN_ALGORITHM_TYPE", ERR_LIB_RSA, RSA_R_UNKNOWN_ALGORITHM_TYPE},
+ #else
+ {"UNKNOWN_ALGORITHM_TYPE", 4, 117},
+ #endif
+ #ifdef RSA_R_UNKNOWN_DIGEST
+ {"UNKNOWN_DIGEST", ERR_LIB_RSA, RSA_R_UNKNOWN_DIGEST},
+ #else
+ {"UNKNOWN_DIGEST", 4, 166},
+ #endif
+ #ifdef RSA_R_UNKNOWN_MASK_DIGEST
+ {"UNKNOWN_MASK_DIGEST", ERR_LIB_RSA, RSA_R_UNKNOWN_MASK_DIGEST},
+ #else
+ {"UNKNOWN_MASK_DIGEST", 4, 151},
+ #endif
+ #ifdef RSA_R_UNKNOWN_PADDING_TYPE
+ {"UNKNOWN_PADDING_TYPE", ERR_LIB_RSA, RSA_R_UNKNOWN_PADDING_TYPE},
+ #else
+ {"UNKNOWN_PADDING_TYPE", 4, 118},
+ #endif
+ #ifdef RSA_R_UNSUPPORTED_ENCRYPTION_TYPE
+ {"UNSUPPORTED_ENCRYPTION_TYPE", ERR_LIB_RSA, RSA_R_UNSUPPORTED_ENCRYPTION_TYPE},
+ #else
+ {"UNSUPPORTED_ENCRYPTION_TYPE", 4, 162},
+ #endif
+ #ifdef RSA_R_UNSUPPORTED_LABEL_SOURCE
+ {"UNSUPPORTED_LABEL_SOURCE", ERR_LIB_RSA, RSA_R_UNSUPPORTED_LABEL_SOURCE},
+ #else
+ {"UNSUPPORTED_LABEL_SOURCE", 4, 163},
+ #endif
+ #ifdef RSA_R_UNSUPPORTED_MASK_ALGORITHM
+ {"UNSUPPORTED_MASK_ALGORITHM", ERR_LIB_RSA, RSA_R_UNSUPPORTED_MASK_ALGORITHM},
+ #else
+ {"UNSUPPORTED_MASK_ALGORITHM", 4, 153},
+ #endif
+ #ifdef RSA_R_UNSUPPORTED_MASK_PARAMETER
+ {"UNSUPPORTED_MASK_PARAMETER", ERR_LIB_RSA, RSA_R_UNSUPPORTED_MASK_PARAMETER},
+ #else
+ {"UNSUPPORTED_MASK_PARAMETER", 4, 154},
+ #endif
+ #ifdef RSA_R_UNSUPPORTED_SIGNATURE_TYPE
+ {"UNSUPPORTED_SIGNATURE_TYPE", ERR_LIB_RSA, RSA_R_UNSUPPORTED_SIGNATURE_TYPE},
+ #else
+ {"UNSUPPORTED_SIGNATURE_TYPE", 4, 155},
+ #endif
+ #ifdef RSA_R_VALUE_MISSING
+ {"VALUE_MISSING", ERR_LIB_RSA, RSA_R_VALUE_MISSING},
+ #else
+ {"VALUE_MISSING", 4, 147},
+ #endif
+ #ifdef RSA_R_WRONG_SIGNATURE_LENGTH
+ {"WRONG_SIGNATURE_LENGTH", ERR_LIB_RSA, RSA_R_WRONG_SIGNATURE_LENGTH},
+ #else
+ {"WRONG_SIGNATURE_LENGTH", 4, 119},
+ #endif
+ #ifdef SM2_R_ASN1_ERROR
+ {"ASN1_ERROR", ERR_LIB_SM2, SM2_R_ASN1_ERROR},
+ #else
+ {"ASN1_ERROR", 53, 100},
+ #endif
+ #ifdef SM2_R_BAD_SIGNATURE
+ {"BAD_SIGNATURE", ERR_LIB_SM2, SM2_R_BAD_SIGNATURE},
+ #else
+ {"BAD_SIGNATURE", 53, 101},
+ #endif
+ #ifdef SM2_R_BUFFER_TOO_SMALL
+ {"BUFFER_TOO_SMALL", ERR_LIB_SM2, SM2_R_BUFFER_TOO_SMALL},
+ #else
+ {"BUFFER_TOO_SMALL", 53, 107},
+ #endif
+ #ifdef SM2_R_DIST_ID_TOO_LARGE
+ {"DIST_ID_TOO_LARGE", ERR_LIB_SM2, SM2_R_DIST_ID_TOO_LARGE},
+ #else
+ {"DIST_ID_TOO_LARGE", 53, 110},
+ #endif
+ #ifdef SM2_R_ID_NOT_SET
+ {"ID_NOT_SET", ERR_LIB_SM2, SM2_R_ID_NOT_SET},
+ #else
+ {"ID_NOT_SET", 53, 112},
+ #endif
+ #ifdef SM2_R_ID_TOO_LARGE
+ {"ID_TOO_LARGE", ERR_LIB_SM2, SM2_R_ID_TOO_LARGE},
+ #else
+ {"ID_TOO_LARGE", 53, 111},
+ #endif
+ #ifdef SM2_R_INVALID_CURVE
+ {"INVALID_CURVE", ERR_LIB_SM2, SM2_R_INVALID_CURVE},
+ #else
+ {"INVALID_CURVE", 53, 108},
+ #endif
+ #ifdef SM2_R_INVALID_DIGEST
+ {"INVALID_DIGEST", ERR_LIB_SM2, SM2_R_INVALID_DIGEST},
+ #else
+ {"INVALID_DIGEST", 53, 102},
+ #endif
+ #ifdef SM2_R_INVALID_DIGEST_TYPE
+ {"INVALID_DIGEST_TYPE", ERR_LIB_SM2, SM2_R_INVALID_DIGEST_TYPE},
+ #else
+ {"INVALID_DIGEST_TYPE", 53, 103},
+ #endif
+ #ifdef SM2_R_INVALID_ENCODING
+ {"INVALID_ENCODING", ERR_LIB_SM2, SM2_R_INVALID_ENCODING},
+ #else
+ {"INVALID_ENCODING", 53, 104},
+ #endif
+ #ifdef SM2_R_INVALID_FIELD
+ {"INVALID_FIELD", ERR_LIB_SM2, SM2_R_INVALID_FIELD},
+ #else
+ {"INVALID_FIELD", 53, 105},
+ #endif
+ #ifdef SM2_R_INVALID_PRIVATE_KEY
+ {"INVALID_PRIVATE_KEY", ERR_LIB_SM2, SM2_R_INVALID_PRIVATE_KEY},
+ #else
+ {"INVALID_PRIVATE_KEY", 53, 113},
+ #endif
+ #ifdef SM2_R_NO_PARAMETERS_SET
+ {"NO_PARAMETERS_SET", ERR_LIB_SM2, SM2_R_NO_PARAMETERS_SET},
+ #else
+ {"NO_PARAMETERS_SET", 53, 109},
+ #endif
+ #ifdef SM2_R_USER_ID_TOO_LARGE
+ {"USER_ID_TOO_LARGE", ERR_LIB_SM2, SM2_R_USER_ID_TOO_LARGE},
+ #else
+ {"USER_ID_TOO_LARGE", 53, 106},
+ #endif
+ #ifdef SSL_R_APPLICATION_DATA_AFTER_CLOSE_NOTIFY
+ {"APPLICATION_DATA_AFTER_CLOSE_NOTIFY", ERR_LIB_SSL, SSL_R_APPLICATION_DATA_AFTER_CLOSE_NOTIFY},
+ #else
+ {"APPLICATION_DATA_AFTER_CLOSE_NOTIFY", 20, 291},
+ #endif
+ #ifdef SSL_R_APP_DATA_IN_HANDSHAKE
+ {"APP_DATA_IN_HANDSHAKE", ERR_LIB_SSL, SSL_R_APP_DATA_IN_HANDSHAKE},
+ #else
+ {"APP_DATA_IN_HANDSHAKE", 20, 100},
+ #endif
+ #ifdef SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT
+ {"ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT", ERR_LIB_SSL, SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT},
+ #else
+ {"ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT", 20, 272},
+ #endif
+ #ifdef SSL_R_AT_LEAST_TLS_1_2_NEEDED_IN_SUITEB_MODE
+ {"AT_LEAST_TLS_1_2_NEEDED_IN_SUITEB_MODE", ERR_LIB_SSL, SSL_R_AT_LEAST_TLS_1_2_NEEDED_IN_SUITEB_MODE},
+ #else
+ {"AT_LEAST_TLS_1_2_NEEDED_IN_SUITEB_MODE", 20, 158},
+ #endif
+ #ifdef SSL_R_BAD_CHANGE_CIPHER_SPEC
+ {"BAD_CHANGE_CIPHER_SPEC", ERR_LIB_SSL, SSL_R_BAD_CHANGE_CIPHER_SPEC},
+ #else
+ {"BAD_CHANGE_CIPHER_SPEC", 20, 103},
+ #endif
+ #ifdef SSL_R_BAD_CIPHER
+ {"BAD_CIPHER", ERR_LIB_SSL, SSL_R_BAD_CIPHER},
+ #else
+ {"BAD_CIPHER", 20, 186},
+ #endif
+ #ifdef SSL_R_BAD_DATA
+ {"BAD_DATA", ERR_LIB_SSL, SSL_R_BAD_DATA},
+ #else
+ {"BAD_DATA", 20, 390},
+ #endif
+ #ifdef SSL_R_BAD_DATA_RETURNED_BY_CALLBACK
+ {"BAD_DATA_RETURNED_BY_CALLBACK", ERR_LIB_SSL, SSL_R_BAD_DATA_RETURNED_BY_CALLBACK},
+ #else
+ {"BAD_DATA_RETURNED_BY_CALLBACK", 20, 106},
+ #endif
+ #ifdef SSL_R_BAD_DECOMPRESSION
+ {"BAD_DECOMPRESSION", ERR_LIB_SSL, SSL_R_BAD_DECOMPRESSION},
+ #else
+ {"BAD_DECOMPRESSION", 20, 107},
+ #endif
+ #ifdef SSL_R_BAD_DH_VALUE
+ {"BAD_DH_VALUE", ERR_LIB_SSL, SSL_R_BAD_DH_VALUE},
+ #else
+ {"BAD_DH_VALUE", 20, 102},
+ #endif
+ #ifdef SSL_R_BAD_DIGEST_LENGTH
+ {"BAD_DIGEST_LENGTH", ERR_LIB_SSL, SSL_R_BAD_DIGEST_LENGTH},
+ #else
+ {"BAD_DIGEST_LENGTH", 20, 111},
+ #endif
+ #ifdef SSL_R_BAD_EARLY_DATA
+ {"BAD_EARLY_DATA", ERR_LIB_SSL, SSL_R_BAD_EARLY_DATA},
+ #else
+ {"BAD_EARLY_DATA", 20, 233},
+ #endif
+ #ifdef SSL_R_BAD_ECC_CERT
+ {"BAD_ECC_CERT", ERR_LIB_SSL, SSL_R_BAD_ECC_CERT},
+ #else
+ {"BAD_ECC_CERT", 20, 304},
+ #endif
+ #ifdef SSL_R_BAD_ECPOINT
+ {"BAD_ECPOINT", ERR_LIB_SSL, SSL_R_BAD_ECPOINT},
+ #else
+ {"BAD_ECPOINT", 20, 306},
+ #endif
+ #ifdef SSL_R_BAD_EXTENSION
+ {"BAD_EXTENSION", ERR_LIB_SSL, SSL_R_BAD_EXTENSION},
+ #else
+ {"BAD_EXTENSION", 20, 110},
+ #endif
+ #ifdef SSL_R_BAD_HANDSHAKE_LENGTH
+ {"BAD_HANDSHAKE_LENGTH", ERR_LIB_SSL, SSL_R_BAD_HANDSHAKE_LENGTH},
+ #else
+ {"BAD_HANDSHAKE_LENGTH", 20, 332},
+ #endif
+ #ifdef SSL_R_BAD_HANDSHAKE_STATE
+ {"BAD_HANDSHAKE_STATE", ERR_LIB_SSL, SSL_R_BAD_HANDSHAKE_STATE},
+ #else
+ {"BAD_HANDSHAKE_STATE", 20, 236},
+ #endif
+ #ifdef SSL_R_BAD_HELLO_REQUEST
+ {"BAD_HELLO_REQUEST", ERR_LIB_SSL, SSL_R_BAD_HELLO_REQUEST},
+ #else
+ {"BAD_HELLO_REQUEST", 20, 105},
+ #endif
+ #ifdef SSL_R_BAD_HRR_VERSION
+ {"BAD_HRR_VERSION", ERR_LIB_SSL, SSL_R_BAD_HRR_VERSION},
+ #else
+ {"BAD_HRR_VERSION", 20, 263},
+ #endif
+ #ifdef SSL_R_BAD_KEY_SHARE
+ {"BAD_KEY_SHARE", ERR_LIB_SSL, SSL_R_BAD_KEY_SHARE},
+ #else
+ {"BAD_KEY_SHARE", 20, 108},
+ #endif
+ #ifdef SSL_R_BAD_KEY_UPDATE
+ {"BAD_KEY_UPDATE", ERR_LIB_SSL, SSL_R_BAD_KEY_UPDATE},
+ #else
+ {"BAD_KEY_UPDATE", 20, 122},
+ #endif
+ #ifdef SSL_R_BAD_LEGACY_VERSION
+ {"BAD_LEGACY_VERSION", ERR_LIB_SSL, SSL_R_BAD_LEGACY_VERSION},
+ #else
+ {"BAD_LEGACY_VERSION", 20, 292},
+ #endif
+ #ifdef SSL_R_BAD_LENGTH
+ {"BAD_LENGTH", ERR_LIB_SSL, SSL_R_BAD_LENGTH},
+ #else
+ {"BAD_LENGTH", 20, 271},
+ #endif
+ #ifdef SSL_R_BAD_PACKET
+ {"BAD_PACKET", ERR_LIB_SSL, SSL_R_BAD_PACKET},
+ #else
+ {"BAD_PACKET", 20, 240},
+ #endif
+ #ifdef SSL_R_BAD_PACKET_LENGTH
+ {"BAD_PACKET_LENGTH", ERR_LIB_SSL, SSL_R_BAD_PACKET_LENGTH},
+ #else
+ {"BAD_PACKET_LENGTH", 20, 115},
+ #endif
+ #ifdef SSL_R_BAD_PROTOCOL_VERSION_NUMBER
+ {"BAD_PROTOCOL_VERSION_NUMBER", ERR_LIB_SSL, SSL_R_BAD_PROTOCOL_VERSION_NUMBER},
+ #else
+ {"BAD_PROTOCOL_VERSION_NUMBER", 20, 116},
+ #endif
+ #ifdef SSL_R_BAD_PSK
+ {"BAD_PSK", ERR_LIB_SSL, SSL_R_BAD_PSK},
+ #else
+ {"BAD_PSK", 20, 219},
+ #endif
+ #ifdef SSL_R_BAD_PSK_IDENTITY
+ {"BAD_PSK_IDENTITY", ERR_LIB_SSL, SSL_R_BAD_PSK_IDENTITY},
+ #else
+ {"BAD_PSK_IDENTITY", 20, 114},
+ #endif
+ #ifdef SSL_R_BAD_RECORD_TYPE
+ {"BAD_RECORD_TYPE", ERR_LIB_SSL, SSL_R_BAD_RECORD_TYPE},
+ #else
+ {"BAD_RECORD_TYPE", 20, 443},
+ #endif
+ #ifdef SSL_R_BAD_RSA_ENCRYPT
+ {"BAD_RSA_ENCRYPT", ERR_LIB_SSL, SSL_R_BAD_RSA_ENCRYPT},
+ #else
+ {"BAD_RSA_ENCRYPT", 20, 119},
+ #endif
+ #ifdef SSL_R_BAD_SIGNATURE
+ {"BAD_SIGNATURE", ERR_LIB_SSL, SSL_R_BAD_SIGNATURE},
+ #else
+ {"BAD_SIGNATURE", 20, 123},
+ #endif
+ #ifdef SSL_R_BAD_SRP_A_LENGTH
+ {"BAD_SRP_A_LENGTH", ERR_LIB_SSL, SSL_R_BAD_SRP_A_LENGTH},
+ #else
+ {"BAD_SRP_A_LENGTH", 20, 347},
+ #endif
+ #ifdef SSL_R_BAD_SRP_PARAMETERS
+ {"BAD_SRP_PARAMETERS", ERR_LIB_SSL, SSL_R_BAD_SRP_PARAMETERS},
+ #else
+ {"BAD_SRP_PARAMETERS", 20, 371},
+ #endif
+ #ifdef SSL_R_BAD_SRTP_MKI_VALUE
+ {"BAD_SRTP_MKI_VALUE", ERR_LIB_SSL, SSL_R_BAD_SRTP_MKI_VALUE},
+ #else
+ {"BAD_SRTP_MKI_VALUE", 20, 352},
+ #endif
+ #ifdef SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST
+ {"BAD_SRTP_PROTECTION_PROFILE_LIST", ERR_LIB_SSL, SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST},
+ #else
+ {"BAD_SRTP_PROTECTION_PROFILE_LIST", 20, 353},
+ #endif
+ #ifdef SSL_R_BAD_SSL_FILETYPE
+ {"BAD_SSL_FILETYPE", ERR_LIB_SSL, SSL_R_BAD_SSL_FILETYPE},
+ #else
+ {"BAD_SSL_FILETYPE", 20, 124},
+ #endif
+ #ifdef SSL_R_BAD_VALUE
+ {"BAD_VALUE", ERR_LIB_SSL, SSL_R_BAD_VALUE},
+ #else
+ {"BAD_VALUE", 20, 384},
+ #endif
+ #ifdef SSL_R_BAD_WRITE_RETRY
+ {"BAD_WRITE_RETRY", ERR_LIB_SSL, SSL_R_BAD_WRITE_RETRY},
+ #else
+ {"BAD_WRITE_RETRY", 20, 127},
+ #endif
+ #ifdef SSL_R_BINDER_DOES_NOT_VERIFY
+ {"BINDER_DOES_NOT_VERIFY", ERR_LIB_SSL, SSL_R_BINDER_DOES_NOT_VERIFY},
+ #else
+ {"BINDER_DOES_NOT_VERIFY", 20, 253},
+ #endif
+ #ifdef SSL_R_BIO_NOT_SET
+ {"BIO_NOT_SET", ERR_LIB_SSL, SSL_R_BIO_NOT_SET},
+ #else
+ {"BIO_NOT_SET", 20, 128},
+ #endif
+ #ifdef SSL_R_BLOCK_CIPHER_PAD_IS_WRONG
+ {"BLOCK_CIPHER_PAD_IS_WRONG", ERR_LIB_SSL, SSL_R_BLOCK_CIPHER_PAD_IS_WRONG},
+ #else
+ {"BLOCK_CIPHER_PAD_IS_WRONG", 20, 129},
+ #endif
+ #ifdef SSL_R_BN_LIB
+ {"BN_LIB", ERR_LIB_SSL, SSL_R_BN_LIB},
+ #else
+ {"BN_LIB", 20, 130},
+ #endif
+ #ifdef SSL_R_CALLBACK_FAILED
+ {"CALLBACK_FAILED", ERR_LIB_SSL, SSL_R_CALLBACK_FAILED},
+ #else
+ {"CALLBACK_FAILED", 20, 234},
+ #endif
+ #ifdef SSL_R_CANNOT_CHANGE_CIPHER
+ {"CANNOT_CHANGE_CIPHER", ERR_LIB_SSL, SSL_R_CANNOT_CHANGE_CIPHER},
+ #else
+ {"CANNOT_CHANGE_CIPHER", 20, 109},
+ #endif
+ #ifdef SSL_R_CANNOT_GET_GROUP_NAME
+ {"CANNOT_GET_GROUP_NAME", ERR_LIB_SSL, SSL_R_CANNOT_GET_GROUP_NAME},
+ #else
+ {"CANNOT_GET_GROUP_NAME", 20, 299},
+ #endif
+ #ifdef SSL_R_CA_DN_LENGTH_MISMATCH
+ {"CA_DN_LENGTH_MISMATCH", ERR_LIB_SSL, SSL_R_CA_DN_LENGTH_MISMATCH},
+ #else
+ {"CA_DN_LENGTH_MISMATCH", 20, 131},
+ #endif
+ #ifdef SSL_R_CA_KEY_TOO_SMALL
+ {"CA_KEY_TOO_SMALL", ERR_LIB_SSL, SSL_R_CA_KEY_TOO_SMALL},
+ #else
+ {"CA_KEY_TOO_SMALL", 20, 397},
+ #endif
+ #ifdef SSL_R_CA_MD_TOO_WEAK
+ {"CA_MD_TOO_WEAK", ERR_LIB_SSL, SSL_R_CA_MD_TOO_WEAK},
+ #else
+ {"CA_MD_TOO_WEAK", 20, 398},
+ #endif
+ #ifdef SSL_R_CCS_RECEIVED_EARLY
+ {"CCS_RECEIVED_EARLY", ERR_LIB_SSL, SSL_R_CCS_RECEIVED_EARLY},
+ #else
+ {"CCS_RECEIVED_EARLY", 20, 133},
+ #endif
+ #ifdef SSL_R_CERTIFICATE_VERIFY_FAILED
+ {"CERTIFICATE_VERIFY_FAILED", ERR_LIB_SSL, SSL_R_CERTIFICATE_VERIFY_FAILED},
+ #else
+ {"CERTIFICATE_VERIFY_FAILED", 20, 134},
+ #endif
+ #ifdef SSL_R_CERT_CB_ERROR
+ {"CERT_CB_ERROR", ERR_LIB_SSL, SSL_R_CERT_CB_ERROR},
+ #else
+ {"CERT_CB_ERROR", 20, 377},
+ #endif
+ #ifdef SSL_R_CERT_LENGTH_MISMATCH
+ {"CERT_LENGTH_MISMATCH", ERR_LIB_SSL, SSL_R_CERT_LENGTH_MISMATCH},
+ #else
+ {"CERT_LENGTH_MISMATCH", 20, 135},
+ #endif
+ #ifdef SSL_R_CIPHERSUITE_DIGEST_HAS_CHANGED
+ {"CIPHERSUITE_DIGEST_HAS_CHANGED", ERR_LIB_SSL, SSL_R_CIPHERSUITE_DIGEST_HAS_CHANGED},
+ #else
+ {"CIPHERSUITE_DIGEST_HAS_CHANGED", 20, 218},
+ #endif
+ #ifdef SSL_R_CIPHER_CODE_WRONG_LENGTH
+ {"CIPHER_CODE_WRONG_LENGTH", ERR_LIB_SSL, SSL_R_CIPHER_CODE_WRONG_LENGTH},
+ #else
+ {"CIPHER_CODE_WRONG_LENGTH", 20, 137},
+ #endif
+ #ifdef SSL_R_CLIENTHELLO_TLSEXT
+ {"CLIENTHELLO_TLSEXT", ERR_LIB_SSL, SSL_R_CLIENTHELLO_TLSEXT},
+ #else
+ {"CLIENTHELLO_TLSEXT", 20, 226},
+ #endif
+ #ifdef SSL_R_COMPRESSED_LENGTH_TOO_LONG
+ {"COMPRESSED_LENGTH_TOO_LONG", ERR_LIB_SSL, SSL_R_COMPRESSED_LENGTH_TOO_LONG},
+ #else
+ {"COMPRESSED_LENGTH_TOO_LONG", 20, 140},
+ #endif
+ #ifdef SSL_R_COMPRESSION_DISABLED
+ {"COMPRESSION_DISABLED", ERR_LIB_SSL, SSL_R_COMPRESSION_DISABLED},
+ #else
+ {"COMPRESSION_DISABLED", 20, 343},
+ #endif
+ #ifdef SSL_R_COMPRESSION_FAILURE
+ {"COMPRESSION_FAILURE", ERR_LIB_SSL, SSL_R_COMPRESSION_FAILURE},
+ #else
+ {"COMPRESSION_FAILURE", 20, 141},
+ #endif
+ #ifdef SSL_R_COMPRESSION_ID_NOT_WITHIN_PRIVATE_RANGE
+ {"COMPRESSION_ID_NOT_WITHIN_PRIVATE_RANGE", ERR_LIB_SSL, SSL_R_COMPRESSION_ID_NOT_WITHIN_PRIVATE_RANGE},
+ #else
+ {"COMPRESSION_ID_NOT_WITHIN_PRIVATE_RANGE", 20, 307},
+ #endif
+ #ifdef SSL_R_COMPRESSION_LIBRARY_ERROR
+ {"COMPRESSION_LIBRARY_ERROR", ERR_LIB_SSL, SSL_R_COMPRESSION_LIBRARY_ERROR},
+ #else
+ {"COMPRESSION_LIBRARY_ERROR", 20, 142},
+ #endif
+ #ifdef SSL_R_CONNECTION_TYPE_NOT_SET
+ {"CONNECTION_TYPE_NOT_SET", ERR_LIB_SSL, SSL_R_CONNECTION_TYPE_NOT_SET},
+ #else
+ {"CONNECTION_TYPE_NOT_SET", 20, 144},
+ #endif
+ #ifdef SSL_R_CONTEXT_NOT_DANE_ENABLED
+ {"CONTEXT_NOT_DANE_ENABLED", ERR_LIB_SSL, SSL_R_CONTEXT_NOT_DANE_ENABLED},
+ #else
+ {"CONTEXT_NOT_DANE_ENABLED", 20, 167},
+ #endif
+ #ifdef SSL_R_COOKIE_GEN_CALLBACK_FAILURE
+ {"COOKIE_GEN_CALLBACK_FAILURE", ERR_LIB_SSL, SSL_R_COOKIE_GEN_CALLBACK_FAILURE},
+ #else
+ {"COOKIE_GEN_CALLBACK_FAILURE", 20, 400},
+ #endif
+ #ifdef SSL_R_COOKIE_MISMATCH
+ {"COOKIE_MISMATCH", ERR_LIB_SSL, SSL_R_COOKIE_MISMATCH},
+ #else
+ {"COOKIE_MISMATCH", 20, 308},
+ #endif
+ #ifdef SSL_R_COPY_PARAMETERS_FAILED
+ {"COPY_PARAMETERS_FAILED", ERR_LIB_SSL, SSL_R_COPY_PARAMETERS_FAILED},
+ #else
+ {"COPY_PARAMETERS_FAILED", 20, 296},
+ #endif
+ #ifdef SSL_R_CUSTOM_EXT_HANDLER_ALREADY_INSTALLED
+ {"CUSTOM_EXT_HANDLER_ALREADY_INSTALLED", ERR_LIB_SSL, SSL_R_CUSTOM_EXT_HANDLER_ALREADY_INSTALLED},
+ #else
+ {"CUSTOM_EXT_HANDLER_ALREADY_INSTALLED", 20, 206},
+ #endif
+ #ifdef SSL_R_DANE_ALREADY_ENABLED
+ {"DANE_ALREADY_ENABLED", ERR_LIB_SSL, SSL_R_DANE_ALREADY_ENABLED},
+ #else
+ {"DANE_ALREADY_ENABLED", 20, 172},
+ #endif
+ #ifdef SSL_R_DANE_CANNOT_OVERRIDE_MTYPE_FULL
+ {"DANE_CANNOT_OVERRIDE_MTYPE_FULL", ERR_LIB_SSL, SSL_R_DANE_CANNOT_OVERRIDE_MTYPE_FULL},
+ #else
+ {"DANE_CANNOT_OVERRIDE_MTYPE_FULL", 20, 173},
+ #endif
+ #ifdef SSL_R_DANE_NOT_ENABLED
+ {"DANE_NOT_ENABLED", ERR_LIB_SSL, SSL_R_DANE_NOT_ENABLED},
+ #else
+ {"DANE_NOT_ENABLED", 20, 175},
+ #endif
+ #ifdef SSL_R_DANE_TLSA_BAD_CERTIFICATE
+ {"DANE_TLSA_BAD_CERTIFICATE", ERR_LIB_SSL, SSL_R_DANE_TLSA_BAD_CERTIFICATE},
+ #else
+ {"DANE_TLSA_BAD_CERTIFICATE", 20, 180},
+ #endif
+ #ifdef SSL_R_DANE_TLSA_BAD_CERTIFICATE_USAGE
+ {"DANE_TLSA_BAD_CERTIFICATE_USAGE", ERR_LIB_SSL, SSL_R_DANE_TLSA_BAD_CERTIFICATE_USAGE},
+ #else
+ {"DANE_TLSA_BAD_CERTIFICATE_USAGE", 20, 184},
+ #endif
+ #ifdef SSL_R_DANE_TLSA_BAD_DATA_LENGTH
+ {"DANE_TLSA_BAD_DATA_LENGTH", ERR_LIB_SSL, SSL_R_DANE_TLSA_BAD_DATA_LENGTH},
+ #else
+ {"DANE_TLSA_BAD_DATA_LENGTH", 20, 189},
+ #endif
+ #ifdef SSL_R_DANE_TLSA_BAD_DIGEST_LENGTH
+ {"DANE_TLSA_BAD_DIGEST_LENGTH", ERR_LIB_SSL, SSL_R_DANE_TLSA_BAD_DIGEST_LENGTH},
+ #else
+ {"DANE_TLSA_BAD_DIGEST_LENGTH", 20, 192},
+ #endif
+ #ifdef SSL_R_DANE_TLSA_BAD_MATCHING_TYPE
+ {"DANE_TLSA_BAD_MATCHING_TYPE", ERR_LIB_SSL, SSL_R_DANE_TLSA_BAD_MATCHING_TYPE},
+ #else
+ {"DANE_TLSA_BAD_MATCHING_TYPE", 20, 200},
+ #endif
+ #ifdef SSL_R_DANE_TLSA_BAD_PUBLIC_KEY
+ {"DANE_TLSA_BAD_PUBLIC_KEY", ERR_LIB_SSL, SSL_R_DANE_TLSA_BAD_PUBLIC_KEY},
+ #else
+ {"DANE_TLSA_BAD_PUBLIC_KEY", 20, 201},
+ #endif
+ #ifdef SSL_R_DANE_TLSA_BAD_SELECTOR
+ {"DANE_TLSA_BAD_SELECTOR", ERR_LIB_SSL, SSL_R_DANE_TLSA_BAD_SELECTOR},
+ #else
+ {"DANE_TLSA_BAD_SELECTOR", 20, 202},
+ #endif
+ #ifdef SSL_R_DANE_TLSA_NULL_DATA
+ {"DANE_TLSA_NULL_DATA", ERR_LIB_SSL, SSL_R_DANE_TLSA_NULL_DATA},
+ #else
+ {"DANE_TLSA_NULL_DATA", 20, 203},
+ #endif
+ #ifdef SSL_R_DATA_BETWEEN_CCS_AND_FINISHED
+ {"DATA_BETWEEN_CCS_AND_FINISHED", ERR_LIB_SSL, SSL_R_DATA_BETWEEN_CCS_AND_FINISHED},
+ #else
+ {"DATA_BETWEEN_CCS_AND_FINISHED", 20, 145},
+ #endif
+ #ifdef SSL_R_DATA_LENGTH_TOO_LONG
+ {"DATA_LENGTH_TOO_LONG", ERR_LIB_SSL, SSL_R_DATA_LENGTH_TOO_LONG},
+ #else
+ {"DATA_LENGTH_TOO_LONG", 20, 146},
+ #endif
+ #ifdef SSL_R_DECRYPTION_FAILED
+ {"DECRYPTION_FAILED", ERR_LIB_SSL, SSL_R_DECRYPTION_FAILED},
+ #else
+ {"DECRYPTION_FAILED", 20, 147},
+ #endif
+ #ifdef SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC
+ {"DECRYPTION_FAILED_OR_BAD_RECORD_MAC", ERR_LIB_SSL, SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC},
+ #else
+ {"DECRYPTION_FAILED_OR_BAD_RECORD_MAC", 20, 281},
+ #endif
+ #ifdef SSL_R_DH_KEY_TOO_SMALL
+ {"DH_KEY_TOO_SMALL", ERR_LIB_SSL, SSL_R_DH_KEY_TOO_SMALL},
+ #else
+ {"DH_KEY_TOO_SMALL", 20, 394},
+ #endif
+ #ifdef SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG
+ {"DH_PUBLIC_VALUE_LENGTH_IS_WRONG", ERR_LIB_SSL, SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG},
+ #else
+ {"DH_PUBLIC_VALUE_LENGTH_IS_WRONG", 20, 148},
+ #endif
+ #ifdef SSL_R_DIGEST_CHECK_FAILED
+ {"DIGEST_CHECK_FAILED", ERR_LIB_SSL, SSL_R_DIGEST_CHECK_FAILED},
+ #else
+ {"DIGEST_CHECK_FAILED", 20, 149},
+ #endif
+ #ifdef SSL_R_DTLS_MESSAGE_TOO_BIG
+ {"DTLS_MESSAGE_TOO_BIG", ERR_LIB_SSL, SSL_R_DTLS_MESSAGE_TOO_BIG},
+ #else
+ {"DTLS_MESSAGE_TOO_BIG", 20, 334},
+ #endif
+ #ifdef SSL_R_DUPLICATE_COMPRESSION_ID
+ {"DUPLICATE_COMPRESSION_ID", ERR_LIB_SSL, SSL_R_DUPLICATE_COMPRESSION_ID},
+ #else
+ {"DUPLICATE_COMPRESSION_ID", 20, 309},
+ #endif
+ #ifdef SSL_R_ECC_CERT_NOT_FOR_SIGNING
+ {"ECC_CERT_NOT_FOR_SIGNING", ERR_LIB_SSL, SSL_R_ECC_CERT_NOT_FOR_SIGNING},
+ #else
+ {"ECC_CERT_NOT_FOR_SIGNING", 20, 318},
+ #endif
+ #ifdef SSL_R_ECDH_REQUIRED_FOR_SUITEB_MODE
+ {"ECDH_REQUIRED_FOR_SUITEB_MODE", ERR_LIB_SSL, SSL_R_ECDH_REQUIRED_FOR_SUITEB_MODE},
+ #else
+ {"ECDH_REQUIRED_FOR_SUITEB_MODE", 20, 374},
+ #endif
+ #ifdef SSL_R_EE_KEY_TOO_SMALL
+ {"EE_KEY_TOO_SMALL", ERR_LIB_SSL, SSL_R_EE_KEY_TOO_SMALL},
+ #else
+ {"EE_KEY_TOO_SMALL", 20, 399},
+ #endif
+ #ifdef SSL_R_EMPTY_SRTP_PROTECTION_PROFILE_LIST
+ {"EMPTY_SRTP_PROTECTION_PROFILE_LIST", ERR_LIB_SSL, SSL_R_EMPTY_SRTP_PROTECTION_PROFILE_LIST},
+ #else
+ {"EMPTY_SRTP_PROTECTION_PROFILE_LIST", 20, 354},
+ #endif
+ #ifdef SSL_R_ENCRYPTED_LENGTH_TOO_LONG
+ {"ENCRYPTED_LENGTH_TOO_LONG", ERR_LIB_SSL, SSL_R_ENCRYPTED_LENGTH_TOO_LONG},
+ #else
+ {"ENCRYPTED_LENGTH_TOO_LONG", 20, 150},
+ #endif
+ #ifdef SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST
+ {"ERROR_IN_RECEIVED_CIPHER_LIST", ERR_LIB_SSL, SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST},
+ #else
+ {"ERROR_IN_RECEIVED_CIPHER_LIST", 20, 151},
+ #endif
+ #ifdef SSL_R_ERROR_SETTING_TLSA_BASE_DOMAIN
+ {"ERROR_SETTING_TLSA_BASE_DOMAIN", ERR_LIB_SSL, SSL_R_ERROR_SETTING_TLSA_BASE_DOMAIN},
+ #else
+ {"ERROR_SETTING_TLSA_BASE_DOMAIN", 20, 204},
+ #endif
+ #ifdef SSL_R_EXCEEDS_MAX_FRAGMENT_SIZE
+ {"EXCEEDS_MAX_FRAGMENT_SIZE", ERR_LIB_SSL, SSL_R_EXCEEDS_MAX_FRAGMENT_SIZE},
+ #else
+ {"EXCEEDS_MAX_FRAGMENT_SIZE", 20, 194},
+ #endif
+ #ifdef SSL_R_EXCESSIVE_MESSAGE_SIZE
+ {"EXCESSIVE_MESSAGE_SIZE", ERR_LIB_SSL, SSL_R_EXCESSIVE_MESSAGE_SIZE},
+ #else
+ {"EXCESSIVE_MESSAGE_SIZE", 20, 152},
+ #endif
+ #ifdef SSL_R_EXTENSION_NOT_RECEIVED
+ {"EXTENSION_NOT_RECEIVED", ERR_LIB_SSL, SSL_R_EXTENSION_NOT_RECEIVED},
+ #else
+ {"EXTENSION_NOT_RECEIVED", 20, 279},
+ #endif
+ #ifdef SSL_R_EXTRA_DATA_IN_MESSAGE
+ {"EXTRA_DATA_IN_MESSAGE", ERR_LIB_SSL, SSL_R_EXTRA_DATA_IN_MESSAGE},
+ #else
+ {"EXTRA_DATA_IN_MESSAGE", 20, 153},
+ #endif
+ #ifdef SSL_R_EXT_LENGTH_MISMATCH
+ {"EXT_LENGTH_MISMATCH", ERR_LIB_SSL, SSL_R_EXT_LENGTH_MISMATCH},
+ #else
+ {"EXT_LENGTH_MISMATCH", 20, 163},
+ #endif
+ #ifdef SSL_R_FAILED_TO_INIT_ASYNC
+ {"FAILED_TO_INIT_ASYNC", ERR_LIB_SSL, SSL_R_FAILED_TO_INIT_ASYNC},
+ #else
+ {"FAILED_TO_INIT_ASYNC", 20, 405},
+ #endif
+ #ifdef SSL_R_FRAGMENTED_CLIENT_HELLO
+ {"FRAGMENTED_CLIENT_HELLO", ERR_LIB_SSL, SSL_R_FRAGMENTED_CLIENT_HELLO},
+ #else
+ {"FRAGMENTED_CLIENT_HELLO", 20, 401},
+ #endif
+ #ifdef SSL_R_GOT_A_FIN_BEFORE_A_CCS
+ {"GOT_A_FIN_BEFORE_A_CCS", ERR_LIB_SSL, SSL_R_GOT_A_FIN_BEFORE_A_CCS},
+ #else
+ {"GOT_A_FIN_BEFORE_A_CCS", 20, 154},
+ #endif
+ #ifdef SSL_R_HTTPS_PROXY_REQUEST
+ {"HTTPS_PROXY_REQUEST", ERR_LIB_SSL, SSL_R_HTTPS_PROXY_REQUEST},
+ #else
+ {"HTTPS_PROXY_REQUEST", 20, 155},
+ #endif
+ #ifdef SSL_R_HTTP_REQUEST
+ {"HTTP_REQUEST", ERR_LIB_SSL, SSL_R_HTTP_REQUEST},
+ #else
+ {"HTTP_REQUEST", 20, 156},
+ #endif
+ #ifdef SSL_R_ILLEGAL_POINT_COMPRESSION
+ {"ILLEGAL_POINT_COMPRESSION", ERR_LIB_SSL, SSL_R_ILLEGAL_POINT_COMPRESSION},
+ #else
+ {"ILLEGAL_POINT_COMPRESSION", 20, 162},
+ #endif
+ #ifdef SSL_R_ILLEGAL_SUITEB_DIGEST
+ {"ILLEGAL_SUITEB_DIGEST", ERR_LIB_SSL, SSL_R_ILLEGAL_SUITEB_DIGEST},
+ #else
+ {"ILLEGAL_SUITEB_DIGEST", 20, 380},
+ #endif
+ #ifdef SSL_R_INAPPROPRIATE_FALLBACK
+ {"INAPPROPRIATE_FALLBACK", ERR_LIB_SSL, SSL_R_INAPPROPRIATE_FALLBACK},
+ #else
+ {"INAPPROPRIATE_FALLBACK", 20, 373},
+ #endif
+ #ifdef SSL_R_INCONSISTENT_COMPRESSION
+ {"INCONSISTENT_COMPRESSION", ERR_LIB_SSL, SSL_R_INCONSISTENT_COMPRESSION},
+ #else
+ {"INCONSISTENT_COMPRESSION", 20, 340},
+ #endif
+ #ifdef SSL_R_INCONSISTENT_EARLY_DATA_ALPN
+ {"INCONSISTENT_EARLY_DATA_ALPN", ERR_LIB_SSL, SSL_R_INCONSISTENT_EARLY_DATA_ALPN},
+ #else
+ {"INCONSISTENT_EARLY_DATA_ALPN", 20, 222},
+ #endif
+ #ifdef SSL_R_INCONSISTENT_EARLY_DATA_SNI
+ {"INCONSISTENT_EARLY_DATA_SNI", ERR_LIB_SSL, SSL_R_INCONSISTENT_EARLY_DATA_SNI},
+ #else
+ {"INCONSISTENT_EARLY_DATA_SNI", 20, 231},
+ #endif
+ #ifdef SSL_R_INCONSISTENT_EXTMS
+ {"INCONSISTENT_EXTMS", ERR_LIB_SSL, SSL_R_INCONSISTENT_EXTMS},
+ #else
+ {"INCONSISTENT_EXTMS", 20, 104},
+ #endif
+ #ifdef SSL_R_INSUFFICIENT_SECURITY
+ {"INSUFFICIENT_SECURITY", ERR_LIB_SSL, SSL_R_INSUFFICIENT_SECURITY},
+ #else
+ {"INSUFFICIENT_SECURITY", 20, 241},
+ #endif
+ #ifdef SSL_R_INVALID_ALERT
+ {"INVALID_ALERT", ERR_LIB_SSL, SSL_R_INVALID_ALERT},
+ #else
+ {"INVALID_ALERT", 20, 205},
+ #endif
+ #ifdef SSL_R_INVALID_CCS_MESSAGE
+ {"INVALID_CCS_MESSAGE", ERR_LIB_SSL, SSL_R_INVALID_CCS_MESSAGE},
+ #else
+ {"INVALID_CCS_MESSAGE", 20, 260},
+ #endif
+ #ifdef SSL_R_INVALID_CERTIFICATE_OR_ALG
+ {"INVALID_CERTIFICATE_OR_ALG", ERR_LIB_SSL, SSL_R_INVALID_CERTIFICATE_OR_ALG},
+ #else
+ {"INVALID_CERTIFICATE_OR_ALG", 20, 238},
+ #endif
+ #ifdef SSL_R_INVALID_COMMAND
+ {"INVALID_COMMAND", ERR_LIB_SSL, SSL_R_INVALID_COMMAND},
+ #else
+ {"INVALID_COMMAND", 20, 280},
+ #endif
+ #ifdef SSL_R_INVALID_COMPRESSION_ALGORITHM
+ {"INVALID_COMPRESSION_ALGORITHM", ERR_LIB_SSL, SSL_R_INVALID_COMPRESSION_ALGORITHM},
+ #else
+ {"INVALID_COMPRESSION_ALGORITHM", 20, 341},
+ #endif
+ #ifdef SSL_R_INVALID_CONFIG
+ {"INVALID_CONFIG", ERR_LIB_SSL, SSL_R_INVALID_CONFIG},
+ #else
+ {"INVALID_CONFIG", 20, 283},
+ #endif
+ #ifdef SSL_R_INVALID_CONFIGURATION_NAME
+ {"INVALID_CONFIGURATION_NAME", ERR_LIB_SSL, SSL_R_INVALID_CONFIGURATION_NAME},
+ #else
+ {"INVALID_CONFIGURATION_NAME", 20, 113},
+ #endif
+ #ifdef SSL_R_INVALID_CONTEXT
+ {"INVALID_CONTEXT", ERR_LIB_SSL, SSL_R_INVALID_CONTEXT},
+ #else
+ {"INVALID_CONTEXT", 20, 282},
+ #endif
+ #ifdef SSL_R_INVALID_CT_VALIDATION_TYPE
+ {"INVALID_CT_VALIDATION_TYPE", ERR_LIB_SSL, SSL_R_INVALID_CT_VALIDATION_TYPE},
+ #else
+ {"INVALID_CT_VALIDATION_TYPE", 20, 212},
+ #endif
+ #ifdef SSL_R_INVALID_KEY_UPDATE_TYPE
+ {"INVALID_KEY_UPDATE_TYPE", ERR_LIB_SSL, SSL_R_INVALID_KEY_UPDATE_TYPE},
+ #else
+ {"INVALID_KEY_UPDATE_TYPE", 20, 120},
+ #endif
+ #ifdef SSL_R_INVALID_MAX_EARLY_DATA
+ {"INVALID_MAX_EARLY_DATA", ERR_LIB_SSL, SSL_R_INVALID_MAX_EARLY_DATA},
+ #else
+ {"INVALID_MAX_EARLY_DATA", 20, 174},
+ #endif
+ #ifdef SSL_R_INVALID_NULL_CMD_NAME
+ {"INVALID_NULL_CMD_NAME", ERR_LIB_SSL, SSL_R_INVALID_NULL_CMD_NAME},
+ #else
+ {"INVALID_NULL_CMD_NAME", 20, 385},
+ #endif
+ #ifdef SSL_R_INVALID_SEQUENCE_NUMBER
+ {"INVALID_SEQUENCE_NUMBER", ERR_LIB_SSL, SSL_R_INVALID_SEQUENCE_NUMBER},
+ #else
+ {"INVALID_SEQUENCE_NUMBER", 20, 402},
+ #endif
+ #ifdef SSL_R_INVALID_SERVERINFO_DATA
+ {"INVALID_SERVERINFO_DATA", ERR_LIB_SSL, SSL_R_INVALID_SERVERINFO_DATA},
+ #else
+ {"INVALID_SERVERINFO_DATA", 20, 388},
+ #endif
+ #ifdef SSL_R_INVALID_SESSION_ID
+ {"INVALID_SESSION_ID", ERR_LIB_SSL, SSL_R_INVALID_SESSION_ID},
+ #else
+ {"INVALID_SESSION_ID", 20, 999},
+ #endif
+ #ifdef SSL_R_INVALID_SRP_USERNAME
+ {"INVALID_SRP_USERNAME", ERR_LIB_SSL, SSL_R_INVALID_SRP_USERNAME},
+ #else
+ {"INVALID_SRP_USERNAME", 20, 357},
+ #endif
+ #ifdef SSL_R_INVALID_STATUS_RESPONSE
+ {"INVALID_STATUS_RESPONSE", ERR_LIB_SSL, SSL_R_INVALID_STATUS_RESPONSE},
+ #else
+ {"INVALID_STATUS_RESPONSE", 20, 328},
+ #endif
+ #ifdef SSL_R_INVALID_TICKET_KEYS_LENGTH
+ {"INVALID_TICKET_KEYS_LENGTH", ERR_LIB_SSL, SSL_R_INVALID_TICKET_KEYS_LENGTH},
+ #else
+ {"INVALID_TICKET_KEYS_LENGTH", 20, 325},
+ #endif
+ #ifdef SSL_R_LEGACY_SIGALG_DISALLOWED_OR_UNSUPPORTED
+ {"LEGACY_SIGALG_DISALLOWED_OR_UNSUPPORTED", ERR_LIB_SSL, SSL_R_LEGACY_SIGALG_DISALLOWED_OR_UNSUPPORTED},
+ #else
+ {"LEGACY_SIGALG_DISALLOWED_OR_UNSUPPORTED", 20, 333},
+ #endif
+ #ifdef SSL_R_LENGTH_MISMATCH
+ {"LENGTH_MISMATCH", ERR_LIB_SSL, SSL_R_LENGTH_MISMATCH},
+ #else
+ {"LENGTH_MISMATCH", 20, 159},
+ #endif
+ #ifdef SSL_R_LENGTH_TOO_LONG
+ {"LENGTH_TOO_LONG", ERR_LIB_SSL, SSL_R_LENGTH_TOO_LONG},
+ #else
+ {"LENGTH_TOO_LONG", 20, 404},
+ #endif
+ #ifdef SSL_R_LENGTH_TOO_SHORT
+ {"LENGTH_TOO_SHORT", ERR_LIB_SSL, SSL_R_LENGTH_TOO_SHORT},
+ #else
+ {"LENGTH_TOO_SHORT", 20, 160},
+ #endif
+ #ifdef SSL_R_LIBRARY_BUG
+ {"LIBRARY_BUG", ERR_LIB_SSL, SSL_R_LIBRARY_BUG},
+ #else
+ {"LIBRARY_BUG", 20, 274},
+ #endif
+ #ifdef SSL_R_LIBRARY_HAS_NO_CIPHERS
+ {"LIBRARY_HAS_NO_CIPHERS", ERR_LIB_SSL, SSL_R_LIBRARY_HAS_NO_CIPHERS},
+ #else
+ {"LIBRARY_HAS_NO_CIPHERS", 20, 161},
+ #endif
+ #ifdef SSL_R_MISSING_DSA_SIGNING_CERT
+ {"MISSING_DSA_SIGNING_CERT", ERR_LIB_SSL, SSL_R_MISSING_DSA_SIGNING_CERT},
+ #else
+ {"MISSING_DSA_SIGNING_CERT", 20, 165},
+ #endif
+ #ifdef SSL_R_MISSING_ECDSA_SIGNING_CERT
+ {"MISSING_ECDSA_SIGNING_CERT", ERR_LIB_SSL, SSL_R_MISSING_ECDSA_SIGNING_CERT},
+ #else
+ {"MISSING_ECDSA_SIGNING_CERT", 20, 381},
+ #endif
+ #ifdef SSL_R_MISSING_FATAL
+ {"MISSING_FATAL", ERR_LIB_SSL, SSL_R_MISSING_FATAL},
+ #else
+ {"MISSING_FATAL", 20, 256},
+ #endif
+ #ifdef SSL_R_MISSING_PARAMETERS
+ {"MISSING_PARAMETERS", ERR_LIB_SSL, SSL_R_MISSING_PARAMETERS},
+ #else
+ {"MISSING_PARAMETERS", 20, 290},
+ #endif
+ #ifdef SSL_R_MISSING_PSK_KEX_MODES_EXTENSION
+ {"MISSING_PSK_KEX_MODES_EXTENSION", ERR_LIB_SSL, SSL_R_MISSING_PSK_KEX_MODES_EXTENSION},
+ #else
+ {"MISSING_PSK_KEX_MODES_EXTENSION", 20, 310},
+ #endif
+ #ifdef SSL_R_MISSING_RSA_CERTIFICATE
+ {"MISSING_RSA_CERTIFICATE", ERR_LIB_SSL, SSL_R_MISSING_RSA_CERTIFICATE},
+ #else
+ {"MISSING_RSA_CERTIFICATE", 20, 168},
+ #endif
+ #ifdef SSL_R_MISSING_RSA_ENCRYPTING_CERT
+ {"MISSING_RSA_ENCRYPTING_CERT", ERR_LIB_SSL, SSL_R_MISSING_RSA_ENCRYPTING_CERT},
+ #else
+ {"MISSING_RSA_ENCRYPTING_CERT", 20, 169},
+ #endif
+ #ifdef SSL_R_MISSING_RSA_SIGNING_CERT
+ {"MISSING_RSA_SIGNING_CERT", ERR_LIB_SSL, SSL_R_MISSING_RSA_SIGNING_CERT},
+ #else
+ {"MISSING_RSA_SIGNING_CERT", 20, 170},
+ #endif
+ #ifdef SSL_R_MISSING_SIGALGS_EXTENSION
+ {"MISSING_SIGALGS_EXTENSION", ERR_LIB_SSL, SSL_R_MISSING_SIGALGS_EXTENSION},
+ #else
+ {"MISSING_SIGALGS_EXTENSION", 20, 112},
+ #endif
+ #ifdef SSL_R_MISSING_SIGNING_CERT
+ {"MISSING_SIGNING_CERT", ERR_LIB_SSL, SSL_R_MISSING_SIGNING_CERT},
+ #else
+ {"MISSING_SIGNING_CERT", 20, 221},
+ #endif
+ #ifdef SSL_R_MISSING_SRP_PARAM
+ {"MISSING_SRP_PARAM", ERR_LIB_SSL, SSL_R_MISSING_SRP_PARAM},
+ #else
+ {"MISSING_SRP_PARAM", 20, 358},
+ #endif
+ #ifdef SSL_R_MISSING_SUPPORTED_GROUPS_EXTENSION
+ {"MISSING_SUPPORTED_GROUPS_EXTENSION", ERR_LIB_SSL, SSL_R_MISSING_SUPPORTED_GROUPS_EXTENSION},
+ #else
+ {"MISSING_SUPPORTED_GROUPS_EXTENSION", 20, 209},
+ #endif
+ #ifdef SSL_R_MISSING_TMP_DH_KEY
+ {"MISSING_TMP_DH_KEY", ERR_LIB_SSL, SSL_R_MISSING_TMP_DH_KEY},
+ #else
+ {"MISSING_TMP_DH_KEY", 20, 171},
+ #endif
+ #ifdef SSL_R_MISSING_TMP_ECDH_KEY
+ {"MISSING_TMP_ECDH_KEY", ERR_LIB_SSL, SSL_R_MISSING_TMP_ECDH_KEY},
+ #else
+ {"MISSING_TMP_ECDH_KEY", 20, 311},
+ #endif
+ #ifdef SSL_R_MIXED_HANDSHAKE_AND_NON_HANDSHAKE_DATA
+ {"MIXED_HANDSHAKE_AND_NON_HANDSHAKE_DATA", ERR_LIB_SSL, SSL_R_MIXED_HANDSHAKE_AND_NON_HANDSHAKE_DATA},
+ #else
+ {"MIXED_HANDSHAKE_AND_NON_HANDSHAKE_DATA", 20, 293},
+ #endif
+ #ifdef SSL_R_NOT_ON_RECORD_BOUNDARY
+ {"NOT_ON_RECORD_BOUNDARY", ERR_LIB_SSL, SSL_R_NOT_ON_RECORD_BOUNDARY},
+ #else
+ {"NOT_ON_RECORD_BOUNDARY", 20, 182},
+ #endif
+ #ifdef SSL_R_NOT_REPLACING_CERTIFICATE
+ {"NOT_REPLACING_CERTIFICATE", ERR_LIB_SSL, SSL_R_NOT_REPLACING_CERTIFICATE},
+ #else
+ {"NOT_REPLACING_CERTIFICATE", 20, 289},
+ #endif
+ #ifdef SSL_R_NOT_SERVER
+ {"NOT_SERVER", ERR_LIB_SSL, SSL_R_NOT_SERVER},
+ #else
+ {"NOT_SERVER", 20, 284},
+ #endif
+ #ifdef SSL_R_NO_APPLICATION_PROTOCOL
+ {"NO_APPLICATION_PROTOCOL", ERR_LIB_SSL, SSL_R_NO_APPLICATION_PROTOCOL},
+ #else
+ {"NO_APPLICATION_PROTOCOL", 20, 235},
+ #endif
+ #ifdef SSL_R_NO_CERTIFICATES_RETURNED
+ {"NO_CERTIFICATES_RETURNED", ERR_LIB_SSL, SSL_R_NO_CERTIFICATES_RETURNED},
+ #else
+ {"NO_CERTIFICATES_RETURNED", 20, 176},
+ #endif
+ #ifdef SSL_R_NO_CERTIFICATE_ASSIGNED
+ {"NO_CERTIFICATE_ASSIGNED", ERR_LIB_SSL, SSL_R_NO_CERTIFICATE_ASSIGNED},
+ #else
+ {"NO_CERTIFICATE_ASSIGNED", 20, 177},
+ #endif
+ #ifdef SSL_R_NO_CERTIFICATE_SET
+ {"NO_CERTIFICATE_SET", ERR_LIB_SSL, SSL_R_NO_CERTIFICATE_SET},
+ #else
+ {"NO_CERTIFICATE_SET", 20, 179},
+ #endif
+ #ifdef SSL_R_NO_CHANGE_FOLLOWING_HRR
+ {"NO_CHANGE_FOLLOWING_HRR", ERR_LIB_SSL, SSL_R_NO_CHANGE_FOLLOWING_HRR},
+ #else
+ {"NO_CHANGE_FOLLOWING_HRR", 20, 214},
+ #endif
+ #ifdef SSL_R_NO_CIPHERS_AVAILABLE
+ {"NO_CIPHERS_AVAILABLE", ERR_LIB_SSL, SSL_R_NO_CIPHERS_AVAILABLE},
+ #else
+ {"NO_CIPHERS_AVAILABLE", 20, 181},
+ #endif
+ #ifdef SSL_R_NO_CIPHERS_SPECIFIED
+ {"NO_CIPHERS_SPECIFIED", ERR_LIB_SSL, SSL_R_NO_CIPHERS_SPECIFIED},
+ #else
+ {"NO_CIPHERS_SPECIFIED", 20, 183},
+ #endif
+ #ifdef SSL_R_NO_CIPHER_MATCH
+ {"NO_CIPHER_MATCH", ERR_LIB_SSL, SSL_R_NO_CIPHER_MATCH},
+ #else
+ {"NO_CIPHER_MATCH", 20, 185},
+ #endif
+ #ifdef SSL_R_NO_CLIENT_CERT_METHOD
+ {"NO_CLIENT_CERT_METHOD", ERR_LIB_SSL, SSL_R_NO_CLIENT_CERT_METHOD},
+ #else
+ {"NO_CLIENT_CERT_METHOD", 20, 331},
+ #endif
+ #ifdef SSL_R_NO_COMPRESSION_SPECIFIED
+ {"NO_COMPRESSION_SPECIFIED", ERR_LIB_SSL, SSL_R_NO_COMPRESSION_SPECIFIED},
+ #else
+ {"NO_COMPRESSION_SPECIFIED", 20, 187},
+ #endif
+ #ifdef SSL_R_NO_COOKIE_CALLBACK_SET
+ {"NO_COOKIE_CALLBACK_SET", ERR_LIB_SSL, SSL_R_NO_COOKIE_CALLBACK_SET},
+ #else
+ {"NO_COOKIE_CALLBACK_SET", 20, 287},
+ #endif
+ #ifdef SSL_R_NO_GOST_CERTIFICATE_SENT_BY_PEER
+ {"NO_GOST_CERTIFICATE_SENT_BY_PEER", ERR_LIB_SSL, SSL_R_NO_GOST_CERTIFICATE_SENT_BY_PEER},
+ #else
+ {"NO_GOST_CERTIFICATE_SENT_BY_PEER", 20, 330},
+ #endif
+ #ifdef SSL_R_NO_METHOD_SPECIFIED
+ {"NO_METHOD_SPECIFIED", ERR_LIB_SSL, SSL_R_NO_METHOD_SPECIFIED},
+ #else
+ {"NO_METHOD_SPECIFIED", 20, 188},
+ #endif
+ #ifdef SSL_R_NO_PEM_EXTENSIONS
+ {"NO_PEM_EXTENSIONS", ERR_LIB_SSL, SSL_R_NO_PEM_EXTENSIONS},
+ #else
+ {"NO_PEM_EXTENSIONS", 20, 389},
+ #endif
+ #ifdef SSL_R_NO_PRIVATE_KEY_ASSIGNED
+ {"NO_PRIVATE_KEY_ASSIGNED", ERR_LIB_SSL, SSL_R_NO_PRIVATE_KEY_ASSIGNED},
+ #else
+ {"NO_PRIVATE_KEY_ASSIGNED", 20, 190},
+ #endif
+ #ifdef SSL_R_NO_PROTOCOLS_AVAILABLE
+ {"NO_PROTOCOLS_AVAILABLE", ERR_LIB_SSL, SSL_R_NO_PROTOCOLS_AVAILABLE},
+ #else
+ {"NO_PROTOCOLS_AVAILABLE", 20, 191},
+ #endif
+ #ifdef SSL_R_NO_RENEGOTIATION
+ {"NO_RENEGOTIATION", ERR_LIB_SSL, SSL_R_NO_RENEGOTIATION},
+ #else
+ {"NO_RENEGOTIATION", 20, 339},
+ #endif
+ #ifdef SSL_R_NO_REQUIRED_DIGEST
+ {"NO_REQUIRED_DIGEST", ERR_LIB_SSL, SSL_R_NO_REQUIRED_DIGEST},
+ #else
+ {"NO_REQUIRED_DIGEST", 20, 324},
+ #endif
+ #ifdef SSL_R_NO_SHARED_CIPHER
+ {"NO_SHARED_CIPHER", ERR_LIB_SSL, SSL_R_NO_SHARED_CIPHER},
+ #else
+ {"NO_SHARED_CIPHER", 20, 193},
+ #endif
+ #ifdef SSL_R_NO_SHARED_GROUPS
+ {"NO_SHARED_GROUPS", ERR_LIB_SSL, SSL_R_NO_SHARED_GROUPS},
+ #else
+ {"NO_SHARED_GROUPS", 20, 410},
+ #endif
+ #ifdef SSL_R_NO_SHARED_SIGNATURE_ALGORITHMS
+ {"NO_SHARED_SIGNATURE_ALGORITHMS", ERR_LIB_SSL, SSL_R_NO_SHARED_SIGNATURE_ALGORITHMS},
+ #else
+ {"NO_SHARED_SIGNATURE_ALGORITHMS", 20, 376},
+ #endif
+ #ifdef SSL_R_NO_SRTP_PROFILES
+ {"NO_SRTP_PROFILES", ERR_LIB_SSL, SSL_R_NO_SRTP_PROFILES},
+ #else
+ {"NO_SRTP_PROFILES", 20, 359},
+ #endif
+ #ifdef SSL_R_NO_SUITABLE_DIGEST_ALGORITHM
+ {"NO_SUITABLE_DIGEST_ALGORITHM", ERR_LIB_SSL, SSL_R_NO_SUITABLE_DIGEST_ALGORITHM},
+ #else
+ {"NO_SUITABLE_DIGEST_ALGORITHM", 20, 297},
+ #endif
+ #ifdef SSL_R_NO_SUITABLE_GROUPS
+ {"NO_SUITABLE_GROUPS", ERR_LIB_SSL, SSL_R_NO_SUITABLE_GROUPS},
+ #else
+ {"NO_SUITABLE_GROUPS", 20, 295},
+ #endif
+ #ifdef SSL_R_NO_SUITABLE_KEY_SHARE
+ {"NO_SUITABLE_KEY_SHARE", ERR_LIB_SSL, SSL_R_NO_SUITABLE_KEY_SHARE},
+ #else
+ {"NO_SUITABLE_KEY_SHARE", 20, 101},
+ #endif
+ #ifdef SSL_R_NO_SUITABLE_SIGNATURE_ALGORITHM
+ {"NO_SUITABLE_SIGNATURE_ALGORITHM", ERR_LIB_SSL, SSL_R_NO_SUITABLE_SIGNATURE_ALGORITHM},
+ #else
+ {"NO_SUITABLE_SIGNATURE_ALGORITHM", 20, 118},
+ #endif
+ #ifdef SSL_R_NO_VALID_SCTS
+ {"NO_VALID_SCTS", ERR_LIB_SSL, SSL_R_NO_VALID_SCTS},
+ #else
+ {"NO_VALID_SCTS", 20, 216},
+ #endif
+ #ifdef SSL_R_NO_VERIFY_COOKIE_CALLBACK
+ {"NO_VERIFY_COOKIE_CALLBACK", ERR_LIB_SSL, SSL_R_NO_VERIFY_COOKIE_CALLBACK},
+ #else
+ {"NO_VERIFY_COOKIE_CALLBACK", 20, 403},
+ #endif
+ #ifdef SSL_R_NULL_SSL_CTX
+ {"NULL_SSL_CTX", ERR_LIB_SSL, SSL_R_NULL_SSL_CTX},
+ #else
+ {"NULL_SSL_CTX", 20, 195},
+ #endif
+ #ifdef SSL_R_NULL_SSL_METHOD_PASSED
+ {"NULL_SSL_METHOD_PASSED", ERR_LIB_SSL, SSL_R_NULL_SSL_METHOD_PASSED},
+ #else
+ {"NULL_SSL_METHOD_PASSED", 20, 196},
+ #endif
+ #ifdef SSL_R_OCSP_CALLBACK_FAILURE
+ {"OCSP_CALLBACK_FAILURE", ERR_LIB_SSL, SSL_R_OCSP_CALLBACK_FAILURE},
+ #else
+ {"OCSP_CALLBACK_FAILURE", 20, 305},
+ #endif
+ #ifdef SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED
+ {"OLD_SESSION_CIPHER_NOT_RETURNED", ERR_LIB_SSL, SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED},
+ #else
+ {"OLD_SESSION_CIPHER_NOT_RETURNED", 20, 197},
+ #endif
+ #ifdef SSL_R_OLD_SESSION_COMPRESSION_ALGORITHM_NOT_RETURNED
+ {"OLD_SESSION_COMPRESSION_ALGORITHM_NOT_RETURNED", ERR_LIB_SSL, SSL_R_OLD_SESSION_COMPRESSION_ALGORITHM_NOT_RETURNED},
+ #else
+ {"OLD_SESSION_COMPRESSION_ALGORITHM_NOT_RETURNED", 20, 344},
+ #endif
+ #ifdef SSL_R_OVERFLOW_ERROR
+ {"OVERFLOW_ERROR", ERR_LIB_SSL, SSL_R_OVERFLOW_ERROR},
+ #else
+ {"OVERFLOW_ERROR", 20, 237},
+ #endif
+ #ifdef SSL_R_PACKET_LENGTH_TOO_LONG
+ {"PACKET_LENGTH_TOO_LONG", ERR_LIB_SSL, SSL_R_PACKET_LENGTH_TOO_LONG},
+ #else
+ {"PACKET_LENGTH_TOO_LONG", 20, 198},
+ #endif
+ #ifdef SSL_R_PARSE_TLSEXT
+ {"PARSE_TLSEXT", ERR_LIB_SSL, SSL_R_PARSE_TLSEXT},
+ #else
+ {"PARSE_TLSEXT", 20, 227},
+ #endif
+ #ifdef SSL_R_PATH_TOO_LONG
+ {"PATH_TOO_LONG", ERR_LIB_SSL, SSL_R_PATH_TOO_LONG},
+ #else
+ {"PATH_TOO_LONG", 20, 270},
+ #endif
+ #ifdef SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE
+ {"PEER_DID_NOT_RETURN_A_CERTIFICATE", ERR_LIB_SSL, SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE},
+ #else
+ {"PEER_DID_NOT_RETURN_A_CERTIFICATE", 20, 199},
+ #endif
+ #ifdef SSL_R_PEM_NAME_BAD_PREFIX
+ {"PEM_NAME_BAD_PREFIX", ERR_LIB_SSL, SSL_R_PEM_NAME_BAD_PREFIX},
+ #else
+ {"PEM_NAME_BAD_PREFIX", 20, 391},
+ #endif
+ #ifdef SSL_R_PEM_NAME_TOO_SHORT
+ {"PEM_NAME_TOO_SHORT", ERR_LIB_SSL, SSL_R_PEM_NAME_TOO_SHORT},
+ #else
+ {"PEM_NAME_TOO_SHORT", 20, 392},
+ #endif
+ #ifdef SSL_R_PIPELINE_FAILURE
+ {"PIPELINE_FAILURE", ERR_LIB_SSL, SSL_R_PIPELINE_FAILURE},
+ #else
+ {"PIPELINE_FAILURE", 20, 406},
+ #endif
+ #ifdef SSL_R_POST_HANDSHAKE_AUTH_ENCODING_ERR
+ {"POST_HANDSHAKE_AUTH_ENCODING_ERR", ERR_LIB_SSL, SSL_R_POST_HANDSHAKE_AUTH_ENCODING_ERR},
+ #else
+ {"POST_HANDSHAKE_AUTH_ENCODING_ERR", 20, 278},
+ #endif
+ #ifdef SSL_R_PRIVATE_KEY_MISMATCH
+ {"PRIVATE_KEY_MISMATCH", ERR_LIB_SSL, SSL_R_PRIVATE_KEY_MISMATCH},
+ #else
+ {"PRIVATE_KEY_MISMATCH", 20, 288},
+ #endif
+ #ifdef SSL_R_PROTOCOL_IS_SHUTDOWN
+ {"PROTOCOL_IS_SHUTDOWN", ERR_LIB_SSL, SSL_R_PROTOCOL_IS_SHUTDOWN},
+ #else
+ {"PROTOCOL_IS_SHUTDOWN", 20, 207},
+ #endif
+ #ifdef SSL_R_PSK_IDENTITY_NOT_FOUND
+ {"PSK_IDENTITY_NOT_FOUND", ERR_LIB_SSL, SSL_R_PSK_IDENTITY_NOT_FOUND},
+ #else
+ {"PSK_IDENTITY_NOT_FOUND", 20, 223},
+ #endif
+ #ifdef SSL_R_PSK_NO_CLIENT_CB
+ {"PSK_NO_CLIENT_CB", ERR_LIB_SSL, SSL_R_PSK_NO_CLIENT_CB},
+ #else
+ {"PSK_NO_CLIENT_CB", 20, 224},
+ #endif
+ #ifdef SSL_R_PSK_NO_SERVER_CB
+ {"PSK_NO_SERVER_CB", ERR_LIB_SSL, SSL_R_PSK_NO_SERVER_CB},
+ #else
+ {"PSK_NO_SERVER_CB", 20, 225},
+ #endif
+ #ifdef SSL_R_READ_BIO_NOT_SET
+ {"READ_BIO_NOT_SET", ERR_LIB_SSL, SSL_R_READ_BIO_NOT_SET},
+ #else
+ {"READ_BIO_NOT_SET", 20, 211},
+ #endif
+ #ifdef SSL_R_READ_TIMEOUT_EXPIRED
+ {"READ_TIMEOUT_EXPIRED", ERR_LIB_SSL, SSL_R_READ_TIMEOUT_EXPIRED},
+ #else
+ {"READ_TIMEOUT_EXPIRED", 20, 312},
+ #endif
+ #ifdef SSL_R_RECORD_LENGTH_MISMATCH
+ {"RECORD_LENGTH_MISMATCH", ERR_LIB_SSL, SSL_R_RECORD_LENGTH_MISMATCH},
+ #else
+ {"RECORD_LENGTH_MISMATCH", 20, 213},
+ #endif
+ #ifdef SSL_R_RECORD_TOO_SMALL
+ {"RECORD_TOO_SMALL", ERR_LIB_SSL, SSL_R_RECORD_TOO_SMALL},
+ #else
+ {"RECORD_TOO_SMALL", 20, 298},
+ #endif
+ #ifdef SSL_R_RENEGOTIATE_EXT_TOO_LONG
+ {"RENEGOTIATE_EXT_TOO_LONG", ERR_LIB_SSL, SSL_R_RENEGOTIATE_EXT_TOO_LONG},
+ #else
+ {"RENEGOTIATE_EXT_TOO_LONG", 20, 335},
+ #endif
+ #ifdef SSL_R_RENEGOTIATION_ENCODING_ERR
+ {"RENEGOTIATION_ENCODING_ERR", ERR_LIB_SSL, SSL_R_RENEGOTIATION_ENCODING_ERR},
+ #else
+ {"RENEGOTIATION_ENCODING_ERR", 20, 336},
+ #endif
+ #ifdef SSL_R_RENEGOTIATION_MISMATCH
+ {"RENEGOTIATION_MISMATCH", ERR_LIB_SSL, SSL_R_RENEGOTIATION_MISMATCH},
+ #else
+ {"RENEGOTIATION_MISMATCH", 20, 337},
+ #endif
+ #ifdef SSL_R_REQUEST_PENDING
+ {"REQUEST_PENDING", ERR_LIB_SSL, SSL_R_REQUEST_PENDING},
+ #else
+ {"REQUEST_PENDING", 20, 285},
+ #endif
+ #ifdef SSL_R_REQUEST_SENT
+ {"REQUEST_SENT", ERR_LIB_SSL, SSL_R_REQUEST_SENT},
+ #else
+ {"REQUEST_SENT", 20, 286},
+ #endif
+ #ifdef SSL_R_REQUIRED_CIPHER_MISSING
+ {"REQUIRED_CIPHER_MISSING", ERR_LIB_SSL, SSL_R_REQUIRED_CIPHER_MISSING},
+ #else
+ {"REQUIRED_CIPHER_MISSING", 20, 215},
+ #endif
+ #ifdef SSL_R_REQUIRED_COMPRESSION_ALGORITHM_MISSING
+ {"REQUIRED_COMPRESSION_ALGORITHM_MISSING", ERR_LIB_SSL, SSL_R_REQUIRED_COMPRESSION_ALGORITHM_MISSING},
+ #else
+ {"REQUIRED_COMPRESSION_ALGORITHM_MISSING", 20, 342},
+ #endif
+ #ifdef SSL_R_SCSV_RECEIVED_WHEN_RENEGOTIATING
+ {"SCSV_RECEIVED_WHEN_RENEGOTIATING", ERR_LIB_SSL, SSL_R_SCSV_RECEIVED_WHEN_RENEGOTIATING},
+ #else
+ {"SCSV_RECEIVED_WHEN_RENEGOTIATING", 20, 345},
+ #endif
+ #ifdef SSL_R_SCT_VERIFICATION_FAILED
+ {"SCT_VERIFICATION_FAILED", ERR_LIB_SSL, SSL_R_SCT_VERIFICATION_FAILED},
+ #else
+ {"SCT_VERIFICATION_FAILED", 20, 208},
+ #endif
+ #ifdef SSL_R_SERVERHELLO_TLSEXT
+ {"SERVERHELLO_TLSEXT", ERR_LIB_SSL, SSL_R_SERVERHELLO_TLSEXT},
+ #else
+ {"SERVERHELLO_TLSEXT", 20, 275},
+ #endif
+ #ifdef SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED
+ {"SESSION_ID_CONTEXT_UNINITIALIZED", ERR_LIB_SSL, SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED},
+ #else
+ {"SESSION_ID_CONTEXT_UNINITIALIZED", 20, 277},
+ #endif
+ #ifdef SSL_R_SHUTDOWN_WHILE_IN_INIT
+ {"SHUTDOWN_WHILE_IN_INIT", ERR_LIB_SSL, SSL_R_SHUTDOWN_WHILE_IN_INIT},
+ #else
+ {"SHUTDOWN_WHILE_IN_INIT", 20, 407},
+ #endif
+ #ifdef SSL_R_SIGNATURE_ALGORITHMS_ERROR
+ {"SIGNATURE_ALGORITHMS_ERROR", ERR_LIB_SSL, SSL_R_SIGNATURE_ALGORITHMS_ERROR},
+ #else
+ {"SIGNATURE_ALGORITHMS_ERROR", 20, 360},
+ #endif
+ #ifdef SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE
+ {"SIGNATURE_FOR_NON_SIGNING_CERTIFICATE", ERR_LIB_SSL, SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE},
+ #else
+ {"SIGNATURE_FOR_NON_SIGNING_CERTIFICATE", 20, 220},
+ #endif
+ #ifdef SSL_R_SRP_A_CALC
+ {"SRP_A_CALC", ERR_LIB_SSL, SSL_R_SRP_A_CALC},
+ #else
+ {"SRP_A_CALC", 20, 361},
+ #endif
+ #ifdef SSL_R_SRTP_COULD_NOT_ALLOCATE_PROFILES
+ {"SRTP_COULD_NOT_ALLOCATE_PROFILES", ERR_LIB_SSL, SSL_R_SRTP_COULD_NOT_ALLOCATE_PROFILES},
+ #else
+ {"SRTP_COULD_NOT_ALLOCATE_PROFILES", 20, 362},
+ #endif
+ #ifdef SSL_R_SRTP_PROTECTION_PROFILE_LIST_TOO_LONG
+ {"SRTP_PROTECTION_PROFILE_LIST_TOO_LONG", ERR_LIB_SSL, SSL_R_SRTP_PROTECTION_PROFILE_LIST_TOO_LONG},
+ #else
+ {"SRTP_PROTECTION_PROFILE_LIST_TOO_LONG", 20, 363},
+ #endif
+ #ifdef SSL_R_SRTP_UNKNOWN_PROTECTION_PROFILE
+ {"SRTP_UNKNOWN_PROTECTION_PROFILE", ERR_LIB_SSL, SSL_R_SRTP_UNKNOWN_PROTECTION_PROFILE},
+ #else
+ {"SRTP_UNKNOWN_PROTECTION_PROFILE", 20, 364},
+ #endif
+ #ifdef SSL_R_SSL3_EXT_INVALID_MAX_FRAGMENT_LENGTH
+ {"SSL3_EXT_INVALID_MAX_FRAGMENT_LENGTH", ERR_LIB_SSL, SSL_R_SSL3_EXT_INVALID_MAX_FRAGMENT_LENGTH},
+ #else
+ {"SSL3_EXT_INVALID_MAX_FRAGMENT_LENGTH", 20, 232},
+ #endif
+ #ifdef SSL_R_SSL3_EXT_INVALID_SERVERNAME
+ {"SSL3_EXT_INVALID_SERVERNAME", ERR_LIB_SSL, SSL_R_SSL3_EXT_INVALID_SERVERNAME},
+ #else
+ {"SSL3_EXT_INVALID_SERVERNAME", 20, 319},
+ #endif
+ #ifdef SSL_R_SSL3_EXT_INVALID_SERVERNAME_TYPE
+ {"SSL3_EXT_INVALID_SERVERNAME_TYPE", ERR_LIB_SSL, SSL_R_SSL3_EXT_INVALID_SERVERNAME_TYPE},
+ #else
+ {"SSL3_EXT_INVALID_SERVERNAME_TYPE", 20, 320},
+ #endif
+ #ifdef SSL_R_SSL3_SESSION_ID_TOO_LONG
+ {"SSL3_SESSION_ID_TOO_LONG", ERR_LIB_SSL, SSL_R_SSL3_SESSION_ID_TOO_LONG},
+ #else
+ {"SSL3_SESSION_ID_TOO_LONG", 20, 300},
+ #endif
+ #ifdef SSL_R_SSLV3_ALERT_BAD_CERTIFICATE
+ {"SSLV3_ALERT_BAD_CERTIFICATE", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_BAD_CERTIFICATE},
+ #else
+ {"SSLV3_ALERT_BAD_CERTIFICATE", 20, 1042},
+ #endif
+ #ifdef SSL_R_SSLV3_ALERT_BAD_RECORD_MAC
+ {"SSLV3_ALERT_BAD_RECORD_MAC", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_BAD_RECORD_MAC},
+ #else
+ {"SSLV3_ALERT_BAD_RECORD_MAC", 20, 1020},
+ #endif
+ #ifdef SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED
+ {"SSLV3_ALERT_CERTIFICATE_EXPIRED", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED},
+ #else
+ {"SSLV3_ALERT_CERTIFICATE_EXPIRED", 20, 1045},
+ #endif
+ #ifdef SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED
+ {"SSLV3_ALERT_CERTIFICATE_REVOKED", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED},
+ #else
+ {"SSLV3_ALERT_CERTIFICATE_REVOKED", 20, 1044},
+ #endif
+ #ifdef SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN
+ {"SSLV3_ALERT_CERTIFICATE_UNKNOWN", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN},
+ #else
+ {"SSLV3_ALERT_CERTIFICATE_UNKNOWN", 20, 1046},
+ #endif
+ #ifdef SSL_R_SSLV3_ALERT_DECOMPRESSION_FAILURE
+ {"SSLV3_ALERT_DECOMPRESSION_FAILURE", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_DECOMPRESSION_FAILURE},
+ #else
+ {"SSLV3_ALERT_DECOMPRESSION_FAILURE", 20, 1030},
+ #endif
+ #ifdef SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE
+ {"SSLV3_ALERT_HANDSHAKE_FAILURE", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE},
+ #else
+ {"SSLV3_ALERT_HANDSHAKE_FAILURE", 20, 1040},
+ #endif
+ #ifdef SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER
+ {"SSLV3_ALERT_ILLEGAL_PARAMETER", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER},
+ #else
+ {"SSLV3_ALERT_ILLEGAL_PARAMETER", 20, 1047},
+ #endif
+ #ifdef SSL_R_SSLV3_ALERT_NO_CERTIFICATE
+ {"SSLV3_ALERT_NO_CERTIFICATE", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_NO_CERTIFICATE},
+ #else
+ {"SSLV3_ALERT_NO_CERTIFICATE", 20, 1041},
+ #endif
+ #ifdef SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE
+ {"SSLV3_ALERT_UNEXPECTED_MESSAGE", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE},
+ #else
+ {"SSLV3_ALERT_UNEXPECTED_MESSAGE", 20, 1010},
+ #endif
+ #ifdef SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE
+ {"SSLV3_ALERT_UNSUPPORTED_CERTIFICATE", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE},
+ #else
+ {"SSLV3_ALERT_UNSUPPORTED_CERTIFICATE", 20, 1043},
+ #endif
+ #ifdef SSL_R_SSL_COMMAND_SECTION_EMPTY
+ {"SSL_COMMAND_SECTION_EMPTY", ERR_LIB_SSL, SSL_R_SSL_COMMAND_SECTION_EMPTY},
+ #else
+ {"SSL_COMMAND_SECTION_EMPTY", 20, 117},
+ #endif
+ #ifdef SSL_R_SSL_COMMAND_SECTION_NOT_FOUND
+ {"SSL_COMMAND_SECTION_NOT_FOUND", ERR_LIB_SSL, SSL_R_SSL_COMMAND_SECTION_NOT_FOUND},
+ #else
+ {"SSL_COMMAND_SECTION_NOT_FOUND", 20, 125},
+ #endif
+ #ifdef SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION
+ {"SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION", ERR_LIB_SSL, SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION},
+ #else
+ {"SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION", 20, 228},
+ #endif
+ #ifdef SSL_R_SSL_HANDSHAKE_FAILURE
+ {"SSL_HANDSHAKE_FAILURE", ERR_LIB_SSL, SSL_R_SSL_HANDSHAKE_FAILURE},
+ #else
+ {"SSL_HANDSHAKE_FAILURE", 20, 229},
+ #endif
+ #ifdef SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS
+ {"SSL_LIBRARY_HAS_NO_CIPHERS", ERR_LIB_SSL, SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS},
+ #else
+ {"SSL_LIBRARY_HAS_NO_CIPHERS", 20, 230},
+ #endif
+ #ifdef SSL_R_SSL_NEGATIVE_LENGTH
+ {"SSL_NEGATIVE_LENGTH", ERR_LIB_SSL, SSL_R_SSL_NEGATIVE_LENGTH},
+ #else
+ {"SSL_NEGATIVE_LENGTH", 20, 372},
+ #endif
+ #ifdef SSL_R_SSL_SECTION_EMPTY
+ {"SSL_SECTION_EMPTY", ERR_LIB_SSL, SSL_R_SSL_SECTION_EMPTY},
+ #else
+ {"SSL_SECTION_EMPTY", 20, 126},
+ #endif
+ #ifdef SSL_R_SSL_SECTION_NOT_FOUND
+ {"SSL_SECTION_NOT_FOUND", ERR_LIB_SSL, SSL_R_SSL_SECTION_NOT_FOUND},
+ #else
+ {"SSL_SECTION_NOT_FOUND", 20, 136},
+ #endif
+ #ifdef SSL_R_SSL_SESSION_ID_CALLBACK_FAILED
+ {"SSL_SESSION_ID_CALLBACK_FAILED", ERR_LIB_SSL, SSL_R_SSL_SESSION_ID_CALLBACK_FAILED},
+ #else
+ {"SSL_SESSION_ID_CALLBACK_FAILED", 20, 301},
+ #endif
+ #ifdef SSL_R_SSL_SESSION_ID_CONFLICT
+ {"SSL_SESSION_ID_CONFLICT", ERR_LIB_SSL, SSL_R_SSL_SESSION_ID_CONFLICT},
+ #else
+ {"SSL_SESSION_ID_CONFLICT", 20, 302},
+ #endif
+ #ifdef SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG
+ {"SSL_SESSION_ID_CONTEXT_TOO_LONG", ERR_LIB_SSL, SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG},
+ #else
+ {"SSL_SESSION_ID_CONTEXT_TOO_LONG", 20, 273},
+ #endif
+ #ifdef SSL_R_SSL_SESSION_ID_HAS_BAD_LENGTH
+ {"SSL_SESSION_ID_HAS_BAD_LENGTH", ERR_LIB_SSL, SSL_R_SSL_SESSION_ID_HAS_BAD_LENGTH},
+ #else
+ {"SSL_SESSION_ID_HAS_BAD_LENGTH", 20, 303},
+ #endif
+ #ifdef SSL_R_SSL_SESSION_ID_TOO_LONG
+ {"SSL_SESSION_ID_TOO_LONG", ERR_LIB_SSL, SSL_R_SSL_SESSION_ID_TOO_LONG},
+ #else
+ {"SSL_SESSION_ID_TOO_LONG", 20, 408},
+ #endif
+ #ifdef SSL_R_SSL_SESSION_VERSION_MISMATCH
+ {"SSL_SESSION_VERSION_MISMATCH", ERR_LIB_SSL, SSL_R_SSL_SESSION_VERSION_MISMATCH},
+ #else
+ {"SSL_SESSION_VERSION_MISMATCH", 20, 210},
+ #endif
+ #ifdef SSL_R_STILL_IN_INIT
+ {"STILL_IN_INIT", ERR_LIB_SSL, SSL_R_STILL_IN_INIT},
+ #else
+ {"STILL_IN_INIT", 20, 121},
+ #endif
+ #ifdef SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED
+ {"TLSV13_ALERT_CERTIFICATE_REQUIRED", ERR_LIB_SSL, SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED},
+ #else
+ {"TLSV13_ALERT_CERTIFICATE_REQUIRED", 20, 1116},
+ #endif
+ #ifdef SSL_R_TLSV13_ALERT_MISSING_EXTENSION
+ {"TLSV13_ALERT_MISSING_EXTENSION", ERR_LIB_SSL, SSL_R_TLSV13_ALERT_MISSING_EXTENSION},
+ #else
+ {"TLSV13_ALERT_MISSING_EXTENSION", 20, 1109},
+ #endif
+ #ifdef SSL_R_TLSV1_ALERT_ACCESS_DENIED
+ {"TLSV1_ALERT_ACCESS_DENIED", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_ACCESS_DENIED},
+ #else
+ {"TLSV1_ALERT_ACCESS_DENIED", 20, 1049},
+ #endif
+ #ifdef SSL_R_TLSV1_ALERT_DECODE_ERROR
+ {"TLSV1_ALERT_DECODE_ERROR", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_DECODE_ERROR},
+ #else
+ {"TLSV1_ALERT_DECODE_ERROR", 20, 1050},
+ #endif
+ #ifdef SSL_R_TLSV1_ALERT_DECRYPTION_FAILED
+ {"TLSV1_ALERT_DECRYPTION_FAILED", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_DECRYPTION_FAILED},
+ #else
+ {"TLSV1_ALERT_DECRYPTION_FAILED", 20, 1021},
+ #endif
+ #ifdef SSL_R_TLSV1_ALERT_DECRYPT_ERROR
+ {"TLSV1_ALERT_DECRYPT_ERROR", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_DECRYPT_ERROR},
+ #else
+ {"TLSV1_ALERT_DECRYPT_ERROR", 20, 1051},
+ #endif
+ #ifdef SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION
+ {"TLSV1_ALERT_EXPORT_RESTRICTION", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION},
+ #else
+ {"TLSV1_ALERT_EXPORT_RESTRICTION", 20, 1060},
+ #endif
+ #ifdef SSL_R_TLSV1_ALERT_INAPPROPRIATE_FALLBACK
+ {"TLSV1_ALERT_INAPPROPRIATE_FALLBACK", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_INAPPROPRIATE_FALLBACK},
+ #else
+ {"TLSV1_ALERT_INAPPROPRIATE_FALLBACK", 20, 1086},
+ #endif
+ #ifdef SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY
+ {"TLSV1_ALERT_INSUFFICIENT_SECURITY", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY},
+ #else
+ {"TLSV1_ALERT_INSUFFICIENT_SECURITY", 20, 1071},
+ #endif
+ #ifdef SSL_R_TLSV1_ALERT_INTERNAL_ERROR
+ {"TLSV1_ALERT_INTERNAL_ERROR", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_INTERNAL_ERROR},
+ #else
+ {"TLSV1_ALERT_INTERNAL_ERROR", 20, 1080},
+ #endif
+ #ifdef SSL_R_TLSV1_ALERT_NO_RENEGOTIATION
+ {"TLSV1_ALERT_NO_RENEGOTIATION", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_NO_RENEGOTIATION},
+ #else
+ {"TLSV1_ALERT_NO_RENEGOTIATION", 20, 1100},
+ #endif
+ #ifdef SSL_R_TLSV1_ALERT_PROTOCOL_VERSION
+ {"TLSV1_ALERT_PROTOCOL_VERSION", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_PROTOCOL_VERSION},
+ #else
+ {"TLSV1_ALERT_PROTOCOL_VERSION", 20, 1070},
+ #endif
+ #ifdef SSL_R_TLSV1_ALERT_RECORD_OVERFLOW
+ {"TLSV1_ALERT_RECORD_OVERFLOW", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_RECORD_OVERFLOW},
+ #else
+ {"TLSV1_ALERT_RECORD_OVERFLOW", 20, 1022},
+ #endif
+ #ifdef SSL_R_TLSV1_ALERT_UNKNOWN_CA
+ {"TLSV1_ALERT_UNKNOWN_CA", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_UNKNOWN_CA},
+ #else
+ {"TLSV1_ALERT_UNKNOWN_CA", 20, 1048},
+ #endif
+ #ifdef SSL_R_TLSV1_ALERT_USER_CANCELLED
+ {"TLSV1_ALERT_USER_CANCELLED", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_USER_CANCELLED},
+ #else
+ {"TLSV1_ALERT_USER_CANCELLED", 20, 1090},
+ #endif
+ #ifdef SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE
+ {"TLSV1_BAD_CERTIFICATE_HASH_VALUE", ERR_LIB_SSL, SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE},
+ #else
+ {"TLSV1_BAD_CERTIFICATE_HASH_VALUE", 20, 1114},
+ #endif
+ #ifdef SSL_R_TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE
+ {"TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE", ERR_LIB_SSL, SSL_R_TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE},
+ #else
+ {"TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE", 20, 1113},
+ #endif
+ #ifdef SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE
+ {"TLSV1_CERTIFICATE_UNOBTAINABLE", ERR_LIB_SSL, SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE},
+ #else
+ {"TLSV1_CERTIFICATE_UNOBTAINABLE", 20, 1111},
+ #endif
+ #ifdef SSL_R_TLSV1_UNRECOGNIZED_NAME
+ {"TLSV1_UNRECOGNIZED_NAME", ERR_LIB_SSL, SSL_R_TLSV1_UNRECOGNIZED_NAME},
+ #else
+ {"TLSV1_UNRECOGNIZED_NAME", 20, 1112},
+ #endif
+ #ifdef SSL_R_TLSV1_UNSUPPORTED_EXTENSION
+ {"TLSV1_UNSUPPORTED_EXTENSION", ERR_LIB_SSL, SSL_R_TLSV1_UNSUPPORTED_EXTENSION},
+ #else
+ {"TLSV1_UNSUPPORTED_EXTENSION", 20, 1110},
+ #endif
+ #ifdef SSL_R_TLS_ILLEGAL_EXPORTER_LABEL
+ {"TLS_ILLEGAL_EXPORTER_LABEL", ERR_LIB_SSL, SSL_R_TLS_ILLEGAL_EXPORTER_LABEL},
+ #else
+ {"TLS_ILLEGAL_EXPORTER_LABEL", 20, 367},
+ #endif
+ #ifdef SSL_R_TLS_INVALID_ECPOINTFORMAT_LIST
+ {"TLS_INVALID_ECPOINTFORMAT_LIST", ERR_LIB_SSL, SSL_R_TLS_INVALID_ECPOINTFORMAT_LIST},
+ #else
+ {"TLS_INVALID_ECPOINTFORMAT_LIST", 20, 157},
+ #endif
+ #ifdef SSL_R_TOO_MANY_KEY_UPDATES
+ {"TOO_MANY_KEY_UPDATES", ERR_LIB_SSL, SSL_R_TOO_MANY_KEY_UPDATES},
+ #else
+ {"TOO_MANY_KEY_UPDATES", 20, 132},
+ #endif
+ #ifdef SSL_R_TOO_MANY_WARN_ALERTS
+ {"TOO_MANY_WARN_ALERTS", ERR_LIB_SSL, SSL_R_TOO_MANY_WARN_ALERTS},
+ #else
+ {"TOO_MANY_WARN_ALERTS", 20, 409},
+ #endif
+ #ifdef SSL_R_TOO_MUCH_EARLY_DATA
+ {"TOO_MUCH_EARLY_DATA", ERR_LIB_SSL, SSL_R_TOO_MUCH_EARLY_DATA},
+ #else
+ {"TOO_MUCH_EARLY_DATA", 20, 164},
+ #endif
+ #ifdef SSL_R_UNABLE_TO_FIND_ECDH_PARAMETERS
+ {"UNABLE_TO_FIND_ECDH_PARAMETERS", ERR_LIB_SSL, SSL_R_UNABLE_TO_FIND_ECDH_PARAMETERS},
+ #else
+ {"UNABLE_TO_FIND_ECDH_PARAMETERS", 20, 314},
+ #endif
+ #ifdef SSL_R_UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS
+ {"UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS", ERR_LIB_SSL, SSL_R_UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS},
+ #else
+ {"UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS", 20, 239},
+ #endif
+ #ifdef SSL_R_UNABLE_TO_LOAD_SSL3_MD5_ROUTINES
+ {"UNABLE_TO_LOAD_SSL3_MD5_ROUTINES", ERR_LIB_SSL, SSL_R_UNABLE_TO_LOAD_SSL3_MD5_ROUTINES},
+ #else
+ {"UNABLE_TO_LOAD_SSL3_MD5_ROUTINES", 20, 242},
+ #endif
+ #ifdef SSL_R_UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES
+ {"UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES", ERR_LIB_SSL, SSL_R_UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES},
+ #else
+ {"UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES", 20, 243},
+ #endif
+ #ifdef SSL_R_UNEXPECTED_CCS_MESSAGE
+ {"UNEXPECTED_CCS_MESSAGE", ERR_LIB_SSL, SSL_R_UNEXPECTED_CCS_MESSAGE},
+ #else
+ {"UNEXPECTED_CCS_MESSAGE", 20, 262},
+ #endif
+ #ifdef SSL_R_UNEXPECTED_END_OF_EARLY_DATA
+ {"UNEXPECTED_END_OF_EARLY_DATA", ERR_LIB_SSL, SSL_R_UNEXPECTED_END_OF_EARLY_DATA},
+ #else
+ {"UNEXPECTED_END_OF_EARLY_DATA", 20, 178},
+ #endif
+ #ifdef SSL_R_UNEXPECTED_EOF_WHILE_READING
+ {"UNEXPECTED_EOF_WHILE_READING", ERR_LIB_SSL, SSL_R_UNEXPECTED_EOF_WHILE_READING},
+ #else
+ {"UNEXPECTED_EOF_WHILE_READING", 20, 294},
+ #endif
+ #ifdef SSL_R_UNEXPECTED_MESSAGE
+ {"UNEXPECTED_MESSAGE", ERR_LIB_SSL, SSL_R_UNEXPECTED_MESSAGE},
+ #else
+ {"UNEXPECTED_MESSAGE", 20, 244},
+ #endif
+ #ifdef SSL_R_UNEXPECTED_RECORD
+ {"UNEXPECTED_RECORD", ERR_LIB_SSL, SSL_R_UNEXPECTED_RECORD},
+ #else
+ {"UNEXPECTED_RECORD", 20, 245},
+ #endif
+ #ifdef SSL_R_UNINITIALIZED
+ {"UNINITIALIZED", ERR_LIB_SSL, SSL_R_UNINITIALIZED},
+ #else
+ {"UNINITIALIZED", 20, 276},
+ #endif
+ #ifdef SSL_R_UNKNOWN_ALERT_TYPE
+ {"UNKNOWN_ALERT_TYPE", ERR_LIB_SSL, SSL_R_UNKNOWN_ALERT_TYPE},
+ #else
+ {"UNKNOWN_ALERT_TYPE", 20, 246},
+ #endif
+ #ifdef SSL_R_UNKNOWN_CERTIFICATE_TYPE
+ {"UNKNOWN_CERTIFICATE_TYPE", ERR_LIB_SSL, SSL_R_UNKNOWN_CERTIFICATE_TYPE},
+ #else
+ {"UNKNOWN_CERTIFICATE_TYPE", 20, 247},
+ #endif
+ #ifdef SSL_R_UNKNOWN_CIPHER_RETURNED
+ {"UNKNOWN_CIPHER_RETURNED", ERR_LIB_SSL, SSL_R_UNKNOWN_CIPHER_RETURNED},
+ #else
+ {"UNKNOWN_CIPHER_RETURNED", 20, 248},
+ #endif
+ #ifdef SSL_R_UNKNOWN_CIPHER_TYPE
+ {"UNKNOWN_CIPHER_TYPE", ERR_LIB_SSL, SSL_R_UNKNOWN_CIPHER_TYPE},
+ #else
+ {"UNKNOWN_CIPHER_TYPE", 20, 249},
+ #endif
+ #ifdef SSL_R_UNKNOWN_CMD_NAME
+ {"UNKNOWN_CMD_NAME", ERR_LIB_SSL, SSL_R_UNKNOWN_CMD_NAME},
+ #else
+ {"UNKNOWN_CMD_NAME", 20, 386},
+ #endif
+ #ifdef SSL_R_UNKNOWN_COMMAND
+ {"UNKNOWN_COMMAND", ERR_LIB_SSL, SSL_R_UNKNOWN_COMMAND},
+ #else
+ {"UNKNOWN_COMMAND", 20, 139},
+ #endif
+ #ifdef SSL_R_UNKNOWN_DIGEST
+ {"UNKNOWN_DIGEST", ERR_LIB_SSL, SSL_R_UNKNOWN_DIGEST},
+ #else
+ {"UNKNOWN_DIGEST", 20, 368},
+ #endif
+ #ifdef SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE
+ {"UNKNOWN_KEY_EXCHANGE_TYPE", ERR_LIB_SSL, SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE},
+ #else
+ {"UNKNOWN_KEY_EXCHANGE_TYPE", 20, 250},
+ #endif
+ #ifdef SSL_R_UNKNOWN_PKEY_TYPE
+ {"UNKNOWN_PKEY_TYPE", ERR_LIB_SSL, SSL_R_UNKNOWN_PKEY_TYPE},
+ #else
+ {"UNKNOWN_PKEY_TYPE", 20, 251},
+ #endif
+ #ifdef SSL_R_UNKNOWN_PROTOCOL
+ {"UNKNOWN_PROTOCOL", ERR_LIB_SSL, SSL_R_UNKNOWN_PROTOCOL},
+ #else
+ {"UNKNOWN_PROTOCOL", 20, 252},
+ #endif
+ #ifdef SSL_R_UNKNOWN_SSL_VERSION
+ {"UNKNOWN_SSL_VERSION", ERR_LIB_SSL, SSL_R_UNKNOWN_SSL_VERSION},
+ #else
+ {"UNKNOWN_SSL_VERSION", 20, 254},
+ #endif
+ #ifdef SSL_R_UNKNOWN_STATE
+ {"UNKNOWN_STATE", ERR_LIB_SSL, SSL_R_UNKNOWN_STATE},
+ #else
+ {"UNKNOWN_STATE", 20, 255},
+ #endif
+ #ifdef SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED
+ {"UNSAFE_LEGACY_RENEGOTIATION_DISABLED", ERR_LIB_SSL, SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED},
+ #else
+ {"UNSAFE_LEGACY_RENEGOTIATION_DISABLED", 20, 338},
+ #endif
+ #ifdef SSL_R_UNSOLICITED_EXTENSION
+ {"UNSOLICITED_EXTENSION", ERR_LIB_SSL, SSL_R_UNSOLICITED_EXTENSION},
+ #else
+ {"UNSOLICITED_EXTENSION", 20, 217},
+ #endif
+ #ifdef SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM
+ {"UNSUPPORTED_COMPRESSION_ALGORITHM", ERR_LIB_SSL, SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM},
+ #else
+ {"UNSUPPORTED_COMPRESSION_ALGORITHM", 20, 257},
+ #endif
+ #ifdef SSL_R_UNSUPPORTED_ELLIPTIC_CURVE
+ {"UNSUPPORTED_ELLIPTIC_CURVE", ERR_LIB_SSL, SSL_R_UNSUPPORTED_ELLIPTIC_CURVE},
+ #else
+ {"UNSUPPORTED_ELLIPTIC_CURVE", 20, 315},
+ #endif
+ #ifdef SSL_R_UNSUPPORTED_PROTOCOL
+ {"UNSUPPORTED_PROTOCOL", ERR_LIB_SSL, SSL_R_UNSUPPORTED_PROTOCOL},
+ #else
+ {"UNSUPPORTED_PROTOCOL", 20, 258},
+ #endif
+ #ifdef SSL_R_UNSUPPORTED_SSL_VERSION
+ {"UNSUPPORTED_SSL_VERSION", ERR_LIB_SSL, SSL_R_UNSUPPORTED_SSL_VERSION},
+ #else
+ {"UNSUPPORTED_SSL_VERSION", 20, 259},
+ #endif
+ #ifdef SSL_R_UNSUPPORTED_STATUS_TYPE
+ {"UNSUPPORTED_STATUS_TYPE", ERR_LIB_SSL, SSL_R_UNSUPPORTED_STATUS_TYPE},
+ #else
+ {"UNSUPPORTED_STATUS_TYPE", 20, 329},
+ #endif
+ #ifdef SSL_R_USE_SRTP_NOT_NEGOTIATED
+ {"USE_SRTP_NOT_NEGOTIATED", ERR_LIB_SSL, SSL_R_USE_SRTP_NOT_NEGOTIATED},
+ #else
+ {"USE_SRTP_NOT_NEGOTIATED", 20, 369},
+ #endif
+ #ifdef SSL_R_VERSION_TOO_HIGH
+ {"VERSION_TOO_HIGH", ERR_LIB_SSL, SSL_R_VERSION_TOO_HIGH},
+ #else
+ {"VERSION_TOO_HIGH", 20, 166},
+ #endif
+ #ifdef SSL_R_VERSION_TOO_LOW
+ {"VERSION_TOO_LOW", ERR_LIB_SSL, SSL_R_VERSION_TOO_LOW},
+ #else
+ {"VERSION_TOO_LOW", 20, 396},
+ #endif
+ #ifdef SSL_R_WRONG_CERTIFICATE_TYPE
+ {"WRONG_CERTIFICATE_TYPE", ERR_LIB_SSL, SSL_R_WRONG_CERTIFICATE_TYPE},
+ #else
+ {"WRONG_CERTIFICATE_TYPE", 20, 383},
+ #endif
+ #ifdef SSL_R_WRONG_CIPHER_RETURNED
+ {"WRONG_CIPHER_RETURNED", ERR_LIB_SSL, SSL_R_WRONG_CIPHER_RETURNED},
+ #else
+ {"WRONG_CIPHER_RETURNED", 20, 261},
+ #endif
+ #ifdef SSL_R_WRONG_CURVE
+ {"WRONG_CURVE", ERR_LIB_SSL, SSL_R_WRONG_CURVE},
+ #else
+ {"WRONG_CURVE", 20, 378},
+ #endif
+ #ifdef SSL_R_WRONG_SIGNATURE_LENGTH
+ {"WRONG_SIGNATURE_LENGTH", ERR_LIB_SSL, SSL_R_WRONG_SIGNATURE_LENGTH},
+ #else
+ {"WRONG_SIGNATURE_LENGTH", 20, 264},
+ #endif
+ #ifdef SSL_R_WRONG_SIGNATURE_SIZE
+ {"WRONG_SIGNATURE_SIZE", ERR_LIB_SSL, SSL_R_WRONG_SIGNATURE_SIZE},
+ #else
+ {"WRONG_SIGNATURE_SIZE", 20, 265},
+ #endif
+ #ifdef SSL_R_WRONG_SIGNATURE_TYPE
+ {"WRONG_SIGNATURE_TYPE", ERR_LIB_SSL, SSL_R_WRONG_SIGNATURE_TYPE},
+ #else
+ {"WRONG_SIGNATURE_TYPE", 20, 370},
+ #endif
+ #ifdef SSL_R_WRONG_SSL_VERSION
+ {"WRONG_SSL_VERSION", ERR_LIB_SSL, SSL_R_WRONG_SSL_VERSION},
+ #else
+ {"WRONG_SSL_VERSION", 20, 266},
+ #endif
+ #ifdef SSL_R_WRONG_VERSION_NUMBER
+ {"WRONG_VERSION_NUMBER", ERR_LIB_SSL, SSL_R_WRONG_VERSION_NUMBER},
+ #else
+ {"WRONG_VERSION_NUMBER", 20, 267},
+ #endif
+ #ifdef SSL_R_X509_LIB
+ {"X509_LIB", ERR_LIB_SSL, SSL_R_X509_LIB},
+ #else
+ {"X509_LIB", 20, 268},
+ #endif
+ #ifdef SSL_R_X509_VERIFICATION_SETUP_PROBLEMS
+ {"X509_VERIFICATION_SETUP_PROBLEMS", ERR_LIB_SSL, SSL_R_X509_VERIFICATION_SETUP_PROBLEMS},
+ #else
+ {"X509_VERIFICATION_SETUP_PROBLEMS", 20, 269},
+ #endif
+ #ifdef TS_R_BAD_PKCS7_TYPE
+ {"BAD_PKCS7_TYPE", ERR_LIB_TS, TS_R_BAD_PKCS7_TYPE},
+ #else
+ {"BAD_PKCS7_TYPE", 47, 132},
+ #endif
+ #ifdef TS_R_BAD_TYPE
+ {"BAD_TYPE", ERR_LIB_TS, TS_R_BAD_TYPE},
+ #else
+ {"BAD_TYPE", 47, 133},
+ #endif
+ #ifdef TS_R_CANNOT_LOAD_CERT
+ {"CANNOT_LOAD_CERT", ERR_LIB_TS, TS_R_CANNOT_LOAD_CERT},
+ #else
+ {"CANNOT_LOAD_CERT", 47, 137},
+ #endif
+ #ifdef TS_R_CANNOT_LOAD_KEY
+ {"CANNOT_LOAD_KEY", ERR_LIB_TS, TS_R_CANNOT_LOAD_KEY},
+ #else
+ {"CANNOT_LOAD_KEY", 47, 138},
+ #endif
+ #ifdef TS_R_CERTIFICATE_VERIFY_ERROR
+ {"CERTIFICATE_VERIFY_ERROR", ERR_LIB_TS, TS_R_CERTIFICATE_VERIFY_ERROR},
+ #else
+ {"CERTIFICATE_VERIFY_ERROR", 47, 100},
+ #endif
+ #ifdef TS_R_COULD_NOT_SET_ENGINE
+ {"COULD_NOT_SET_ENGINE", ERR_LIB_TS, TS_R_COULD_NOT_SET_ENGINE},
+ #else
+ {"COULD_NOT_SET_ENGINE", 47, 127},
+ #endif
+ #ifdef TS_R_COULD_NOT_SET_TIME
+ {"COULD_NOT_SET_TIME", ERR_LIB_TS, TS_R_COULD_NOT_SET_TIME},
+ #else
+ {"COULD_NOT_SET_TIME", 47, 115},
+ #endif
+ #ifdef TS_R_DETACHED_CONTENT
+ {"DETACHED_CONTENT", ERR_LIB_TS, TS_R_DETACHED_CONTENT},
+ #else
+ {"DETACHED_CONTENT", 47, 134},
+ #endif
+ #ifdef TS_R_ESS_ADD_SIGNING_CERT_ERROR
+ {"ESS_ADD_SIGNING_CERT_ERROR", ERR_LIB_TS, TS_R_ESS_ADD_SIGNING_CERT_ERROR},
+ #else
+ {"ESS_ADD_SIGNING_CERT_ERROR", 47, 116},
+ #endif
+ #ifdef TS_R_ESS_ADD_SIGNING_CERT_V2_ERROR
+ {"ESS_ADD_SIGNING_CERT_V2_ERROR", ERR_LIB_TS, TS_R_ESS_ADD_SIGNING_CERT_V2_ERROR},
+ #else
+ {"ESS_ADD_SIGNING_CERT_V2_ERROR", 47, 139},
+ #endif
+ #ifdef TS_R_ESS_SIGNING_CERTIFICATE_ERROR
+ {"ESS_SIGNING_CERTIFICATE_ERROR", ERR_LIB_TS, TS_R_ESS_SIGNING_CERTIFICATE_ERROR},
+ #else
+ {"ESS_SIGNING_CERTIFICATE_ERROR", 47, 101},
+ #endif
+ #ifdef TS_R_INVALID_NULL_POINTER
+ {"INVALID_NULL_POINTER", ERR_LIB_TS, TS_R_INVALID_NULL_POINTER},
+ #else
+ {"INVALID_NULL_POINTER", 47, 102},
+ #endif
+ #ifdef TS_R_INVALID_SIGNER_CERTIFICATE_PURPOSE
+ {"INVALID_SIGNER_CERTIFICATE_PURPOSE", ERR_LIB_TS, TS_R_INVALID_SIGNER_CERTIFICATE_PURPOSE},
+ #else
+ {"INVALID_SIGNER_CERTIFICATE_PURPOSE", 47, 117},
+ #endif
+ #ifdef TS_R_MESSAGE_IMPRINT_MISMATCH
+ {"MESSAGE_IMPRINT_MISMATCH", ERR_LIB_TS, TS_R_MESSAGE_IMPRINT_MISMATCH},
+ #else
+ {"MESSAGE_IMPRINT_MISMATCH", 47, 103},
+ #endif
+ #ifdef TS_R_NONCE_MISMATCH
+ {"NONCE_MISMATCH", ERR_LIB_TS, TS_R_NONCE_MISMATCH},
+ #else
+ {"NONCE_MISMATCH", 47, 104},
+ #endif
+ #ifdef TS_R_NONCE_NOT_RETURNED
+ {"NONCE_NOT_RETURNED", ERR_LIB_TS, TS_R_NONCE_NOT_RETURNED},
+ #else
+ {"NONCE_NOT_RETURNED", 47, 105},
+ #endif
+ #ifdef TS_R_NO_CONTENT
+ {"NO_CONTENT", ERR_LIB_TS, TS_R_NO_CONTENT},
+ #else
+ {"NO_CONTENT", 47, 106},
+ #endif
+ #ifdef TS_R_NO_TIME_STAMP_TOKEN
+ {"NO_TIME_STAMP_TOKEN", ERR_LIB_TS, TS_R_NO_TIME_STAMP_TOKEN},
+ #else
+ {"NO_TIME_STAMP_TOKEN", 47, 107},
+ #endif
+ #ifdef TS_R_PKCS7_ADD_SIGNATURE_ERROR
+ {"PKCS7_ADD_SIGNATURE_ERROR", ERR_LIB_TS, TS_R_PKCS7_ADD_SIGNATURE_ERROR},
+ #else
+ {"PKCS7_ADD_SIGNATURE_ERROR", 47, 118},
+ #endif
+ #ifdef TS_R_PKCS7_ADD_SIGNED_ATTR_ERROR
+ {"PKCS7_ADD_SIGNED_ATTR_ERROR", ERR_LIB_TS, TS_R_PKCS7_ADD_SIGNED_ATTR_ERROR},
+ #else
+ {"PKCS7_ADD_SIGNED_ATTR_ERROR", 47, 119},
+ #endif
+ #ifdef TS_R_PKCS7_TO_TS_TST_INFO_FAILED
+ {"PKCS7_TO_TS_TST_INFO_FAILED", ERR_LIB_TS, TS_R_PKCS7_TO_TS_TST_INFO_FAILED},
+ #else
+ {"PKCS7_TO_TS_TST_INFO_FAILED", 47, 129},
+ #endif
+ #ifdef TS_R_POLICY_MISMATCH
+ {"POLICY_MISMATCH", ERR_LIB_TS, TS_R_POLICY_MISMATCH},
+ #else
+ {"POLICY_MISMATCH", 47, 108},
+ #endif
+ #ifdef TS_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE
+ {"PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE", ERR_LIB_TS, TS_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE},
+ #else
+ {"PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE", 47, 120},
+ #endif
+ #ifdef TS_R_RESPONSE_SETUP_ERROR
+ {"RESPONSE_SETUP_ERROR", ERR_LIB_TS, TS_R_RESPONSE_SETUP_ERROR},
+ #else
+ {"RESPONSE_SETUP_ERROR", 47, 121},
+ #endif
+ #ifdef TS_R_SIGNATURE_FAILURE
+ {"SIGNATURE_FAILURE", ERR_LIB_TS, TS_R_SIGNATURE_FAILURE},
+ #else
+ {"SIGNATURE_FAILURE", 47, 109},
+ #endif
+ #ifdef TS_R_THERE_MUST_BE_ONE_SIGNER
+ {"THERE_MUST_BE_ONE_SIGNER", ERR_LIB_TS, TS_R_THERE_MUST_BE_ONE_SIGNER},
+ #else
+ {"THERE_MUST_BE_ONE_SIGNER", 47, 110},
+ #endif
+ #ifdef TS_R_TIME_SYSCALL_ERROR
+ {"TIME_SYSCALL_ERROR", ERR_LIB_TS, TS_R_TIME_SYSCALL_ERROR},
+ #else
+ {"TIME_SYSCALL_ERROR", 47, 122},
+ #endif
+ #ifdef TS_R_TOKEN_NOT_PRESENT
+ {"TOKEN_NOT_PRESENT", ERR_LIB_TS, TS_R_TOKEN_NOT_PRESENT},
+ #else
+ {"TOKEN_NOT_PRESENT", 47, 130},
+ #endif
+ #ifdef TS_R_TOKEN_PRESENT
+ {"TOKEN_PRESENT", ERR_LIB_TS, TS_R_TOKEN_PRESENT},
+ #else
+ {"TOKEN_PRESENT", 47, 131},
+ #endif
+ #ifdef TS_R_TSA_NAME_MISMATCH
+ {"TSA_NAME_MISMATCH", ERR_LIB_TS, TS_R_TSA_NAME_MISMATCH},
+ #else
+ {"TSA_NAME_MISMATCH", 47, 111},
+ #endif
+ #ifdef TS_R_TSA_UNTRUSTED
+ {"TSA_UNTRUSTED", ERR_LIB_TS, TS_R_TSA_UNTRUSTED},
+ #else
+ {"TSA_UNTRUSTED", 47, 112},
+ #endif
+ #ifdef TS_R_TST_INFO_SETUP_ERROR
+ {"TST_INFO_SETUP_ERROR", ERR_LIB_TS, TS_R_TST_INFO_SETUP_ERROR},
+ #else
+ {"TST_INFO_SETUP_ERROR", 47, 123},
+ #endif
+ #ifdef TS_R_TS_DATASIGN
+ {"TS_DATASIGN", ERR_LIB_TS, TS_R_TS_DATASIGN},
+ #else
+ {"TS_DATASIGN", 47, 124},
+ #endif
+ #ifdef TS_R_UNACCEPTABLE_POLICY
+ {"UNACCEPTABLE_POLICY", ERR_LIB_TS, TS_R_UNACCEPTABLE_POLICY},
+ #else
+ {"UNACCEPTABLE_POLICY", 47, 125},
+ #endif
+ #ifdef TS_R_UNSUPPORTED_MD_ALGORITHM
+ {"UNSUPPORTED_MD_ALGORITHM", ERR_LIB_TS, TS_R_UNSUPPORTED_MD_ALGORITHM},
+ #else
+ {"UNSUPPORTED_MD_ALGORITHM", 47, 126},
+ #endif
+ #ifdef TS_R_UNSUPPORTED_VERSION
+ {"UNSUPPORTED_VERSION", ERR_LIB_TS, TS_R_UNSUPPORTED_VERSION},
+ #else
+ {"UNSUPPORTED_VERSION", 47, 113},
+ #endif
+ #ifdef TS_R_VAR_BAD_VALUE
+ {"VAR_BAD_VALUE", ERR_LIB_TS, TS_R_VAR_BAD_VALUE},
+ #else
+ {"VAR_BAD_VALUE", 47, 135},
+ #endif
+ #ifdef TS_R_VAR_LOOKUP_FAILURE
+ {"VAR_LOOKUP_FAILURE", ERR_LIB_TS, TS_R_VAR_LOOKUP_FAILURE},
+ #else
+ {"VAR_LOOKUP_FAILURE", 47, 136},
+ #endif
+ #ifdef TS_R_WRONG_CONTENT_TYPE
+ {"WRONG_CONTENT_TYPE", ERR_LIB_TS, TS_R_WRONG_CONTENT_TYPE},
+ #else
+ {"WRONG_CONTENT_TYPE", 47, 114},
+ #endif
+ #ifdef UI_R_COMMON_OK_AND_CANCEL_CHARACTERS
+ {"COMMON_OK_AND_CANCEL_CHARACTERS", ERR_LIB_UI, UI_R_COMMON_OK_AND_CANCEL_CHARACTERS},
+ #else
+ {"COMMON_OK_AND_CANCEL_CHARACTERS", 40, 104},
+ #endif
+ #ifdef UI_R_INDEX_TOO_LARGE
+ {"INDEX_TOO_LARGE", ERR_LIB_UI, UI_R_INDEX_TOO_LARGE},
+ #else
+ {"INDEX_TOO_LARGE", 40, 102},
+ #endif
+ #ifdef UI_R_INDEX_TOO_SMALL
+ {"INDEX_TOO_SMALL", ERR_LIB_UI, UI_R_INDEX_TOO_SMALL},
+ #else
+ {"INDEX_TOO_SMALL", 40, 103},
+ #endif
+ #ifdef UI_R_NO_RESULT_BUFFER
+ {"NO_RESULT_BUFFER", ERR_LIB_UI, UI_R_NO_RESULT_BUFFER},
+ #else
+ {"NO_RESULT_BUFFER", 40, 105},
+ #endif
+ #ifdef UI_R_PROCESSING_ERROR
+ {"PROCESSING_ERROR", ERR_LIB_UI, UI_R_PROCESSING_ERROR},
+ #else
+ {"PROCESSING_ERROR", 40, 107},
+ #endif
+ #ifdef UI_R_RESULT_TOO_LARGE
+ {"RESULT_TOO_LARGE", ERR_LIB_UI, UI_R_RESULT_TOO_LARGE},
+ #else
+ {"RESULT_TOO_LARGE", 40, 100},
+ #endif
+ #ifdef UI_R_RESULT_TOO_SMALL
+ {"RESULT_TOO_SMALL", ERR_LIB_UI, UI_R_RESULT_TOO_SMALL},
+ #else
+ {"RESULT_TOO_SMALL", 40, 101},
+ #endif
+ #ifdef UI_R_SYSASSIGN_ERROR
+ {"SYSASSIGN_ERROR", ERR_LIB_UI, UI_R_SYSASSIGN_ERROR},
+ #else
+ {"SYSASSIGN_ERROR", 40, 109},
+ #endif
+ #ifdef UI_R_SYSDASSGN_ERROR
+ {"SYSDASSGN_ERROR", ERR_LIB_UI, UI_R_SYSDASSGN_ERROR},
+ #else
+ {"SYSDASSGN_ERROR", 40, 110},
+ #endif
+ #ifdef UI_R_SYSQIOW_ERROR
+ {"SYSQIOW_ERROR", ERR_LIB_UI, UI_R_SYSQIOW_ERROR},
+ #else
+ {"SYSQIOW_ERROR", 40, 111},
+ #endif
+ #ifdef UI_R_UNKNOWN_CONTROL_COMMAND
+ {"UNKNOWN_CONTROL_COMMAND", ERR_LIB_UI, UI_R_UNKNOWN_CONTROL_COMMAND},
+ #else
+ {"UNKNOWN_CONTROL_COMMAND", 40, 106},
+ #endif
+ #ifdef UI_R_UNKNOWN_TTYGET_ERRNO_VALUE
+ {"UNKNOWN_TTYGET_ERRNO_VALUE", ERR_LIB_UI, UI_R_UNKNOWN_TTYGET_ERRNO_VALUE},
+ #else
+ {"UNKNOWN_TTYGET_ERRNO_VALUE", 40, 108},
+ #endif
+ #ifdef UI_R_USER_DATA_DUPLICATION_UNSUPPORTED
+ {"USER_DATA_DUPLICATION_UNSUPPORTED", ERR_LIB_UI, UI_R_USER_DATA_DUPLICATION_UNSUPPORTED},
+ #else
+ {"USER_DATA_DUPLICATION_UNSUPPORTED", 40, 112},
+ #endif
+ #ifdef X509V3_R_BAD_IP_ADDRESS
+ {"BAD_IP_ADDRESS", ERR_LIB_X509V3, X509V3_R_BAD_IP_ADDRESS},
+ #else
+ {"BAD_IP_ADDRESS", 34, 118},
+ #endif
+ #ifdef X509V3_R_BAD_OBJECT
+ {"BAD_OBJECT", ERR_LIB_X509V3, X509V3_R_BAD_OBJECT},
+ #else
+ {"BAD_OBJECT", 34, 119},
+ #endif
+ #ifdef X509V3_R_BN_DEC2BN_ERROR
+ {"BN_DEC2BN_ERROR", ERR_LIB_X509V3, X509V3_R_BN_DEC2BN_ERROR},
+ #else
+ {"BN_DEC2BN_ERROR", 34, 100},
+ #endif
+ #ifdef X509V3_R_BN_TO_ASN1_INTEGER_ERROR
+ {"BN_TO_ASN1_INTEGER_ERROR", ERR_LIB_X509V3, X509V3_R_BN_TO_ASN1_INTEGER_ERROR},
+ #else
+ {"BN_TO_ASN1_INTEGER_ERROR", 34, 101},
+ #endif
+ #ifdef X509V3_R_DIRNAME_ERROR
+ {"DIRNAME_ERROR", ERR_LIB_X509V3, X509V3_R_DIRNAME_ERROR},
+ #else
+ {"DIRNAME_ERROR", 34, 149},
+ #endif
+ #ifdef X509V3_R_DISTPOINT_ALREADY_SET
+ {"DISTPOINT_ALREADY_SET", ERR_LIB_X509V3, X509V3_R_DISTPOINT_ALREADY_SET},
+ #else
+ {"DISTPOINT_ALREADY_SET", 34, 160},
+ #endif
+ #ifdef X509V3_R_DUPLICATE_ZONE_ID
+ {"DUPLICATE_ZONE_ID", ERR_LIB_X509V3, X509V3_R_DUPLICATE_ZONE_ID},
+ #else
+ {"DUPLICATE_ZONE_ID", 34, 133},
+ #endif
+ #ifdef X509V3_R_EMPTY_KEY_USAGE
+ {"EMPTY_KEY_USAGE", ERR_LIB_X509V3, X509V3_R_EMPTY_KEY_USAGE},
+ #else
+ {"EMPTY_KEY_USAGE", 34, 169},
+ #endif
+ #ifdef X509V3_R_ERROR_CONVERTING_ZONE
+ {"ERROR_CONVERTING_ZONE", ERR_LIB_X509V3, X509V3_R_ERROR_CONVERTING_ZONE},
+ #else
+ {"ERROR_CONVERTING_ZONE", 34, 131},
+ #endif
+ #ifdef X509V3_R_ERROR_CREATING_EXTENSION
+ {"ERROR_CREATING_EXTENSION", ERR_LIB_X509V3, X509V3_R_ERROR_CREATING_EXTENSION},
+ #else
+ {"ERROR_CREATING_EXTENSION", 34, 144},
+ #endif
+ #ifdef X509V3_R_ERROR_IN_EXTENSION
+ {"ERROR_IN_EXTENSION", ERR_LIB_X509V3, X509V3_R_ERROR_IN_EXTENSION},
+ #else
+ {"ERROR_IN_EXTENSION", 34, 128},
+ #endif
+ #ifdef X509V3_R_EXPECTED_A_SECTION_NAME
+ {"EXPECTED_A_SECTION_NAME", ERR_LIB_X509V3, X509V3_R_EXPECTED_A_SECTION_NAME},
+ #else
+ {"EXPECTED_A_SECTION_NAME", 34, 137},
+ #endif
+ #ifdef X509V3_R_EXTENSION_EXISTS
+ {"EXTENSION_EXISTS", ERR_LIB_X509V3, X509V3_R_EXTENSION_EXISTS},
+ #else
+ {"EXTENSION_EXISTS", 34, 145},
+ #endif
+ #ifdef X509V3_R_EXTENSION_NAME_ERROR
+ {"EXTENSION_NAME_ERROR", ERR_LIB_X509V3, X509V3_R_EXTENSION_NAME_ERROR},
+ #else
+ {"EXTENSION_NAME_ERROR", 34, 115},
+ #endif
+ #ifdef X509V3_R_EXTENSION_NOT_FOUND
+ {"EXTENSION_NOT_FOUND", ERR_LIB_X509V3, X509V3_R_EXTENSION_NOT_FOUND},
+ #else
+ {"EXTENSION_NOT_FOUND", 34, 102},
+ #endif
+ #ifdef X509V3_R_EXTENSION_SETTING_NOT_SUPPORTED
+ {"EXTENSION_SETTING_NOT_SUPPORTED", ERR_LIB_X509V3, X509V3_R_EXTENSION_SETTING_NOT_SUPPORTED},
+ #else
+ {"EXTENSION_SETTING_NOT_SUPPORTED", 34, 103},
+ #endif
+ #ifdef X509V3_R_EXTENSION_VALUE_ERROR
+ {"EXTENSION_VALUE_ERROR", ERR_LIB_X509V3, X509V3_R_EXTENSION_VALUE_ERROR},
+ #else
+ {"EXTENSION_VALUE_ERROR", 34, 116},
+ #endif
+ #ifdef X509V3_R_ILLEGAL_EMPTY_EXTENSION
+ {"ILLEGAL_EMPTY_EXTENSION", ERR_LIB_X509V3, X509V3_R_ILLEGAL_EMPTY_EXTENSION},
+ #else
+ {"ILLEGAL_EMPTY_EXTENSION", 34, 151},
+ #endif
+ #ifdef X509V3_R_INCORRECT_POLICY_SYNTAX_TAG
+ {"INCORRECT_POLICY_SYNTAX_TAG", ERR_LIB_X509V3, X509V3_R_INCORRECT_POLICY_SYNTAX_TAG},
+ #else
+ {"INCORRECT_POLICY_SYNTAX_TAG", 34, 152},
+ #endif
+ #ifdef X509V3_R_INVALID_ASNUMBER
+ {"INVALID_ASNUMBER", ERR_LIB_X509V3, X509V3_R_INVALID_ASNUMBER},
+ #else
+ {"INVALID_ASNUMBER", 34, 162},
+ #endif
+ #ifdef X509V3_R_INVALID_ASRANGE
+ {"INVALID_ASRANGE", ERR_LIB_X509V3, X509V3_R_INVALID_ASRANGE},
+ #else
+ {"INVALID_ASRANGE", 34, 163},
+ #endif
+ #ifdef X509V3_R_INVALID_BOOLEAN_STRING
+ {"INVALID_BOOLEAN_STRING", ERR_LIB_X509V3, X509V3_R_INVALID_BOOLEAN_STRING},
+ #else
+ {"INVALID_BOOLEAN_STRING", 34, 104},
+ #endif
+ #ifdef X509V3_R_INVALID_CERTIFICATE
+ {"INVALID_CERTIFICATE", ERR_LIB_X509V3, X509V3_R_INVALID_CERTIFICATE},
+ #else
+ {"INVALID_CERTIFICATE", 34, 158},
+ #endif
+ #ifdef X509V3_R_INVALID_EMPTY_NAME
+ {"INVALID_EMPTY_NAME", ERR_LIB_X509V3, X509V3_R_INVALID_EMPTY_NAME},
+ #else
+ {"INVALID_EMPTY_NAME", 34, 108},
+ #endif
+ #ifdef X509V3_R_INVALID_EXTENSION_STRING
+ {"INVALID_EXTENSION_STRING", ERR_LIB_X509V3, X509V3_R_INVALID_EXTENSION_STRING},
+ #else
+ {"INVALID_EXTENSION_STRING", 34, 105},
+ #endif
+ #ifdef X509V3_R_INVALID_INHERITANCE
+ {"INVALID_INHERITANCE", ERR_LIB_X509V3, X509V3_R_INVALID_INHERITANCE},
+ #else
+ {"INVALID_INHERITANCE", 34, 165},
+ #endif
+ #ifdef X509V3_R_INVALID_IPADDRESS
+ {"INVALID_IPADDRESS", ERR_LIB_X509V3, X509V3_R_INVALID_IPADDRESS},
+ #else
+ {"INVALID_IPADDRESS", 34, 166},
+ #endif
+ #ifdef X509V3_R_INVALID_MULTIPLE_RDNS
+ {"INVALID_MULTIPLE_RDNS", ERR_LIB_X509V3, X509V3_R_INVALID_MULTIPLE_RDNS},
+ #else
+ {"INVALID_MULTIPLE_RDNS", 34, 161},
+ #endif
+ #ifdef X509V3_R_INVALID_NAME
+ {"INVALID_NAME", ERR_LIB_X509V3, X509V3_R_INVALID_NAME},
+ #else
+ {"INVALID_NAME", 34, 106},
+ #endif
+ #ifdef X509V3_R_INVALID_NULL_ARGUMENT
+ {"INVALID_NULL_ARGUMENT", ERR_LIB_X509V3, X509V3_R_INVALID_NULL_ARGUMENT},
+ #else
+ {"INVALID_NULL_ARGUMENT", 34, 107},
+ #endif
+ #ifdef X509V3_R_INVALID_NULL_VALUE
+ {"INVALID_NULL_VALUE", ERR_LIB_X509V3, X509V3_R_INVALID_NULL_VALUE},
+ #else
+ {"INVALID_NULL_VALUE", 34, 109},
+ #endif
+ #ifdef X509V3_R_INVALID_NUMBER
+ {"INVALID_NUMBER", ERR_LIB_X509V3, X509V3_R_INVALID_NUMBER},
+ #else
+ {"INVALID_NUMBER", 34, 140},
+ #endif
+ #ifdef X509V3_R_INVALID_NUMBERS
+ {"INVALID_NUMBERS", ERR_LIB_X509V3, X509V3_R_INVALID_NUMBERS},
+ #else
+ {"INVALID_NUMBERS", 34, 141},
+ #endif
+ #ifdef X509V3_R_INVALID_OBJECT_IDENTIFIER
+ {"INVALID_OBJECT_IDENTIFIER", ERR_LIB_X509V3, X509V3_R_INVALID_OBJECT_IDENTIFIER},
+ #else
+ {"INVALID_OBJECT_IDENTIFIER", 34, 110},
+ #endif
+ #ifdef X509V3_R_INVALID_OPTION
+ {"INVALID_OPTION", ERR_LIB_X509V3, X509V3_R_INVALID_OPTION},
+ #else
+ {"INVALID_OPTION", 34, 138},
+ #endif
+ #ifdef X509V3_R_INVALID_POLICY_IDENTIFIER
+ {"INVALID_POLICY_IDENTIFIER", ERR_LIB_X509V3, X509V3_R_INVALID_POLICY_IDENTIFIER},
+ #else
+ {"INVALID_POLICY_IDENTIFIER", 34, 134},
+ #endif
+ #ifdef X509V3_R_INVALID_PROXY_POLICY_SETTING
+ {"INVALID_PROXY_POLICY_SETTING", ERR_LIB_X509V3, X509V3_R_INVALID_PROXY_POLICY_SETTING},
+ #else
+ {"INVALID_PROXY_POLICY_SETTING", 34, 153},
+ #endif
+ #ifdef X509V3_R_INVALID_PURPOSE
+ {"INVALID_PURPOSE", ERR_LIB_X509V3, X509V3_R_INVALID_PURPOSE},
+ #else
+ {"INVALID_PURPOSE", 34, 146},
+ #endif
+ #ifdef X509V3_R_INVALID_SAFI
+ {"INVALID_SAFI", ERR_LIB_X509V3, X509V3_R_INVALID_SAFI},
+ #else
+ {"INVALID_SAFI", 34, 164},
+ #endif
+ #ifdef X509V3_R_INVALID_SECTION
+ {"INVALID_SECTION", ERR_LIB_X509V3, X509V3_R_INVALID_SECTION},
+ #else
+ {"INVALID_SECTION", 34, 135},
+ #endif
+ #ifdef X509V3_R_INVALID_SYNTAX
+ {"INVALID_SYNTAX", ERR_LIB_X509V3, X509V3_R_INVALID_SYNTAX},
+ #else
+ {"INVALID_SYNTAX", 34, 143},
+ #endif
+ #ifdef X509V3_R_ISSUER_DECODE_ERROR
+ {"ISSUER_DECODE_ERROR", ERR_LIB_X509V3, X509V3_R_ISSUER_DECODE_ERROR},
+ #else
+ {"ISSUER_DECODE_ERROR", 34, 126},
+ #endif
+ #ifdef X509V3_R_MISSING_VALUE
+ {"MISSING_VALUE", ERR_LIB_X509V3, X509V3_R_MISSING_VALUE},
+ #else
+ {"MISSING_VALUE", 34, 124},
+ #endif
+ #ifdef X509V3_R_NEED_ORGANIZATION_AND_NUMBERS
+ {"NEED_ORGANIZATION_AND_NUMBERS", ERR_LIB_X509V3, X509V3_R_NEED_ORGANIZATION_AND_NUMBERS},
+ #else
+ {"NEED_ORGANIZATION_AND_NUMBERS", 34, 142},
+ #endif
+ #ifdef X509V3_R_NEGATIVE_PATHLEN
+ {"NEGATIVE_PATHLEN", ERR_LIB_X509V3, X509V3_R_NEGATIVE_PATHLEN},
+ #else
+ {"NEGATIVE_PATHLEN", 34, 168},
+ #endif
+ #ifdef X509V3_R_NO_CONFIG_DATABASE
+ {"NO_CONFIG_DATABASE", ERR_LIB_X509V3, X509V3_R_NO_CONFIG_DATABASE},
+ #else
+ {"NO_CONFIG_DATABASE", 34, 136},
+ #endif
+ #ifdef X509V3_R_NO_ISSUER_CERTIFICATE
+ {"NO_ISSUER_CERTIFICATE", ERR_LIB_X509V3, X509V3_R_NO_ISSUER_CERTIFICATE},
+ #else
+ {"NO_ISSUER_CERTIFICATE", 34, 121},
+ #endif
+ #ifdef X509V3_R_NO_ISSUER_DETAILS
+ {"NO_ISSUER_DETAILS", ERR_LIB_X509V3, X509V3_R_NO_ISSUER_DETAILS},
+ #else
+ {"NO_ISSUER_DETAILS", 34, 127},
+ #endif
+ #ifdef X509V3_R_NO_POLICY_IDENTIFIER
+ {"NO_POLICY_IDENTIFIER", ERR_LIB_X509V3, X509V3_R_NO_POLICY_IDENTIFIER},
+ #else
+ {"NO_POLICY_IDENTIFIER", 34, 139},
+ #endif
+ #ifdef X509V3_R_NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED
+ {"NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED", ERR_LIB_X509V3, X509V3_R_NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED},
+ #else
+ {"NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED", 34, 154},
+ #endif
+ #ifdef X509V3_R_NO_PUBLIC_KEY
+ {"NO_PUBLIC_KEY", ERR_LIB_X509V3, X509V3_R_NO_PUBLIC_KEY},
+ #else
+ {"NO_PUBLIC_KEY", 34, 114},
+ #endif
+ #ifdef X509V3_R_NO_SUBJECT_DETAILS
+ {"NO_SUBJECT_DETAILS", ERR_LIB_X509V3, X509V3_R_NO_SUBJECT_DETAILS},
+ #else
+ {"NO_SUBJECT_DETAILS", 34, 125},
+ #endif
+ #ifdef X509V3_R_OPERATION_NOT_DEFINED
+ {"OPERATION_NOT_DEFINED", ERR_LIB_X509V3, X509V3_R_OPERATION_NOT_DEFINED},
+ #else
+ {"OPERATION_NOT_DEFINED", 34, 148},
+ #endif
+ #ifdef X509V3_R_OTHERNAME_ERROR
+ {"OTHERNAME_ERROR", ERR_LIB_X509V3, X509V3_R_OTHERNAME_ERROR},
+ #else
+ {"OTHERNAME_ERROR", 34, 147},
+ #endif
+ #ifdef X509V3_R_POLICY_LANGUAGE_ALREADY_DEFINED
+ {"POLICY_LANGUAGE_ALREADY_DEFINED", ERR_LIB_X509V3, X509V3_R_POLICY_LANGUAGE_ALREADY_DEFINED},
+ #else
+ {"POLICY_LANGUAGE_ALREADY_DEFINED", 34, 155},
+ #endif
+ #ifdef X509V3_R_POLICY_PATH_LENGTH
+ {"POLICY_PATH_LENGTH", ERR_LIB_X509V3, X509V3_R_POLICY_PATH_LENGTH},
+ #else
+ {"POLICY_PATH_LENGTH", 34, 156},
+ #endif
+ #ifdef X509V3_R_POLICY_PATH_LENGTH_ALREADY_DEFINED
+ {"POLICY_PATH_LENGTH_ALREADY_DEFINED", ERR_LIB_X509V3, X509V3_R_POLICY_PATH_LENGTH_ALREADY_DEFINED},
+ #else
+ {"POLICY_PATH_LENGTH_ALREADY_DEFINED", 34, 157},
+ #endif
+ #ifdef X509V3_R_POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY
+ {"POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY", ERR_LIB_X509V3, X509V3_R_POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY},
+ #else
+ {"POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY", 34, 159},
+ #endif
+ #ifdef X509V3_R_SECTION_NOT_FOUND
+ {"SECTION_NOT_FOUND", ERR_LIB_X509V3, X509V3_R_SECTION_NOT_FOUND},
+ #else
+ {"SECTION_NOT_FOUND", 34, 150},
+ #endif
+ #ifdef X509V3_R_UNABLE_TO_GET_ISSUER_DETAILS
+ {"UNABLE_TO_GET_ISSUER_DETAILS", ERR_LIB_X509V3, X509V3_R_UNABLE_TO_GET_ISSUER_DETAILS},
+ #else
+ {"UNABLE_TO_GET_ISSUER_DETAILS", 34, 122},
+ #endif
+ #ifdef X509V3_R_UNABLE_TO_GET_ISSUER_KEYID
+ {"UNABLE_TO_GET_ISSUER_KEYID", ERR_LIB_X509V3, X509V3_R_UNABLE_TO_GET_ISSUER_KEYID},
+ #else
+ {"UNABLE_TO_GET_ISSUER_KEYID", 34, 123},
+ #endif
+ #ifdef X509V3_R_UNKNOWN_BIT_STRING_ARGUMENT
+ {"UNKNOWN_BIT_STRING_ARGUMENT", ERR_LIB_X509V3, X509V3_R_UNKNOWN_BIT_STRING_ARGUMENT},
+ #else
+ {"UNKNOWN_BIT_STRING_ARGUMENT", 34, 111},
+ #endif
+ #ifdef X509V3_R_UNKNOWN_EXTENSION
+ {"UNKNOWN_EXTENSION", ERR_LIB_X509V3, X509V3_R_UNKNOWN_EXTENSION},
+ #else
+ {"UNKNOWN_EXTENSION", 34, 129},
+ #endif
+ #ifdef X509V3_R_UNKNOWN_EXTENSION_NAME
+ {"UNKNOWN_EXTENSION_NAME", ERR_LIB_X509V3, X509V3_R_UNKNOWN_EXTENSION_NAME},
+ #else
+ {"UNKNOWN_EXTENSION_NAME", 34, 130},
+ #endif
+ #ifdef X509V3_R_UNKNOWN_OPTION
+ {"UNKNOWN_OPTION", ERR_LIB_X509V3, X509V3_R_UNKNOWN_OPTION},
+ #else
+ {"UNKNOWN_OPTION", 34, 120},
+ #endif
+ #ifdef X509V3_R_UNSUPPORTED_OPTION
+ {"UNSUPPORTED_OPTION", ERR_LIB_X509V3, X509V3_R_UNSUPPORTED_OPTION},
+ #else
+ {"UNSUPPORTED_OPTION", 34, 117},
+ #endif
+ #ifdef X509V3_R_UNSUPPORTED_TYPE
+ {"UNSUPPORTED_TYPE", ERR_LIB_X509V3, X509V3_R_UNSUPPORTED_TYPE},
+ #else
+ {"UNSUPPORTED_TYPE", 34, 167},
+ #endif
+ #ifdef X509V3_R_USER_TOO_LONG
+ {"USER_TOO_LONG", ERR_LIB_X509V3, X509V3_R_USER_TOO_LONG},
+ #else
+ {"USER_TOO_LONG", 34, 132},
+ #endif
+ #ifdef X509_R_AKID_MISMATCH
+ {"AKID_MISMATCH", ERR_LIB_X509, X509_R_AKID_MISMATCH},
+ #else
+ {"AKID_MISMATCH", 11, 110},
+ #endif
+ #ifdef X509_R_BAD_SELECTOR
+ {"BAD_SELECTOR", ERR_LIB_X509, X509_R_BAD_SELECTOR},
+ #else
+ {"BAD_SELECTOR", 11, 133},
+ #endif
+ #ifdef X509_R_BAD_X509_FILETYPE
+ {"BAD_X509_FILETYPE", ERR_LIB_X509, X509_R_BAD_X509_FILETYPE},
+ #else
+ {"BAD_X509_FILETYPE", 11, 100},
+ #endif
+ #ifdef X509_R_BASE64_DECODE_ERROR
+ {"BASE64_DECODE_ERROR", ERR_LIB_X509, X509_R_BASE64_DECODE_ERROR},
+ #else
+ {"BASE64_DECODE_ERROR", 11, 118},
+ #endif
+ #ifdef X509_R_CANT_CHECK_DH_KEY
+ {"CANT_CHECK_DH_KEY", ERR_LIB_X509, X509_R_CANT_CHECK_DH_KEY},
+ #else
+ {"CANT_CHECK_DH_KEY", 11, 114},
+ #endif
+ #ifdef X509_R_CERTIFICATE_VERIFICATION_FAILED
+ {"CERTIFICATE_VERIFICATION_FAILED", ERR_LIB_X509, X509_R_CERTIFICATE_VERIFICATION_FAILED},
+ #else
+ {"CERTIFICATE_VERIFICATION_FAILED", 11, 139},
+ #endif
+ #ifdef X509_R_CERT_ALREADY_IN_HASH_TABLE
+ {"CERT_ALREADY_IN_HASH_TABLE", ERR_LIB_X509, X509_R_CERT_ALREADY_IN_HASH_TABLE},
+ #else
+ {"CERT_ALREADY_IN_HASH_TABLE", 11, 101},
+ #endif
+ #ifdef X509_R_CRL_ALREADY_DELTA
+ {"CRL_ALREADY_DELTA", ERR_LIB_X509, X509_R_CRL_ALREADY_DELTA},
+ #else
+ {"CRL_ALREADY_DELTA", 11, 127},
+ #endif
+ #ifdef X509_R_CRL_VERIFY_FAILURE
+ {"CRL_VERIFY_FAILURE", ERR_LIB_X509, X509_R_CRL_VERIFY_FAILURE},
+ #else
+ {"CRL_VERIFY_FAILURE", 11, 131},
+ #endif
+ #ifdef X509_R_ERROR_GETTING_MD_BY_NID
+ {"ERROR_GETTING_MD_BY_NID", ERR_LIB_X509, X509_R_ERROR_GETTING_MD_BY_NID},
+ #else
+ {"ERROR_GETTING_MD_BY_NID", 11, 141},
+ #endif
+ #ifdef X509_R_ERROR_USING_SIGINF_SET
+ {"ERROR_USING_SIGINF_SET", ERR_LIB_X509, X509_R_ERROR_USING_SIGINF_SET},
+ #else
+ {"ERROR_USING_SIGINF_SET", 11, 142},
+ #endif
+ #ifdef X509_R_IDP_MISMATCH
+ {"IDP_MISMATCH", ERR_LIB_X509, X509_R_IDP_MISMATCH},
+ #else
+ {"IDP_MISMATCH", 11, 128},
+ #endif
+ #ifdef X509_R_INVALID_ATTRIBUTES
+ {"INVALID_ATTRIBUTES", ERR_LIB_X509, X509_R_INVALID_ATTRIBUTES},
+ #else
+ {"INVALID_ATTRIBUTES", 11, 138},
+ #endif
+ #ifdef X509_R_INVALID_DIRECTORY
+ {"INVALID_DIRECTORY", ERR_LIB_X509, X509_R_INVALID_DIRECTORY},
+ #else
+ {"INVALID_DIRECTORY", 11, 113},
+ #endif
+ #ifdef X509_R_INVALID_DISTPOINT
+ {"INVALID_DISTPOINT", ERR_LIB_X509, X509_R_INVALID_DISTPOINT},
+ #else
+ {"INVALID_DISTPOINT", 11, 143},
+ #endif
+ #ifdef X509_R_INVALID_FIELD_NAME
+ {"INVALID_FIELD_NAME", ERR_LIB_X509, X509_R_INVALID_FIELD_NAME},
+ #else
+ {"INVALID_FIELD_NAME", 11, 119},
+ #endif
+ #ifdef X509_R_INVALID_TRUST
+ {"INVALID_TRUST", ERR_LIB_X509, X509_R_INVALID_TRUST},
+ #else
+ {"INVALID_TRUST", 11, 123},
+ #endif
+ #ifdef X509_R_ISSUER_MISMATCH
+ {"ISSUER_MISMATCH", ERR_LIB_X509, X509_R_ISSUER_MISMATCH},
+ #else
+ {"ISSUER_MISMATCH", 11, 129},
+ #endif
+ #ifdef X509_R_KEY_TYPE_MISMATCH
+ {"KEY_TYPE_MISMATCH", ERR_LIB_X509, X509_R_KEY_TYPE_MISMATCH},
+ #else
+ {"KEY_TYPE_MISMATCH", 11, 115},
+ #endif
+ #ifdef X509_R_KEY_VALUES_MISMATCH
+ {"KEY_VALUES_MISMATCH", ERR_LIB_X509, X509_R_KEY_VALUES_MISMATCH},
+ #else
+ {"KEY_VALUES_MISMATCH", 11, 116},
+ #endif
+ #ifdef X509_R_LOADING_CERT_DIR
+ {"LOADING_CERT_DIR", ERR_LIB_X509, X509_R_LOADING_CERT_DIR},
+ #else
+ {"LOADING_CERT_DIR", 11, 103},
+ #endif
+ #ifdef X509_R_LOADING_DEFAULTS
+ {"LOADING_DEFAULTS", ERR_LIB_X509, X509_R_LOADING_DEFAULTS},
+ #else
+ {"LOADING_DEFAULTS", 11, 104},
+ #endif
+ #ifdef X509_R_METHOD_NOT_SUPPORTED
+ {"METHOD_NOT_SUPPORTED", ERR_LIB_X509, X509_R_METHOD_NOT_SUPPORTED},
+ #else
+ {"METHOD_NOT_SUPPORTED", 11, 124},
+ #endif
+ #ifdef X509_R_NAME_TOO_LONG
+ {"NAME_TOO_LONG", ERR_LIB_X509, X509_R_NAME_TOO_LONG},
+ #else
+ {"NAME_TOO_LONG", 11, 134},
+ #endif
+ #ifdef X509_R_NEWER_CRL_NOT_NEWER
+ {"NEWER_CRL_NOT_NEWER", ERR_LIB_X509, X509_R_NEWER_CRL_NOT_NEWER},
+ #else
+ {"NEWER_CRL_NOT_NEWER", 11, 132},
+ #endif
+ #ifdef X509_R_NO_CERTIFICATE_FOUND
+ {"NO_CERTIFICATE_FOUND", ERR_LIB_X509, X509_R_NO_CERTIFICATE_FOUND},
+ #else
+ {"NO_CERTIFICATE_FOUND", 11, 135},
+ #endif
+ #ifdef X509_R_NO_CERTIFICATE_OR_CRL_FOUND
+ {"NO_CERTIFICATE_OR_CRL_FOUND", ERR_LIB_X509, X509_R_NO_CERTIFICATE_OR_CRL_FOUND},
+ #else
+ {"NO_CERTIFICATE_OR_CRL_FOUND", 11, 136},
+ #endif
+ #ifdef X509_R_NO_CERT_SET_FOR_US_TO_VERIFY
+ {"NO_CERT_SET_FOR_US_TO_VERIFY", ERR_LIB_X509, X509_R_NO_CERT_SET_FOR_US_TO_VERIFY},
+ #else
+ {"NO_CERT_SET_FOR_US_TO_VERIFY", 11, 105},
+ #endif
+ #ifdef X509_R_NO_CRL_FOUND
+ {"NO_CRL_FOUND", ERR_LIB_X509, X509_R_NO_CRL_FOUND},
+ #else
+ {"NO_CRL_FOUND", 11, 137},
+ #endif
+ #ifdef X509_R_NO_CRL_NUMBER
+ {"NO_CRL_NUMBER", ERR_LIB_X509, X509_R_NO_CRL_NUMBER},
+ #else
+ {"NO_CRL_NUMBER", 11, 130},
+ #endif
+ #ifdef X509_R_PUBLIC_KEY_DECODE_ERROR
+ {"PUBLIC_KEY_DECODE_ERROR", ERR_LIB_X509, X509_R_PUBLIC_KEY_DECODE_ERROR},
+ #else
+ {"PUBLIC_KEY_DECODE_ERROR", 11, 125},
+ #endif
+ #ifdef X509_R_PUBLIC_KEY_ENCODE_ERROR
+ {"PUBLIC_KEY_ENCODE_ERROR", ERR_LIB_X509, X509_R_PUBLIC_KEY_ENCODE_ERROR},
+ #else
+ {"PUBLIC_KEY_ENCODE_ERROR", 11, 126},
+ #endif
+ #ifdef X509_R_SHOULD_RETRY
+ {"SHOULD_RETRY", ERR_LIB_X509, X509_R_SHOULD_RETRY},
+ #else
+ {"SHOULD_RETRY", 11, 106},
+ #endif
+ #ifdef X509_R_UNABLE_TO_FIND_PARAMETERS_IN_CHAIN
+ {"UNABLE_TO_FIND_PARAMETERS_IN_CHAIN", ERR_LIB_X509, X509_R_UNABLE_TO_FIND_PARAMETERS_IN_CHAIN},
+ #else
+ {"UNABLE_TO_FIND_PARAMETERS_IN_CHAIN", 11, 107},
+ #endif
+ #ifdef X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY
+ {"UNABLE_TO_GET_CERTS_PUBLIC_KEY", ERR_LIB_X509, X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY},
+ #else
+ {"UNABLE_TO_GET_CERTS_PUBLIC_KEY", 11, 108},
+ #endif
+ #ifdef X509_R_UNKNOWN_KEY_TYPE
+ {"UNKNOWN_KEY_TYPE", ERR_LIB_X509, X509_R_UNKNOWN_KEY_TYPE},
+ #else
+ {"UNKNOWN_KEY_TYPE", 11, 117},
+ #endif
+ #ifdef X509_R_UNKNOWN_NID
+ {"UNKNOWN_NID", ERR_LIB_X509, X509_R_UNKNOWN_NID},
+ #else
+ {"UNKNOWN_NID", 11, 109},
+ #endif
+ #ifdef X509_R_UNKNOWN_PURPOSE_ID
+ {"UNKNOWN_PURPOSE_ID", ERR_LIB_X509, X509_R_UNKNOWN_PURPOSE_ID},
+ #else
+ {"UNKNOWN_PURPOSE_ID", 11, 121},
+ #endif
+ #ifdef X509_R_UNKNOWN_SIGID_ALGS
+ {"UNKNOWN_SIGID_ALGS", ERR_LIB_X509, X509_R_UNKNOWN_SIGID_ALGS},
+ #else
+ {"UNKNOWN_SIGID_ALGS", 11, 144},
+ #endif
+ #ifdef X509_R_UNKNOWN_TRUST_ID
+ {"UNKNOWN_TRUST_ID", ERR_LIB_X509, X509_R_UNKNOWN_TRUST_ID},
+ #else
+ {"UNKNOWN_TRUST_ID", 11, 120},
+ #endif
+ #ifdef X509_R_UNSUPPORTED_ALGORITHM
+ {"UNSUPPORTED_ALGORITHM", ERR_LIB_X509, X509_R_UNSUPPORTED_ALGORITHM},
+ #else
+ {"UNSUPPORTED_ALGORITHM", 11, 111},
+ #endif
+ #ifdef X509_R_WRONG_LOOKUP_TYPE
+ {"WRONG_LOOKUP_TYPE", ERR_LIB_X509, X509_R_WRONG_LOOKUP_TYPE},
+ #else
+ {"WRONG_LOOKUP_TYPE", 11, 112},
+ #endif
+ #ifdef X509_R_WRONG_TYPE
+ {"WRONG_TYPE", ERR_LIB_X509, X509_R_WRONG_TYPE},
+ #else
+ {"WRONG_TYPE", 11, 122},
+ #endif
+ { NULL }
+};
+
diff --git a/Modules/_testcapi/clinic/exceptions.c.h b/Modules/_testcapi/clinic/exceptions.c.h
index 2cc4ef3dc0d497..01730ffa2ed036 100644
--- a/Modules/_testcapi/clinic/exceptions.c.h
+++ b/Modules/_testcapi/clinic/exceptions.c.h
@@ -395,4 +395,35 @@ _testcapi_traceback_print(PyObject *module, PyObject *const *args, Py_ssize_t na
exit:
return return_value;
}
-/*[clinic end generated code: output=ec1b2e62adea9846 input=a9049054013a1b77]*/
+
+PyDoc_STRVAR(_testcapi_unstable_exc_prep_reraise_star__doc__,
+"unstable_exc_prep_reraise_star($module, orig, excs, /)\n"
+"--\n"
+"\n"
+"To test PyUnstable_Exc_PrepReraiseStar.");
+
+#define _TESTCAPI_UNSTABLE_EXC_PREP_RERAISE_STAR_METHODDEF \
+ {"unstable_exc_prep_reraise_star", _PyCFunction_CAST(_testcapi_unstable_exc_prep_reraise_star), METH_FASTCALL, _testcapi_unstable_exc_prep_reraise_star__doc__},
+
+static PyObject *
+_testcapi_unstable_exc_prep_reraise_star_impl(PyObject *module,
+ PyObject *orig, PyObject *excs);
+
+static PyObject *
+_testcapi_unstable_exc_prep_reraise_star(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ PyObject *orig;
+ PyObject *excs;
+
+ if (!_PyArg_CheckPositional("unstable_exc_prep_reraise_star", nargs, 2, 2)) {
+ goto exit;
+ }
+ orig = args[0];
+ excs = args[1];
+ return_value = _testcapi_unstable_exc_prep_reraise_star_impl(module, orig, excs);
+
+exit:
+ return return_value;
+}
+/*[clinic end generated code: output=fd6aef54f195c77b input=a9049054013a1b77]*/
diff --git a/Modules/_testcapi/exceptions.c b/Modules/_testcapi/exceptions.c
index 0a9902c135a7e5..a627bf1717fe0c 100644
--- a/Modules/_testcapi/exceptions.c
+++ b/Modules/_testcapi/exceptions.c
@@ -288,6 +288,22 @@ _testcapi_traceback_print_impl(PyObject *module, PyObject *traceback,
Py_RETURN_NONE;
}
+/*[clinic input]
+_testcapi.unstable_exc_prep_reraise_star
+ orig: object
+ excs: object
+ /
+To test PyUnstable_Exc_PrepReraiseStar.
+[clinic start generated code]*/
+
+static PyObject *
+_testcapi_unstable_exc_prep_reraise_star_impl(PyObject *module,
+ PyObject *orig, PyObject *excs)
+/*[clinic end generated code: output=850cf008e0563c77 input=27fbcda2203eb301]*/
+{
+ return PyUnstable_Exc_PrepReraiseStar(orig, excs);
+}
+
/*
* Define the PyRecurdingInfinitelyError_Type
@@ -328,6 +344,7 @@ static PyMethodDef test_methods[] = {
_TESTCAPI_SET_EXCEPTION_METHODDEF
_TESTCAPI_TRACEBACK_PRINT_METHODDEF
_TESTCAPI_WRITE_UNRAISABLE_EXC_METHODDEF
+ _TESTCAPI_UNSTABLE_EXC_PREP_RERAISE_STAR_METHODDEF
{NULL},
};
diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c
index aff09aac80c610..b8ad00a0197421 100644
--- a/Modules/_testcapimodule.c
+++ b/Modules/_testcapimodule.c
@@ -2606,6 +2606,73 @@ type_assign_version(PyObject *self, PyObject *type)
}
+static PyObject *
+type_get_tp_bases(PyObject *self, PyObject *type)
+{
+ PyObject *bases = ((PyTypeObject *)type)->tp_bases;
+ if (bases == NULL) {
+ Py_RETURN_NONE;
+ }
+ return Py_NewRef(bases);
+}
+
+static PyObject *
+type_get_tp_mro(PyObject *self, PyObject *type)
+{
+ PyObject *mro = ((PyTypeObject *)type)->tp_mro;
+ if (mro == NULL) {
+ Py_RETURN_NONE;
+ }
+ return Py_NewRef(mro);
+}
+
+
+/* We only use 2 in test_capi/test_misc.py. */
+#define NUM_BASIC_STATIC_TYPES 2
+static PyTypeObject BasicStaticTypes[NUM_BASIC_STATIC_TYPES] = {
+#define INIT_BASIC_STATIC_TYPE \
+ { \
+ PyVarObject_HEAD_INIT(NULL, 0) \
+ .tp_name = "BasicStaticType", \
+ .tp_basicsize = sizeof(PyObject), \
+ }
+ INIT_BASIC_STATIC_TYPE,
+ INIT_BASIC_STATIC_TYPE,
+#undef INIT_BASIC_STATIC_TYPE
+};
+static int num_basic_static_types_used = 0;
+
+static PyObject *
+get_basic_static_type(PyObject *self, PyObject *args)
+{
+ PyObject *base = NULL;
+ if (!PyArg_ParseTuple(args, "|O", &base)) {
+ return NULL;
+ }
+ assert(base == NULL || PyType_Check(base));
+
+ if(num_basic_static_types_used >= NUM_BASIC_STATIC_TYPES) {
+ PyErr_SetString(PyExc_RuntimeError, "no more available basic static types");
+ return NULL;
+ }
+ PyTypeObject *cls = &BasicStaticTypes[num_basic_static_types_used++];
+
+ if (base != NULL) {
+ cls->tp_bases = Py_BuildValue("(O)", base);
+ if (cls->tp_bases == NULL) {
+ return NULL;
+ }
+ cls->tp_base = (PyTypeObject *)Py_NewRef(base);
+ }
+ if (PyType_Ready(cls) < 0) {
+ Py_DECREF(cls->tp_bases);
+ Py_DECREF(cls->tp_base);
+ return NULL;
+ }
+ return (PyObject *)cls;
+}
+
+
// Test PyThreadState C API
static PyObject *
test_tstate_capi(PyObject *self, PyObject *Py_UNUSED(args))
@@ -3361,6 +3428,9 @@ static PyMethodDef TestMethods[] = {
{"test_py_is_funcs", test_py_is_funcs, METH_NOARGS},
{"type_get_version", type_get_version, METH_O, PyDoc_STR("type->tp_version_tag")},
{"type_assign_version", type_assign_version, METH_O, PyDoc_STR("PyUnstable_Type_AssignVersionTag")},
+ {"type_get_tp_bases", type_get_tp_bases, METH_O},
+ {"type_get_tp_mro", type_get_tp_mro, METH_O},
+ {"get_basic_static_type", get_basic_static_type, METH_VARARGS, NULL},
{"test_tstate_capi", test_tstate_capi, METH_NOARGS, NULL},
{"frame_getlocals", frame_getlocals, METH_O, NULL},
{"frame_getglobals", frame_getglobals, METH_O, NULL},
diff --git a/Modules/_testinternalcapi.c b/Modules/_testinternalcapi.c
index b91f7b620fdb4e..8267dbf6779017 100644
--- a/Modules/_testinternalcapi.c
+++ b/Modules/_testinternalcapi.c
@@ -762,19 +762,24 @@ clear_extension(PyObject *self, PyObject *args)
static PyObject *
write_perf_map_entry(PyObject *self, PyObject *args)
{
+ PyObject *code_addr_v;
const void *code_addr;
unsigned int code_size;
const char *entry_name;
- if (!PyArg_ParseTuple(args, "KIs", &code_addr, &code_size, &entry_name))
+ if (!PyArg_ParseTuple(args, "OIs", &code_addr_v, &code_size, &entry_name))
return NULL;
+ code_addr = PyLong_AsVoidPtr(code_addr_v);
+ if (code_addr == NULL) {
+ return NULL;
+ }
int ret = PyUnstable_WritePerfMapEntry(code_addr, code_size, entry_name);
- if (ret == -1) {
- PyErr_SetString(PyExc_OSError, "Failed to write performance map entry");
+ if (ret < 0) {
+ PyErr_SetFromErrno(PyExc_OSError);
return NULL;
}
- return Py_BuildValue("i", ret);
+ return PyLong_FromLong(ret);
}
static PyObject *
diff --git a/Modules/_testsinglephase.c b/Modules/_testsinglephase.c
index a16157702ae789..dca7abff89146e 100644
--- a/Modules/_testsinglephase.c
+++ b/Modules/_testsinglephase.c
@@ -140,7 +140,9 @@ init_module(PyObject *module, module_state *state)
if (initialized == NULL) {
return -1;
}
- if (PyModule_AddObjectRef(module, "_module_initialized", initialized) != 0) {
+ int rc = PyModule_AddObjectRef(module, "_module_initialized", initialized);
+ Py_DECREF(initialized);
+ if (rc < 0) {
return -1;
}
@@ -246,6 +248,25 @@ basic__clear_globals(PyObject *self, PyObject *Py_UNUSED(ignored))
basic__clear_globals_doc}
+PyDoc_STRVAR(basic__clear_module_state_doc, "_clear_module_state()\n\
+\n\
+Free the module state and set it to uninitialized.");
+
+static PyObject *
+basic__clear_module_state(PyObject *self, PyObject *Py_UNUSED(ignored))
+{
+ module_state *state = get_module_state(self);
+ if (state != NULL) {
+ clear_state(state);
+ }
+ Py_RETURN_NONE;
+}
+
+#define _CLEAR_MODULE_STATE_METHODDEF \
+ {"_clear_module_state", basic__clear_module_state, METH_NOARGS, \
+ basic__clear_module_state_doc}
+
+
/*********************************************/
/* the _testsinglephase module (and aliases) */
/*********************************************/
@@ -406,7 +427,7 @@ PyInit__testsinglephase_with_reinit(void)
/* the _testsinglephase_with_state module */
/******************************************/
-/* This ia less typical of legacy extensions in the wild:
+/* This is less typical of legacy extensions in the wild:
- single-phase init (same as _testsinglephase above)
- has some module state
- supports repeated initialization
@@ -422,6 +443,7 @@ static PyMethodDef TestMethods_WithState[] = {
LOOK_UP_SELF_METHODDEF,
SUM_METHODDEF,
STATE_INITIALIZED_METHODDEF,
+ _CLEAR_MODULE_STATE_METHODDEF,
{NULL, NULL} /* sentinel */
};
diff --git a/Modules/_threadmodule.c b/Modules/_threadmodule.c
index 5d753b4a0ebc5e..b6f878e07526db 100644
--- a/Modules/_threadmodule.c
+++ b/Modules/_threadmodule.c
@@ -1155,6 +1155,11 @@ thread_PyThread_start_new_thread(PyObject *self, PyObject *fargs)
"thread is not supported for isolated subinterpreters");
return NULL;
}
+ if (interp->finalizing) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "can't create new thread at interpreter shutdown");
+ return NULL;
+ }
struct bootstate *boot = PyMem_NEW(struct bootstate, 1);
if (boot == NULL) {
diff --git a/Modules/_winapi.c b/Modules/_winapi.c
index 1e02dbc1a4bfd1..bbc9facd227c9e 100644
--- a/Modules/_winapi.c
+++ b/Modules/_winapi.c
@@ -1947,6 +1947,7 @@ _winapi_GetFileType_impl(PyObject *module, HANDLE handle)
return result;
}
+
/*[clinic input]
_winapi._mimetypes_read_windows_registry
@@ -2075,6 +2076,67 @@ _winapi_NeedCurrentDirectoryForExePath_impl(PyObject *module,
return result;
}
+
+/*[clinic input]
+_winapi.CopyFile2
+
+ existing_file_name: LPCWSTR
+ new_file_name: LPCWSTR
+ flags: DWORD
+ progress_routine: object = None
+
+Copies a file from one name to a new name.
+
+This is implemented using the CopyFile2 API, which preserves all stat
+and metadata information apart from security attributes.
+
+progress_routine is reserved for future use, but is currently not
+implemented. Its value is ignored.
+[clinic start generated code]*/
+
+static PyObject *
+_winapi_CopyFile2_impl(PyObject *module, LPCWSTR existing_file_name,
+ LPCWSTR new_file_name, DWORD flags,
+ PyObject *progress_routine)
+/*[clinic end generated code: output=43d960d9df73d984 input=fb976b8d1492d130]*/
+{
+ HRESULT hr;
+ COPYFILE2_EXTENDED_PARAMETERS params = { sizeof(COPYFILE2_EXTENDED_PARAMETERS) };
+
+ if (PySys_Audit("_winapi.CopyFile2", "uuI",
+ existing_file_name, new_file_name, flags) < 0) {
+ return NULL;
+ }
+
+ params.dwCopyFlags = flags;
+ /* For future implementation. We ignore the value for now so that
+ users only have to test for 'CopyFile2' existing and not whether
+ the additional parameter exists.
+ if (progress_routine != Py_None) {
+ params.pProgressRoutine = _winapi_CopyFile2ProgressRoutine;
+ params.pvCallbackContext = Py_NewRef(progress_routine);
+ }
+ */
+ Py_BEGIN_ALLOW_THREADS;
+ hr = CopyFile2(existing_file_name, new_file_name, ¶ms);
+ Py_END_ALLOW_THREADS;
+ /* For future implementation.
+ if (progress_routine != Py_None) {
+ Py_DECREF(progress_routine);
+ }
+ */
+ if (FAILED(hr)) {
+ if ((hr & 0xFFFF0000) == 0x80070000) {
+ PyErr_SetFromWindowsErr(hr & 0xFFFF);
+ } else {
+ PyErr_SetFromWindowsErr(hr);
+ }
+ return NULL;
+ }
+ Py_RETURN_NONE;
+}
+
+
static PyMethodDef winapi_functions[] = {
_WINAPI_CLOSEHANDLE_METHODDEF
_WINAPI_CONNECTNAMEDPIPE_METHODDEF
@@ -2110,6 +2172,7 @@ static PyMethodDef winapi_functions[] = {
_WINAPI_GETFILETYPE_METHODDEF
_WINAPI__MIMETYPES_READ_WINDOWS_REGISTRY_METHODDEF
_WINAPI_NEEDCURRENTDIRECTORYFOREXEPATH_METHODDEF
+ _WINAPI_COPYFILE2_METHODDEF
{NULL, NULL}
};
@@ -2146,6 +2209,7 @@ static int winapi_exec(PyObject *m)
WINAPI_CONSTANT(F_DWORD, CREATE_NEW_PROCESS_GROUP);
WINAPI_CONSTANT(F_DWORD, DUPLICATE_SAME_ACCESS);
WINAPI_CONSTANT(F_DWORD, DUPLICATE_CLOSE_SOURCE);
+ WINAPI_CONSTANT(F_DWORD, ERROR_ACCESS_DENIED);
WINAPI_CONSTANT(F_DWORD, ERROR_ALREADY_EXISTS);
WINAPI_CONSTANT(F_DWORD, ERROR_BROKEN_PIPE);
WINAPI_CONSTANT(F_DWORD, ERROR_IO_PENDING);
@@ -2159,6 +2223,7 @@ static int winapi_exec(PyObject *m)
WINAPI_CONSTANT(F_DWORD, ERROR_OPERATION_ABORTED);
WINAPI_CONSTANT(F_DWORD, ERROR_PIPE_BUSY);
WINAPI_CONSTANT(F_DWORD, ERROR_PIPE_CONNECTED);
+ WINAPI_CONSTANT(F_DWORD, ERROR_PRIVILEGE_NOT_HELD);
WINAPI_CONSTANT(F_DWORD, ERROR_SEM_TIMEOUT);
WINAPI_CONSTANT(F_DWORD, FILE_FLAG_FIRST_PIPE_INSTANCE);
WINAPI_CONSTANT(F_DWORD, FILE_FLAG_OVERLAPPED);
@@ -2252,6 +2317,34 @@ static int winapi_exec(PyObject *m)
WINAPI_CONSTANT(F_DWORD, LCMAP_TRADITIONAL_CHINESE);
WINAPI_CONSTANT(F_DWORD, LCMAP_UPPERCASE);
+ WINAPI_CONSTANT(F_DWORD, COPY_FILE_ALLOW_DECRYPTED_DESTINATION);
+ WINAPI_CONSTANT(F_DWORD, COPY_FILE_COPY_SYMLINK);
+ WINAPI_CONSTANT(F_DWORD, COPY_FILE_FAIL_IF_EXISTS);
+ WINAPI_CONSTANT(F_DWORD, COPY_FILE_NO_BUFFERING);
+ WINAPI_CONSTANT(F_DWORD, COPY_FILE_NO_OFFLOAD);
+ WINAPI_CONSTANT(F_DWORD, COPY_FILE_OPEN_SOURCE_FOR_WRITE);
+ WINAPI_CONSTANT(F_DWORD, COPY_FILE_RESTARTABLE);
+ WINAPI_CONSTANT(F_DWORD, COPY_FILE_REQUEST_SECURITY_PRIVILEGES);
+ WINAPI_CONSTANT(F_DWORD, COPY_FILE_RESUME_FROM_PAUSE);
+#ifndef COPY_FILE_REQUEST_COMPRESSED_TRAFFIC
+ // Only defined in newer WinSDKs
+ #define COPY_FILE_REQUEST_COMPRESSED_TRAFFIC 0x10000000
+#endif
+ WINAPI_CONSTANT(F_DWORD, COPY_FILE_REQUEST_COMPRESSED_TRAFFIC);
+
+ WINAPI_CONSTANT(F_DWORD, COPYFILE2_CALLBACK_CHUNK_STARTED);
+ WINAPI_CONSTANT(F_DWORD, COPYFILE2_CALLBACK_CHUNK_FINISHED);
+ WINAPI_CONSTANT(F_DWORD, COPYFILE2_CALLBACK_STREAM_STARTED);
+ WINAPI_CONSTANT(F_DWORD, COPYFILE2_CALLBACK_STREAM_FINISHED);
+ WINAPI_CONSTANT(F_DWORD, COPYFILE2_CALLBACK_POLL_CONTINUE);
+ WINAPI_CONSTANT(F_DWORD, COPYFILE2_CALLBACK_ERROR);
+
+ WINAPI_CONSTANT(F_DWORD, COPYFILE2_PROGRESS_CONTINUE);
+ WINAPI_CONSTANT(F_DWORD, COPYFILE2_PROGRESS_CANCEL);
+ WINAPI_CONSTANT(F_DWORD, COPYFILE2_PROGRESS_STOP);
+ WINAPI_CONSTANT(F_DWORD, COPYFILE2_PROGRESS_QUIET);
+ WINAPI_CONSTANT(F_DWORD, COPYFILE2_PROGRESS_PAUSE);
+
WINAPI_CONSTANT("i", NULL);
return 0;
diff --git a/Modules/clinic/_winapi.c.h b/Modules/clinic/_winapi.c.h
index 7bc63e612be348..3767b19d76db05 100644
--- a/Modules/clinic/_winapi.c.h
+++ b/Modules/clinic/_winapi.c.h
@@ -1411,4 +1411,74 @@ _winapi_NeedCurrentDirectoryForExePath(PyObject *module, PyObject *arg)
return return_value;
}
-/*[clinic end generated code: output=96ea65ece7912d0a input=a9049054013a1b77]*/
+
+PyDoc_STRVAR(_winapi_CopyFile2__doc__,
+"CopyFile2($module, /, existing_file_name, new_file_name, flags,\n"
+" progress_routine=None)\n"
+"--\n"
+"\n"
+"Copies a file from one name to a new name.\n"
+"\n"
+"This is implemented using the CopyFile2 API, which preserves all stat\n"
+"and metadata information apart from security attributes.\n"
+"\n"
+"progress_routine is reserved for future use, but is currently not\n"
+"implemented. Its value is ignored.");
+
+#define _WINAPI_COPYFILE2_METHODDEF \
+ {"CopyFile2", _PyCFunction_CAST(_winapi_CopyFile2), METH_FASTCALL|METH_KEYWORDS, _winapi_CopyFile2__doc__},
+
+static PyObject *
+_winapi_CopyFile2_impl(PyObject *module, LPCWSTR existing_file_name,
+ LPCWSTR new_file_name, DWORD flags,
+ PyObject *progress_routine);
+
+static PyObject *
+_winapi_CopyFile2(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
+{
+ PyObject *return_value = NULL;
+ #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
+
+ #define NUM_KEYWORDS 4
+ static struct {
+ PyGC_Head _this_is_not_used;
+ PyObject_VAR_HEAD
+ PyObject *ob_item[NUM_KEYWORDS];
+ } _kwtuple = {
+ .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
+ .ob_item = { &_Py_ID(existing_file_name), &_Py_ID(new_file_name), &_Py_ID(flags), &_Py_ID(progress_routine), },
+ };
+ #undef NUM_KEYWORDS
+ #define KWTUPLE (&_kwtuple.ob_base.ob_base)
+
+ #else // !Py_BUILD_CORE
+ # define KWTUPLE NULL
+ #endif // !Py_BUILD_CORE
+
+ static const char * const _keywords[] = {"existing_file_name", "new_file_name", "flags", "progress_routine", NULL};
+ static _PyArg_Parser _parser = {
+ .keywords = _keywords,
+ .format = "O&O&k|O:CopyFile2",
+ .kwtuple = KWTUPLE,
+ };
+ #undef KWTUPLE
+ LPCWSTR existing_file_name = NULL;
+ LPCWSTR new_file_name = NULL;
+ DWORD flags;
+ PyObject *progress_routine = Py_None;
+
+ if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
+ _PyUnicode_WideCharString_Converter, &existing_file_name, _PyUnicode_WideCharString_Converter, &new_file_name, &flags, &progress_routine)) {
+ goto exit;
+ }
+ return_value = _winapi_CopyFile2_impl(module, existing_file_name, new_file_name, flags, progress_routine);
+
+exit:
+ /* Cleanup for existing_file_name */
+ PyMem_Free((void *)existing_file_name);
+ /* Cleanup for new_file_name */
+ PyMem_Free((void *)new_file_name);
+
+ return return_value;
+}
+/*[clinic end generated code: output=be1343b3759e0c96 input=a9049054013a1b77]*/
diff --git a/Modules/clinic/posixmodule.c.h b/Modules/clinic/posixmodule.c.h
index 8b0550d832fc0a..3312bd667694dd 100644
--- a/Modules/clinic/posixmodule.c.h
+++ b/Modules/clinic/posixmodule.c.h
@@ -1715,6 +1715,70 @@ os_listmounts(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObjec
#if defined(MS_WINDOWS)
+PyDoc_STRVAR(os__path_isdevdrive__doc__,
+"_path_isdevdrive($module, /, path)\n"
+"--\n"
+"\n"
+"Determines whether the specified path is on a Windows Dev Drive.");
+
+#define OS__PATH_ISDEVDRIVE_METHODDEF \
+ {"_path_isdevdrive", _PyCFunction_CAST(os__path_isdevdrive), METH_FASTCALL|METH_KEYWORDS, os__path_isdevdrive__doc__},
+
+static PyObject *
+os__path_isdevdrive_impl(PyObject *module, path_t *path);
+
+static PyObject *
+os__path_isdevdrive(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
+{
+ PyObject *return_value = NULL;
+ #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
+
+ #define NUM_KEYWORDS 1
+ static struct {
+ PyGC_Head _this_is_not_used;
+ PyObject_VAR_HEAD
+ PyObject *ob_item[NUM_KEYWORDS];
+ } _kwtuple = {
+ .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
+ .ob_item = { &_Py_ID(path), },
+ };
+ #undef NUM_KEYWORDS
+ #define KWTUPLE (&_kwtuple.ob_base.ob_base)
+
+ #else // !Py_BUILD_CORE
+ # define KWTUPLE NULL
+ #endif // !Py_BUILD_CORE
+
+ static const char * const _keywords[] = {"path", NULL};
+ static _PyArg_Parser _parser = {
+ .keywords = _keywords,
+ .fname = "_path_isdevdrive",
+ .kwtuple = KWTUPLE,
+ };
+ #undef KWTUPLE
+ PyObject *argsbuf[1];
+ path_t path = PATH_T_INITIALIZE("_path_isdevdrive", "path", 0, 0);
+
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
+ if (!args) {
+ goto exit;
+ }
+ if (!path_converter(args[0], &path)) {
+ goto exit;
+ }
+ return_value = os__path_isdevdrive_impl(module, &path);
+
+exit:
+ /* Cleanup for path */
+ path_cleanup(&path);
+
+ return return_value;
+}
+
+#endif /* defined(MS_WINDOWS) */
+
+#if defined(MS_WINDOWS)
+
PyDoc_STRVAR(os__getfullpathname__doc__,
"_getfullpathname($module, path, /)\n"
"--\n"
@@ -11379,6 +11443,10 @@ os_waitstatus_to_exitcode(PyObject *module, PyObject *const *args, Py_ssize_t na
#define OS_LISTMOUNTS_METHODDEF
#endif /* !defined(OS_LISTMOUNTS_METHODDEF) */
+#ifndef OS__PATH_ISDEVDRIVE_METHODDEF
+ #define OS__PATH_ISDEVDRIVE_METHODDEF
+#endif /* !defined(OS__PATH_ISDEVDRIVE_METHODDEF) */
+
#ifndef OS__GETFULLPATHNAME_METHODDEF
#define OS__GETFULLPATHNAME_METHODDEF
#endif /* !defined(OS__GETFULLPATHNAME_METHODDEF) */
@@ -11922,4 +11990,4 @@ os_waitstatus_to_exitcode(PyObject *module, PyObject *const *args, Py_ssize_t na
#ifndef OS_WAITSTATUS_TO_EXITCODE_METHODDEF
#define OS_WAITSTATUS_TO_EXITCODE_METHODDEF
#endif /* !defined(OS_WAITSTATUS_TO_EXITCODE_METHODDEF) */
-/*[clinic end generated code: output=47750e0e29c8d707 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=9d8b0d6717c9af54 input=a9049054013a1b77]*/
diff --git a/Modules/hashlib.h b/Modules/hashlib.h
index 56ae7a5e50bf58..a8bad9dd87a939 100644
--- a/Modules/hashlib.h
+++ b/Modules/hashlib.h
@@ -37,6 +37,13 @@
* LEAVE_HASHLIB block or explicitly acquire and release the lock inside
* a PY_BEGIN / END_ALLOW_THREADS block if they wish to release the GIL for
* an operation.
+ *
+ * These only drop the GIL if the lock acquisition itself is likely to
+ * block. Thus the non-blocking acquire gating the GIL release for a
+ * blocking lock acquisition. The intent of these macros is to surround
+ * the assumed always "fast" operations that you aren't releasing the
+ * GIL around. Otherwise use code similar to what you see in hash
+ * function update() methods.
*/
#include "pythread.h"
@@ -53,7 +60,7 @@
PyThread_release_lock((obj)->lock); \
}
-/* TODO(gps): We should probably make this a module or EVPobject attribute
+/* TODO(gpshead): We should make this a module or class attribute
* to allow the user to optimize based on the platform they're using. */
#define HASHLIB_GIL_MINSIZE 2048
diff --git a/Modules/itertoolsmodule.c b/Modules/itertoolsmodule.c
index 555eab09935e9e..4a6d1314b3864e 100644
--- a/Modules/itertoolsmodule.c
+++ b/Modules/itertoolsmodule.c
@@ -93,6 +93,16 @@ class itertools.pairwise "pairwiseobject *" "clinic_state()->pairwise_type"
#undef clinic_state_by_cls
#undef clinic_state
+/* Deprecation of pickle support: GH-101588 *********************************/
+
+#define ITERTOOL_PICKLE_DEPRECATION \
+ if (PyErr_WarnEx( \
+ PyExc_DeprecationWarning, \
+ "Itertool pickle/copy/deepcopy support " \
+ "will be removed in a Python 3.14.", 1) < 0) { \
+ return NULL; \
+ }
+
/* batched object ************************************************************/
/* Note: The built-in zip() function includes a "strict" argument
@@ -506,6 +516,7 @@ groupby_reduce(groupbyobject *lz, PyObject *Py_UNUSED(ignored))
/* reduce as a 'new' call with an optional 'setstate' if groupby
* has started
*/
+ ITERTOOL_PICKLE_DEPRECATION;
PyObject *value;
if (lz->tgtkey && lz->currkey && lz->currvalue)
value = Py_BuildValue("O(OO)(OOO)", Py_TYPE(lz),
@@ -522,6 +533,7 @@ PyDoc_STRVAR(reduce_doc, "Return state information for pickling.");
static PyObject *
groupby_setstate(groupbyobject *lz, PyObject *state)
{
+ ITERTOOL_PICKLE_DEPRECATION;
PyObject *currkey, *currvalue, *tgtkey;
if (!PyTuple_Check(state)) {
PyErr_SetString(PyExc_TypeError, "state is not a tuple");
@@ -660,6 +672,7 @@ _grouper_next(_grouperobject *igo)
static PyObject *
_grouper_reduce(_grouperobject *lz, PyObject *Py_UNUSED(ignored))
{
+ ITERTOOL_PICKLE_DEPRECATION;
if (((groupbyobject *)lz->parent)->currgrouper != lz) {
return Py_BuildValue("N(())", _PyEval_GetBuiltin(&_Py_ID(iter)));
}
@@ -828,6 +841,7 @@ teedataobject_dealloc(teedataobject *tdo)
static PyObject *
teedataobject_reduce(teedataobject *tdo, PyObject *Py_UNUSED(ignored))
{
+ ITERTOOL_PICKLE_DEPRECATION;
int i;
/* create a temporary list of already iterated values */
PyObject *values = PyList_New(tdo->numread);
@@ -1041,12 +1055,14 @@ tee_dealloc(teeobject *to)
static PyObject *
tee_reduce(teeobject *to, PyObject *Py_UNUSED(ignored))
{
+ ITERTOOL_PICKLE_DEPRECATION;
return Py_BuildValue("O(())(Oi)", Py_TYPE(to), to->dataobj, to->index);
}
static PyObject *
tee_setstate(teeobject *to, PyObject *state)
{
+ ITERTOOL_PICKLE_DEPRECATION;
teedataobject *tdo;
int index;
if (!PyTuple_Check(state)) {
@@ -1275,6 +1291,7 @@ cycle_next(cycleobject *lz)
static PyObject *
cycle_reduce(cycleobject *lz, PyObject *Py_UNUSED(ignored))
{
+ ITERTOOL_PICKLE_DEPRECATION;
/* Create a new cycle with the iterator tuple, then set the saved state */
if (lz->it == NULL) {
PyObject *it = PyObject_GetIter(lz->saved);
@@ -1298,6 +1315,7 @@ cycle_reduce(cycleobject *lz, PyObject *Py_UNUSED(ignored))
static PyObject *
cycle_setstate(cycleobject *lz, PyObject *state)
{
+ ITERTOOL_PICKLE_DEPRECATION;
PyObject *saved=NULL;
int firstpass;
if (!PyTuple_Check(state)) {
@@ -1446,12 +1464,14 @@ dropwhile_next(dropwhileobject *lz)
static PyObject *
dropwhile_reduce(dropwhileobject *lz, PyObject *Py_UNUSED(ignored))
{
+ ITERTOOL_PICKLE_DEPRECATION;
return Py_BuildValue("O(OO)l", Py_TYPE(lz), lz->func, lz->it, lz->start);
}
static PyObject *
dropwhile_setstate(dropwhileobject *lz, PyObject *state)
{
+ ITERTOOL_PICKLE_DEPRECATION;
int start = PyObject_IsTrue(state);
if (start < 0)
return NULL;
@@ -1584,12 +1604,14 @@ takewhile_next(takewhileobject *lz)
static PyObject *
takewhile_reduce(takewhileobject *lz, PyObject *Py_UNUSED(ignored))
{
+ ITERTOOL_PICKLE_DEPRECATION;
return Py_BuildValue("O(OO)l", Py_TYPE(lz), lz->func, lz->it, lz->stop);
}
static PyObject *
takewhile_reduce_setstate(takewhileobject *lz, PyObject *state)
{
+ ITERTOOL_PICKLE_DEPRECATION;
int stop = PyObject_IsTrue(state);
if (stop < 0)
@@ -1786,6 +1808,7 @@ islice_next(isliceobject *lz)
static PyObject *
islice_reduce(isliceobject *lz, PyObject *Py_UNUSED(ignored))
{
+ ITERTOOL_PICKLE_DEPRECATION;
/* When unpickled, generate a new object with the same bounds,
* then 'setstate' with the next and count
*/
@@ -1818,6 +1841,7 @@ islice_reduce(isliceobject *lz, PyObject *Py_UNUSED(ignored))
static PyObject *
islice_setstate(isliceobject *lz, PyObject *state)
{
+ ITERTOOL_PICKLE_DEPRECATION;
Py_ssize_t cnt = PyLong_AsSsize_t(state);
if (cnt == -1 && PyErr_Occurred())
@@ -1953,6 +1977,7 @@ starmap_next(starmapobject *lz)
static PyObject *
starmap_reduce(starmapobject *lz, PyObject *Py_UNUSED(ignored))
{
+ ITERTOOL_PICKLE_DEPRECATION;
/* Just pickle the iterator */
return Py_BuildValue("O(OO)", Py_TYPE(lz), lz->func, lz->it);
}
@@ -2109,6 +2134,7 @@ chain_next(chainobject *lz)
static PyObject *
chain_reduce(chainobject *lz, PyObject *Py_UNUSED(ignored))
{
+ ITERTOOL_PICKLE_DEPRECATION;
if (lz->source) {
/* we can't pickle function objects (itertools.from_iterable) so
* we must use setstate to replace the iterable. One day we
@@ -2128,6 +2154,7 @@ chain_reduce(chainobject *lz, PyObject *Py_UNUSED(ignored))
static PyObject *
chain_setstate(chainobject *lz, PyObject *state)
{
+ ITERTOOL_PICKLE_DEPRECATION;
PyObject *source, *active=NULL;
if (!PyTuple_Check(state)) {
@@ -2403,6 +2430,7 @@ product_next(productobject *lz)
static PyObject *
product_reduce(productobject *lz, PyObject *Py_UNUSED(ignored))
{
+ ITERTOOL_PICKLE_DEPRECATION;
if (lz->stopped) {
return Py_BuildValue("O(())", Py_TYPE(lz));
} else if (lz->result == NULL) {
@@ -2433,6 +2461,7 @@ product_reduce(productobject *lz, PyObject *Py_UNUSED(ignored))
static PyObject *
product_setstate(productobject *lz, PyObject *state)
{
+ ITERTOOL_PICKLE_DEPRECATION;
PyObject *result;
Py_ssize_t n, i;
@@ -2711,6 +2740,7 @@ combinations_next(combinationsobject *co)
static PyObject *
combinations_reduce(combinationsobject *lz, PyObject *Py_UNUSED(ignored))
{
+ ITERTOOL_PICKLE_DEPRECATION;
if (lz->result == NULL) {
return Py_BuildValue("O(On)", Py_TYPE(lz), lz->pool, lz->r);
} else if (lz->stopped) {
@@ -2740,6 +2770,7 @@ combinations_reduce(combinationsobject *lz, PyObject *Py_UNUSED(ignored))
static PyObject *
combinations_setstate(combinationsobject *lz, PyObject *state)
{
+ ITERTOOL_PICKLE_DEPRECATION;
PyObject *result;
Py_ssize_t i;
Py_ssize_t n = PyTuple_GET_SIZE(lz->pool);
@@ -3019,6 +3050,7 @@ cwr_next(cwrobject *co)
static PyObject *
cwr_reduce(cwrobject *lz, PyObject *Py_UNUSED(ignored))
{
+ ITERTOOL_PICKLE_DEPRECATION;
if (lz->result == NULL) {
return Py_BuildValue("O(On)", Py_TYPE(lz), lz->pool, lz->r);
} else if (lz->stopped) {
@@ -3047,6 +3079,7 @@ cwr_reduce(cwrobject *lz, PyObject *Py_UNUSED(ignored))
static PyObject *
cwr_setstate(cwrobject *lz, PyObject *state)
{
+ ITERTOOL_PICKLE_DEPRECATION;
PyObject *result;
Py_ssize_t n, i;
@@ -3354,6 +3387,7 @@ permutations_next(permutationsobject *po)
static PyObject *
permutations_reduce(permutationsobject *po, PyObject *Py_UNUSED(ignored))
{
+ ITERTOOL_PICKLE_DEPRECATION;
if (po->result == NULL) {
return Py_BuildValue("O(On)", Py_TYPE(po), po->pool, po->r);
} else if (po->stopped) {
@@ -3396,6 +3430,7 @@ permutations_reduce(permutationsobject *po, PyObject *Py_UNUSED(ignored))
static PyObject *
permutations_setstate(permutationsobject *po, PyObject *state)
{
+ ITERTOOL_PICKLE_DEPRECATION;
PyObject *indices, *cycles, *result;
Py_ssize_t n, i;
@@ -3593,6 +3628,7 @@ accumulate_next(accumulateobject *lz)
static PyObject *
accumulate_reduce(accumulateobject *lz, PyObject *Py_UNUSED(ignored))
{
+ ITERTOOL_PICKLE_DEPRECATION;
itertools_state *state = lz->state;
if (lz->initial != Py_None) {
@@ -3628,6 +3664,7 @@ accumulate_reduce(accumulateobject *lz, PyObject *Py_UNUSED(ignored))
static PyObject *
accumulate_setstate(accumulateobject *lz, PyObject *state)
{
+ ITERTOOL_PICKLE_DEPRECATION;
Py_INCREF(state);
Py_XSETREF(lz->total, state);
Py_RETURN_NONE;
@@ -3776,6 +3813,7 @@ compress_next(compressobject *lz)
static PyObject *
compress_reduce(compressobject *lz, PyObject *Py_UNUSED(ignored))
{
+ ITERTOOL_PICKLE_DEPRECATION;
return Py_BuildValue("O(OO)", Py_TYPE(lz),
lz->data, lz->selectors);
}
@@ -3908,6 +3946,7 @@ filterfalse_next(filterfalseobject *lz)
static PyObject *
filterfalse_reduce(filterfalseobject *lz, PyObject *Py_UNUSED(ignored))
{
+ ITERTOOL_PICKLE_DEPRECATION;
return Py_BuildValue("O(OO)", Py_TYPE(lz), lz->func, lz->it);
}
@@ -4135,6 +4174,7 @@ count_repr(countobject *lz)
static PyObject *
count_reduce(countobject *lz, PyObject *Py_UNUSED(ignored))
{
+ ITERTOOL_PICKLE_DEPRECATION;
if (lz->cnt == PY_SSIZE_T_MAX)
return Py_BuildValue("O(OO)", Py_TYPE(lz), lz->long_cnt, lz->long_step);
return Py_BuildValue("O(n)", Py_TYPE(lz), lz->cnt);
@@ -4258,6 +4298,7 @@ PyDoc_STRVAR(length_hint_doc, "Private method returning an estimate of len(list(
static PyObject *
repeat_reduce(repeatobject *ro, PyObject *Py_UNUSED(ignored))
{
+ ITERTOOL_PICKLE_DEPRECATION;
/* unpickle this so that a new repeat iterator is constructed with an
* object, then call __setstate__ on it to set cnt
*/
@@ -4478,7 +4519,7 @@ zip_longest_next(ziplongestobject *lz)
static PyObject *
zip_longest_reduce(ziplongestobject *lz, PyObject *Py_UNUSED(ignored))
{
-
+ ITERTOOL_PICKLE_DEPRECATION;
/* Create a new tuple with empty sequences where appropriate to pickle.
* Then use setstate to set the fillvalue
*/
@@ -4505,6 +4546,7 @@ zip_longest_reduce(ziplongestobject *lz, PyObject *Py_UNUSED(ignored))
static PyObject *
zip_longest_setstate(ziplongestobject *lz, PyObject *state)
{
+ ITERTOOL_PICKLE_DEPRECATION;
Py_INCREF(state);
Py_XSETREF(lz->fillvalue, state);
Py_RETURN_NONE;
diff --git a/Modules/md5module.c b/Modules/md5module.c
index 86605771d9643f..2122f8b18baf6e 100644
--- a/Modules/md5module.c
+++ b/Modules/md5module.c
@@ -49,7 +49,9 @@ typedef long long MD5_INT64; /* 64-bit integer */
typedef struct {
PyObject_HEAD
-
+ // Prevents undefined behavior via multiple threads entering the C API.
+ // The lock will be NULL before threaded access has been enabled.
+ PyThread_type_lock lock;
Hacl_Streaming_MD5_state *hash_state;
} MD5object;
@@ -72,6 +74,7 @@ static MD5object *
newMD5object(MD5State * st)
{
MD5object *md5 = (MD5object *)PyObject_GC_New(MD5object, st->md5_type);
+ md5->lock = NULL;
PyObject_GC_Track(md5);
return md5;
}
@@ -88,6 +91,9 @@ static void
MD5_dealloc(MD5object *ptr)
{
Hacl_Streaming_MD5_legacy_free(ptr->hash_state);
+ if (ptr->lock != NULL) {
+ PyThread_free_lock(ptr->lock);
+ }
PyTypeObject *tp = Py_TYPE(ptr);
PyObject_GC_UnTrack(ptr);
PyObject_GC_Del(ptr);
@@ -115,7 +121,9 @@ MD5Type_copy_impl(MD5object *self, PyTypeObject *cls)
if ((newobj = newMD5object(st))==NULL)
return NULL;
+ ENTER_HASHLIB(self);
newobj->hash_state = Hacl_Streaming_MD5_legacy_copy(self->hash_state);
+ LEAVE_HASHLIB(self);
return (PyObject *)newobj;
}
@@ -130,7 +138,9 @@ MD5Type_digest_impl(MD5object *self)
/*[clinic end generated code: output=eb691dc4190a07ec input=bc0c4397c2994be6]*/
{
unsigned char digest[MD5_DIGESTSIZE];
+ ENTER_HASHLIB(self);
Hacl_Streaming_MD5_legacy_finish(self->hash_state, digest);
+ LEAVE_HASHLIB(self);
return PyBytes_FromStringAndSize((const char *)digest, MD5_DIGESTSIZE);
}
@@ -145,7 +155,9 @@ MD5Type_hexdigest_impl(MD5object *self)
/*[clinic end generated code: output=17badced1f3ac932 input=b60b19de644798dd]*/
{
unsigned char digest[MD5_DIGESTSIZE];
+ ENTER_HASHLIB(self);
Hacl_Streaming_MD5_legacy_finish(self->hash_state, digest);
+ LEAVE_HASHLIB(self);
return _Py_strhex((const char*)digest, MD5_DIGESTSIZE);
}
@@ -177,7 +189,18 @@ MD5Type_update(MD5object *self, PyObject *obj)
GET_BUFFER_VIEW_OR_ERROUT(obj, &buf);
- update(self->hash_state, buf.buf, buf.len);
+ if (self->lock == NULL && buf.len >= HASHLIB_GIL_MINSIZE) {
+ self->lock = PyThread_allocate_lock();
+ }
+ if (self->lock != NULL) {
+ Py_BEGIN_ALLOW_THREADS
+ PyThread_acquire_lock(self->lock, 1);
+ update(self->hash_state, buf.buf, buf.len);
+ PyThread_release_lock(self->lock);
+ Py_END_ALLOW_THREADS
+ } else {
+ update(self->hash_state, buf.buf, buf.len);
+ }
PyBuffer_Release(&buf);
Py_RETURN_NONE;
@@ -279,7 +302,15 @@ _md5_md5_impl(PyObject *module, PyObject *string, int usedforsecurity)
return NULL;
}
if (string) {
- update(new->hash_state, buf.buf, buf.len);
+ if (buf.len >= HASHLIB_GIL_MINSIZE) {
+ /* We do not initialize self->lock here as this is the constructor
+ * where it is not yet possible to have concurrent access. */
+ Py_BEGIN_ALLOW_THREADS
+ update(new->hash_state, buf.buf, buf.len);
+ Py_END_ALLOW_THREADS
+ } else {
+ update(new->hash_state, buf.buf, buf.len);
+ }
PyBuffer_Release(&buf);
}
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 531f26ba8bc86f..f5e653dd023aef 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -1864,6 +1864,7 @@ win32_xstat_slow_impl(const wchar_t *path, struct _Py_stat_struct *result,
BY_HANDLE_FILE_INFORMATION fileInfo;
FILE_BASIC_INFO basicInfo;
FILE_ID_INFO idInfo;
+ FILE_ID_INFO *pIdInfo = &idInfo;
FILE_ATTRIBUTE_TAG_INFO tagInfo = { 0 };
DWORD fileType, error;
BOOL isUnhandledTag = FALSE;
@@ -2000,9 +2001,7 @@ win32_xstat_slow_impl(const wchar_t *path, struct _Py_stat_struct *result,
if (!GetFileInformationByHandle(hFile, &fileInfo) ||
!GetFileInformationByHandleEx(hFile, FileBasicInfo,
- &basicInfo, sizeof(basicInfo)) ||
- !GetFileInformationByHandleEx(hFile, FileIdInfo,
- &idInfo, sizeof(idInfo))) {
+ &basicInfo, sizeof(basicInfo))) {
switch (GetLastError()) {
case ERROR_INVALID_PARAMETER:
case ERROR_INVALID_FUNCTION:
@@ -2018,7 +2017,12 @@ win32_xstat_slow_impl(const wchar_t *path, struct _Py_stat_struct *result,
}
}
- _Py_attribute_data_to_stat(&fileInfo, tagInfo.ReparseTag, &basicInfo, &idInfo, result);
+ if (!GetFileInformationByHandleEx(hFile, FileIdInfo, &idInfo, sizeof(idInfo))) {
+ /* Failed to get FileIdInfo, so do not pass it along */
+ pIdInfo = NULL;
+ }
+
+ _Py_attribute_data_to_stat(&fileInfo, tagInfo.ReparseTag, &basicInfo, pIdInfo, result);
update_st_mode_from_path(path, fileInfo.dwFileAttributes, result);
cleanup:
@@ -4530,6 +4534,95 @@ os_listmounts_impl(PyObject *module, path_t *volume)
}
+/*[clinic input]
+os._path_isdevdrive
+
+ path: path_t
+
+Determines whether the specified path is on a Windows Dev Drive.
+
+[clinic start generated code]*/
+
+static PyObject *
+os__path_isdevdrive_impl(PyObject *module, path_t *path)
+/*[clinic end generated code: output=1f437ea6677433a2 input=ee83e4996a48e23d]*/
+{
+#ifndef PERSISTENT_VOLUME_STATE_DEV_VOLUME
+ /* This flag will be documented at
+ https://learn.microsoft.com/windows-hardware/drivers/ddi/ntifs/ns-ntifs-_file_fs_persistent_volume_information
+ after release, and will be available in the latest WinSDK.
+ We include the flag to avoid a specific version dependency
+ on the latest WinSDK. */
+ const int PERSISTENT_VOLUME_STATE_DEV_VOLUME = 0x00002000;
+#endif
+ int err = 0;
+ PyObject *r = NULL;
+ wchar_t volume[MAX_PATH];
+
+ Py_BEGIN_ALLOW_THREADS
+ if (!GetVolumePathNameW(path->wide, volume, MAX_PATH)) {
+ /* invalid path of some kind */
+ /* Note that this also includes the case where a volume is mounted
+ in a path longer than 260 characters. This is likely to be rare
+ and problematic for other reasons, so a (soft) failure in this
+ check seems okay. */
+ err = GetLastError();
+ } else if (GetDriveTypeW(volume) != DRIVE_FIXED) {
+ /* only care about local dev drives */
+ r = Py_False;
+ } else {
+ HANDLE hVolume = CreateFileW(
+ volume,
+ FILE_READ_ATTRIBUTES,
+ FILE_SHARE_READ | FILE_SHARE_WRITE,
+ NULL,
+ OPEN_EXISTING,
+ FILE_FLAG_BACKUP_SEMANTICS,
+ NULL
+ );
+ if (hVolume == INVALID_HANDLE_VALUE) {
+ err = GetLastError();
+ } else {
+ FILE_FS_PERSISTENT_VOLUME_INFORMATION volumeState = {0};
+ volumeState.Version = 1;
+ volumeState.FlagMask = PERSISTENT_VOLUME_STATE_DEV_VOLUME;
+ if (!DeviceIoControl(
+ hVolume,
+ FSCTL_QUERY_PERSISTENT_VOLUME_STATE,
+ &volumeState,
+ sizeof(volumeState),
+ &volumeState,
+ sizeof(volumeState),
+ NULL,
+ NULL
+ )) {
+ err = GetLastError();
+ }
+ CloseHandle(hVolume);
+ if (err == ERROR_INVALID_PARAMETER) {
+ /* not supported on this platform */
+ r = Py_False;
+ } else if (!err) {
+ r = (volumeState.VolumeFlags & PERSISTENT_VOLUME_STATE_DEV_VOLUME)
+ ? Py_True : Py_False;
+ }
+ }
+ }
+ Py_END_ALLOW_THREADS
+
+ if (err) {
+ PyErr_SetFromWindowsErr(err);
+ return NULL;
+ }
+
+ if (r) {
+ return Py_NewRef(r);
+ }
+
+ return NULL;
+}
+
+
int
_PyOS_getfullpathname(const wchar_t *path, wchar_t **abspath_p)
{
@@ -7527,7 +7620,13 @@ os_fork1_impl(PyObject *module)
{
pid_t pid;
- if (!_Py_IsMainInterpreter(_PyInterpreterState_GET())) {
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ if (interp->finalizing) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "can't fork at interpreter shutdown");
+ return NULL;
+ }
+ if (!_Py_IsMainInterpreter(interp)) {
PyErr_SetString(PyExc_RuntimeError, "fork not supported for subinterpreters");
return NULL;
}
@@ -7563,6 +7662,11 @@ os_fork_impl(PyObject *module)
{
pid_t pid;
PyInterpreterState *interp = _PyInterpreterState_GET();
+ if (interp->finalizing) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "can't fork at interpreter shutdown");
+ return NULL;
+ }
if (!_PyInterpreterState_HasFeature(interp, Py_RTFLAGS_FORK)) {
PyErr_SetString(PyExc_RuntimeError,
"fork not supported for isolated subinterpreters");
@@ -8234,7 +8338,13 @@ os_forkpty_impl(PyObject *module)
int master_fd = -1;
pid_t pid;
- if (!_Py_IsMainInterpreter(_PyInterpreterState_GET())) {
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ if (interp->finalizing) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "can't fork at interpreter shutdown");
+ return NULL;
+ }
+ if (!_Py_IsMainInterpreter(interp)) {
PyErr_SetString(PyExc_RuntimeError, "fork not supported for subinterpreters");
return NULL;
}
@@ -15797,6 +15907,7 @@ static PyMethodDef posix_methods[] = {
OS_SETNS_METHODDEF
OS_UNSHARE_METHODDEF
+ OS__PATH_ISDEVDRIVE_METHODDEF
OS__PATH_ISDIR_METHODDEF
OS__PATH_ISFILE_METHODDEF
OS__PATH_ISLINK_METHODDEF
diff --git a/Modules/readline.c b/Modules/readline.c
index fdb6356e1c84b5..2824105a187586 100644
--- a/Modules/readline.c
+++ b/Modules/readline.c
@@ -11,7 +11,10 @@
#include
#include
#include // free()
+#ifdef HAVE_SYS_TIME_H
#include
+#endif
+#include
#if defined(HAVE_SETLOCALE)
/* GNU readline() mistakenly sets the LC_CTYPE locale.
diff --git a/Modules/resource.c b/Modules/resource.c
index 2a8158c9be5359..3c89468c48c56e 100644
--- a/Modules/resource.c
+++ b/Modules/resource.c
@@ -1,7 +1,10 @@
#include "Python.h"
#include
+#ifdef HAVE_SYS_TIME_H
#include
+#endif
+#include
#include
#include
#include
diff --git a/Modules/sha1module.c b/Modules/sha1module.c
index bdb76c56f1a6e8..c66269b5f5cdf3 100644
--- a/Modules/sha1module.c
+++ b/Modules/sha1module.c
@@ -48,7 +48,9 @@ typedef long long SHA1_INT64; /* 64-bit integer */
typedef struct {
PyObject_HEAD
-
+ // Prevents undefined behavior via multiple threads entering the C API.
+ // The lock will be NULL before threaded access has been enabled.
+ PyThread_type_lock lock;
Hacl_Streaming_SHA1_state *hash_state;
} SHA1object;
@@ -71,6 +73,7 @@ static SHA1object *
newSHA1object(SHA1State *st)
{
SHA1object *sha = (SHA1object *)PyObject_GC_New(SHA1object, st->sha1_type);
+ sha->lock = NULL;
PyObject_GC_Track(sha);
return sha;
}
@@ -88,6 +91,9 @@ static void
SHA1_dealloc(SHA1object *ptr)
{
Hacl_Streaming_SHA1_legacy_free(ptr->hash_state);
+ if (ptr->lock != NULL) {
+ PyThread_free_lock(ptr->lock);
+ }
PyTypeObject *tp = Py_TYPE(ptr);
PyObject_GC_UnTrack(ptr);
PyObject_GC_Del(ptr);
@@ -115,7 +121,9 @@ SHA1Type_copy_impl(SHA1object *self, PyTypeObject *cls)
if ((newobj = newSHA1object(st)) == NULL)
return NULL;
+ ENTER_HASHLIB(self);
newobj->hash_state = Hacl_Streaming_SHA1_legacy_copy(self->hash_state);
+ LEAVE_HASHLIB(self);
return (PyObject *)newobj;
}
@@ -130,7 +138,9 @@ SHA1Type_digest_impl(SHA1object *self)
/*[clinic end generated code: output=2f05302a7aa2b5cb input=13824b35407444bd]*/
{
unsigned char digest[SHA1_DIGESTSIZE];
+ ENTER_HASHLIB(self);
Hacl_Streaming_SHA1_legacy_finish(self->hash_state, digest);
+ LEAVE_HASHLIB(self);
return PyBytes_FromStringAndSize((const char *)digest, SHA1_DIGESTSIZE);
}
@@ -145,7 +155,9 @@ SHA1Type_hexdigest_impl(SHA1object *self)
/*[clinic end generated code: output=4161fd71e68c6659 input=97691055c0c74ab0]*/
{
unsigned char digest[SHA1_DIGESTSIZE];
+ ENTER_HASHLIB(self);
Hacl_Streaming_SHA1_legacy_finish(self->hash_state, digest);
+ LEAVE_HASHLIB(self);
return _Py_strhex((const char *)digest, SHA1_DIGESTSIZE);
}
@@ -177,7 +189,18 @@ SHA1Type_update(SHA1object *self, PyObject *obj)
GET_BUFFER_VIEW_OR_ERROUT(obj, &buf);
- update(self->hash_state, buf.buf, buf.len);
+ if (self->lock == NULL && buf.len >= HASHLIB_GIL_MINSIZE) {
+ self->lock = PyThread_allocate_lock();
+ }
+ if (self->lock != NULL) {
+ Py_BEGIN_ALLOW_THREADS
+ PyThread_acquire_lock(self->lock, 1);
+ update(self->hash_state, buf.buf, buf.len);
+ PyThread_release_lock(self->lock);
+ Py_END_ALLOW_THREADS
+ } else {
+ update(self->hash_state, buf.buf, buf.len);
+ }
PyBuffer_Release(&buf);
Py_RETURN_NONE;
@@ -279,7 +302,15 @@ _sha1_sha1_impl(PyObject *module, PyObject *string, int usedforsecurity)
return NULL;
}
if (string) {
- update(new->hash_state, buf.buf, buf.len);
+ if (buf.len >= HASHLIB_GIL_MINSIZE) {
+ /* We do not initialize self->lock here as this is the constructor
+ * where it is not yet possible to have concurrent access. */
+ Py_BEGIN_ALLOW_THREADS
+ update(new->hash_state, buf.buf, buf.len);
+ Py_END_ALLOW_THREADS
+ } else {
+ update(new->hash_state, buf.buf, buf.len);
+ }
PyBuffer_Release(&buf);
}
diff --git a/Modules/sha2module.c b/Modules/sha2module.c
index 37d9b5c538fd0b..db3774c81e2d92 100644
--- a/Modules/sha2module.c
+++ b/Modules/sha2module.c
@@ -45,19 +45,25 @@ class SHA512Type "SHA512object *" "&PyType_Type"
/* Our SHA2 implementations defer to the HACL* verified library. */
-#include "_hacl/Hacl_Streaming_SHA2.h"
+#include "_hacl/Hacl_Hash_SHA2.h"
// TODO: Get rid of int digestsize in favor of Hacl state info?
typedef struct {
PyObject_HEAD
int digestsize;
+ // Prevents undefined behavior via multiple threads entering the C API.
+ // The lock will be NULL before threaded access has been enabled.
+ PyThread_type_lock lock;
Hacl_Streaming_SHA2_state_sha2_256 *state;
} SHA256object;
typedef struct {
PyObject_HEAD
int digestsize;
+ // Prevents undefined behavior via multiple threads entering the C API.
+ // The lock will be NULL before threaded access has been enabled.
+ PyThread_type_lock lock;
Hacl_Streaming_SHA2_state_sha2_512 *state;
} SHA512object;
@@ -100,6 +106,7 @@ newSHA224object(sha2_state *state)
if (!sha) {
return NULL;
}
+ sha->lock = NULL;
PyObject_GC_Track(sha);
return sha;
}
@@ -112,6 +119,7 @@ newSHA256object(sha2_state *state)
if (!sha) {
return NULL;
}
+ sha->lock = NULL;
PyObject_GC_Track(sha);
return sha;
}
@@ -124,6 +132,7 @@ newSHA384object(sha2_state *state)
if (!sha) {
return NULL;
}
+ sha->lock = NULL;
PyObject_GC_Track(sha);
return sha;
}
@@ -136,6 +145,7 @@ newSHA512object(sha2_state *state)
if (!sha) {
return NULL;
}
+ sha->lock = NULL;
PyObject_GC_Track(sha);
return sha;
}
@@ -153,6 +163,9 @@ static void
SHA256_dealloc(SHA256object *ptr)
{
Hacl_Streaming_SHA2_free_256(ptr->state);
+ if (ptr->lock != NULL) {
+ PyThread_free_lock(ptr->lock);
+ }
PyTypeObject *tp = Py_TYPE(ptr);
PyObject_GC_UnTrack(ptr);
PyObject_GC_Del(ptr);
@@ -163,6 +176,9 @@ static void
SHA512_dealloc(SHA512object *ptr)
{
Hacl_Streaming_SHA2_free_512(ptr->state);
+ if (ptr->lock != NULL) {
+ PyThread_free_lock(ptr->lock);
+ }
PyTypeObject *tp = Py_TYPE(ptr);
PyObject_GC_UnTrack(ptr);
PyObject_GC_Del(ptr);
@@ -229,7 +245,9 @@ SHA256Type_copy_impl(SHA256object *self, PyTypeObject *cls)
}
}
+ ENTER_HASHLIB(self);
SHA256copy(self, newobj);
+ LEAVE_HASHLIB(self);
return (PyObject *)newobj;
}
@@ -259,7 +277,9 @@ SHA512Type_copy_impl(SHA512object *self, PyTypeObject *cls)
}
}
+ ENTER_HASHLIB(self);
SHA512copy(self, newobj);
+ LEAVE_HASHLIB(self);
return (PyObject *)newobj;
}
@@ -275,9 +295,11 @@ SHA256Type_digest_impl(SHA256object *self)
{
uint8_t digest[SHA256_DIGESTSIZE];
assert(self->digestsize <= SHA256_DIGESTSIZE);
+ ENTER_HASHLIB(self);
// HACL* performs copies under the hood so that self->state remains valid
// after this call.
Hacl_Streaming_SHA2_finish_256(self->state, digest);
+ LEAVE_HASHLIB(self);
return PyBytes_FromStringAndSize((const char *)digest, self->digestsize);
}
@@ -293,9 +315,11 @@ SHA512Type_digest_impl(SHA512object *self)
{
uint8_t digest[SHA512_DIGESTSIZE];
assert(self->digestsize <= SHA512_DIGESTSIZE);
+ ENTER_HASHLIB(self);
// HACL* performs copies under the hood so that self->state remains valid
// after this call.
Hacl_Streaming_SHA2_finish_512(self->state, digest);
+ LEAVE_HASHLIB(self);
return PyBytes_FromStringAndSize((const char *)digest, self->digestsize);
}
@@ -311,7 +335,9 @@ SHA256Type_hexdigest_impl(SHA256object *self)
{
uint8_t digest[SHA256_DIGESTSIZE];
assert(self->digestsize <= SHA256_DIGESTSIZE);
+ ENTER_HASHLIB(self);
Hacl_Streaming_SHA2_finish_256(self->state, digest);
+ LEAVE_HASHLIB(self);
return _Py_strhex((const char *)digest, self->digestsize);
}
@@ -327,7 +353,9 @@ SHA512Type_hexdigest_impl(SHA512object *self)
{
uint8_t digest[SHA512_DIGESTSIZE];
assert(self->digestsize <= SHA512_DIGESTSIZE);
+ ENTER_HASHLIB(self);
Hacl_Streaming_SHA2_finish_512(self->state, digest);
+ LEAVE_HASHLIB(self);
return _Py_strhex((const char *)digest, self->digestsize);
}
@@ -348,7 +376,18 @@ SHA256Type_update(SHA256object *self, PyObject *obj)
GET_BUFFER_VIEW_OR_ERROUT(obj, &buf);
- update_256(self->state, buf.buf, buf.len);
+ if (self->lock == NULL && buf.len >= HASHLIB_GIL_MINSIZE) {
+ self->lock = PyThread_allocate_lock();
+ }
+ if (self->lock != NULL) {
+ Py_BEGIN_ALLOW_THREADS
+ PyThread_acquire_lock(self->lock, 1);
+ update_256(self->state, buf.buf, buf.len);
+ PyThread_release_lock(self->lock);
+ Py_END_ALLOW_THREADS
+ } else {
+ update_256(self->state, buf.buf, buf.len);
+ }
PyBuffer_Release(&buf);
Py_RETURN_NONE;
@@ -371,7 +410,18 @@ SHA512Type_update(SHA512object *self, PyObject *obj)
GET_BUFFER_VIEW_OR_ERROUT(obj, &buf);
- update_512(self->state, buf.buf, buf.len);
+ if (self->lock == NULL && buf.len >= HASHLIB_GIL_MINSIZE) {
+ self->lock = PyThread_allocate_lock();
+ }
+ if (self->lock != NULL) {
+ Py_BEGIN_ALLOW_THREADS
+ PyThread_acquire_lock(self->lock, 1);
+ update_512(self->state, buf.buf, buf.len);
+ PyThread_release_lock(self->lock);
+ Py_END_ALLOW_THREADS
+ } else {
+ update_512(self->state, buf.buf, buf.len);
+ }
PyBuffer_Release(&buf);
Py_RETURN_NONE;
@@ -560,7 +610,15 @@ _sha2_sha256_impl(PyObject *module, PyObject *string, int usedforsecurity)
return NULL;
}
if (string) {
- update_256(new->state, buf.buf, buf.len);
+ if (buf.len >= HASHLIB_GIL_MINSIZE) {
+ /* We do not initialize self->lock here as this is the constructor
+ * where it is not yet possible to have concurrent access. */
+ Py_BEGIN_ALLOW_THREADS
+ update_256(new->state, buf.buf, buf.len);
+ Py_END_ALLOW_THREADS
+ } else {
+ update_256(new->state, buf.buf, buf.len);
+ }
PyBuffer_Release(&buf);
}
@@ -606,7 +664,15 @@ _sha2_sha224_impl(PyObject *module, PyObject *string, int usedforsecurity)
return NULL;
}
if (string) {
- update_256(new->state, buf.buf, buf.len);
+ if (buf.len >= HASHLIB_GIL_MINSIZE) {
+ /* We do not initialize self->lock here as this is the constructor
+ * where it is not yet possible to have concurrent access. */
+ Py_BEGIN_ALLOW_THREADS
+ update_256(new->state, buf.buf, buf.len);
+ Py_END_ALLOW_THREADS
+ } else {
+ update_256(new->state, buf.buf, buf.len);
+ }
PyBuffer_Release(&buf);
}
@@ -651,7 +717,15 @@ _sha2_sha512_impl(PyObject *module, PyObject *string, int usedforsecurity)
return NULL;
}
if (string) {
- update_512(new->state, buf.buf, buf.len);
+ if (buf.len >= HASHLIB_GIL_MINSIZE) {
+ /* We do not initialize self->lock here as this is the constructor
+ * where it is not yet possible to have concurrent access. */
+ Py_BEGIN_ALLOW_THREADS
+ update_512(new->state, buf.buf, buf.len);
+ Py_END_ALLOW_THREADS
+ } else {
+ update_512(new->state, buf.buf, buf.len);
+ }
PyBuffer_Release(&buf);
}
@@ -696,7 +770,15 @@ _sha2_sha384_impl(PyObject *module, PyObject *string, int usedforsecurity)
return NULL;
}
if (string) {
- update_512(new->state, buf.buf, buf.len);
+ if (buf.len >= HASHLIB_GIL_MINSIZE) {
+ /* We do not initialize self->lock here as this is the constructor
+ * where it is not yet possible to have concurrent access. */
+ Py_BEGIN_ALLOW_THREADS
+ update_512(new->state, buf.buf, buf.len);
+ Py_END_ALLOW_THREADS
+ } else {
+ update_512(new->state, buf.buf, buf.len);
+ }
PyBuffer_Release(&buf);
}
diff --git a/Modules/sha3module.c b/Modules/sha3module.c
index f05187498a19b3..558d2005cff617 100644
--- a/Modules/sha3module.c
+++ b/Modules/sha3module.c
@@ -60,6 +60,9 @@ class _sha3.shake_256 "SHA3object *" "&SHAKE256type"
typedef struct {
PyObject_HEAD
+ // Prevents undefined behavior via multiple threads entering the C API.
+ // The lock will be NULL before threaded access has been enabled.
+ PyThread_type_lock lock;
Hacl_Streaming_Keccak_state *hash_state;
} SHA3object;
@@ -73,6 +76,7 @@ newSHA3object(PyTypeObject *type)
if (newobj == NULL) {
return NULL;
}
+ newobj->lock = NULL;
return newobj;
}
@@ -133,7 +137,15 @@ py_sha3_new_impl(PyTypeObject *type, PyObject *data, int usedforsecurity)
if (data) {
GET_BUFFER_VIEW_OR_ERROR(data, &buf, goto error);
- sha3_update(self->hash_state, buf.buf, buf.len);
+ if (buf.len >= HASHLIB_GIL_MINSIZE) {
+ /* We do not initialize self->lock here as this is the constructor
+ * where it is not yet possible to have concurrent access. */
+ Py_BEGIN_ALLOW_THREADS
+ sha3_update(self->hash_state, buf.buf, buf.len);
+ Py_END_ALLOW_THREADS
+ } else {
+ sha3_update(self->hash_state, buf.buf, buf.len);
+ }
}
PyBuffer_Release(&buf);
@@ -157,6 +169,9 @@ static void
SHA3_dealloc(SHA3object *self)
{
Hacl_Streaming_Keccak_free(self->hash_state);
+ if (self->lock != NULL) {
+ PyThread_free_lock(self->lock);
+ }
PyTypeObject *tp = Py_TYPE(self);
PyObject_Free(self);
Py_DECREF(tp);
@@ -181,7 +196,9 @@ _sha3_sha3_224_copy_impl(SHA3object *self)
if ((newobj = newSHA3object(Py_TYPE(self))) == NULL) {
return NULL;
}
+ ENTER_HASHLIB(self);
newobj->hash_state = Hacl_Streaming_Keccak_copy(self->hash_state);
+ LEAVE_HASHLIB(self);
return (PyObject *)newobj;
}
@@ -199,7 +216,9 @@ _sha3_sha3_224_digest_impl(SHA3object *self)
unsigned char digest[SHA3_MAX_DIGESTSIZE];
// This function errors out if the algorithm is Shake. Here, we know this
// not to be the case, and therefore do not perform error checking.
+ ENTER_HASHLIB(self);
Hacl_Streaming_Keccak_finish(self->hash_state, digest);
+ LEAVE_HASHLIB(self);
return PyBytes_FromStringAndSize((const char *)digest,
Hacl_Streaming_Keccak_hash_len(self->hash_state));
}
@@ -216,7 +235,9 @@ _sha3_sha3_224_hexdigest_impl(SHA3object *self)
/*[clinic end generated code: output=75ad03257906918d input=2d91bb6e0d114ee3]*/
{
unsigned char digest[SHA3_MAX_DIGESTSIZE];
+ ENTER_HASHLIB(self);
Hacl_Streaming_Keccak_finish(self->hash_state, digest);
+ LEAVE_HASHLIB(self);
return _Py_strhex((const char *)digest,
Hacl_Streaming_Keccak_hash_len(self->hash_state));
}
@@ -237,7 +258,18 @@ _sha3_sha3_224_update(SHA3object *self, PyObject *data)
{
Py_buffer buf;
GET_BUFFER_VIEW_OR_ERROUT(data, &buf);
- sha3_update(self->hash_state, buf.buf, buf.len);
+ if (self->lock == NULL && buf.len >= HASHLIB_GIL_MINSIZE) {
+ self->lock = PyThread_allocate_lock();
+ }
+ if (self->lock != NULL) {
+ Py_BEGIN_ALLOW_THREADS
+ PyThread_acquire_lock(self->lock, 1);
+ sha3_update(self->hash_state, buf.buf, buf.len);
+ PyThread_release_lock(self->lock);
+ Py_END_ALLOW_THREADS
+ } else {
+ sha3_update(self->hash_state, buf.buf, buf.len);
+ }
PyBuffer_Release(&buf);
Py_RETURN_NONE;
}
diff --git a/Objects/descrobject.c b/Objects/descrobject.c
index 17c0c85a06c4b8..72ac4703949262 100644
--- a/Objects/descrobject.c
+++ b/Objects/descrobject.c
@@ -1485,7 +1485,10 @@ class property(object):
self.__get = fget
self.__set = fset
self.__del = fdel
- self.__doc__ = doc
+ try:
+ self.__doc__ = doc
+ except AttributeError: # read-only or dict-less class
+ pass
def __get__(self, inst, type=None):
if inst is None:
@@ -1791,6 +1794,19 @@ property_init_impl(propertyobject *self, PyObject *fget, PyObject *fset,
if (rc <= 0) {
return rc;
}
+ if (!Py_IS_TYPE(self, &PyProperty_Type) &&
+ prop_doc != NULL && prop_doc != Py_None) {
+ // This oddity preserves the long existing behavior of surfacing
+ // an AttributeError when using a dict-less (__slots__) property
+ // subclass as a decorator on a getter method with a docstring.
+ // See PropertySubclassTest.test_slots_docstring_copy_exception.
+ int err = PyObject_SetAttr(
+ (PyObject *)self, &_Py_ID(__doc__), prop_doc);
+ if (err < 0) {
+ Py_DECREF(prop_doc); // release our new reference.
+ return -1;
+ }
+ }
if (prop_doc == Py_None) {
prop_doc = NULL;
Py_DECREF(Py_None);
@@ -1806,19 +1822,32 @@ property_init_impl(propertyobject *self, PyObject *fget, PyObject *fset,
if (Py_IS_TYPE(self, &PyProperty_Type)) {
Py_XSETREF(self->prop_doc, prop_doc);
} else {
- /* If this is a property subclass, put __doc__
- in dict of the subclass instance instead,
- otherwise it gets shadowed by __doc__ in the
- class's dict. */
+ /* If this is a property subclass, put __doc__ in the dict
+ or designated slot of the subclass instance instead, otherwise
+ it gets shadowed by __doc__ in the class's dict. */
if (prop_doc == NULL) {
prop_doc = Py_NewRef(Py_None);
}
int err = PyObject_SetAttr(
(PyObject *)self, &_Py_ID(__doc__), prop_doc);
- Py_XDECREF(prop_doc);
- if (err < 0)
- return -1;
+ Py_DECREF(prop_doc);
+ if (err < 0) {
+ assert(PyErr_Occurred());
+ if (PyErr_ExceptionMatches(PyExc_AttributeError)) {
+ PyErr_Clear();
+ // https://github.com/python/cpython/issues/98963#issuecomment-1574413319
+ // Python silently dropped this doc assignment through 3.11.
+ // We preserve that behavior for backwards compatibility.
+ //
+ // If we ever want to deprecate this behavior, only raise a
+ // warning or error when proc_doc is not None so that
+ // property without a specific doc= still works.
+ return 0;
+ } else {
+ return -1;
+ }
+ }
}
return 0;
diff --git a/Objects/exceptions.c b/Objects/exceptions.c
index a8d4e3a696ce8e..7bec7395cc7f0b 100644
--- a/Objects/exceptions.c
+++ b/Objects/exceptions.c
@@ -1351,7 +1351,10 @@ is_same_exception_metadata(PyObject *exc1, PyObject *exc2)
PyObject *
_PyExc_PrepReraiseStar(PyObject *orig, PyObject *excs)
{
+ /* orig must be a raised & caught exception, so it has a traceback */
assert(PyExceptionInstance_Check(orig));
+ assert(_PyBaseExceptionObject_cast(orig)->traceback != NULL);
+
assert(PyList_Check(excs));
Py_ssize_t numexcs = PyList_GET_SIZE(excs);
@@ -1438,6 +1441,42 @@ _PyExc_PrepReraiseStar(PyObject *orig, PyObject *excs)
return result;
}
+PyObject *
+PyUnstable_Exc_PrepReraiseStar(PyObject *orig, PyObject *excs)
+{
+ if (orig == NULL || !PyExceptionInstance_Check(orig)) {
+ PyErr_SetString(PyExc_TypeError, "orig must be an exception instance");
+ return NULL;
+ }
+ if (excs == NULL || !PyList_Check(excs)) {
+ PyErr_SetString(PyExc_TypeError,
+ "excs must be a list of exception instances");
+ return NULL;
+ }
+ Py_ssize_t numexcs = PyList_GET_SIZE(excs);
+ for (Py_ssize_t i = 0; i < numexcs; i++) {
+ PyObject *exc = PyList_GET_ITEM(excs, i);
+ if (exc == NULL || !(PyExceptionInstance_Check(exc) || Py_IsNone(exc))) {
+ PyErr_Format(PyExc_TypeError,
+ "item %d of excs is not an exception", i);
+ return NULL;
+ }
+ }
+
+ /* Make sure that orig has something as traceback, in the interpreter
+ * it always does becuase it's a raised exception.
+ */
+ PyObject *tb = PyException_GetTraceback(orig);
+
+ if (tb == NULL) {
+ PyErr_Format(PyExc_ValueError, "orig must be a raised exception");
+ return NULL;
+ }
+ Py_DECREF(tb);
+
+ return _PyExc_PrepReraiseStar(orig, excs);
+}
+
static PyMemberDef BaseExceptionGroup_members[] = {
{"message", T_OBJECT, offsetof(PyBaseExceptionGroupObject, msg), READONLY,
PyDoc_STR("exception message")},
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
index 2fbcafe91aadc6..b6771d3004df91 100644
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -268,12 +268,6 @@ clear_tp_dict(PyTypeObject *self)
static inline PyObject *
lookup_tp_bases(PyTypeObject *self)
{
- if (self->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN) {
- PyInterpreterState *interp = _PyInterpreterState_GET();
- static_builtin_state *state = _PyStaticType_GetState(interp, self);
- assert(state != NULL);
- return state->tp_bases;
- }
return self->tp_bases;
}
@@ -287,12 +281,22 @@ _PyType_GetBases(PyTypeObject *self)
static inline void
set_tp_bases(PyTypeObject *self, PyObject *bases)
{
+ assert(PyTuple_CheckExact(bases));
if (self->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN) {
- PyInterpreterState *interp = _PyInterpreterState_GET();
- static_builtin_state *state = _PyStaticType_GetState(interp, self);
- assert(state != NULL);
- state->tp_bases = bases;
- return;
+ // XXX tp_bases can probably be statically allocated for each
+ // static builtin type.
+ assert(_Py_IsMainInterpreter(_PyInterpreterState_GET()));
+ assert(self->tp_bases == NULL);
+ if (PyTuple_GET_SIZE(bases) == 0) {
+ assert(self->tp_base == NULL);
+ }
+ else {
+ assert(PyTuple_GET_SIZE(bases) == 1);
+ assert(PyTuple_GET_ITEM(bases, 0) == (PyObject *)self->tp_base);
+ assert(self->tp_base->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN);
+ assert(_Py_IsImmortal(self->tp_base));
+ }
+ _Py_SetImmortal(bases);
}
self->tp_bases = bases;
}
@@ -301,10 +305,17 @@ static inline void
clear_tp_bases(PyTypeObject *self)
{
if (self->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN) {
- PyInterpreterState *interp = _PyInterpreterState_GET();
- static_builtin_state *state = _PyStaticType_GetState(interp, self);
- assert(state != NULL);
- Py_CLEAR(state->tp_bases);
+ if (_Py_IsMainInterpreter(_PyInterpreterState_GET())) {
+ if (self->tp_bases != NULL) {
+ if (PyTuple_GET_SIZE(self->tp_bases) == 0) {
+ Py_CLEAR(self->tp_bases);
+ }
+ else {
+ assert(_Py_IsImmortal(self->tp_bases));
+ _Py_ClearImmortal(self->tp_bases);
+ }
+ }
+ }
return;
}
Py_CLEAR(self->tp_bases);
@@ -314,12 +325,6 @@ clear_tp_bases(PyTypeObject *self)
static inline PyObject *
lookup_tp_mro(PyTypeObject *self)
{
- if (self->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN) {
- PyInterpreterState *interp = _PyInterpreterState_GET();
- static_builtin_state *state = _PyStaticType_GetState(interp, self);
- assert(state != NULL);
- return state->tp_mro;
- }
return self->tp_mro;
}
@@ -333,12 +338,14 @@ _PyType_GetMRO(PyTypeObject *self)
static inline void
set_tp_mro(PyTypeObject *self, PyObject *mro)
{
+ assert(PyTuple_CheckExact(mro));
if (self->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN) {
- PyInterpreterState *interp = _PyInterpreterState_GET();
- static_builtin_state *state = _PyStaticType_GetState(interp, self);
- assert(state != NULL);
- state->tp_mro = mro;
- return;
+ // XXX tp_mro can probably be statically allocated for each
+ // static builtin type.
+ assert(_Py_IsMainInterpreter(_PyInterpreterState_GET()));
+ assert(self->tp_mro == NULL);
+ /* Other checks are done via set_tp_bases. */
+ _Py_SetImmortal(mro);
}
self->tp_mro = mro;
}
@@ -347,10 +354,17 @@ static inline void
clear_tp_mro(PyTypeObject *self)
{
if (self->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN) {
- PyInterpreterState *interp = _PyInterpreterState_GET();
- static_builtin_state *state = _PyStaticType_GetState(interp, self);
- assert(state != NULL);
- Py_CLEAR(state->tp_mro);
+ if (_Py_IsMainInterpreter(_PyInterpreterState_GET())) {
+ if (self->tp_mro != NULL) {
+ if (PyTuple_GET_SIZE(self->tp_mro) == 0) {
+ Py_CLEAR(self->tp_mro);
+ }
+ else {
+ assert(_Py_IsImmortal(self->tp_mro));
+ _Py_ClearImmortal(self->tp_mro);
+ }
+ }
+ }
return;
}
Py_CLEAR(self->tp_mro);
@@ -6988,12 +7002,8 @@ type_ready_pre_checks(PyTypeObject *type)
static int
-type_ready_set_bases(PyTypeObject *type)
+type_ready_set_base(PyTypeObject *type)
{
- if (lookup_tp_bases(type) != NULL) {
- return 0;
- }
-
/* Initialize tp_base (defaults to BaseObject unless that's us) */
PyTypeObject *base = type->tp_base;
if (base == NULL && type != &PyBaseObject_Type) {
@@ -7017,6 +7027,12 @@ type_ready_set_bases(PyTypeObject *type)
}
}
+ return 0;
+}
+
+static int
+type_ready_set_type(PyTypeObject *type)
+{
/* Initialize ob_type if NULL. This means extensions that want to be
compilable separately on Windows can call PyType_Ready() instead of
initializing the ob_type field of their type objects. */
@@ -7024,11 +7040,25 @@ type_ready_set_bases(PyTypeObject *type)
NULL when type is &PyBaseObject_Type, and we know its ob_type is
not NULL (it's initialized to &PyType_Type). But coverity doesn't
know that. */
+ PyTypeObject *base = type->tp_base;
if (Py_IS_TYPE(type, NULL) && base != NULL) {
Py_SET_TYPE(type, Py_TYPE(base));
}
- /* Initialize tp_bases */
+ return 0;
+}
+
+static int
+type_ready_set_bases(PyTypeObject *type)
+{
+ if (type->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN) {
+ if (!_Py_IsMainInterpreter(_PyInterpreterState_GET())) {
+ assert(lookup_tp_bases(type) != NULL);
+ return 0;
+ }
+ assert(lookup_tp_bases(type) == NULL);
+ }
+
PyObject *bases = lookup_tp_bases(type);
if (bases == NULL) {
PyTypeObject *base = type->tp_base;
@@ -7153,6 +7183,14 @@ type_ready_preheader(PyTypeObject *type)
static int
type_ready_mro(PyTypeObject *type)
{
+ if (type->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN) {
+ if (!_Py_IsMainInterpreter(_PyInterpreterState_GET())) {
+ assert(lookup_tp_mro(type) != NULL);
+ return 0;
+ }
+ assert(lookup_tp_mro(type) == NULL);
+ }
+
/* Calculate method resolution order */
if (mro_internal(type, NULL) < 0) {
return -1;
@@ -7430,6 +7468,12 @@ type_ready(PyTypeObject *type, int rerunbuiltin)
if (type_ready_set_dict(type) < 0) {
goto error;
}
+ if (type_ready_set_base(type) < 0) {
+ goto error;
+ }
+ if (type_ready_set_type(type) < 0) {
+ goto error;
+ }
if (type_ready_set_bases(type) < 0) {
goto error;
}
@@ -9428,7 +9472,7 @@ static pytype_slotdef slotdefs[] = {
"__buffer__($self, flags, /)\n--\n\n"
"Return a buffer object that exposes the underlying memory of the object."),
BUFSLOT(__release_buffer__, bf_releasebuffer, slot_bf_releasebuffer, wrap_releasebuffer,
- "__release_buffer__($self, /)\n--\n\n"
+ "__release_buffer__($self, buffer, /)\n--\n\n"
"Release the buffer object that exposes the underlying memory of the object."),
AMSLOT(__await__, am_await, slot_am_await, wrap_unaryfunc,
diff --git a/Objects/typevarobject.c b/Objects/typevarobject.c
index 6730ebfc064e35..0b7d84c706d94e 100644
--- a/Objects/typevarobject.c
+++ b/Objects/typevarobject.c
@@ -443,45 +443,38 @@ static PyMethodDef typevar_methods[] = {
PyDoc_STRVAR(typevar_doc,
"Type variable.\n\
\n\
-Usage::\n\
+The preferred way to construct a type variable is via the dedicated syntax\n\
+for generic functions, classes, and type aliases:\n\
\n\
- T = TypeVar('T') # Can be anything\n\
- A = TypeVar('A', str, bytes) # Must be str or bytes\n\
+ class Sequence[T]: # T is a TypeVar\n\
+ ...\n\
\n\
-Type variables exist primarily for the benefit of static type\n\
-checkers. They serve as the parameters for generic types as well\n\
-as for generic function definitions. See class Generic for more\n\
-information on generic types. Generic functions work as follows:\n\
-\n\
- def repeat(x: T, n: int) -> List[T]:\n\
- '''Return a list containing n references to x.'''\n\
- return [x]*n\n\
+This syntax can also be used to create bound and constrained type\n\
+variables:\n\
\n\
- def longest(x: A, y: A) -> A:\n\
- '''Return the longest of two strings.'''\n\
- return x if len(x) >= len(y) else y\n\
+ class StrSequence[S: str]: # S is a TypeVar bound to str\n\
+ ...\n\
\n\
-The latter example's signature is essentially the overloading\n\
-of (str, str) -> str and (bytes, bytes) -> bytes. Also note\n\
-that if the arguments are instances of some subclass of str,\n\
-the return type is still plain str.\n\
+ class StrOrBytesSequence[A: (str, bytes)]: # A is a TypeVar constrained to str or bytes\n\
+ ...\n\
\n\
-At runtime, isinstance(x, T) and issubclass(C, T) will raise TypeError.\n\
+However, if desired, reusable type variables can also be constructed\n\
+manually, like so:\n\
\n\
-Type variables defined with covariant=True or contravariant=True\n\
-can be used to declare covariant or contravariant generic types.\n\
-See PEP 484 for more details. By default generic types are invariant\n\
-in all type variables.\n\
+ T = TypeVar('T') # Can be anything\n\
+ S = TypeVar('S', bound=str) # Can be any subtype of str\n\
+ A = TypeVar('A', str, bytes) # Must be exactly str or bytes\n\
\n\
-Type variables can be introspected. e.g.:\n\
-\n\
- T.__name__ == 'T'\n\
- T.__constraints__ == ()\n\
- T.__covariant__ == False\n\
- T.__contravariant__ = False\n\
- A.__constraints__ == (str, bytes)\n\
+Type variables exist primarily for the benefit of static type\n\
+checkers. They serve as the parameters for generic types as well\n\
+as for generic function and type alias definitions.\n\
\n\
-Note that only type variables defined in global scope can be pickled.\n\
+The variance of type variables is inferred by type checkers when they are created\n\
+through the type parameter syntax and when ``infer_variance=True`` is passed.\n\
+Manually created type variables may be explicitly marked covariant or\n\
+contravariant by passing ``covariant=True`` or ``contravariant=True``.\n\
+By default, manually created type variables are invariant. See PEP 484\n\
+and PEP 695 for more details.\n\
");
static PyType_Slot typevar_slots[] = {
@@ -942,7 +935,14 @@ static PyMethodDef paramspec_methods[] = {
PyDoc_STRVAR(paramspec_doc,
"Parameter specification variable.\n\
\n\
-Usage::\n\
+The preferred way to construct a parameter specification is via the dedicated syntax\n\
+for generic functions, classes, and type aliases, where\n\
+the use of '**' creates a parameter specification:\n\
+\n\
+ type IntFunc[**P] = Callable[P, int]\n\
+\n\
+For compatibility with Python 3.11 and earlier, ParamSpec objects\n\
+can also be created as follows:\n\
\n\
P = ParamSpec('P')\n\
\n\
@@ -952,12 +952,9 @@ callable to another callable, a pattern commonly found in higher order\n\
functions and decorators. They are only valid when used in ``Concatenate``,\n\
or as the first argument to ``Callable``, or as parameters for user-defined\n\
Generics. See class Generic for more information on generic types. An\n\
-example for annotating a decorator::\n\
-\n\
- T = TypeVar('T')\n\
- P = ParamSpec('P')\n\
+example for annotating a decorator:\n\
\n\
- def add_logging(f: Callable[P, T]) -> Callable[P, T]:\n\
+ def add_logging[**P, T](f: Callable[P, T]) -> Callable[P, T]:\n\
'''A type-safe decorator to add logging to a function.'''\n\
def inner(*args: P.args, **kwargs: P.kwargs) -> T:\n\
logging.info(f'{f.__name__} was called')\n\
@@ -969,17 +966,9 @@ example for annotating a decorator::\n\
'''Add two numbers together.'''\n\
return x + y\n\
\n\
-Parameter specification variables defined with covariant=True or\n\
-contravariant=True can be used to declare covariant or contravariant\n\
-generic types. These keyword arguments are valid, but their actual semantics\n\
-are yet to be decided. See PEP 612 for details.\n\
-\n\
Parameter specification variables can be introspected. e.g.:\n\
\n\
P.__name__ == 'P'\n\
- P.__bound__ == None\n\
- P.__covariant__ == False\n\
- P.__contravariant__ == False\n\
\n\
Note that only parameter specification variables defined in global scope can\n\
be pickled.\n\
@@ -1175,9 +1164,18 @@ static PyMethodDef typevartuple_methods[] = {
};
PyDoc_STRVAR(typevartuple_doc,
-"Type variable tuple.\n\
+"Type variable tuple. A specialized form of type variable that enables\n\
+variadic generics.\n\
+\n\
+The preferred way to construct a type variable tuple is via the dedicated syntax\n\
+for generic functions, classes, and type aliases, where a single\n\
+'*' indicates a type variable tuple:\n\
+\n\
+ def move_first_element_to_last[T, *Ts](tup: tuple[T, *Ts]) -> tuple[*Ts, T]:\n\
+ return (*tup[1:], tup[0])\n\
\n\
-Usage:\n\
+For compatibility with Python 3.11 and earlier, TypeVarTuple objects\n\
+can also be created as follows:\n\
\n\
Ts = TypeVarTuple('Ts') # Can be given any name\n\
\n\
@@ -1185,7 +1183,7 @@ Just as a TypeVar (type variable) is a placeholder for a single type,\n\
a TypeVarTuple is a placeholder for an *arbitrary* number of types. For\n\
example, if we define a generic class using a TypeVarTuple:\n\
\n\
- class C(Generic[*Ts]): ...\n\
+ class C[*Ts]: ...\n\
\n\
Then we can parameterize that class with an arbitrary number of type\n\
arguments:\n\
@@ -1319,8 +1317,13 @@ typealias_module(PyObject *self, void *unused)
return Py_NewRef(ta->module);
}
if (ta->compute_value != NULL) {
- // PyFunction_GetModule() returns a borrowed reference
- return Py_NewRef(PyFunction_GetModule(ta->compute_value));
+ PyObject* mod = PyFunction_GetModule(ta->compute_value);
+ if (mod != NULL) {
+ // PyFunction_GetModule() returns a borrowed reference,
+ // and it may return NULL (e.g., for functions defined
+ // in an exec()'ed block).
+ return Py_NewRef(mod);
+ }
}
Py_RETURN_NONE;
}
@@ -1436,6 +1439,23 @@ PyDoc_STRVAR(typealias_doc,
Type aliases are created through the type statement:\n\
\n\
type Alias = int\n\
+\n\
+In this example, Alias and int will be treated equivalently by static\n\
+type checkers.\n\
+\n\
+At runtime, Alias is an instance of TypeAliasType. The __name__ attribute\n\
+holds the name of the type alias. The value of the type\n\
+alias is stored in the __value__ attribute. It is evaluated lazily, so\n\
+the value is computed only if the attribute is accessed.\n\
+\n\
+Type aliases can also be generic:\n\
+\n\
+ type ListOrSet[T] = list[T] | set[T]\n\
+\n\
+In this case, the type parameters of the alias are stored in the\n\
+__type_params__ attribute.\n\
+\n\
+See PEP 695 for more information.\n\
");
static PyNumberMethods typealias_as_number = {
@@ -1484,14 +1504,14 @@ PyDoc_STRVAR(generic_doc,
\n\
A generic type is typically declared by inheriting from\n\
this class parameterized with one or more type variables.\n\
-For example, a generic mapping type might be defined as::\n\
+For example, a generic mapping type might be defined as:\n\
\n\
class Mapping(Generic[KT, VT]):\n\
def __getitem__(self, key: KT) -> VT:\n\
...\n\
# Etc.\n\
\n\
-This class can then be used as follows::\n\
+This class can then be used as follows:\n\
\n\
def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:\n\
try:\n\
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index ec5684b1d09502..6f25f91c0ff28d 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -236,7 +236,7 @@ static inline PyObject *get_interned_dict(PyInterpreterState *interp)
}
Py_ssize_t
-_PyUnicode_InternedSize()
+_PyUnicode_InternedSize(void)
{
return PyObject_Length(get_interned_dict(_PyInterpreterState_GET()));
}
diff --git a/PC/layout/support/options.py b/PC/layout/support/options.py
index 26d13f5377ad59..60256fb32fe329 100644
--- a/PC/layout/support/options.py
+++ b/PC/layout/support/options.py
@@ -41,7 +41,6 @@ def public(f):
"options": [
"stable",
"pip",
- "pip-user",
"tcltk",
"idle",
"venv",
diff --git a/PC/python3dll.c b/PC/python3dll.c
index 7e848abccfd1fa..f2c0d9dee883d9 100755
--- a/PC/python3dll.c
+++ b/PC/python3dll.c
@@ -18,7 +18,9 @@ EXPORT_FUNC(_Py_BuildValue_SizeT)
EXPORT_FUNC(_Py_CheckRecursiveCall)
EXPORT_FUNC(_Py_Dealloc)
EXPORT_FUNC(_Py_DecRef)
+EXPORT_FUNC(_Py_DecRefTotal_DO_NOT_USE_THIS)
EXPORT_FUNC(_Py_IncRef)
+EXPORT_FUNC(_Py_IncRefTotal_DO_NOT_USE_THIS)
EXPORT_FUNC(_Py_NegativeRefcount)
EXPORT_FUNC(_Py_VaBuildValue_SizeT)
EXPORT_FUNC(_PyArg_Parse_SizeT)
diff --git a/PCbuild/get_externals.bat b/PCbuild/get_externals.bat
index 39003d954d705a..534a9ebcfd151a 100644
--- a/PCbuild/get_externals.bat
+++ b/PCbuild/get_externals.bat
@@ -53,7 +53,7 @@ echo.Fetching external libraries...
set libraries=
set libraries=%libraries% bzip2-1.0.8
if NOT "%IncludeLibffiSrc%"=="false" set libraries=%libraries% libffi-3.4.4
-if NOT "%IncludeSSLSrc%"=="false" set libraries=%libraries% openssl-1.1.1t
+if NOT "%IncludeSSLSrc%"=="false" set libraries=%libraries% openssl-1.1.1u
set libraries=%libraries% sqlite-3.42.0.0
if NOT "%IncludeTkinterSrc%"=="false" set libraries=%libraries% tcl-core-8.6.13.0
if NOT "%IncludeTkinterSrc%"=="false" set libraries=%libraries% tk-8.6.13.0
@@ -77,7 +77,7 @@ echo.Fetching external binaries...
set binaries=
if NOT "%IncludeLibffi%"=="false" set binaries=%binaries% libffi-3.4.4
-if NOT "%IncludeSSL%"=="false" set binaries=%binaries% openssl-bin-1.1.1t
+if NOT "%IncludeSSL%"=="false" set binaries=%binaries% openssl-bin-1.1.1u
if NOT "%IncludeTkinter%"=="false" set binaries=%binaries% tcltk-8.6.13.0
if NOT "%IncludeSSLSrc%"=="false" set binaries=%binaries% nasm-2.11.06
diff --git a/PCbuild/python.props b/PCbuild/python.props
index 1d959699f3cfb0..68052ef668aa6c 100644
--- a/PCbuild/python.props
+++ b/PCbuild/python.props
@@ -74,8 +74,8 @@
$(ExternalsDir)libffi-3.4.4\
$(libffiDir)$(ArchName)\
$(libffiOutDir)include
- $(ExternalsDir)openssl-1.1.1t\
- $(ExternalsDir)openssl-bin-1.1.1t\$(ArchName)\
+ $(ExternalsDir)openssl-1.1.1u\
+ $(ExternalsDir)openssl-bin-1.1.1u\$(ArchName)\
$(opensslOutDir)include
$(ExternalsDir)\nasm-2.11.06\
$(ExternalsDir)\zlib-1.2.13\
diff --git a/PCbuild/pythoncore.vcxproj b/PCbuild/pythoncore.vcxproj
index 48cd4418f90fee..43716487f91bd5 100644
--- a/PCbuild/pythoncore.vcxproj
+++ b/PCbuild/pythoncore.vcxproj
@@ -378,7 +378,7 @@
-
+
diff --git a/PCbuild/pythoncore.vcxproj.filters b/PCbuild/pythoncore.vcxproj.filters
index 5c8c1444e8100e..22eb70a0f2dde4 100644
--- a/PCbuild/pythoncore.vcxproj.filters
+++ b/PCbuild/pythoncore.vcxproj.filters
@@ -782,7 +782,7 @@
Modules
-
+
Modules
diff --git a/PCbuild/readme.txt b/PCbuild/readme.txt
index 3629525e33d56c..784d3ce6a60660 100644
--- a/PCbuild/readme.txt
+++ b/PCbuild/readme.txt
@@ -169,7 +169,7 @@ _lzma
Homepage:
https://tukaani.org/xz/
_ssl
- Python wrapper for version 1.1.1t of the OpenSSL secure sockets
+ Python wrapper for version 1.1.1u of the OpenSSL secure sockets
library, which is downloaded from our binaries repository at
https://github.com/python/cpython-bin-deps.
diff --git a/Parser/Python.asdl b/Parser/Python.asdl
index dc2eb802b0436c..93632a09f0959b 100644
--- a/Parser/Python.asdl
+++ b/Parser/Python.asdl
@@ -8,19 +8,19 @@ module Python
| Expression(expr body)
| FunctionType(expr* argtypes, expr returns)
- stmt = FunctionDef(identifier name, type_param* type_params, arguments args,
+ stmt = FunctionDef(identifier name, arguments args,
stmt* body, expr* decorator_list, expr? returns,
- string? type_comment)
- | AsyncFunctionDef(identifier name, type_param* type_params, arguments args,
+ string? type_comment, type_param* type_params)
+ | AsyncFunctionDef(identifier name, arguments args,
stmt* body, expr* decorator_list, expr? returns,
- string? type_comment)
+ string? type_comment, type_param* type_params)
| ClassDef(identifier name,
- type_param* type_params,
expr* bases,
keyword* keywords,
stmt* body,
- expr* decorator_list)
+ expr* decorator_list,
+ type_param* type_params)
| Return(expr? value)
| Delete(expr* targets)
diff --git a/Parser/action_helpers.c b/Parser/action_helpers.c
index 06d77b64cacbcc..9f5135380db1b2 100644
--- a/Parser/action_helpers.c
+++ b/Parser/action_helpers.c
@@ -752,22 +752,25 @@ _PyPegen_function_def_decorators(Parser *p, asdl_expr_seq *decorators, stmt_ty f
assert(function_def != NULL);
if (function_def->kind == AsyncFunctionDef_kind) {
return _PyAST_AsyncFunctionDef(
- function_def->v.FunctionDef.name, function_def->v.FunctionDef.type_params,
- function_def->v.FunctionDef.args,
- function_def->v.FunctionDef.body, decorators, function_def->v.FunctionDef.returns,
- function_def->v.FunctionDef.type_comment, function_def->lineno,
- function_def->col_offset, function_def->end_lineno, function_def->end_col_offset,
- p->arena);
+ function_def->v.AsyncFunctionDef.name,
+ function_def->v.AsyncFunctionDef.args,
+ function_def->v.AsyncFunctionDef.body, decorators,
+ function_def->v.AsyncFunctionDef.returns,
+ function_def->v.AsyncFunctionDef.type_comment,
+ function_def->v.AsyncFunctionDef.type_params,
+ function_def->lineno, function_def->col_offset,
+ function_def->end_lineno, function_def->end_col_offset, p->arena);
}
return _PyAST_FunctionDef(
- function_def->v.FunctionDef.name, function_def->v.FunctionDef.type_params,
+ function_def->v.FunctionDef.name,
function_def->v.FunctionDef.args,
function_def->v.FunctionDef.body, decorators,
function_def->v.FunctionDef.returns,
- function_def->v.FunctionDef.type_comment, function_def->lineno,
- function_def->col_offset, function_def->end_lineno,
- function_def->end_col_offset, p->arena);
+ function_def->v.FunctionDef.type_comment,
+ function_def->v.FunctionDef.type_params,
+ function_def->lineno, function_def->col_offset,
+ function_def->end_lineno, function_def->end_col_offset, p->arena);
}
/* Construct a ClassDef equivalent to class_def, but with decorators */
@@ -776,9 +779,10 @@ _PyPegen_class_def_decorators(Parser *p, asdl_expr_seq *decorators, stmt_ty clas
{
assert(class_def != NULL);
return _PyAST_ClassDef(
- class_def->v.ClassDef.name, class_def->v.ClassDef.type_params,
+ class_def->v.ClassDef.name,
class_def->v.ClassDef.bases, class_def->v.ClassDef.keywords,
class_def->v.ClassDef.body, decorators,
+ class_def->v.ClassDef.type_params,
class_def->lineno, class_def->col_offset, class_def->end_lineno,
class_def->end_col_offset, p->arena);
}
@@ -1352,6 +1356,25 @@ _PyPegen_joined_str(Parser *p, Token* a, asdl_expr_seq* raw_expressions, Token*b
p->arena);
}
+expr_ty _PyPegen_decoded_constant_from_token(Parser* p, Token* tok) {
+ Py_ssize_t bsize;
+ char* bstr;
+ if (PyBytes_AsStringAndSize(tok->bytes, &bstr, &bsize) == -1) {
+ return NULL;
+ }
+ PyObject* str = _PyPegen_decode_string(p, 0, bstr, bsize, tok);
+ if (str == NULL) {
+ return NULL;
+ }
+ if (_PyArena_AddPyObject(p->arena, str) < 0) {
+ Py_DECREF(str);
+ return NULL;
+ }
+ return _PyAST_Constant(str, NULL, tok->lineno, tok->col_offset,
+ tok->end_lineno, tok->end_col_offset,
+ p->arena);
+}
+
expr_ty _PyPegen_constant_from_token(Parser* p, Token* tok) {
char* bstr = PyBytes_AsString(tok->bytes);
if (bstr == NULL) {
diff --git a/Parser/asdl_c.py b/Parser/asdl_c.py
index 5d5a05a70ca7ec..cb312796f89e04 100755
--- a/Parser/asdl_c.py
+++ b/Parser/asdl_c.py
@@ -632,29 +632,38 @@ def visitField(self, field, name, sum=None, prod=None, depth=0):
self.emit(line % field.name, depth)
self.emit("return 1;", depth+1)
self.emit("}", depth)
- if not field.opt:
+ if field.seq:
self.emit("if (tmp == NULL) {", depth)
- message = "required field \\\"%s\\\" missing from %s" % (field.name, name)
- format = "PyErr_SetString(PyExc_TypeError, \"%s\");"
- self.emit(format % message, depth+1, reflow=False)
- self.emit("return 1;", depth+1)
+ self.emit("tmp = PyList_New(0);", depth+1)
+ self.emit("if (tmp == NULL) {", depth+1)
+ self.emit("return 1;", depth+2)
+ self.emit("}", depth+1)
+ self.emit("}", depth)
+ self.emit("{", depth)
else:
- self.emit("if (tmp == NULL || tmp == Py_None) {", depth)
- self.emit("Py_CLEAR(tmp);", depth+1)
- if self.isNumeric(field):
- if field.name in self.attribute_special_defaults:
- self.emit(
- "%s = %s;" % (field.name, self.attribute_special_defaults[field.name]),
- depth+1,
- )
- else:
- self.emit("%s = 0;" % field.name, depth+1)
- elif not self.isSimpleType(field):
- self.emit("%s = NULL;" % field.name, depth+1)
+ if not field.opt:
+ self.emit("if (tmp == NULL) {", depth)
+ message = "required field \\\"%s\\\" missing from %s" % (field.name, name)
+ format = "PyErr_SetString(PyExc_TypeError, \"%s\");"
+ self.emit(format % message, depth+1, reflow=False)
+ self.emit("return 1;", depth+1)
else:
- raise TypeError("could not determine the default value for %s" % field.name)
- self.emit("}", depth)
- self.emit("else {", depth)
+ self.emit("if (tmp == NULL || tmp == Py_None) {", depth)
+ self.emit("Py_CLEAR(tmp);", depth+1)
+ if self.isNumeric(field):
+ if field.name in self.attribute_special_defaults:
+ self.emit(
+ "%s = %s;" % (field.name, self.attribute_special_defaults[field.name]),
+ depth+1,
+ )
+ else:
+ self.emit("%s = 0;" % field.name, depth+1)
+ elif not self.isSimpleType(field):
+ self.emit("%s = NULL;" % field.name, depth+1)
+ else:
+ raise TypeError("could not determine the default value for %s" % field.name)
+ self.emit("}", depth)
+ self.emit("else {", depth)
self.emit("int res;", depth+1)
if field.seq:
diff --git a/Parser/myreadline.c b/Parser/myreadline.c
index 3f0e29f051a438..7074aba74b728c 100644
--- a/Parser/myreadline.c
+++ b/Parser/myreadline.c
@@ -45,7 +45,10 @@ my_fgets(PyThreadState* tstate, char *buf, int len, FILE *fp)
#endif
while (1) {
- if (PyOS_InputHook != NULL) {
+ if (PyOS_InputHook != NULL &&
+ // GH-104668: See PyOS_ReadlineFunctionPointer's comment below...
+ _Py_IsMainInterpreter(tstate->interp))
+ {
(void)(PyOS_InputHook)();
}
@@ -131,7 +134,10 @@ _PyOS_WindowsConsoleReadline(PyThreadState *tstate, HANDLE hStdIn)
wbuf = wbuf_local;
wbuflen = sizeof(wbuf_local) / sizeof(wbuf_local[0]) - 1;
while (1) {
- if (PyOS_InputHook != NULL) {
+ if (PyOS_InputHook != NULL &&
+ // GH-104668: See PyOS_ReadlineFunctionPointer's comment below...
+ _Py_IsMainInterpreter(tstate->interp))
+ {
(void)(PyOS_InputHook)();
}
if (!ReadConsoleW(hStdIn, &wbuf[total_read], wbuflen - total_read, &n_read, NULL)) {
@@ -389,11 +395,23 @@ PyOS_Readline(FILE *sys_stdin, FILE *sys_stdout, const char *prompt)
* a tty. This can happen, for example if python is run like
* this: python -i < test1.py
*/
- if (!isatty (fileno (sys_stdin)) || !isatty (fileno (sys_stdout)))
- rv = PyOS_StdioReadline (sys_stdin, sys_stdout, prompt);
- else
- rv = (*PyOS_ReadlineFunctionPointer)(sys_stdin, sys_stdout,
- prompt);
+ if (!isatty(fileno(sys_stdin)) || !isatty(fileno(sys_stdout)) ||
+ // GH-104668: Don't call global callbacks like PyOS_InputHook or
+ // PyOS_ReadlineFunctionPointer from subinterpreters, since it seems
+ // like there's no good way for users (like readline and tkinter) to
+ // avoid using global state to manage them. Plus, we generally don't
+ // want to cause trouble for libraries that don't know/care about
+ // subinterpreter support. If libraries really need better APIs that
+ // work per-interpreter and have ways to access module state, we can
+ // certainly add them later (but for now we'll cross our fingers and
+ // hope that nobody actually cares):
+ !_Py_IsMainInterpreter(tstate->interp))
+ {
+ rv = PyOS_StdioReadline(sys_stdin, sys_stdout, prompt);
+ }
+ else {
+ rv = (*PyOS_ReadlineFunctionPointer)(sys_stdin, sys_stdout, prompt);
+ }
Py_END_ALLOW_THREADS
PyThread_release_lock(_PyOS_ReadlineLock);
diff --git a/Parser/parser.c b/Parser/parser.c
index fc5466fea2b3fc..006ee297974a61 100644
--- a/Parser/parser.c
+++ b/Parser/parser.c
@@ -4425,7 +4425,7 @@ class_def_raw_rule(Parser *p)
UNUSED(_end_lineno); // Only used by EXTRA macro
int _end_col_offset = _token->end_col_offset;
UNUSED(_end_col_offset); // Only used by EXTRA macro
- _res = _PyAST_ClassDef ( a -> v . Name . id , t , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , c , NULL , EXTRA );
+ _res = _PyAST_ClassDef ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , c , NULL , t , EXTRA );
if (_res == NULL && PyErr_Occurred()) {
p->error_indicator = 1;
p->level--;
@@ -4602,7 +4602,7 @@ function_def_raw_rule(Parser *p)
UNUSED(_end_lineno); // Only used by EXTRA macro
int _end_col_offset = _token->end_col_offset;
UNUSED(_end_col_offset); // Only used by EXTRA macro
- _res = _PyAST_FunctionDef ( n -> v . Name . id , t , ( params ) ? params : CHECK ( arguments_ty , _PyPegen_empty_arguments ( p ) ) , b , NULL , a , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
+ _res = _PyAST_FunctionDef ( n -> v . Name . id , ( params ) ? params : CHECK ( arguments_ty , _PyPegen_empty_arguments ( p ) ) , b , NULL , a , NEW_TYPE_COMMENT ( p , tc ) , t , EXTRA );
if (_res == NULL && PyErr_Occurred()) {
p->error_indicator = 1;
p->level--;
@@ -4665,7 +4665,7 @@ function_def_raw_rule(Parser *p)
UNUSED(_end_lineno); // Only used by EXTRA macro
int _end_col_offset = _token->end_col_offset;
UNUSED(_end_col_offset); // Only used by EXTRA macro
- _res = CHECK_VERSION ( stmt_ty , 5 , "Async functions are" , _PyAST_AsyncFunctionDef ( n -> v . Name . id , t , ( params ) ? params : CHECK ( arguments_ty , _PyPegen_empty_arguments ( p ) ) , b , NULL , a , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
+ _res = CHECK_VERSION ( stmt_ty , 5 , "Async functions are" , _PyAST_AsyncFunctionDef ( n -> v . Name . id , ( params ) ? params : CHECK ( arguments_ty , _PyPegen_empty_arguments ( p ) ) , b , NULL , a , NEW_TYPE_COMMENT ( p , tc ) , t , EXTRA ) );
if (_res == NULL && PyErr_Occurred()) {
p->error_indicator = 1;
p->level--;
@@ -16323,7 +16323,7 @@ fstring_format_spec_rule(Parser *p)
)
{
D(fprintf(stderr, "%*c+ fstring_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "FSTRING_MIDDLE"));
- _res = _PyPegen_constant_from_token ( p , t );
+ _res = _PyPegen_decoded_constant_from_token ( p , t );
if (_res == NULL && PyErr_Occurred()) {
p->error_indicator = 1;
p->level--;
diff --git a/Parser/pegen.c b/Parser/pegen.c
index b031a6f5d440e8..b9894dd0acc546 100644
--- a/Parser/pegen.c
+++ b/Parser/pegen.c
@@ -924,9 +924,9 @@ _PyPegen_run_parser_from_string(const char *str, int start_rule, PyObject *filen
struct tok_state *tok;
if (flags != NULL && flags->cf_flags & PyCF_IGNORE_COOKIE) {
- tok = _PyTokenizer_FromUTF8(str, exec_input);
+ tok = _PyTokenizer_FromUTF8(str, exec_input, 0);
} else {
- tok = _PyTokenizer_FromString(str, exec_input);
+ tok = _PyTokenizer_FromString(str, exec_input, 0);
}
if (tok == NULL) {
if (PyErr_Occurred()) {
diff --git a/Parser/pegen.h b/Parser/pegen.h
index 8800e9f97f5e04..fe13d10e6b83e3 100644
--- a/Parser/pegen.h
+++ b/Parser/pegen.h
@@ -328,6 +328,7 @@ expr_ty _PyPegen_collect_call_seqs(Parser *, asdl_expr_seq *, asdl_seq *,
int lineno, int col_offset, int end_lineno,
int end_col_offset, PyArena *arena);
expr_ty _PyPegen_constant_from_token(Parser* p, Token* tok);
+expr_ty _PyPegen_decoded_constant_from_token(Parser* p, Token* tok);
expr_ty _PyPegen_constant_from_string(Parser* p, Token* tok);
expr_ty _PyPegen_concatenate_strings(Parser *p, asdl_expr_seq *, int, int, int, int, PyArena *);
expr_ty _PyPegen_FetchRawForm(Parser *p, int, int, int, int);
diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c
index 472d4174726354..fae613e3a18c1d 100644
--- a/Parser/tokenizer.c
+++ b/Parser/tokenizer.c
@@ -103,6 +103,7 @@ tok_new(void)
tok->filename = NULL;
tok->decoding_readline = NULL;
tok->decoding_buffer = NULL;
+ tok->readline = NULL;
tok->type_comments = 0;
tok->async_hacks = 0;
tok->async_def = 0;
@@ -139,8 +140,9 @@ static char *
error_ret(struct tok_state *tok) /* XXX */
{
tok->decoding_erred = 1;
- if (tok->fp != NULL && tok->buf != NULL) /* see _PyTokenizer_Free */
+ if ((tok->fp != NULL || tok->readline != NULL) && tok->buf != NULL) {/* see _PyTokenizer_Free */
PyMem_Free(tok->buf);
+ }
tok->buf = tok->cur = tok->inp = NULL;
tok->start = NULL;
tok->end = NULL;
@@ -772,7 +774,8 @@ translate_into_utf8(const char* str, const char* enc) {
static char *
-translate_newlines(const char *s, int exec_input, struct tok_state *tok) {
+translate_newlines(const char *s, int exec_input, int preserve_crlf,
+ struct tok_state *tok) {
int skip_next_lf = 0;
size_t needed_length = strlen(s) + 2, final_length;
char *buf, *current;
@@ -792,7 +795,7 @@ translate_newlines(const char *s, int exec_input, struct tok_state *tok) {
break;
}
}
- if (c == '\r') {
+ if (!preserve_crlf && c == '\r') {
skip_next_lf = 1;
c = '\n';
}
@@ -800,7 +803,7 @@ translate_newlines(const char *s, int exec_input, struct tok_state *tok) {
}
/* If this is exec input, add a newline to the end of the string if
there isn't one already. */
- if (exec_input && c != '\n') {
+ if (exec_input && c != '\n' && c != '\0') {
*current = '\n';
current++;
}
@@ -822,14 +825,14 @@ translate_newlines(const char *s, int exec_input, struct tok_state *tok) {
inside TOK. */
static char *
-decode_str(const char *input, int single, struct tok_state *tok)
+decode_str(const char *input, int single, struct tok_state *tok, int preserve_crlf)
{
PyObject* utf8 = NULL;
char *str;
const char *s;
const char *newl[2] = {NULL, NULL};
int lineno = 0;
- tok->input = str = translate_newlines(input, single, tok);
+ tok->input = str = translate_newlines(input, single, preserve_crlf, tok);
if (str == NULL)
return NULL;
tok->enc = NULL;
@@ -881,14 +884,14 @@ decode_str(const char *input, int single, struct tok_state *tok)
/* Set up tokenizer for string */
struct tok_state *
-_PyTokenizer_FromString(const char *str, int exec_input)
+_PyTokenizer_FromString(const char *str, int exec_input, int preserve_crlf)
{
struct tok_state *tok = tok_new();
char *decoded;
if (tok == NULL)
return NULL;
- decoded = decode_str(str, exec_input, tok);
+ decoded = decode_str(str, exec_input, tok, preserve_crlf);
if (decoded == NULL) {
_PyTokenizer_Free(tok);
return NULL;
@@ -899,16 +902,43 @@ _PyTokenizer_FromString(const char *str, int exec_input)
return tok;
}
+struct tok_state *
+_PyTokenizer_FromReadline(PyObject* readline, const char* enc,
+ int exec_input, int preserve_crlf)
+{
+ struct tok_state *tok = tok_new();
+ if (tok == NULL)
+ return NULL;
+ if ((tok->buf = (char *)PyMem_Malloc(BUFSIZ)) == NULL) {
+ _PyTokenizer_Free(tok);
+ return NULL;
+ }
+ tok->cur = tok->inp = tok->buf;
+ tok->end = tok->buf + BUFSIZ;
+ tok->fp = NULL;
+ if (enc != NULL) {
+ tok->encoding = new_string(enc, strlen(enc), tok);
+ if (!tok->encoding) {
+ _PyTokenizer_Free(tok);
+ return NULL;
+ }
+ }
+ tok->decoding_state = STATE_NORMAL;
+ Py_INCREF(readline);
+ tok->readline = readline;
+ return tok;
+}
+
/* Set up tokenizer for UTF-8 string */
struct tok_state *
-_PyTokenizer_FromUTF8(const char *str, int exec_input)
+_PyTokenizer_FromUTF8(const char *str, int exec_input, int preserve_crlf)
{
struct tok_state *tok = tok_new();
char *translated;
if (tok == NULL)
return NULL;
- tok->input = translated = translate_newlines(str, exec_input, tok);
+ tok->input = translated = translate_newlines(str, exec_input, preserve_crlf, tok);
if (translated == NULL) {
_PyTokenizer_Free(tok);
return NULL;
@@ -968,8 +998,9 @@ _PyTokenizer_Free(struct tok_state *tok)
}
Py_XDECREF(tok->decoding_readline);
Py_XDECREF(tok->decoding_buffer);
+ Py_XDECREF(tok->readline);
Py_XDECREF(tok->filename);
- if (tok->fp != NULL && tok->buf != NULL) {
+ if ((tok->readline != NULL || tok->fp != NULL ) && tok->buf != NULL) {
PyMem_Free(tok->buf);
}
if (tok->input) {
@@ -1020,6 +1051,71 @@ tok_readline_raw(struct tok_state *tok)
return 1;
}
+static int
+tok_readline_string(struct tok_state* tok) {
+ PyObject* line = NULL;
+ PyObject* raw_line = PyObject_CallNoArgs(tok->readline);
+ if (raw_line == NULL) {
+ if (PyErr_ExceptionMatches(PyExc_StopIteration)) {
+ PyErr_Clear();
+ return 1;
+ }
+ error_ret(tok);
+ goto error;
+ }
+ if(tok->encoding != NULL) {
+ if (!PyBytes_Check(raw_line)) {
+ PyErr_Format(PyExc_TypeError, "readline() returned a non-bytes object");
+ error_ret(tok);
+ goto error;
+ }
+ line = PyUnicode_Decode(PyBytes_AS_STRING(raw_line), PyBytes_GET_SIZE(raw_line),
+ tok->encoding, "replace");
+ Py_CLEAR(raw_line);
+ if (line == NULL) {
+ error_ret(tok);
+ goto error;
+ }
+ } else {
+ if(!PyUnicode_Check(raw_line)) {
+ PyErr_Format(PyExc_TypeError, "readline() returned a non-string object");
+ error_ret(tok);
+ goto error;
+ }
+ line = raw_line;
+ raw_line = NULL;
+ }
+ Py_ssize_t buflen;
+ const char* buf = PyUnicode_AsUTF8AndSize(line, &buflen);
+ if (buf == NULL) {
+ error_ret(tok);
+ goto error;
+ }
+
+ // Make room for the null terminator *and* potentially
+ // an extra newline character that we may need to artificially
+ // add.
+ size_t buffer_size = buflen + 2;
+ if (!tok_reserve_buf(tok, buffer_size)) {
+ goto error;
+ }
+ memcpy(tok->inp, buf, buflen);
+ tok->inp += buflen;
+ *tok->inp = '\0';
+
+ if (tok->start == NULL) {
+ tok->buf = tok->cur;
+ }
+ tok->line_start = tok->cur;
+
+ Py_DECREF(line);
+ return 1;
+error:
+ Py_XDECREF(raw_line);
+ Py_XDECREF(line);
+ return 0;
+}
+
static int
tok_underflow_string(struct tok_state *tok) {
char *end = strchr(tok->inp, '\n');
@@ -1050,7 +1146,7 @@ tok_underflow_interactive(struct tok_state *tok) {
}
char *newtok = PyOS_Readline(tok->fp ? tok->fp : stdin, stdout, tok->prompt);
if (newtok != NULL) {
- char *translated = translate_newlines(newtok, 0, tok);
+ char *translated = translate_newlines(newtok, 0, 0, tok);
PyMem_Free(newtok);
if (translated == NULL) {
return 0;
@@ -1194,6 +1290,38 @@ tok_underflow_file(struct tok_state *tok) {
return tok->done == E_OK;
}
+static int
+tok_underflow_readline(struct tok_state* tok) {
+ assert(tok->decoding_state == STATE_NORMAL);
+ assert(tok->fp == NULL && tok->input == NULL && tok->decoding_readline == NULL);
+ if (tok->start == NULL && !INSIDE_FSTRING(tok)) {
+ tok->cur = tok->inp = tok->buf;
+ }
+ if (!tok_readline_string(tok)) {
+ return 0;
+ }
+ if (tok->inp == tok->cur) {
+ tok->done = E_EOF;
+ return 0;
+ }
+ if (tok->inp[-1] != '\n') {
+ assert(tok->inp + 1 < tok->end);
+ /* Last line does not end in \n, fake one */
+ *tok->inp++ = '\n';
+ *tok->inp = '\0';
+ }
+
+ ADVANCE_LINENO();
+ /* The default encoding is UTF-8, so make sure we don't have any
+ non-UTF-8 sequences in it. */
+ if (!tok->encoding && !ensure_utf8(tok->cur, tok)) {
+ error_ret(tok);
+ return 0;
+ }
+ assert(tok->done == E_OK);
+ return tok->done == E_OK;
+}
+
#if defined(Py_DEBUG)
static void
print_escape(FILE *f, const char *s, Py_ssize_t size)
@@ -1237,7 +1365,10 @@ tok_nextc(struct tok_state *tok)
if (tok->done != E_OK) {
return EOF;
}
- if (tok->fp == NULL) {
+ if (tok->readline) {
+ rc = tok_underflow_readline(tok);
+ }
+ else if (tok->fp == NULL) {
rc = tok_underflow_string(tok);
}
else if (tok->prompt != NULL) {
@@ -1594,6 +1725,9 @@ tok_decimal_tail(struct tok_state *tok)
static inline int
tok_continuation_line(struct tok_state *tok) {
int c = tok_nextc(tok);
+ if (c == '\r') {
+ c = tok_nextc(tok);
+ }
if (c != '\n') {
tok->done = E_LINECONT;
return -1;
@@ -1693,7 +1827,7 @@ tok_get_normal_mode(struct tok_state *tok, tokenizer_mode* current_tok, struct t
}
}
tok_backup(tok, c);
- if (c == '#' || c == '\n') {
+ if (c == '#' || c == '\n' || c == '\r') {
/* Lines with only whitespace and/or comments
shouldn't affect the indentation and are
not passed to the parser as NEWLINE tokens,
@@ -1822,7 +1956,7 @@ tok_get_normal_mode(struct tok_state *tok, tokenizer_mode* current_tok, struct t
const char *prefix, *type_start;
int current_starting_col_offset;
- while (c != EOF && c != '\n') {
+ while (c != EOF && c != '\n' && c != '\r') {
c = tok_nextc(tok);
}
@@ -2002,11 +2136,18 @@ tok_get_normal_mode(struct tok_state *tok, tokenizer_mode* current_tok, struct t
return MAKE_TOKEN(NAME);
}
+ if (c == '\r') {
+ c = tok_nextc(tok);
+ }
+
/* Newline */
if (c == '\n') {
tok->atbol = 1;
if (blankline || tok->level > 0) {
if (tok->tok_extra_tokens) {
+ if (tok->comment_newline) {
+ tok->comment_newline = 0;
+ }
p_start = tok->start;
p_end = tok->cur;
return MAKE_TOKEN(NL);
@@ -2015,9 +2156,9 @@ tok_get_normal_mode(struct tok_state *tok, tokenizer_mode* current_tok, struct t
}
if (tok->comment_newline && tok->tok_extra_tokens) {
tok->comment_newline = 0;
- p_start = tok->start;
- p_end = tok->cur;
- return MAKE_TOKEN(NL);
+ p_start = tok->start;
+ p_end = tok->cur;
+ return MAKE_TOKEN(NL);
}
p_start = tok->start;
p_end = tok->cur - 1; /* Leave '\n' out of the string */
@@ -2402,7 +2543,10 @@ tok_get_normal_mode(struct tok_state *tok, tokenizer_mode* current_tok, struct t
else {
end_quote_size = 0;
if (c == '\\') {
- tok_nextc(tok); /* skip escaped char */
+ c = tok_nextc(tok); /* skip escaped char */
+ if (c == '\r') {
+ c = tok_nextc(tok);
+ }
}
}
}
@@ -2482,41 +2626,42 @@ tok_get_normal_mode(struct tok_state *tok, tokenizer_mode* current_tok, struct t
case ')':
case ']':
case '}':
- if (!tok->level) {
- if (INSIDE_FSTRING(tok) && !current_tok->curly_bracket_depth && c == '}') {
- return MAKE_TOKEN(syntaxerror(tok, "f-string: single '}' is not allowed"));
- }
+ if (INSIDE_FSTRING(tok) && !current_tok->curly_bracket_depth && c == '}') {
+ return MAKE_TOKEN(syntaxerror(tok, "f-string: single '}' is not allowed"));
+ }
+ if (!tok->tok_extra_tokens && !tok->level) {
return MAKE_TOKEN(syntaxerror(tok, "unmatched '%c'", c));
}
- tok->level--;
- int opening = tok->parenstack[tok->level];
- if (!((opening == '(' && c == ')') ||
- (opening == '[' && c == ']') ||
- (opening == '{' && c == '}')))
- {
- /* If the opening bracket belongs to an f-string's expression
- part (e.g. f"{)}") and the closing bracket is an arbitrary
- nested expression, then instead of matching a different
- syntactical construct with it; we'll throw an unmatched
- parentheses error. */
- if (INSIDE_FSTRING(tok) && opening == '{') {
- assert(current_tok->curly_bracket_depth >= 0);
- int previous_bracket = current_tok->curly_bracket_depth - 1;
- if (previous_bracket == current_tok->curly_bracket_expr_start_depth) {
- return MAKE_TOKEN(syntaxerror(tok, "f-string: unmatched '%c'", c));
+ if (tok->level > 0) {
+ tok->level--;
+ int opening = tok->parenstack[tok->level];
+ if (!tok->tok_extra_tokens && !((opening == '(' && c == ')') ||
+ (opening == '[' && c == ']') ||
+ (opening == '{' && c == '}'))) {
+ /* If the opening bracket belongs to an f-string's expression
+ part (e.g. f"{)}") and the closing bracket is an arbitrary
+ nested expression, then instead of matching a different
+ syntactical construct with it; we'll throw an unmatched
+ parentheses error. */
+ if (INSIDE_FSTRING(tok) && opening == '{') {
+ assert(current_tok->curly_bracket_depth >= 0);
+ int previous_bracket = current_tok->curly_bracket_depth - 1;
+ if (previous_bracket == current_tok->curly_bracket_expr_start_depth) {
+ return MAKE_TOKEN(syntaxerror(tok, "f-string: unmatched '%c'", c));
+ }
+ }
+ if (tok->parenlinenostack[tok->level] != tok->lineno) {
+ return MAKE_TOKEN(syntaxerror(tok,
+ "closing parenthesis '%c' does not match "
+ "opening parenthesis '%c' on line %d",
+ c, opening, tok->parenlinenostack[tok->level]));
+ }
+ else {
+ return MAKE_TOKEN(syntaxerror(tok,
+ "closing parenthesis '%c' does not match "
+ "opening parenthesis '%c'",
+ c, opening));
}
- }
- if (tok->parenlinenostack[tok->level] != tok->lineno) {
- return MAKE_TOKEN(syntaxerror(tok,
- "closing parenthesis '%c' does not match "
- "opening parenthesis '%c' on line %d",
- c, opening, tok->parenlinenostack[tok->level]));
- }
- else {
- return MAKE_TOKEN(syntaxerror(tok,
- "closing parenthesis '%c' does not match "
- "opening parenthesis '%c'",
- c, opening));
}
}
@@ -2693,6 +2838,9 @@ tok_get_fstring_mode(struct tok_state *tok, tokenizer_mode* current_tok, struct
return MAKE_TOKEN(FSTRING_MIDDLE);
} else if (c == '\\') {
int peek = tok_nextc(tok);
+ if (peek == '\r') {
+ peek = tok_nextc(tok);
+ }
// Special case when the backslash is right before a curly
// brace. We have to restore and return the control back
// to the loop for the next iteration.
diff --git a/Parser/tokenizer.h b/Parser/tokenizer.h
index 3f34763239acda..600d4297b6865a 100644
--- a/Parser/tokenizer.h
+++ b/Parser/tokenizer.h
@@ -21,7 +21,7 @@ enum decoding_state {
};
enum interactive_underflow_t {
- /* Normal mode of operation: return a new token when asked in interactie mode */
+ /* Normal mode of operation: return a new token when asked in interactive mode */
IUNDERFLOW_NORMAL,
/* Forcefully return ENDMARKER when asked for a new token in interactive mode. This
* can be used to prevent the tokenizer to prompt the user for new tokens */
@@ -109,6 +109,7 @@ struct tok_state {
expression (cf. issue 16806) */
PyObject *decoding_readline; /* open(...).readline */
PyObject *decoding_buffer;
+ PyObject *readline; /* readline() function */
const char* enc; /* Encoding for the current str. */
char* str; /* Source string being tokenized (if tokenizing from a string)*/
char* input; /* Tokenizer's newline translated copy of the string. */
@@ -135,8 +136,9 @@ struct tok_state {
#endif
};
-extern struct tok_state *_PyTokenizer_FromString(const char *, int);
-extern struct tok_state *_PyTokenizer_FromUTF8(const char *, int);
+extern struct tok_state *_PyTokenizer_FromString(const char *, int, int);
+extern struct tok_state *_PyTokenizer_FromUTF8(const char *, int, int);
+extern struct tok_state *_PyTokenizer_FromReadline(PyObject*, const char*, int, int);
extern struct tok_state *_PyTokenizer_FromFile(FILE *, const char*,
const char *, const char *);
extern void _PyTokenizer_Free(struct tok_state *);
diff --git a/Python/Python-ast.c b/Python/Python-ast.c
index 87906d975d7414..84bce59e271471 100644
--- a/Python/Python-ast.c
+++ b/Python/Python-ast.c
@@ -409,29 +409,29 @@ static const char * const stmt_attributes[] = {
static PyObject* ast2obj_stmt(struct ast_state *state, void*);
static const char * const FunctionDef_fields[]={
"name",
- "type_params",
"args",
"body",
"decorator_list",
"returns",
"type_comment",
+ "type_params",
};
static const char * const AsyncFunctionDef_fields[]={
"name",
- "type_params",
"args",
"body",
"decorator_list",
"returns",
"type_comment",
+ "type_params",
};
static const char * const ClassDef_fields[]={
"name",
- "type_params",
"bases",
"keywords",
"body",
"decorator_list",
+ "type_params",
};
static const char * const Return_fields[]={
"value",
@@ -1169,9 +1169,9 @@ init_types(struct ast_state *state)
"FunctionType(expr* argtypes, expr returns)");
if (!state->FunctionType_type) return 0;
state->stmt_type = make_type(state, "stmt", state->AST_type, NULL, 0,
- "stmt = FunctionDef(identifier name, type_param* type_params, arguments args, stmt* body, expr* decorator_list, expr? returns, string? type_comment)\n"
- " | AsyncFunctionDef(identifier name, type_param* type_params, arguments args, stmt* body, expr* decorator_list, expr? returns, string? type_comment)\n"
- " | ClassDef(identifier name, type_param* type_params, expr* bases, keyword* keywords, stmt* body, expr* decorator_list)\n"
+ "stmt = FunctionDef(identifier name, arguments args, stmt* body, expr* decorator_list, expr? returns, string? type_comment, type_param* type_params)\n"
+ " | AsyncFunctionDef(identifier name, arguments args, stmt* body, expr* decorator_list, expr? returns, string? type_comment, type_param* type_params)\n"
+ " | ClassDef(identifier name, expr* bases, keyword* keywords, stmt* body, expr* decorator_list, type_param* type_params)\n"
" | Return(expr? value)\n"
" | Delete(expr* targets)\n"
" | Assign(expr* targets, expr value, string? type_comment)\n"
@@ -1206,7 +1206,7 @@ init_types(struct ast_state *state)
return 0;
state->FunctionDef_type = make_type(state, "FunctionDef", state->stmt_type,
FunctionDef_fields, 7,
- "FunctionDef(identifier name, type_param* type_params, arguments args, stmt* body, expr* decorator_list, expr? returns, string? type_comment)");
+ "FunctionDef(identifier name, arguments args, stmt* body, expr* decorator_list, expr? returns, string? type_comment, type_param* type_params)");
if (!state->FunctionDef_type) return 0;
if (PyObject_SetAttr(state->FunctionDef_type, state->returns, Py_None) ==
-1)
@@ -1217,7 +1217,7 @@ init_types(struct ast_state *state)
state->AsyncFunctionDef_type = make_type(state, "AsyncFunctionDef",
state->stmt_type,
AsyncFunctionDef_fields, 7,
- "AsyncFunctionDef(identifier name, type_param* type_params, arguments args, stmt* body, expr* decorator_list, expr? returns, string? type_comment)");
+ "AsyncFunctionDef(identifier name, arguments args, stmt* body, expr* decorator_list, expr? returns, string? type_comment, type_param* type_params)");
if (!state->AsyncFunctionDef_type) return 0;
if (PyObject_SetAttr(state->AsyncFunctionDef_type, state->returns, Py_None)
== -1)
@@ -1227,7 +1227,7 @@ init_types(struct ast_state *state)
return 0;
state->ClassDef_type = make_type(state, "ClassDef", state->stmt_type,
ClassDef_fields, 6,
- "ClassDef(identifier name, type_param* type_params, expr* bases, keyword* keywords, stmt* body, expr* decorator_list)");
+ "ClassDef(identifier name, expr* bases, keyword* keywords, stmt* body, expr* decorator_list, type_param* type_params)");
if (!state->ClassDef_type) return 0;
state->Return_type = make_type(state, "Return", state->stmt_type,
Return_fields, 1,
@@ -2032,11 +2032,11 @@ _PyAST_FunctionType(asdl_expr_seq * argtypes, expr_ty returns, PyArena *arena)
}
stmt_ty
-_PyAST_FunctionDef(identifier name, asdl_type_param_seq * type_params,
- arguments_ty args, asdl_stmt_seq * body, asdl_expr_seq *
- decorator_list, expr_ty returns, string type_comment, int
- lineno, int col_offset, int end_lineno, int end_col_offset,
- PyArena *arena)
+_PyAST_FunctionDef(identifier name, arguments_ty args, asdl_stmt_seq * body,
+ asdl_expr_seq * decorator_list, expr_ty returns, string
+ type_comment, asdl_type_param_seq * type_params, int lineno,
+ int col_offset, int end_lineno, int end_col_offset, PyArena
+ *arena)
{
stmt_ty p;
if (!name) {
@@ -2054,12 +2054,12 @@ _PyAST_FunctionDef(identifier name, asdl_type_param_seq * type_params,
return NULL;
p->kind = FunctionDef_kind;
p->v.FunctionDef.name = name;
- p->v.FunctionDef.type_params = type_params;
p->v.FunctionDef.args = args;
p->v.FunctionDef.body = body;
p->v.FunctionDef.decorator_list = decorator_list;
p->v.FunctionDef.returns = returns;
p->v.FunctionDef.type_comment = type_comment;
+ p->v.FunctionDef.type_params = type_params;
p->lineno = lineno;
p->col_offset = col_offset;
p->end_lineno = end_lineno;
@@ -2068,9 +2068,9 @@ _PyAST_FunctionDef(identifier name, asdl_type_param_seq * type_params,
}
stmt_ty
-_PyAST_AsyncFunctionDef(identifier name, asdl_type_param_seq * type_params,
- arguments_ty args, asdl_stmt_seq * body, asdl_expr_seq
- * decorator_list, expr_ty returns, string type_comment,
+_PyAST_AsyncFunctionDef(identifier name, arguments_ty args, asdl_stmt_seq *
+ body, asdl_expr_seq * decorator_list, expr_ty returns,
+ string type_comment, asdl_type_param_seq * type_params,
int lineno, int col_offset, int end_lineno, int
end_col_offset, PyArena *arena)
{
@@ -2090,12 +2090,12 @@ _PyAST_AsyncFunctionDef(identifier name, asdl_type_param_seq * type_params,
return NULL;
p->kind = AsyncFunctionDef_kind;
p->v.AsyncFunctionDef.name = name;
- p->v.AsyncFunctionDef.type_params = type_params;
p->v.AsyncFunctionDef.args = args;
p->v.AsyncFunctionDef.body = body;
p->v.AsyncFunctionDef.decorator_list = decorator_list;
p->v.AsyncFunctionDef.returns = returns;
p->v.AsyncFunctionDef.type_comment = type_comment;
+ p->v.AsyncFunctionDef.type_params = type_params;
p->lineno = lineno;
p->col_offset = col_offset;
p->end_lineno = end_lineno;
@@ -2104,11 +2104,10 @@ _PyAST_AsyncFunctionDef(identifier name, asdl_type_param_seq * type_params,
}
stmt_ty
-_PyAST_ClassDef(identifier name, asdl_type_param_seq * type_params,
- asdl_expr_seq * bases, asdl_keyword_seq * keywords,
- asdl_stmt_seq * body, asdl_expr_seq * decorator_list, int
- lineno, int col_offset, int end_lineno, int end_col_offset,
- PyArena *arena)
+_PyAST_ClassDef(identifier name, asdl_expr_seq * bases, asdl_keyword_seq *
+ keywords, asdl_stmt_seq * body, asdl_expr_seq * decorator_list,
+ asdl_type_param_seq * type_params, int lineno, int col_offset,
+ int end_lineno, int end_col_offset, PyArena *arena)
{
stmt_ty p;
if (!name) {
@@ -2121,11 +2120,11 @@ _PyAST_ClassDef(identifier name, asdl_type_param_seq * type_params,
return NULL;
p->kind = ClassDef_kind;
p->v.ClassDef.name = name;
- p->v.ClassDef.type_params = type_params;
p->v.ClassDef.bases = bases;
p->v.ClassDef.keywords = keywords;
p->v.ClassDef.body = body;
p->v.ClassDef.decorator_list = decorator_list;
+ p->v.ClassDef.type_params = type_params;
p->lineno = lineno;
p->col_offset = col_offset;
p->end_lineno = end_lineno;
@@ -3883,12 +3882,6 @@ ast2obj_stmt(struct ast_state *state, void* _o)
if (PyObject_SetAttr(result, state->name, value) == -1)
goto failed;
Py_DECREF(value);
- value = ast2obj_list(state, (asdl_seq*)o->v.FunctionDef.type_params,
- ast2obj_type_param);
- if (!value) goto failed;
- if (PyObject_SetAttr(result, state->type_params, value) == -1)
- goto failed;
- Py_DECREF(value);
value = ast2obj_arguments(state, o->v.FunctionDef.args);
if (!value) goto failed;
if (PyObject_SetAttr(result, state->args, value) == -1)
@@ -3916,6 +3909,12 @@ ast2obj_stmt(struct ast_state *state, void* _o)
if (PyObject_SetAttr(result, state->type_comment, value) == -1)
goto failed;
Py_DECREF(value);
+ value = ast2obj_list(state, (asdl_seq*)o->v.FunctionDef.type_params,
+ ast2obj_type_param);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->type_params, value) == -1)
+ goto failed;
+ Py_DECREF(value);
break;
case AsyncFunctionDef_kind:
tp = (PyTypeObject *)state->AsyncFunctionDef_type;
@@ -3926,13 +3925,6 @@ ast2obj_stmt(struct ast_state *state, void* _o)
if (PyObject_SetAttr(result, state->name, value) == -1)
goto failed;
Py_DECREF(value);
- value = ast2obj_list(state,
- (asdl_seq*)o->v.AsyncFunctionDef.type_params,
- ast2obj_type_param);
- if (!value) goto failed;
- if (PyObject_SetAttr(result, state->type_params, value) == -1)
- goto failed;
- Py_DECREF(value);
value = ast2obj_arguments(state, o->v.AsyncFunctionDef.args);
if (!value) goto failed;
if (PyObject_SetAttr(result, state->args, value) == -1)
@@ -3961,6 +3953,13 @@ ast2obj_stmt(struct ast_state *state, void* _o)
if (PyObject_SetAttr(result, state->type_comment, value) == -1)
goto failed;
Py_DECREF(value);
+ value = ast2obj_list(state,
+ (asdl_seq*)o->v.AsyncFunctionDef.type_params,
+ ast2obj_type_param);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->type_params, value) == -1)
+ goto failed;
+ Py_DECREF(value);
break;
case ClassDef_kind:
tp = (PyTypeObject *)state->ClassDef_type;
@@ -3971,12 +3970,6 @@ ast2obj_stmt(struct ast_state *state, void* _o)
if (PyObject_SetAttr(result, state->name, value) == -1)
goto failed;
Py_DECREF(value);
- value = ast2obj_list(state, (asdl_seq*)o->v.ClassDef.type_params,
- ast2obj_type_param);
- if (!value) goto failed;
- if (PyObject_SetAttr(result, state->type_params, value) == -1)
- goto failed;
- Py_DECREF(value);
value = ast2obj_list(state, (asdl_seq*)o->v.ClassDef.bases,
ast2obj_expr);
if (!value) goto failed;
@@ -4001,6 +3994,12 @@ ast2obj_stmt(struct ast_state *state, void* _o)
if (PyObject_SetAttr(result, state->decorator_list, value) == -1)
goto failed;
Py_DECREF(value);
+ value = ast2obj_list(state, (asdl_seq*)o->v.ClassDef.type_params,
+ ast2obj_type_param);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->type_params, value) == -1)
+ goto failed;
+ Py_DECREF(value);
break;
case Return_kind:
tp = (PyTypeObject *)state->Return_type;
@@ -5761,10 +5760,12 @@ obj2ast_mod(struct ast_state *state, PyObject* obj, mod_ty* out, PyArena* arena)
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from Module");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -5797,10 +5798,12 @@ obj2ast_mod(struct ast_state *state, PyObject* obj, mod_ty* out, PyArena* arena)
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"type_ignores\" missing from Module");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -5845,10 +5848,12 @@ obj2ast_mod(struct ast_state *state, PyObject* obj, mod_ty* out, PyArena* arena)
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from Interactive");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -5923,10 +5928,12 @@ obj2ast_mod(struct ast_state *state, PyObject* obj, mod_ty* out, PyArena* arena)
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"argtypes\" missing from FunctionType");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -6075,12 +6082,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
}
if (isinstance) {
identifier name;
- asdl_type_param_seq* type_params;
arguments_ty args;
asdl_stmt_seq* body;
asdl_expr_seq* decorator_list;
expr_ty returns;
string type_comment;
+ asdl_type_param_seq* type_params;
if (_PyObject_LookupAttr(obj, state->name, &tmp) < 0) {
return 1;
@@ -6099,42 +6106,6 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
if (res != 0) goto failed;
Py_CLEAR(tmp);
}
- if (_PyObject_LookupAttr(obj, state->type_params, &tmp) < 0) {
- return 1;
- }
- if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"type_params\" missing from FunctionDef");
- return 1;
- }
- else {
- int res;
- Py_ssize_t len;
- Py_ssize_t i;
- if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "FunctionDef field \"type_params\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
- goto failed;
- }
- len = PyList_GET_SIZE(tmp);
- type_params = _Py_asdl_type_param_seq_new(len, arena);
- if (type_params == NULL) goto failed;
- for (i = 0; i < len; i++) {
- type_param_ty val;
- PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
- if (_Py_EnterRecursiveCall(" while traversing 'FunctionDef' node")) {
- goto failed;
- }
- res = obj2ast_type_param(state, tmp2, &val, arena);
- _Py_LeaveRecursiveCall();
- Py_DECREF(tmp2);
- if (res != 0) goto failed;
- if (len != PyList_GET_SIZE(tmp)) {
- PyErr_SetString(PyExc_RuntimeError, "FunctionDef field \"type_params\" changed size during iteration");
- goto failed;
- }
- asdl_seq_SET(type_params, i, val);
- }
- Py_CLEAR(tmp);
- }
if (_PyObject_LookupAttr(obj, state->args, &tmp) < 0) {
return 1;
}
@@ -6156,10 +6127,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from FunctionDef");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -6192,10 +6165,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"decorator_list\" missing from FunctionDef");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -6258,10 +6233,48 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
if (res != 0) goto failed;
Py_CLEAR(tmp);
}
- *out = _PyAST_FunctionDef(name, type_params, args, body,
- decorator_list, returns, type_comment,
- lineno, col_offset, end_lineno,
- end_col_offset, arena);
+ if (_PyObject_LookupAttr(obj, state->type_params, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "FunctionDef field \"type_params\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ type_params = _Py_asdl_type_param_seq_new(len, arena);
+ if (type_params == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ type_param_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'FunctionDef' node")) {
+ goto failed;
+ }
+ res = obj2ast_type_param(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "FunctionDef field \"type_params\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(type_params, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_FunctionDef(name, args, body, decorator_list, returns,
+ type_comment, type_params, lineno,
+ col_offset, end_lineno, end_col_offset,
+ arena);
if (*out == NULL) goto failed;
return 0;
}
@@ -6272,12 +6285,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
}
if (isinstance) {
identifier name;
- asdl_type_param_seq* type_params;
arguments_ty args;
asdl_stmt_seq* body;
asdl_expr_seq* decorator_list;
expr_ty returns;
string type_comment;
+ asdl_type_param_seq* type_params;
if (_PyObject_LookupAttr(obj, state->name, &tmp) < 0) {
return 1;
@@ -6296,42 +6309,6 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
if (res != 0) goto failed;
Py_CLEAR(tmp);
}
- if (_PyObject_LookupAttr(obj, state->type_params, &tmp) < 0) {
- return 1;
- }
- if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"type_params\" missing from AsyncFunctionDef");
- return 1;
- }
- else {
- int res;
- Py_ssize_t len;
- Py_ssize_t i;
- if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "AsyncFunctionDef field \"type_params\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
- goto failed;
- }
- len = PyList_GET_SIZE(tmp);
- type_params = _Py_asdl_type_param_seq_new(len, arena);
- if (type_params == NULL) goto failed;
- for (i = 0; i < len; i++) {
- type_param_ty val;
- PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
- if (_Py_EnterRecursiveCall(" while traversing 'AsyncFunctionDef' node")) {
- goto failed;
- }
- res = obj2ast_type_param(state, tmp2, &val, arena);
- _Py_LeaveRecursiveCall();
- Py_DECREF(tmp2);
- if (res != 0) goto failed;
- if (len != PyList_GET_SIZE(tmp)) {
- PyErr_SetString(PyExc_RuntimeError, "AsyncFunctionDef field \"type_params\" changed size during iteration");
- goto failed;
- }
- asdl_seq_SET(type_params, i, val);
- }
- Py_CLEAR(tmp);
- }
if (_PyObject_LookupAttr(obj, state->args, &tmp) < 0) {
return 1;
}
@@ -6353,10 +6330,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from AsyncFunctionDef");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -6389,10 +6368,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"decorator_list\" missing from AsyncFunctionDef");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -6455,8 +6436,46 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
if (res != 0) goto failed;
Py_CLEAR(tmp);
}
- *out = _PyAST_AsyncFunctionDef(name, type_params, args, body,
- decorator_list, returns, type_comment,
+ if (_PyObject_LookupAttr(obj, state->type_params, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "AsyncFunctionDef field \"type_params\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ type_params = _Py_asdl_type_param_seq_new(len, arena);
+ if (type_params == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ type_param_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'AsyncFunctionDef' node")) {
+ goto failed;
+ }
+ res = obj2ast_type_param(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "AsyncFunctionDef field \"type_params\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(type_params, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_AsyncFunctionDef(name, args, body, decorator_list,
+ returns, type_comment, type_params,
lineno, col_offset, end_lineno,
end_col_offset, arena);
if (*out == NULL) goto failed;
@@ -6469,11 +6488,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
}
if (isinstance) {
identifier name;
- asdl_type_param_seq* type_params;
asdl_expr_seq* bases;
asdl_keyword_seq* keywords;
asdl_stmt_seq* body;
asdl_expr_seq* decorator_list;
+ asdl_type_param_seq* type_params;
if (_PyObject_LookupAttr(obj, state->name, &tmp) < 0) {
return 1;
@@ -6492,188 +6511,198 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
if (res != 0) goto failed;
Py_CLEAR(tmp);
}
- if (_PyObject_LookupAttr(obj, state->type_params, &tmp) < 0) {
+ if (_PyObject_LookupAttr(obj, state->bases, &tmp) < 0) {
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"type_params\" missing from ClassDef");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "ClassDef field \"type_params\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "ClassDef field \"bases\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
goto failed;
}
len = PyList_GET_SIZE(tmp);
- type_params = _Py_asdl_type_param_seq_new(len, arena);
- if (type_params == NULL) goto failed;
+ bases = _Py_asdl_expr_seq_new(len, arena);
+ if (bases == NULL) goto failed;
for (i = 0; i < len; i++) {
- type_param_ty val;
+ expr_ty val;
PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
if (_Py_EnterRecursiveCall(" while traversing 'ClassDef' node")) {
goto failed;
}
- res = obj2ast_type_param(state, tmp2, &val, arena);
+ res = obj2ast_expr(state, tmp2, &val, arena);
_Py_LeaveRecursiveCall();
Py_DECREF(tmp2);
if (res != 0) goto failed;
if (len != PyList_GET_SIZE(tmp)) {
- PyErr_SetString(PyExc_RuntimeError, "ClassDef field \"type_params\" changed size during iteration");
+ PyErr_SetString(PyExc_RuntimeError, "ClassDef field \"bases\" changed size during iteration");
goto failed;
}
- asdl_seq_SET(type_params, i, val);
+ asdl_seq_SET(bases, i, val);
}
Py_CLEAR(tmp);
}
- if (_PyObject_LookupAttr(obj, state->bases, &tmp) < 0) {
+ if (_PyObject_LookupAttr(obj, state->keywords, &tmp) < 0) {
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"bases\" missing from ClassDef");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "ClassDef field \"bases\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "ClassDef field \"keywords\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
goto failed;
}
len = PyList_GET_SIZE(tmp);
- bases = _Py_asdl_expr_seq_new(len, arena);
- if (bases == NULL) goto failed;
+ keywords = _Py_asdl_keyword_seq_new(len, arena);
+ if (keywords == NULL) goto failed;
for (i = 0; i < len; i++) {
- expr_ty val;
+ keyword_ty val;
PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
if (_Py_EnterRecursiveCall(" while traversing 'ClassDef' node")) {
goto failed;
}
- res = obj2ast_expr(state, tmp2, &val, arena);
+ res = obj2ast_keyword(state, tmp2, &val, arena);
_Py_LeaveRecursiveCall();
Py_DECREF(tmp2);
if (res != 0) goto failed;
if (len != PyList_GET_SIZE(tmp)) {
- PyErr_SetString(PyExc_RuntimeError, "ClassDef field \"bases\" changed size during iteration");
+ PyErr_SetString(PyExc_RuntimeError, "ClassDef field \"keywords\" changed size during iteration");
goto failed;
}
- asdl_seq_SET(bases, i, val);
+ asdl_seq_SET(keywords, i, val);
}
Py_CLEAR(tmp);
}
- if (_PyObject_LookupAttr(obj, state->keywords, &tmp) < 0) {
+ if (_PyObject_LookupAttr(obj, state->body, &tmp) < 0) {
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"keywords\" missing from ClassDef");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "ClassDef field \"keywords\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "ClassDef field \"body\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
goto failed;
}
len = PyList_GET_SIZE(tmp);
- keywords = _Py_asdl_keyword_seq_new(len, arena);
- if (keywords == NULL) goto failed;
+ body = _Py_asdl_stmt_seq_new(len, arena);
+ if (body == NULL) goto failed;
for (i = 0; i < len; i++) {
- keyword_ty val;
+ stmt_ty val;
PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
if (_Py_EnterRecursiveCall(" while traversing 'ClassDef' node")) {
goto failed;
}
- res = obj2ast_keyword(state, tmp2, &val, arena);
+ res = obj2ast_stmt(state, tmp2, &val, arena);
_Py_LeaveRecursiveCall();
Py_DECREF(tmp2);
if (res != 0) goto failed;
if (len != PyList_GET_SIZE(tmp)) {
- PyErr_SetString(PyExc_RuntimeError, "ClassDef field \"keywords\" changed size during iteration");
+ PyErr_SetString(PyExc_RuntimeError, "ClassDef field \"body\" changed size during iteration");
goto failed;
}
- asdl_seq_SET(keywords, i, val);
+ asdl_seq_SET(body, i, val);
}
Py_CLEAR(tmp);
}
- if (_PyObject_LookupAttr(obj, state->body, &tmp) < 0) {
+ if (_PyObject_LookupAttr(obj, state->decorator_list, &tmp) < 0) {
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from ClassDef");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "ClassDef field \"body\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "ClassDef field \"decorator_list\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
goto failed;
}
len = PyList_GET_SIZE(tmp);
- body = _Py_asdl_stmt_seq_new(len, arena);
- if (body == NULL) goto failed;
+ decorator_list = _Py_asdl_expr_seq_new(len, arena);
+ if (decorator_list == NULL) goto failed;
for (i = 0; i < len; i++) {
- stmt_ty val;
+ expr_ty val;
PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
if (_Py_EnterRecursiveCall(" while traversing 'ClassDef' node")) {
goto failed;
}
- res = obj2ast_stmt(state, tmp2, &val, arena);
+ res = obj2ast_expr(state, tmp2, &val, arena);
_Py_LeaveRecursiveCall();
Py_DECREF(tmp2);
if (res != 0) goto failed;
if (len != PyList_GET_SIZE(tmp)) {
- PyErr_SetString(PyExc_RuntimeError, "ClassDef field \"body\" changed size during iteration");
+ PyErr_SetString(PyExc_RuntimeError, "ClassDef field \"decorator_list\" changed size during iteration");
goto failed;
}
- asdl_seq_SET(body, i, val);
+ asdl_seq_SET(decorator_list, i, val);
}
Py_CLEAR(tmp);
}
- if (_PyObject_LookupAttr(obj, state->decorator_list, &tmp) < 0) {
+ if (_PyObject_LookupAttr(obj, state->type_params, &tmp) < 0) {
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"decorator_list\" missing from ClassDef");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "ClassDef field \"decorator_list\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "ClassDef field \"type_params\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
goto failed;
}
len = PyList_GET_SIZE(tmp);
- decorator_list = _Py_asdl_expr_seq_new(len, arena);
- if (decorator_list == NULL) goto failed;
+ type_params = _Py_asdl_type_param_seq_new(len, arena);
+ if (type_params == NULL) goto failed;
for (i = 0; i < len; i++) {
- expr_ty val;
+ type_param_ty val;
PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
if (_Py_EnterRecursiveCall(" while traversing 'ClassDef' node")) {
goto failed;
}
- res = obj2ast_expr(state, tmp2, &val, arena);
+ res = obj2ast_type_param(state, tmp2, &val, arena);
_Py_LeaveRecursiveCall();
Py_DECREF(tmp2);
if (res != 0) goto failed;
if (len != PyList_GET_SIZE(tmp)) {
- PyErr_SetString(PyExc_RuntimeError, "ClassDef field \"decorator_list\" changed size during iteration");
+ PyErr_SetString(PyExc_RuntimeError, "ClassDef field \"type_params\" changed size during iteration");
goto failed;
}
- asdl_seq_SET(decorator_list, i, val);
+ asdl_seq_SET(type_params, i, val);
}
Py_CLEAR(tmp);
}
- *out = _PyAST_ClassDef(name, type_params, bases, keywords, body,
- decorator_list, lineno, col_offset, end_lineno,
+ *out = _PyAST_ClassDef(name, bases, keywords, body, decorator_list,
+ type_params, lineno, col_offset, end_lineno,
end_col_offset, arena);
if (*out == NULL) goto failed;
return 0;
@@ -6720,10 +6749,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"targets\" missing from Delete");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -6771,10 +6802,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"targets\" missing from Assign");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -6873,10 +6906,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"type_params\" missing from TypeAlias");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -7127,10 +7162,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from For");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -7163,10 +7200,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"orelse\" missing from For");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -7267,10 +7306,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from AsyncFor");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -7303,10 +7344,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"orelse\" missing from AsyncFor");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -7389,10 +7432,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from While");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -7425,10 +7470,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"orelse\" missing from While");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -7493,10 +7540,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from If");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -7529,10 +7578,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"orelse\" missing from If");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -7580,10 +7631,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"items\" missing from With");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -7616,10 +7669,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from With");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -7684,10 +7739,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"items\" missing from AsyncWith");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -7720,10 +7777,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from AsyncWith");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -7804,10 +7863,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"cases\" missing from Match");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -7904,10 +7965,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from Try");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -7940,10 +8003,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"handlers\" missing from Try");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -7976,10 +8041,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"orelse\" missing from Try");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -8012,10 +8079,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"finalbody\" missing from Try");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -8064,10 +8133,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from TryStar");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -8100,10 +8171,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"handlers\" missing from TryStar");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -8136,10 +8209,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"orelse\" missing from TryStar");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -8172,10 +8247,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"finalbody\" missing from TryStar");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -8269,10 +8346,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"names\" missing from Import");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -8337,10 +8416,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"names\" missing from ImportFrom");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -8403,10 +8484,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"names\" missing from Global");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -8452,10 +8535,12 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"names\" missing from Nonlocal");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -8677,10 +8762,12 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"values\" missing from BoolOp");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -9003,10 +9090,12 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"keys\" missing from Dict");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -9039,10 +9128,12 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"values\" missing from Dict");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -9088,10 +9179,12 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"elts\" missing from Set");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -9155,10 +9248,12 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"generators\" missing from ListComp");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -9222,10 +9317,12 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"generators\" missing from SetComp");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -9307,10 +9404,12 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"generators\" missing from DictComp");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -9374,10 +9473,12 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"generators\" missing from GeneratorExp");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -9532,10 +9633,12 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"ops\" missing from Compare");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -9568,10 +9671,12 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"comparators\" missing from Compare");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -9636,10 +9741,12 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"args\" missing from Call");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -9672,10 +9779,12 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"keywords\" missing from Call");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -9788,10 +9897,12 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"values\" missing from JoinedStr");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -10114,10 +10225,12 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"elts\" missing from List");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -10181,10 +10294,12 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"elts\" missing from Tuple");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -10667,10 +10782,12 @@ obj2ast_comprehension(struct ast_state *state, PyObject* obj, comprehension_ty*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"ifs\" missing from comprehension");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -10856,10 +10973,12 @@ obj2ast_excepthandler(struct ast_state *state, PyObject* obj, excepthandler_ty*
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from ExceptHandler");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -10917,10 +11036,12 @@ obj2ast_arguments(struct ast_state *state, PyObject* obj, arguments_ty* out,
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"posonlyargs\" missing from arguments");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -10953,10 +11074,12 @@ obj2ast_arguments(struct ast_state *state, PyObject* obj, arguments_ty* out,
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"args\" missing from arguments");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -11006,10 +11129,12 @@ obj2ast_arguments(struct ast_state *state, PyObject* obj, arguments_ty* out,
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"kwonlyargs\" missing from arguments");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -11042,10 +11167,12 @@ obj2ast_arguments(struct ast_state *state, PyObject* obj, arguments_ty* out,
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"kw_defaults\" missing from arguments");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -11095,10 +11222,12 @@ obj2ast_arguments(struct ast_state *state, PyObject* obj, arguments_ty* out,
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"defaults\" missing from arguments");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -11614,10 +11743,12 @@ obj2ast_match_case(struct ast_state *state, PyObject* obj, match_case_ty* out,
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from match_case");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -11810,10 +11941,12 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out,
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"patterns\" missing from MatchSequence");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -11861,10 +11994,12 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out,
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"keys\" missing from MatchMapping");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -11897,10 +12032,12 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out,
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"patterns\" missing from MatchMapping");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -11983,10 +12120,12 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out,
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"patterns\" missing from MatchClass");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -12019,10 +12158,12 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out,
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"kwd_attrs\" missing from MatchClass");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -12055,10 +12196,12 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out,
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"kwd_patterns\" missing from MatchClass");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
@@ -12183,10 +12326,12 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out,
return 1;
}
if (tmp == NULL) {
- PyErr_SetString(PyExc_TypeError, "required field \"patterns\" missing from MatchOr");
- return 1;
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
}
- else {
+ {
int res;
Py_ssize_t len;
Py_ssize_t i;
diff --git a/Python/Python-tokenize.c b/Python/Python-tokenize.c
index f7e32d3af9a9f7..a7933b2d6b0187 100644
--- a/Python/Python-tokenize.c
+++ b/Python/Python-tokenize.c
@@ -30,21 +30,24 @@ class _tokenizer.tokenizeriter "tokenizeriterobject *" "_tokenize_get_state_by_t
typedef struct
{
PyObject_HEAD struct tok_state *tok;
+ int done;
} tokenizeriterobject;
/*[clinic input]
@classmethod
_tokenizer.tokenizeriter.__new__ as tokenizeriter_new
- source: str
+ readline: object
+ /
*
extra_tokens: bool
+ encoding: str(c_default="NULL") = 'utf-8'
[clinic start generated code]*/
static PyObject *
-tokenizeriter_new_impl(PyTypeObject *type, const char *source,
- int extra_tokens)
-/*[clinic end generated code: output=f6f9d8b4beec8106 input=90dc5b6a5df180c2]*/
+tokenizeriter_new_impl(PyTypeObject *type, PyObject *readline,
+ int extra_tokens, const char *encoding)
+/*[clinic end generated code: output=7501a1211683ce16 input=f7dddf8a613ae8bd]*/
{
tokenizeriterobject *self = (tokenizeriterobject *)type->tp_alloc(type, 0);
if (self == NULL) {
@@ -54,7 +57,7 @@ tokenizeriter_new_impl(PyTypeObject *type, const char *source,
if (filename == NULL) {
return NULL;
}
- self->tok = _PyTokenizer_FromUTF8(source, 1);
+ self->tok = _PyTokenizer_FromReadline(readline, encoding, 1, 1);
if (self->tok == NULL) {
Py_DECREF(filename);
return NULL;
@@ -63,6 +66,7 @@ tokenizeriter_new_impl(PyTypeObject *type, const char *source,
if (extra_tokens) {
self->tok->tok_extra_tokens = 1;
}
+ self->done = 0;
return (PyObject *)self;
}
@@ -80,7 +84,7 @@ _tokenizer_error(struct tok_state *tok)
msg = "invalid token";
break;
case E_EOF:
- if (tok->level) {
+ if (tok->level > 0) {
PyErr_Format(PyExc_SyntaxError,
"parenthesis '%c' was never closed",
tok->parenstack[tok->level-1]);
@@ -123,6 +127,8 @@ _tokenizer_error(struct tok_state *tok)
int result = 0;
Py_ssize_t size = tok->inp - tok->buf;
+ assert(tok->buf[size-1] == '\n');
+ size -= 1; // Remove the newline character from the end of the line
error_line = PyUnicode_DecodeUTF8(tok->buf, size, "replace");
if (!error_line) {
result = -1;
@@ -177,8 +183,9 @@ tokenizeriter_next(tokenizeriterobject *it)
}
goto exit;
}
- if (type == ERRORTOKEN || type == ENDMARKER) {
+ if (it->done || type == ERRORTOKEN) {
PyErr_SetString(PyExc_StopIteration, "EOF");
+ it->done = 1;
goto exit;
}
PyObject *str = NULL;
@@ -192,13 +199,24 @@ tokenizeriter_next(tokenizeriterobject *it)
goto exit;
}
- Py_ssize_t size = it->tok->inp - it->tok->buf;
- PyObject *line = PyUnicode_DecodeUTF8(it->tok->buf, size, "replace");
+ int is_trailing_token = 0;
+ if (type == ENDMARKER || (type == DEDENT && it->tok->done == E_EOF)) {
+ is_trailing_token = 1;
+ }
+
+ const char *line_start = ISSTRINGLIT(type) ? it->tok->multi_line_start : it->tok->line_start;
+ PyObject* line = NULL;
+ if (it->tok->tok_extra_tokens && is_trailing_token) {
+ line = PyUnicode_FromString("");
+ } else {
+ Py_ssize_t size = it->tok->inp - line_start;
+ line = PyUnicode_DecodeUTF8(line_start, size, "replace");
+ }
if (line == NULL) {
Py_DECREF(str);
goto exit;
}
- const char *line_start = ISSTRINGLIT(type) ? it->tok->multi_line_start : it->tok->line_start;
+
Py_ssize_t lineno = ISSTRINGLIT(type) ? it->tok->first_lineno : it->tok->lineno;
Py_ssize_t end_lineno = it->tok->lineno;
Py_ssize_t col_offset = -1;
@@ -211,6 +229,10 @@ tokenizeriter_next(tokenizeriterobject *it)
}
if (it->tok->tok_extra_tokens) {
+ if (is_trailing_token) {
+ lineno = end_lineno = lineno + 1;
+ col_offset = end_col_offset = 0;
+ }
// Necessary adjustments to match the original Python tokenize
// implementation
if (type > DEDENT && type < OP) {
@@ -220,7 +242,12 @@ tokenizeriter_next(tokenizeriterobject *it)
type = NAME;
}
else if (type == NEWLINE) {
- str = PyUnicode_FromString("\n");
+ Py_DECREF(str);
+ if (it->tok->start[0] == '\r') {
+ str = PyUnicode_FromString("\r\n");
+ } else {
+ str = PyUnicode_FromString("\n");
+ }
end_col_offset++;
}
}
@@ -228,6 +255,9 @@ tokenizeriter_next(tokenizeriterobject *it)
result = Py_BuildValue("(iN(nn)(nn)N)", type, str, lineno, col_offset, end_lineno, end_col_offset, line);
exit:
_PyToken_Free(&token);
+ if (type == ENDMARKER) {
+ it->done = 1;
+ }
return result;
}
diff --git a/Python/bytecodes.c b/Python/bytecodes.c
index f71a62e051a34f..0baf2451ee4f8a 100644
--- a/Python/bytecodes.c
+++ b/Python/bytecodes.c
@@ -1660,8 +1660,10 @@ dummy_func(
DEOPT_IF(!PyType_Check(class), LOAD_SUPER_ATTR);
STAT_INC(LOAD_SUPER_ATTR, hit);
PyObject *name = GETITEM(frame->f_code->co_names, oparg >> 2);
+ PyTypeObject *cls = (PyTypeObject *)class;
int method_found = 0;
- res2 = _PySuper_Lookup((PyTypeObject *)class, self, name, &method_found);
+ res2 = _PySuper_Lookup(cls, self, name,
+ cls->tp_getattro == PyObject_GenericGetAttr ? &method_found : NULL);
Py_DECREF(global_super);
Py_DECREF(class);
if (res2 == NULL) {
diff --git a/Python/ceval_gil.c b/Python/ceval_gil.c
index b9bdb74fcedf32..764278ac130dfa 100644
--- a/Python/ceval_gil.c
+++ b/Python/ceval_gil.c
@@ -278,6 +278,15 @@ static void recreate_gil(struct _gil_runtime_state *gil)
static void
drop_gil(struct _ceval_state *ceval, PyThreadState *tstate)
{
+ /* If tstate is NULL, the caller is indicating that we're releasing
+ the GIL for the last time in this thread. This is particularly
+ relevant when the current thread state is finalizing or its
+ interpreter is finalizing (either may be in an inconsistent
+ state). In that case the current thread will definitely
+ never try to acquire the GIL again. */
+ // XXX It may be more correct to check tstate->_status.finalizing.
+ // XXX assert(tstate == NULL || !tstate->_status.cleared);
+
struct _gil_runtime_state *gil = ceval->gil;
if (!_Py_atomic_load_relaxed(&gil->locked)) {
Py_FatalError("drop_gil: GIL is not locked");
@@ -298,7 +307,15 @@ drop_gil(struct _ceval_state *ceval, PyThreadState *tstate)
MUTEX_UNLOCK(gil->mutex);
#ifdef FORCE_SWITCHING
- if (_Py_atomic_load_relaxed(&ceval->gil_drop_request) && tstate != NULL) {
+ /* We check tstate first in case we might be releasing the GIL for
+ the last time in this thread. In that case there's a possible
+ race with tstate->interp getting deleted after gil->mutex is
+ unlocked and before the following code runs, leading to a crash.
+ We can use (tstate == NULL) to indicate the thread is done with
+ the GIL, and that's the only time we might delete the
+ interpreter, so checking tstate first prevents the crash.
+ See https://github.com/python/cpython/issues/104341. */
+ if (tstate != NULL && _Py_atomic_load_relaxed(&ceval->gil_drop_request)) {
MUTEX_LOCK(gil->switch_mutex);
/* Not switched yet => wait */
if (((PyThreadState*)_Py_atomic_load_relaxed(&gil->last_holder)) == tstate)
@@ -350,6 +367,9 @@ take_gil(PyThreadState *tstate)
int err = errno;
assert(tstate != NULL);
+ /* We shouldn't be using a thread state that isn't viable any more. */
+ // XXX It may be more correct to check tstate->_status.finalizing.
+ // XXX assert(!tstate->_status.cleared);
if (tstate_must_exit(tstate)) {
/* bpo-39877: If Py_Finalize() has been called and tstate is not the
@@ -625,10 +645,12 @@ _PyEval_AcquireLock(PyThreadState *tstate)
}
void
-_PyEval_ReleaseLock(PyThreadState *tstate)
+_PyEval_ReleaseLock(PyInterpreterState *interp, PyThreadState *tstate)
{
- _Py_EnsureTstateNotNULL(tstate);
- struct _ceval_state *ceval = &tstate->interp->ceval;
+ /* If tstate is NULL then we do not expect the current thread
+ to acquire the GIL ever again. */
+ assert(tstate == NULL || tstate->interp == interp);
+ struct _ceval_state *ceval = &interp->ceval;
drop_gil(ceval, tstate);
}
diff --git a/Python/clinic/Python-tokenize.c.h b/Python/clinic/Python-tokenize.c.h
index 7e779388a92dbf..28f5075826e36f 100644
--- a/Python/clinic/Python-tokenize.c.h
+++ b/Python/clinic/Python-tokenize.c.h
@@ -9,8 +9,8 @@ preserve
static PyObject *
-tokenizeriter_new_impl(PyTypeObject *type, const char *source,
- int extra_tokens);
+tokenizeriter_new_impl(PyTypeObject *type, PyObject *readline,
+ int extra_tokens, const char *encoding);
static PyObject *
tokenizeriter_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -25,7 +25,7 @@ tokenizeriter_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
PyObject *ob_item[NUM_KEYWORDS];
} _kwtuple = {
.ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
- .ob_item = { &_Py_ID(source), &_Py_ID(extra_tokens), },
+ .ob_item = { &_Py_ID(extra_tokens), &_Py_ID(encoding), },
};
#undef NUM_KEYWORDS
#define KWTUPLE (&_kwtuple.ob_base.ob_base)
@@ -34,43 +34,50 @@ tokenizeriter_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
# define KWTUPLE NULL
#endif // !Py_BUILD_CORE
- static const char * const _keywords[] = {"source", "extra_tokens", NULL};
+ static const char * const _keywords[] = {"", "extra_tokens", "encoding", NULL};
static _PyArg_Parser _parser = {
.keywords = _keywords,
.fname = "tokenizeriter",
.kwtuple = KWTUPLE,
};
#undef KWTUPLE
- PyObject *argsbuf[2];
+ PyObject *argsbuf[3];
PyObject * const *fastargs;
Py_ssize_t nargs = PyTuple_GET_SIZE(args);
- const char *source;
+ Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 2;
+ PyObject *readline;
int extra_tokens;
+ const char *encoding = NULL;
fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 1, 1, 1, argsbuf);
if (!fastargs) {
goto exit;
}
- if (!PyUnicode_Check(fastargs[0])) {
- _PyArg_BadArgument("tokenizeriter", "argument 'source'", "str", fastargs[0]);
+ readline = fastargs[0];
+ extra_tokens = PyObject_IsTrue(fastargs[1]);
+ if (extra_tokens < 0) {
goto exit;
}
- Py_ssize_t source_length;
- source = PyUnicode_AsUTF8AndSize(fastargs[0], &source_length);
- if (source == NULL) {
+ if (!noptargs) {
+ goto skip_optional_kwonly;
+ }
+ if (!PyUnicode_Check(fastargs[2])) {
+ _PyArg_BadArgument("tokenizeriter", "argument 'encoding'", "str", fastargs[2]);
goto exit;
}
- if (strlen(source) != (size_t)source_length) {
- PyErr_SetString(PyExc_ValueError, "embedded null character");
+ Py_ssize_t encoding_length;
+ encoding = PyUnicode_AsUTF8AndSize(fastargs[2], &encoding_length);
+ if (encoding == NULL) {
goto exit;
}
- extra_tokens = PyObject_IsTrue(fastargs[1]);
- if (extra_tokens < 0) {
+ if (strlen(encoding) != (size_t)encoding_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
goto exit;
}
- return_value = tokenizeriter_new_impl(type, source, extra_tokens);
+skip_optional_kwonly:
+ return_value = tokenizeriter_new_impl(type, readline, extra_tokens, encoding);
exit:
return return_value;
}
-/*[clinic end generated code: output=940b564c67f6e0e2 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=48be65a2808bdfa6 input=a9049054013a1b77]*/
diff --git a/Python/compile.c b/Python/compile.c
index f2314ae11c417b..32eda4d407ea12 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -1422,8 +1422,18 @@ find_ann(asdl_stmt_seq *stmts)
find_ann(st->v.TryStar.finalbody) ||
find_ann(st->v.TryStar.orelse);
break;
+ case Match_kind:
+ for (j = 0; j < asdl_seq_LEN(st->v.Match.cases); j++) {
+ match_case_ty match_case = (match_case_ty)asdl_seq_GET(
+ st->v.Match.cases, j);
+ if (find_ann(match_case->body)) {
+ return true;
+ }
+ }
+ break;
default:
res = false;
+ break;
}
if (res) {
break;
diff --git a/Python/fileutils.c b/Python/fileutils.c
index 969b7163b5ac18..f137ee936502c1 100644
--- a/Python/fileutils.c
+++ b/Python/fileutils.c
@@ -1132,7 +1132,8 @@ _Py_attribute_data_to_stat(BY_HANDLE_FILE_INFORMATION *info, ULONG reparse_tag,
file_id.id = id_info->FileId;
result->st_ino = file_id.st_ino;
result->st_ino_high = file_id.st_ino_high;
- } else {
+ }
+ if (!result->st_ino && !result->st_ino_high) {
/* should only occur for DirEntry_from_find_data, in which case the
index is likely to be zero anyway. */
result->st_ino = (((uint64_t)info->nFileIndexHigh) << 32) + info->nFileIndexLow;
diff --git a/Python/generated_cases.c.h b/Python/generated_cases.c.h
index 055fb5a0611b96..103373ec0db018 100644
--- a/Python/generated_cases.c.h
+++ b/Python/generated_cases.c.h
@@ -2408,8 +2408,10 @@
DEOPT_IF(!PyType_Check(class), LOAD_SUPER_ATTR);
STAT_INC(LOAD_SUPER_ATTR, hit);
PyObject *name = GETITEM(frame->f_code->co_names, oparg >> 2);
+ PyTypeObject *cls = (PyTypeObject *)class;
int method_found = 0;
- res2 = _PySuper_Lookup((PyTypeObject *)class, self, name, &method_found);
+ res2 = _PySuper_Lookup(cls, self, name,
+ cls->tp_getattro == PyObject_GenericGetAttr ? &method_found : NULL);
Py_DECREF(global_super);
Py_DECREF(class);
if (res2 == NULL) {
@@ -2423,7 +2425,7 @@
res = res2;
res2 = NULL;
}
- #line 2427 "Python/generated_cases.c.h"
+ #line 2429 "Python/generated_cases.c.h"
STACK_SHRINK(1);
stack_pointer[-1] = res;
stack_pointer[-2] = res2;
@@ -2437,7 +2439,7 @@
PyObject *owner = stack_pointer[-1];
PyObject *res2 = NULL;
PyObject *res;
- #line 1695 "Python/bytecodes.c"
+ #line 1697 "Python/bytecodes.c"
#if ENABLE_SPECIALIZATION
_PyAttrCache *cache = (_PyAttrCache *)next_instr;
if (ADAPTIVE_COUNTER_IS_ZERO(cache->counter)) {
@@ -2471,9 +2473,9 @@
NULL | meth | arg1 | ... | argN
*/
- #line 2475 "Python/generated_cases.c.h"
+ #line 2477 "Python/generated_cases.c.h"
Py_DECREF(owner);
- #line 1729 "Python/bytecodes.c"
+ #line 1731 "Python/bytecodes.c"
if (meth == NULL) goto pop_1_error;
res2 = NULL;
res = meth;
@@ -2482,12 +2484,12 @@
else {
/* Classic, pushes one value. */
res = PyObject_GetAttr(owner, name);
- #line 2486 "Python/generated_cases.c.h"
+ #line 2488 "Python/generated_cases.c.h"
Py_DECREF(owner);
- #line 1738 "Python/bytecodes.c"
+ #line 1740 "Python/bytecodes.c"
if (res == NULL) goto pop_1_error;
}
- #line 2491 "Python/generated_cases.c.h"
+ #line 2493 "Python/generated_cases.c.h"
STACK_GROW(((oparg & 1) ? 1 : 0));
stack_pointer[-1] = res;
if (oparg & 1) { stack_pointer[-(1 + ((oparg & 1) ? 1 : 0))] = res2; }
@@ -2501,7 +2503,7 @@
PyObject *res;
uint32_t type_version = read_u32(&next_instr[1].cache);
uint16_t index = read_u16(&next_instr[3].cache);
- #line 1743 "Python/bytecodes.c"
+ #line 1745 "Python/bytecodes.c"
PyTypeObject *tp = Py_TYPE(owner);
assert(type_version != 0);
DEOPT_IF(tp->tp_version_tag != type_version, LOAD_ATTR);
@@ -2514,7 +2516,7 @@
STAT_INC(LOAD_ATTR, hit);
Py_INCREF(res);
res2 = NULL;
- #line 2518 "Python/generated_cases.c.h"
+ #line 2520 "Python/generated_cases.c.h"
Py_DECREF(owner);
STACK_GROW(((oparg & 1) ? 1 : 0));
stack_pointer[-1] = res;
@@ -2529,7 +2531,7 @@
PyObject *res;
uint32_t type_version = read_u32(&next_instr[1].cache);
uint16_t index = read_u16(&next_instr[3].cache);
- #line 1759 "Python/bytecodes.c"
+ #line 1761 "Python/bytecodes.c"
DEOPT_IF(!PyModule_CheckExact(owner), LOAD_ATTR);
PyDictObject *dict = (PyDictObject *)((PyModuleObject *)owner)->md_dict;
assert(dict != NULL);
@@ -2542,7 +2544,7 @@
STAT_INC(LOAD_ATTR, hit);
Py_INCREF(res);
res2 = NULL;
- #line 2546 "Python/generated_cases.c.h"
+ #line 2548 "Python/generated_cases.c.h"
Py_DECREF(owner);
STACK_GROW(((oparg & 1) ? 1 : 0));
stack_pointer[-1] = res;
@@ -2557,7 +2559,7 @@
PyObject *res;
uint32_t type_version = read_u32(&next_instr[1].cache);
uint16_t index = read_u16(&next_instr[3].cache);
- #line 1775 "Python/bytecodes.c"
+ #line 1777 "Python/bytecodes.c"
PyTypeObject *tp = Py_TYPE(owner);
assert(type_version != 0);
DEOPT_IF(tp->tp_version_tag != type_version, LOAD_ATTR);
@@ -2584,7 +2586,7 @@
STAT_INC(LOAD_ATTR, hit);
Py_INCREF(res);
res2 = NULL;
- #line 2588 "Python/generated_cases.c.h"
+ #line 2590 "Python/generated_cases.c.h"
Py_DECREF(owner);
STACK_GROW(((oparg & 1) ? 1 : 0));
stack_pointer[-1] = res;
@@ -2599,7 +2601,7 @@
PyObject *res;
uint32_t type_version = read_u32(&next_instr[1].cache);
uint16_t index = read_u16(&next_instr[3].cache);
- #line 1805 "Python/bytecodes.c"
+ #line 1807 "Python/bytecodes.c"
PyTypeObject *tp = Py_TYPE(owner);
assert(type_version != 0);
DEOPT_IF(tp->tp_version_tag != type_version, LOAD_ATTR);
@@ -2609,7 +2611,7 @@
STAT_INC(LOAD_ATTR, hit);
Py_INCREF(res);
res2 = NULL;
- #line 2613 "Python/generated_cases.c.h"
+ #line 2615 "Python/generated_cases.c.h"
Py_DECREF(owner);
STACK_GROW(((oparg & 1) ? 1 : 0));
stack_pointer[-1] = res;
@@ -2624,7 +2626,7 @@
PyObject *res;
uint32_t type_version = read_u32(&next_instr[1].cache);
PyObject *descr = read_obj(&next_instr[5].cache);
- #line 1818 "Python/bytecodes.c"
+ #line 1820 "Python/bytecodes.c"
DEOPT_IF(!PyType_Check(cls), LOAD_ATTR);
DEOPT_IF(((PyTypeObject *)cls)->tp_version_tag != type_version,
@@ -2636,7 +2638,7 @@
res = descr;
assert(res != NULL);
Py_INCREF(res);
- #line 2640 "Python/generated_cases.c.h"
+ #line 2642 "Python/generated_cases.c.h"
Py_DECREF(cls);
STACK_GROW(((oparg & 1) ? 1 : 0));
stack_pointer[-1] = res;
@@ -2650,7 +2652,7 @@
uint32_t type_version = read_u32(&next_instr[1].cache);
uint32_t func_version = read_u32(&next_instr[3].cache);
PyObject *fget = read_obj(&next_instr[5].cache);
- #line 1833 "Python/bytecodes.c"
+ #line 1835 "Python/bytecodes.c"
DEOPT_IF(tstate->interp->eval_frame, LOAD_ATTR);
PyTypeObject *cls = Py_TYPE(owner);
@@ -2674,7 +2676,7 @@
JUMPBY(INLINE_CACHE_ENTRIES_LOAD_ATTR);
frame->return_offset = 0;
DISPATCH_INLINED(new_frame);
- #line 2678 "Python/generated_cases.c.h"
+ #line 2680 "Python/generated_cases.c.h"
}
TARGET(LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN) {
@@ -2682,7 +2684,7 @@
uint32_t type_version = read_u32(&next_instr[1].cache);
uint32_t func_version = read_u32(&next_instr[3].cache);
PyObject *getattribute = read_obj(&next_instr[5].cache);
- #line 1859 "Python/bytecodes.c"
+ #line 1861 "Python/bytecodes.c"
DEOPT_IF(tstate->interp->eval_frame, LOAD_ATTR);
PyTypeObject *cls = Py_TYPE(owner);
DEOPT_IF(cls->tp_version_tag != type_version, LOAD_ATTR);
@@ -2708,7 +2710,7 @@
JUMPBY(INLINE_CACHE_ENTRIES_LOAD_ATTR);
frame->return_offset = 0;
DISPATCH_INLINED(new_frame);
- #line 2712 "Python/generated_cases.c.h"
+ #line 2714 "Python/generated_cases.c.h"
}
TARGET(STORE_ATTR_INSTANCE_VALUE) {
@@ -2716,7 +2718,7 @@
PyObject *value = stack_pointer[-2];
uint32_t type_version = read_u32(&next_instr[1].cache);
uint16_t index = read_u16(&next_instr[3].cache);
- #line 1887 "Python/bytecodes.c"
+ #line 1889 "Python/bytecodes.c"
PyTypeObject *tp = Py_TYPE(owner);
assert(type_version != 0);
DEOPT_IF(tp->tp_version_tag != type_version, STORE_ATTR);
@@ -2734,7 +2736,7 @@
Py_DECREF(old_value);
}
Py_DECREF(owner);
- #line 2738 "Python/generated_cases.c.h"
+ #line 2740 "Python/generated_cases.c.h"
STACK_SHRINK(2);
next_instr += 4;
DISPATCH();
@@ -2745,7 +2747,7 @@
PyObject *value = stack_pointer[-2];
uint32_t type_version = read_u32(&next_instr[1].cache);
uint16_t hint = read_u16(&next_instr[3].cache);
- #line 1907 "Python/bytecodes.c"
+ #line 1909 "Python/bytecodes.c"
PyTypeObject *tp = Py_TYPE(owner);
assert(type_version != 0);
DEOPT_IF(tp->tp_version_tag != type_version, STORE_ATTR);
@@ -2784,7 +2786,7 @@
/* PEP 509 */
dict->ma_version_tag = new_version;
Py_DECREF(owner);
- #line 2788 "Python/generated_cases.c.h"
+ #line 2790 "Python/generated_cases.c.h"
STACK_SHRINK(2);
next_instr += 4;
DISPATCH();
@@ -2795,7 +2797,7 @@
PyObject *value = stack_pointer[-2];
uint32_t type_version = read_u32(&next_instr[1].cache);
uint16_t index = read_u16(&next_instr[3].cache);
- #line 1948 "Python/bytecodes.c"
+ #line 1950 "Python/bytecodes.c"
PyTypeObject *tp = Py_TYPE(owner);
assert(type_version != 0);
DEOPT_IF(tp->tp_version_tag != type_version, STORE_ATTR);
@@ -2805,7 +2807,7 @@
*(PyObject **)addr = value;
Py_XDECREF(old_value);
Py_DECREF(owner);
- #line 2809 "Python/generated_cases.c.h"
+ #line 2811 "Python/generated_cases.c.h"
STACK_SHRINK(2);
next_instr += 4;
DISPATCH();
@@ -2817,7 +2819,7 @@
PyObject *right = stack_pointer[-1];
PyObject *left = stack_pointer[-2];
PyObject *res;
- #line 1967 "Python/bytecodes.c"
+ #line 1969 "Python/bytecodes.c"
#if ENABLE_SPECIALIZATION
_PyCompareOpCache *cache = (_PyCompareOpCache *)next_instr;
if (ADAPTIVE_COUNTER_IS_ZERO(cache->counter)) {
@@ -2830,12 +2832,12 @@
#endif /* ENABLE_SPECIALIZATION */
assert((oparg >> 4) <= Py_GE);
res = PyObject_RichCompare(left, right, oparg>>4);
- #line 2834 "Python/generated_cases.c.h"
+ #line 2836 "Python/generated_cases.c.h"
Py_DECREF(left);
Py_DECREF(right);
- #line 1980 "Python/bytecodes.c"
+ #line 1982 "Python/bytecodes.c"
if (res == NULL) goto pop_2_error;
- #line 2839 "Python/generated_cases.c.h"
+ #line 2841 "Python/generated_cases.c.h"
STACK_SHRINK(1);
stack_pointer[-1] = res;
next_instr += 1;
@@ -2846,7 +2848,7 @@
PyObject *right = stack_pointer[-1];
PyObject *left = stack_pointer[-2];
PyObject *res;
- #line 1984 "Python/bytecodes.c"
+ #line 1986 "Python/bytecodes.c"
DEOPT_IF(!PyFloat_CheckExact(left), COMPARE_OP);
DEOPT_IF(!PyFloat_CheckExact(right), COMPARE_OP);
STAT_INC(COMPARE_OP, hit);
@@ -2857,7 +2859,7 @@
_Py_DECREF_SPECIALIZED(left, _PyFloat_ExactDealloc);
_Py_DECREF_SPECIALIZED(right, _PyFloat_ExactDealloc);
res = (sign_ish & oparg) ? Py_True : Py_False;
- #line 2861 "Python/generated_cases.c.h"
+ #line 2863 "Python/generated_cases.c.h"
STACK_SHRINK(1);
stack_pointer[-1] = res;
next_instr += 1;
@@ -2868,7 +2870,7 @@
PyObject *right = stack_pointer[-1];
PyObject *left = stack_pointer[-2];
PyObject *res;
- #line 1998 "Python/bytecodes.c"
+ #line 2000 "Python/bytecodes.c"
DEOPT_IF(!PyLong_CheckExact(left), COMPARE_OP);
DEOPT_IF(!PyLong_CheckExact(right), COMPARE_OP);
DEOPT_IF(!_PyLong_IsCompact((PyLongObject *)left), COMPARE_OP);
@@ -2883,7 +2885,7 @@
_Py_DECREF_SPECIALIZED(left, (destructor)PyObject_Free);
_Py_DECREF_SPECIALIZED(right, (destructor)PyObject_Free);
res = (sign_ish & oparg) ? Py_True : Py_False;
- #line 2887 "Python/generated_cases.c.h"
+ #line 2889 "Python/generated_cases.c.h"
STACK_SHRINK(1);
stack_pointer[-1] = res;
next_instr += 1;
@@ -2894,7 +2896,7 @@
PyObject *right = stack_pointer[-1];
PyObject *left = stack_pointer[-2];
PyObject *res;
- #line 2016 "Python/bytecodes.c"
+ #line 2018 "Python/bytecodes.c"
DEOPT_IF(!PyUnicode_CheckExact(left), COMPARE_OP);
DEOPT_IF(!PyUnicode_CheckExact(right), COMPARE_OP);
STAT_INC(COMPARE_OP, hit);
@@ -2906,7 +2908,7 @@
assert((oparg & 0xf) == COMPARISON_NOT_EQUALS || (oparg & 0xf) == COMPARISON_EQUALS);
assert(COMPARISON_NOT_EQUALS + 1 == COMPARISON_EQUALS);
res = ((COMPARISON_NOT_EQUALS + eq) & oparg) ? Py_True : Py_False;
- #line 2910 "Python/generated_cases.c.h"
+ #line 2912 "Python/generated_cases.c.h"
STACK_SHRINK(1);
stack_pointer[-1] = res;
next_instr += 1;
@@ -2917,14 +2919,14 @@
PyObject *right = stack_pointer[-1];
PyObject *left = stack_pointer[-2];
PyObject *b;
- #line 2030 "Python/bytecodes.c"
+ #line 2032 "Python/bytecodes.c"
int res = Py_Is(left, right) ^ oparg;
- #line 2923 "Python/generated_cases.c.h"
+ #line 2925 "Python/generated_cases.c.h"
Py_DECREF(left);
Py_DECREF(right);
- #line 2032 "Python/bytecodes.c"
+ #line 2034 "Python/bytecodes.c"
b = res ? Py_True : Py_False;
- #line 2928 "Python/generated_cases.c.h"
+ #line 2930 "Python/generated_cases.c.h"
STACK_SHRINK(1);
stack_pointer[-1] = b;
DISPATCH();
@@ -2934,15 +2936,15 @@
PyObject *right = stack_pointer[-1];
PyObject *left = stack_pointer[-2];
PyObject *b;
- #line 2036 "Python/bytecodes.c"
+ #line 2038 "Python/bytecodes.c"
int res = PySequence_Contains(right, left);
- #line 2940 "Python/generated_cases.c.h"
+ #line 2942 "Python/generated_cases.c.h"
Py_DECREF(left);
Py_DECREF(right);
- #line 2038 "Python/bytecodes.c"
+ #line 2040 "Python/bytecodes.c"
if (res < 0) goto pop_2_error;
b = (res ^ oparg) ? Py_True : Py_False;
- #line 2946 "Python/generated_cases.c.h"
+ #line 2948 "Python/generated_cases.c.h"
STACK_SHRINK(1);
stack_pointer[-1] = b;
DISPATCH();
@@ -2953,12 +2955,12 @@
PyObject *exc_value = stack_pointer[-2];
PyObject *rest;
PyObject *match;
- #line 2043 "Python/bytecodes.c"
+ #line 2045 "Python/bytecodes.c"
if (check_except_star_type_valid(tstate, match_type) < 0) {
- #line 2959 "Python/generated_cases.c.h"
+ #line 2961 "Python/generated_cases.c.h"
Py_DECREF(exc_value);
Py_DECREF(match_type);
- #line 2045 "Python/bytecodes.c"
+ #line 2047 "Python/bytecodes.c"
if (true) goto pop_2_error;
}
@@ -2966,10 +2968,10 @@
rest = NULL;
int res = exception_group_match(exc_value, match_type,
&match, &rest);
- #line 2970 "Python/generated_cases.c.h"
+ #line 2972 "Python/generated_cases.c.h"
Py_DECREF(exc_value);
Py_DECREF(match_type);
- #line 2053 "Python/bytecodes.c"
+ #line 2055 "Python/bytecodes.c"
if (res < 0) goto pop_2_error;
assert((match == NULL) == (rest == NULL));
@@ -2978,7 +2980,7 @@
if (!Py_IsNone(match)) {
PyErr_SetHandledException(match);
}
- #line 2982 "Python/generated_cases.c.h"
+ #line 2984 "Python/generated_cases.c.h"
stack_pointer[-1] = match;
stack_pointer[-2] = rest;
DISPATCH();
@@ -2988,21 +2990,21 @@
PyObject *right = stack_pointer[-1];
PyObject *left = stack_pointer[-2];
PyObject *b;
- #line 2064 "Python/bytecodes.c"
+ #line 2066 "Python/bytecodes.c"
assert(PyExceptionInstance_Check(left));
if (check_except_type_valid(tstate, right) < 0) {
- #line 2995 "Python/generated_cases.c.h"
+ #line 2997 "Python/generated_cases.c.h"
Py_DECREF(right);
- #line 2067 "Python/bytecodes.c"
+ #line 2069 "Python/bytecodes.c"
if (true) goto pop_1_error;
}
int res = PyErr_GivenExceptionMatches(left, right);
- #line 3002 "Python/generated_cases.c.h"
+ #line 3004 "Python/generated_cases.c.h"
Py_DECREF(right);
- #line 2072 "Python/bytecodes.c"
+ #line 2074 "Python/bytecodes.c"
b = res ? Py_True : Py_False;
- #line 3006 "Python/generated_cases.c.h"
+ #line 3008 "Python/generated_cases.c.h"
stack_pointer[-1] = b;
DISPATCH();
}
@@ -3011,15 +3013,15 @@
PyObject *fromlist = stack_pointer[-1];
PyObject *level = stack_pointer[-2];
PyObject *res;
- #line 2076 "Python/bytecodes.c"
+ #line 2078 "Python/bytecodes.c"
PyObject *name = GETITEM(frame->f_code->co_names, oparg);
res = import_name(tstate, frame, name, fromlist, level);
- #line 3018 "Python/generated_cases.c.h"
+ #line 3020 "Python/generated_cases.c.h"
Py_DECREF(level);
Py_DECREF(fromlist);
- #line 2079 "Python/bytecodes.c"
+ #line 2081 "Python/bytecodes.c"
if (res == NULL) goto pop_2_error;
- #line 3023 "Python/generated_cases.c.h"
+ #line 3025 "Python/generated_cases.c.h"
STACK_SHRINK(1);
stack_pointer[-1] = res;
DISPATCH();
@@ -3028,29 +3030,29 @@
TARGET(IMPORT_FROM) {
PyObject *from = stack_pointer[-1];
PyObject *res;
- #line 2083 "Python/bytecodes.c"
+ #line 2085 "Python/bytecodes.c"
PyObject *name = GETITEM(frame->f_code->co_names, oparg);
res = import_from(tstate, from, name);
if (res == NULL) goto error;
- #line 3036 "Python/generated_cases.c.h"
+ #line 3038 "Python/generated_cases.c.h"
STACK_GROW(1);
stack_pointer[-1] = res;
DISPATCH();
}
TARGET(JUMP_FORWARD) {
- #line 2089 "Python/bytecodes.c"
+ #line 2091 "Python/bytecodes.c"
JUMPBY(oparg);
- #line 3045 "Python/generated_cases.c.h"
+ #line 3047 "Python/generated_cases.c.h"
DISPATCH();
}
TARGET(JUMP_BACKWARD) {
PREDICTED(JUMP_BACKWARD);
- #line 2093 "Python/bytecodes.c"
+ #line 2095 "Python/bytecodes.c"
assert(oparg < INSTR_OFFSET());
JUMPBY(-oparg);
- #line 3054 "Python/generated_cases.c.h"
+ #line 3056 "Python/generated_cases.c.h"
CHECK_EVAL_BREAKER();
DISPATCH();
}
@@ -3058,15 +3060,15 @@
TARGET(POP_JUMP_IF_FALSE) {
PREDICTED(POP_JUMP_IF_FALSE);
PyObject *cond = stack_pointer[-1];
- #line 2099 "Python/bytecodes.c"
+ #line 2101 "Python/bytecodes.c"
if (Py_IsFalse(cond)) {
JUMPBY(oparg);
}
else if (!Py_IsTrue(cond)) {
int err = PyObject_IsTrue(cond);
- #line 3068 "Python/generated_cases.c.h"
+ #line 3070 "Python/generated_cases.c.h"
Py_DECREF(cond);
- #line 2105 "Python/bytecodes.c"
+ #line 2107 "Python/bytecodes.c"
if (err == 0) {
JUMPBY(oparg);
}
@@ -3074,22 +3076,22 @@
if (err < 0) goto pop_1_error;
}
}
- #line 3078 "Python/generated_cases.c.h"
+ #line 3080 "Python/generated_cases.c.h"
STACK_SHRINK(1);
DISPATCH();
}
TARGET(POP_JUMP_IF_TRUE) {
PyObject *cond = stack_pointer[-1];
- #line 2115 "Python/bytecodes.c"
+ #line 2117 "Python/bytecodes.c"
if (Py_IsTrue(cond)) {
JUMPBY(oparg);
}
else if (!Py_IsFalse(cond)) {
int err = PyObject_IsTrue(cond);
- #line 3091 "Python/generated_cases.c.h"
+ #line 3093 "Python/generated_cases.c.h"
Py_DECREF(cond);
- #line 2121 "Python/bytecodes.c"
+ #line 2123 "Python/bytecodes.c"
if (err > 0) {
JUMPBY(oparg);
}
@@ -3097,63 +3099,63 @@
if (err < 0) goto pop_1_error;
}
}
- #line 3101 "Python/generated_cases.c.h"
+ #line 3103 "Python/generated_cases.c.h"
STACK_SHRINK(1);
DISPATCH();
}
TARGET(POP_JUMP_IF_NOT_NONE) {
PyObject *value = stack_pointer[-1];
- #line 2131 "Python/bytecodes.c"
+ #line 2133 "Python/bytecodes.c"
if (!Py_IsNone(value)) {
- #line 3110 "Python/generated_cases.c.h"
+ #line 3112 "Python/generated_cases.c.h"
Py_DECREF(value);
- #line 2133 "Python/bytecodes.c"
+ #line 2135 "Python/bytecodes.c"
JUMPBY(oparg);
}
- #line 3115 "Python/generated_cases.c.h"
+ #line 3117 "Python/generated_cases.c.h"
STACK_SHRINK(1);
DISPATCH();
}
TARGET(POP_JUMP_IF_NONE) {
PyObject *value = stack_pointer[-1];
- #line 2138 "Python/bytecodes.c"
+ #line 2140 "Python/bytecodes.c"
if (Py_IsNone(value)) {
JUMPBY(oparg);
}
else {
- #line 3127 "Python/generated_cases.c.h"
+ #line 3129 "Python/generated_cases.c.h"
Py_DECREF(value);
- #line 2143 "Python/bytecodes.c"
+ #line 2145 "Python/bytecodes.c"
}
- #line 3131 "Python/generated_cases.c.h"
+ #line 3133 "Python/generated_cases.c.h"
STACK_SHRINK(1);
DISPATCH();
}
TARGET(JUMP_BACKWARD_NO_INTERRUPT) {
- #line 2147 "Python/bytecodes.c"
+ #line 2149 "Python/bytecodes.c"
/* This bytecode is used in the `yield from` or `await` loop.
* If there is an interrupt, we want it handled in the innermost
* generator or coroutine, so we deliberately do not check it here.
* (see bpo-30039).
*/
JUMPBY(-oparg);
- #line 3144 "Python/generated_cases.c.h"
+ #line 3146 "Python/generated_cases.c.h"
DISPATCH();
}
TARGET(GET_LEN) {
PyObject *obj = stack_pointer[-1];
PyObject *len_o;
- #line 2156 "Python/bytecodes.c"
+ #line 2158 "Python/bytecodes.c"
// PUSH(len(TOS))
Py_ssize_t len_i = PyObject_Length(obj);
if (len_i < 0) goto error;
len_o = PyLong_FromSsize_t(len_i);
if (len_o == NULL) goto error;
- #line 3157 "Python/generated_cases.c.h"
+ #line 3159 "Python/generated_cases.c.h"
STACK_GROW(1);
stack_pointer[-1] = len_o;
DISPATCH();
@@ -3164,16 +3166,16 @@
PyObject *type = stack_pointer[-2];
PyObject *subject = stack_pointer[-3];
PyObject *attrs;
- #line 2164 "Python/bytecodes.c"
+ #line 2166 "Python/bytecodes.c"
// Pop TOS and TOS1. Set TOS to a tuple of attributes on success, or
// None on failure.
assert(PyTuple_CheckExact(names));
attrs = match_class(tstate, subject, type, oparg, names);
- #line 3173 "Python/generated_cases.c.h"
+ #line 3175 "Python/generated_cases.c.h"
Py_DECREF(subject);
Py_DECREF(type);
Py_DECREF(names);
- #line 2169 "Python/bytecodes.c"
+ #line 2171 "Python/bytecodes.c"
if (attrs) {
assert(PyTuple_CheckExact(attrs)); // Success!
}
@@ -3181,7 +3183,7 @@
if (_PyErr_Occurred(tstate)) goto pop_3_error;
attrs = Py_None; // Failure!
}
- #line 3185 "Python/generated_cases.c.h"
+ #line 3187 "Python/generated_cases.c.h"
STACK_SHRINK(2);
stack_pointer[-1] = attrs;
DISPATCH();
@@ -3190,10 +3192,10 @@
TARGET(MATCH_MAPPING) {
PyObject *subject = stack_pointer[-1];
PyObject *res;
- #line 2179 "Python/bytecodes.c"
+ #line 2181 "Python/bytecodes.c"
int match = Py_TYPE(subject)->tp_flags & Py_TPFLAGS_MAPPING;
res = match ? Py_True : Py_False;
- #line 3197 "Python/generated_cases.c.h"
+ #line 3199 "Python/generated_cases.c.h"
STACK_GROW(1);
stack_pointer[-1] = res;
PREDICT(POP_JUMP_IF_FALSE);
@@ -3203,10 +3205,10 @@
TARGET(MATCH_SEQUENCE) {
PyObject *subject = stack_pointer[-1];
PyObject *res;
- #line 2185 "Python/bytecodes.c"
+ #line 2187 "Python/bytecodes.c"
int match = Py_TYPE(subject)->tp_flags & Py_TPFLAGS_SEQUENCE;
res = match ? Py_True : Py_False;
- #line 3210 "Python/generated_cases.c.h"
+ #line 3212 "Python/generated_cases.c.h"
STACK_GROW(1);
stack_pointer[-1] = res;
PREDICT(POP_JUMP_IF_FALSE);
@@ -3217,11 +3219,11 @@
PyObject *keys = stack_pointer[-1];
PyObject *subject = stack_pointer[-2];
PyObject *values_or_none;
- #line 2191 "Python/bytecodes.c"
+ #line 2193 "Python/bytecodes.c"
// On successful match, PUSH(values). Otherwise, PUSH(None).
values_or_none = match_keys(tstate, subject, keys);
if (values_or_none == NULL) goto error;
- #line 3225 "Python/generated_cases.c.h"
+ #line 3227 "Python/generated_cases.c.h"
STACK_GROW(1);
stack_pointer[-1] = values_or_none;
DISPATCH();
@@ -3230,14 +3232,14 @@
TARGET(GET_ITER) {
PyObject *iterable = stack_pointer[-1];
PyObject *iter;
- #line 2197 "Python/bytecodes.c"
+ #line 2199 "Python/bytecodes.c"
/* before: [obj]; after [getiter(obj)] */
iter = PyObject_GetIter(iterable);
- #line 3237 "Python/generated_cases.c.h"
+ #line 3239 "Python/generated_cases.c.h"
Py_DECREF(iterable);
- #line 2200 "Python/bytecodes.c"
+ #line 2202 "Python/bytecodes.c"
if (iter == NULL) goto pop_1_error;
- #line 3241 "Python/generated_cases.c.h"
+ #line 3243 "Python/generated_cases.c.h"
stack_pointer[-1] = iter;
DISPATCH();
}
@@ -3245,7 +3247,7 @@
TARGET(GET_YIELD_FROM_ITER) {
PyObject *iterable = stack_pointer[-1];
PyObject *iter;
- #line 2204 "Python/bytecodes.c"
+ #line 2206 "Python/bytecodes.c"
/* before: [obj]; after [getiter(obj)] */
if (PyCoro_CheckExact(iterable)) {
/* `iterable` is a coroutine */
@@ -3268,11 +3270,11 @@
if (iter == NULL) {
goto error;
}
- #line 3272 "Python/generated_cases.c.h"
+ #line 3274 "Python/generated_cases.c.h"
Py_DECREF(iterable);
- #line 2227 "Python/bytecodes.c"
+ #line 2229 "Python/bytecodes.c"
}
- #line 3276 "Python/generated_cases.c.h"
+ #line 3278 "Python/generated_cases.c.h"
stack_pointer[-1] = iter;
PREDICT(LOAD_CONST);
DISPATCH();
@@ -3283,7 +3285,7 @@
static_assert(INLINE_CACHE_ENTRIES_FOR_ITER == 1, "incorrect cache size");
PyObject *iter = stack_pointer[-1];
PyObject *next;
- #line 2246 "Python/bytecodes.c"
+ #line 2248 "Python/bytecodes.c"
#if ENABLE_SPECIALIZATION
_PyForIterCache *cache = (_PyForIterCache *)next_instr;
if (ADAPTIVE_COUNTER_IS_ZERO(cache->counter)) {
@@ -3314,7 +3316,7 @@
DISPATCH();
}
// Common case: no jump, leave it to the code generator
- #line 3318 "Python/generated_cases.c.h"
+ #line 3320 "Python/generated_cases.c.h"
STACK_GROW(1);
stack_pointer[-1] = next;
next_instr += 1;
@@ -3322,7 +3324,7 @@
}
TARGET(INSTRUMENTED_FOR_ITER) {
- #line 2279 "Python/bytecodes.c"
+ #line 2281 "Python/bytecodes.c"
_Py_CODEUNIT *here = next_instr-1;
_Py_CODEUNIT *target;
PyObject *iter = TOP();
@@ -3348,14 +3350,14 @@
target = next_instr + INLINE_CACHE_ENTRIES_FOR_ITER + oparg + 1;
}
INSTRUMENTED_JUMP(here, target, PY_MONITORING_EVENT_BRANCH);
- #line 3352 "Python/generated_cases.c.h"
+ #line 3354 "Python/generated_cases.c.h"
DISPATCH();
}
TARGET(FOR_ITER_LIST) {
PyObject *iter = stack_pointer[-1];
PyObject *next;
- #line 2307 "Python/bytecodes.c"
+ #line 2309 "Python/bytecodes.c"
DEOPT_IF(Py_TYPE(iter) != &PyListIter_Type, FOR_ITER);
_PyListIterObject *it = (_PyListIterObject *)iter;
STAT_INC(FOR_ITER, hit);
@@ -3375,7 +3377,7 @@
DISPATCH();
end_for_iter_list:
// Common case: no jump, leave it to the code generator
- #line 3379 "Python/generated_cases.c.h"
+ #line 3381 "Python/generated_cases.c.h"
STACK_GROW(1);
stack_pointer[-1] = next;
next_instr += 1;
@@ -3385,7 +3387,7 @@
TARGET(FOR_ITER_TUPLE) {
PyObject *iter = stack_pointer[-1];
PyObject *next;
- #line 2329 "Python/bytecodes.c"
+ #line 2331 "Python/bytecodes.c"
_PyTupleIterObject *it = (_PyTupleIterObject *)iter;
DEOPT_IF(Py_TYPE(it) != &PyTupleIter_Type, FOR_ITER);
STAT_INC(FOR_ITER, hit);
@@ -3405,7 +3407,7 @@
DISPATCH();
end_for_iter_tuple:
// Common case: no jump, leave it to the code generator
- #line 3409 "Python/generated_cases.c.h"
+ #line 3411 "Python/generated_cases.c.h"
STACK_GROW(1);
stack_pointer[-1] = next;
next_instr += 1;
@@ -3415,7 +3417,7 @@
TARGET(FOR_ITER_RANGE) {
PyObject *iter = stack_pointer[-1];
PyObject *next;
- #line 2351 "Python/bytecodes.c"
+ #line 2353 "Python/bytecodes.c"
_PyRangeIterObject *r = (_PyRangeIterObject *)iter;
DEOPT_IF(Py_TYPE(r) != &PyRangeIter_Type, FOR_ITER);
STAT_INC(FOR_ITER, hit);
@@ -3433,7 +3435,7 @@
if (next == NULL) {
goto error;
}
- #line 3437 "Python/generated_cases.c.h"
+ #line 3439 "Python/generated_cases.c.h"
STACK_GROW(1);
stack_pointer[-1] = next;
next_instr += 1;
@@ -3442,7 +3444,7 @@
TARGET(FOR_ITER_GEN) {
PyObject *iter = stack_pointer[-1];
- #line 2371 "Python/bytecodes.c"
+ #line 2373 "Python/bytecodes.c"
DEOPT_IF(tstate->interp->eval_frame, FOR_ITER);
PyGenObject *gen = (PyGenObject *)iter;
DEOPT_IF(Py_TYPE(gen) != &PyGen_Type, FOR_ITER);
@@ -3458,14 +3460,14 @@
assert(next_instr[oparg].op.code == END_FOR ||
next_instr[oparg].op.code == INSTRUMENTED_END_FOR);
DISPATCH_INLINED(gen_frame);
- #line 3462 "Python/generated_cases.c.h"
+ #line 3464 "Python/generated_cases.c.h"
}
TARGET(BEFORE_ASYNC_WITH) {
PyObject *mgr = stack_pointer[-1];
PyObject *exit;
PyObject *res;
- #line 2389 "Python/bytecodes.c"
+ #line 2391 "Python/bytecodes.c"
PyObject *enter = _PyObject_LookupSpecial(mgr, &_Py_ID(__aenter__));
if (enter == NULL) {
if (!_PyErr_Occurred(tstate)) {
@@ -3488,16 +3490,16 @@
Py_DECREF(enter);
goto error;
}
- #line 3492 "Python/generated_cases.c.h"
+ #line 3494 "Python/generated_cases.c.h"
Py_DECREF(mgr);
- #line 2412 "Python/bytecodes.c"
+ #line 2414 "Python/bytecodes.c"
res = _PyObject_CallNoArgs(enter);
Py_DECREF(enter);
if (res == NULL) {
Py_DECREF(exit);
if (true) goto pop_1_error;
}
- #line 3501 "Python/generated_cases.c.h"
+ #line 3503 "Python/generated_cases.c.h"
STACK_GROW(1);
stack_pointer[-1] = res;
stack_pointer[-2] = exit;
@@ -3509,7 +3511,7 @@
PyObject *mgr = stack_pointer[-1];
PyObject *exit;
PyObject *res;
- #line 2422 "Python/bytecodes.c"
+ #line 2424 "Python/bytecodes.c"
/* pop the context manager, push its __exit__ and the
* value returned from calling its __enter__
*/
@@ -3535,16 +3537,16 @@
Py_DECREF(enter);
goto error;
}
- #line 3539 "Python/generated_cases.c.h"
+ #line 3541 "Python/generated_cases.c.h"
Py_DECREF(mgr);
- #line 2448 "Python/bytecodes.c"
+ #line 2450 "Python/bytecodes.c"
res = _PyObject_CallNoArgs(enter);
Py_DECREF(enter);
if (res == NULL) {
Py_DECREF(exit);
if (true) goto pop_1_error;
}
- #line 3548 "Python/generated_cases.c.h"
+ #line 3550 "Python/generated_cases.c.h"
STACK_GROW(1);
stack_pointer[-1] = res;
stack_pointer[-2] = exit;
@@ -3556,7 +3558,7 @@
PyObject *lasti = stack_pointer[-3];
PyObject *exit_func = stack_pointer[-4];
PyObject *res;
- #line 2457 "Python/bytecodes.c"
+ #line 2459 "Python/bytecodes.c"
/* At the top of the stack are 4 values:
- val: TOP = exc_info()
- unused: SECOND = previous exception
@@ -3577,7 +3579,7 @@
res = PyObject_Vectorcall(exit_func, stack + 1,
3 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL);
if (res == NULL) goto error;
- #line 3581 "Python/generated_cases.c.h"
+ #line 3583 "Python/generated_cases.c.h"
STACK_GROW(1);
stack_pointer[-1] = res;
DISPATCH();
@@ -3586,7 +3588,7 @@
TARGET(PUSH_EXC_INFO) {
PyObject *new_exc = stack_pointer[-1];
PyObject *prev_exc;
- #line 2480 "Python/bytecodes.c"
+ #line 2482 "Python/bytecodes.c"
_PyErr_StackItem *exc_info = tstate->exc_info;
if (exc_info->exc_value != NULL) {
prev_exc = exc_info->exc_value;
@@ -3596,7 +3598,7 @@
}
assert(PyExceptionInstance_Check(new_exc));
exc_info->exc_value = Py_NewRef(new_exc);
- #line 3600 "Python/generated_cases.c.h"
+ #line 3602 "Python/generated_cases.c.h"
STACK_GROW(1);
stack_pointer[-1] = new_exc;
stack_pointer[-2] = prev_exc;
@@ -3610,7 +3612,7 @@
uint32_t type_version = read_u32(&next_instr[1].cache);
uint32_t keys_version = read_u32(&next_instr[3].cache);
PyObject *descr = read_obj(&next_instr[5].cache);
- #line 2492 "Python/bytecodes.c"
+ #line 2494 "Python/bytecodes.c"
/* Cached method object */
PyTypeObject *self_cls = Py_TYPE(self);
assert(type_version != 0);
@@ -3627,7 +3629,7 @@
assert(_PyType_HasFeature(Py_TYPE(res2), Py_TPFLAGS_METHOD_DESCRIPTOR));
res = self;
assert(oparg & 1);
- #line 3631 "Python/generated_cases.c.h"
+ #line 3633 "Python/generated_cases.c.h"
STACK_GROW(((oparg & 1) ? 1 : 0));
stack_pointer[-1] = res;
if (oparg & 1) { stack_pointer[-(1 + ((oparg & 1) ? 1 : 0))] = res2; }
@@ -3641,7 +3643,7 @@
PyObject *res;
uint32_t type_version = read_u32(&next_instr[1].cache);
PyObject *descr = read_obj(&next_instr[5].cache);
- #line 2511 "Python/bytecodes.c"
+ #line 2513 "Python/bytecodes.c"
PyTypeObject *self_cls = Py_TYPE(self);
DEOPT_IF(self_cls->tp_version_tag != type_version, LOAD_ATTR);
assert(self_cls->tp_dictoffset == 0);
@@ -3651,7 +3653,7 @@
res2 = Py_NewRef(descr);
res = self;
assert(oparg & 1);
- #line 3655 "Python/generated_cases.c.h"
+ #line 3657 "Python/generated_cases.c.h"
STACK_GROW(((oparg & 1) ? 1 : 0));
stack_pointer[-1] = res;
if (oparg & 1) { stack_pointer[-(1 + ((oparg & 1) ? 1 : 0))] = res2; }
@@ -3665,7 +3667,7 @@
PyObject *res;
uint32_t type_version = read_u32(&next_instr[1].cache);
PyObject *descr = read_obj(&next_instr[5].cache);
- #line 2523 "Python/bytecodes.c"
+ #line 2525 "Python/bytecodes.c"
PyTypeObject *self_cls = Py_TYPE(self);
DEOPT_IF(self_cls->tp_version_tag != type_version, LOAD_ATTR);
Py_ssize_t dictoffset = self_cls->tp_dictoffset;
@@ -3679,7 +3681,7 @@
res2 = Py_NewRef(descr);
res = self;
assert(oparg & 1);
- #line 3683 "Python/generated_cases.c.h"
+ #line 3685 "Python/generated_cases.c.h"
STACK_GROW(((oparg & 1) ? 1 : 0));
stack_pointer[-1] = res;
if (oparg & 1) { stack_pointer[-(1 + ((oparg & 1) ? 1 : 0))] = res2; }
@@ -3688,16 +3690,16 @@
}
TARGET(KW_NAMES) {
- #line 2539 "Python/bytecodes.c"
+ #line 2541 "Python/bytecodes.c"
assert(kwnames == NULL);
assert(oparg < PyTuple_GET_SIZE(frame->f_code->co_consts));
kwnames = GETITEM(frame->f_code->co_consts, oparg);
- #line 3696 "Python/generated_cases.c.h"
+ #line 3698 "Python/generated_cases.c.h"
DISPATCH();
}
TARGET(INSTRUMENTED_CALL) {
- #line 2545 "Python/bytecodes.c"
+ #line 2547 "Python/bytecodes.c"
int is_meth = PEEK(oparg+2) != NULL;
int total_args = oparg + is_meth;
PyObject *function = PEEK(total_args + 1);
@@ -3710,7 +3712,7 @@
_PyCallCache *cache = (_PyCallCache *)next_instr;
INCREMENT_ADAPTIVE_COUNTER(cache->counter);
GO_TO_INSTRUCTION(CALL);
- #line 3714 "Python/generated_cases.c.h"
+ #line 3716 "Python/generated_cases.c.h"
}
TARGET(CALL) {
@@ -3720,7 +3722,7 @@
PyObject *callable = stack_pointer[-(1 + oparg)];
PyObject *method = stack_pointer[-(2 + oparg)];
PyObject *res;
- #line 2590 "Python/bytecodes.c"
+ #line 2592 "Python/bytecodes.c"
int is_meth = method != NULL;
int total_args = oparg;
if (is_meth) {
@@ -3802,7 +3804,7 @@
Py_DECREF(args[i]);
}
if (res == NULL) { STACK_SHRINK(oparg); goto pop_2_error; }
- #line 3806 "Python/generated_cases.c.h"
+ #line 3808 "Python/generated_cases.c.h"
STACK_SHRINK(oparg);
STACK_SHRINK(1);
stack_pointer[-1] = res;
@@ -3814,7 +3816,7 @@
TARGET(CALL_BOUND_METHOD_EXACT_ARGS) {
PyObject *callable = stack_pointer[-(1 + oparg)];
PyObject *method = stack_pointer[-(2 + oparg)];
- #line 2678 "Python/bytecodes.c"
+ #line 2680 "Python/bytecodes.c"
DEOPT_IF(method != NULL, CALL);
DEOPT_IF(Py_TYPE(callable) != &PyMethod_Type, CALL);
STAT_INC(CALL, hit);
@@ -3824,7 +3826,7 @@
PEEK(oparg + 2) = Py_NewRef(meth); // method
Py_DECREF(callable);
GO_TO_INSTRUCTION(CALL_PY_EXACT_ARGS);
- #line 3828 "Python/generated_cases.c.h"
+ #line 3830 "Python/generated_cases.c.h"
}
TARGET(CALL_PY_EXACT_ARGS) {
@@ -3833,7 +3835,7 @@
PyObject *callable = stack_pointer[-(1 + oparg)];
PyObject *method = stack_pointer[-(2 + oparg)];
uint32_t func_version = read_u32(&next_instr[1].cache);
- #line 2690 "Python/bytecodes.c"
+ #line 2692 "Python/bytecodes.c"
assert(kwnames == NULL);
DEOPT_IF(tstate->interp->eval_frame, CALL);
int is_meth = method != NULL;
@@ -3859,7 +3861,7 @@
JUMPBY(INLINE_CACHE_ENTRIES_CALL);
frame->return_offset = 0;
DISPATCH_INLINED(new_frame);
- #line 3863 "Python/generated_cases.c.h"
+ #line 3865 "Python/generated_cases.c.h"
}
TARGET(CALL_PY_WITH_DEFAULTS) {
@@ -3867,7 +3869,7 @@
PyObject *callable = stack_pointer[-(1 + oparg)];
PyObject *method = stack_pointer[-(2 + oparg)];
uint32_t func_version = read_u32(&next_instr[1].cache);
- #line 2718 "Python/bytecodes.c"
+ #line 2720 "Python/bytecodes.c"
assert(kwnames == NULL);
DEOPT_IF(tstate->interp->eval_frame, CALL);
int is_meth = method != NULL;
@@ -3903,7 +3905,7 @@
JUMPBY(INLINE_CACHE_ENTRIES_CALL);
frame->return_offset = 0;
DISPATCH_INLINED(new_frame);
- #line 3907 "Python/generated_cases.c.h"
+ #line 3909 "Python/generated_cases.c.h"
}
TARGET(CALL_NO_KW_TYPE_1) {
@@ -3911,7 +3913,7 @@
PyObject *callable = stack_pointer[-(1 + oparg)];
PyObject *null = stack_pointer[-(2 + oparg)];
PyObject *res;
- #line 2756 "Python/bytecodes.c"
+ #line 2758 "Python/bytecodes.c"
assert(kwnames == NULL);
assert(oparg == 1);
DEOPT_IF(null != NULL, CALL);
@@ -3921,7 +3923,7 @@
res = Py_NewRef(Py_TYPE(obj));
Py_DECREF(obj);
Py_DECREF(&PyType_Type); // I.e., callable
- #line 3925 "Python/generated_cases.c.h"
+ #line 3927 "Python/generated_cases.c.h"
STACK_SHRINK(oparg);
STACK_SHRINK(1);
stack_pointer[-1] = res;
@@ -3934,7 +3936,7 @@
PyObject *callable = stack_pointer[-(1 + oparg)];
PyObject *null = stack_pointer[-(2 + oparg)];
PyObject *res;
- #line 2768 "Python/bytecodes.c"
+ #line 2770 "Python/bytecodes.c"
assert(kwnames == NULL);
assert(oparg == 1);
DEOPT_IF(null != NULL, CALL);
@@ -3945,7 +3947,7 @@
Py_DECREF(arg);
Py_DECREF(&PyUnicode_Type); // I.e., callable
if (res == NULL) { STACK_SHRINK(oparg); goto pop_2_error; }
- #line 3949 "Python/generated_cases.c.h"
+ #line 3951 "Python/generated_cases.c.h"
STACK_SHRINK(oparg);
STACK_SHRINK(1);
stack_pointer[-1] = res;
@@ -3959,7 +3961,7 @@
PyObject *callable = stack_pointer[-(1 + oparg)];
PyObject *null = stack_pointer[-(2 + oparg)];
PyObject *res;
- #line 2782 "Python/bytecodes.c"
+ #line 2784 "Python/bytecodes.c"
assert(kwnames == NULL);
assert(oparg == 1);
DEOPT_IF(null != NULL, CALL);
@@ -3970,7 +3972,7 @@
Py_DECREF(arg);
Py_DECREF(&PyTuple_Type); // I.e., tuple
if (res == NULL) { STACK_SHRINK(oparg); goto pop_2_error; }
- #line 3974 "Python/generated_cases.c.h"
+ #line 3976 "Python/generated_cases.c.h"
STACK_SHRINK(oparg);
STACK_SHRINK(1);
stack_pointer[-1] = res;
@@ -3984,7 +3986,7 @@
PyObject *callable = stack_pointer[-(1 + oparg)];
PyObject *method = stack_pointer[-(2 + oparg)];
PyObject *res;
- #line 2796 "Python/bytecodes.c"
+ #line 2798 "Python/bytecodes.c"
int is_meth = method != NULL;
int total_args = oparg;
if (is_meth) {
@@ -4006,7 +4008,7 @@
}
Py_DECREF(tp);
if (res == NULL) { STACK_SHRINK(oparg); goto pop_2_error; }
- #line 4010 "Python/generated_cases.c.h"
+ #line 4012 "Python/generated_cases.c.h"
STACK_SHRINK(oparg);
STACK_SHRINK(1);
stack_pointer[-1] = res;
@@ -4020,7 +4022,7 @@
PyObject *callable = stack_pointer[-(1 + oparg)];
PyObject *method = stack_pointer[-(2 + oparg)];
PyObject *res;
- #line 2821 "Python/bytecodes.c"
+ #line 2823 "Python/bytecodes.c"
/* Builtin METH_O functions */
assert(kwnames == NULL);
int is_meth = method != NULL;
@@ -4048,7 +4050,7 @@
Py_DECREF(arg);
Py_DECREF(callable);
if (res == NULL) { STACK_SHRINK(oparg); goto pop_2_error; }
- #line 4052 "Python/generated_cases.c.h"
+ #line 4054 "Python/generated_cases.c.h"
STACK_SHRINK(oparg);
STACK_SHRINK(1);
stack_pointer[-1] = res;
@@ -4062,7 +4064,7 @@
PyObject *callable = stack_pointer[-(1 + oparg)];
PyObject *method = stack_pointer[-(2 + oparg)];
PyObject *res;
- #line 2852 "Python/bytecodes.c"
+ #line 2854 "Python/bytecodes.c"
/* Builtin METH_FASTCALL functions, without keywords */
assert(kwnames == NULL);
int is_meth = method != NULL;
@@ -4094,7 +4096,7 @@
'invalid'). In those cases an exception is set, so we must
handle it.
*/
- #line 4098 "Python/generated_cases.c.h"
+ #line 4100 "Python/generated_cases.c.h"
STACK_SHRINK(oparg);
STACK_SHRINK(1);
stack_pointer[-1] = res;
@@ -4108,7 +4110,7 @@
PyObject *callable = stack_pointer[-(1 + oparg)];
PyObject *method = stack_pointer[-(2 + oparg)];
PyObject *res;
- #line 2887 "Python/bytecodes.c"
+ #line 2889 "Python/bytecodes.c"
/* Builtin METH_FASTCALL | METH_KEYWORDS functions */
int is_meth = method != NULL;
int total_args = oparg;
@@ -4140,7 +4142,7 @@
}
Py_DECREF(callable);
if (res == NULL) { STACK_SHRINK(oparg); goto pop_2_error; }
- #line 4144 "Python/generated_cases.c.h"
+ #line 4146 "Python/generated_cases.c.h"
STACK_SHRINK(oparg);
STACK_SHRINK(1);
stack_pointer[-1] = res;
@@ -4154,7 +4156,7 @@
PyObject *callable = stack_pointer[-(1 + oparg)];
PyObject *method = stack_pointer[-(2 + oparg)];
PyObject *res;
- #line 2922 "Python/bytecodes.c"
+ #line 2924 "Python/bytecodes.c"
assert(kwnames == NULL);
/* len(o) */
int is_meth = method != NULL;
@@ -4179,7 +4181,7 @@
Py_DECREF(callable);
Py_DECREF(arg);
if (res == NULL) { STACK_SHRINK(oparg); goto pop_2_error; }
- #line 4183 "Python/generated_cases.c.h"
+ #line 4185 "Python/generated_cases.c.h"
STACK_SHRINK(oparg);
STACK_SHRINK(1);
stack_pointer[-1] = res;
@@ -4192,7 +4194,7 @@
PyObject *callable = stack_pointer[-(1 + oparg)];
PyObject *method = stack_pointer[-(2 + oparg)];
PyObject *res;
- #line 2949 "Python/bytecodes.c"
+ #line 2951 "Python/bytecodes.c"
assert(kwnames == NULL);
/* isinstance(o, o2) */
int is_meth = method != NULL;
@@ -4219,7 +4221,7 @@
Py_DECREF(cls);
Py_DECREF(callable);
if (res == NULL) { STACK_SHRINK(oparg); goto pop_2_error; }
- #line 4223 "Python/generated_cases.c.h"
+ #line 4225 "Python/generated_cases.c.h"
STACK_SHRINK(oparg);
STACK_SHRINK(1);
stack_pointer[-1] = res;
@@ -4231,7 +4233,7 @@
PyObject **args = (stack_pointer - oparg);
PyObject *self = stack_pointer[-(1 + oparg)];
PyObject *method = stack_pointer[-(2 + oparg)];
- #line 2979 "Python/bytecodes.c"
+ #line 2981 "Python/bytecodes.c"
assert(kwnames == NULL);
assert(oparg == 1);
assert(method != NULL);
@@ -4249,14 +4251,14 @@
JUMPBY(INLINE_CACHE_ENTRIES_CALL + 1);
assert(next_instr[-1].op.code == POP_TOP);
DISPATCH();
- #line 4253 "Python/generated_cases.c.h"
+ #line 4255 "Python/generated_cases.c.h"
}
TARGET(CALL_NO_KW_METHOD_DESCRIPTOR_O) {
PyObject **args = (stack_pointer - oparg);
PyObject *method = stack_pointer[-(2 + oparg)];
PyObject *res;
- #line 2999 "Python/bytecodes.c"
+ #line 3001 "Python/bytecodes.c"
assert(kwnames == NULL);
int is_meth = method != NULL;
int total_args = oparg;
@@ -4287,7 +4289,7 @@
Py_DECREF(arg);
Py_DECREF(callable);
if (res == NULL) { STACK_SHRINK(oparg); goto pop_2_error; }
- #line 4291 "Python/generated_cases.c.h"
+ #line 4293 "Python/generated_cases.c.h"
STACK_SHRINK(oparg);
STACK_SHRINK(1);
stack_pointer[-1] = res;
@@ -4300,7 +4302,7 @@
PyObject **args = (stack_pointer - oparg);
PyObject *method = stack_pointer[-(2 + oparg)];
PyObject *res;
- #line 3033 "Python/bytecodes.c"
+ #line 3035 "Python/bytecodes.c"
int is_meth = method != NULL;
int total_args = oparg;
if (is_meth) {
@@ -4329,7 +4331,7 @@
}
Py_DECREF(callable);
if (res == NULL) { STACK_SHRINK(oparg); goto pop_2_error; }
- #line 4333 "Python/generated_cases.c.h"
+ #line 4335 "Python/generated_cases.c.h"
STACK_SHRINK(oparg);
STACK_SHRINK(1);
stack_pointer[-1] = res;
@@ -4342,7 +4344,7 @@
PyObject **args = (stack_pointer - oparg);
PyObject *method = stack_pointer[-(2 + oparg)];
PyObject *res;
- #line 3065 "Python/bytecodes.c"
+ #line 3067 "Python/bytecodes.c"
assert(kwnames == NULL);
assert(oparg == 0 || oparg == 1);
int is_meth = method != NULL;
@@ -4371,7 +4373,7 @@
Py_DECREF(self);
Py_DECREF(callable);
if (res == NULL) { STACK_SHRINK(oparg); goto pop_2_error; }
- #line 4375 "Python/generated_cases.c.h"
+ #line 4377 "Python/generated_cases.c.h"
STACK_SHRINK(oparg);
STACK_SHRINK(1);
stack_pointer[-1] = res;
@@ -4384,7 +4386,7 @@
PyObject **args = (stack_pointer - oparg);
PyObject *method = stack_pointer[-(2 + oparg)];
PyObject *res;
- #line 3097 "Python/bytecodes.c"
+ #line 3099 "Python/bytecodes.c"
assert(kwnames == NULL);
int is_meth = method != NULL;
int total_args = oparg;
@@ -4412,7 +4414,7 @@
}
Py_DECREF(callable);
if (res == NULL) { STACK_SHRINK(oparg); goto pop_2_error; }
- #line 4416 "Python/generated_cases.c.h"
+ #line 4418 "Python/generated_cases.c.h"
STACK_SHRINK(oparg);
STACK_SHRINK(1);
stack_pointer[-1] = res;
@@ -4422,9 +4424,9 @@
}
TARGET(INSTRUMENTED_CALL_FUNCTION_EX) {
- #line 3128 "Python/bytecodes.c"
+ #line 3130 "Python/bytecodes.c"
GO_TO_INSTRUCTION(CALL_FUNCTION_EX);
- #line 4428 "Python/generated_cases.c.h"
+ #line 4430 "Python/generated_cases.c.h"
}
TARGET(CALL_FUNCTION_EX) {
@@ -4433,7 +4435,7 @@
PyObject *callargs = stack_pointer[-(1 + ((oparg & 1) ? 1 : 0))];
PyObject *func = stack_pointer[-(2 + ((oparg & 1) ? 1 : 0))];
PyObject *result;
- #line 3132 "Python/bytecodes.c"
+ #line 3134 "Python/bytecodes.c"
// DICT_MERGE is called before this opcode if there are kwargs.
// It converts all dict subtypes in kwargs into regular dicts.
assert(kwargs == NULL || PyDict_CheckExact(kwargs));
@@ -4495,14 +4497,14 @@
}
result = PyObject_Call(func, callargs, kwargs);
}
- #line 4499 "Python/generated_cases.c.h"
+ #line 4501 "Python/generated_cases.c.h"
Py_DECREF(func);
Py_DECREF(callargs);
Py_XDECREF(kwargs);
- #line 3194 "Python/bytecodes.c"
+ #line 3196 "Python/bytecodes.c"
assert(PEEK(3 + (oparg & 1)) == NULL);
if (result == NULL) { STACK_SHRINK(((oparg & 1) ? 1 : 0)); goto pop_3_error; }
- #line 4506 "Python/generated_cases.c.h"
+ #line 4508 "Python/generated_cases.c.h"
STACK_SHRINK(((oparg & 1) ? 1 : 0));
STACK_SHRINK(2);
stack_pointer[-1] = result;
@@ -4517,7 +4519,7 @@
PyObject *kwdefaults = (oparg & 0x02) ? stack_pointer[-(1 + ((oparg & 0x08) ? 1 : 0) + ((oparg & 0x04) ? 1 : 0) + ((oparg & 0x02) ? 1 : 0))] : NULL;
PyObject *defaults = (oparg & 0x01) ? stack_pointer[-(1 + ((oparg & 0x08) ? 1 : 0) + ((oparg & 0x04) ? 1 : 0) + ((oparg & 0x02) ? 1 : 0) + ((oparg & 0x01) ? 1 : 0))] : NULL;
PyObject *func;
- #line 3204 "Python/bytecodes.c"
+ #line 3206 "Python/bytecodes.c"
PyFunctionObject *func_obj = (PyFunctionObject *)
PyFunction_New(codeobj, GLOBALS());
@@ -4546,14 +4548,14 @@
func_obj->func_version = ((PyCodeObject *)codeobj)->co_version;
func = (PyObject *)func_obj;
- #line 4550 "Python/generated_cases.c.h"
+ #line 4552 "Python/generated_cases.c.h"
STACK_SHRINK(((oparg & 0x01) ? 1 : 0) + ((oparg & 0x02) ? 1 : 0) + ((oparg & 0x04) ? 1 : 0) + ((oparg & 0x08) ? 1 : 0));
stack_pointer[-1] = func;
DISPATCH();
}
TARGET(RETURN_GENERATOR) {
- #line 3235 "Python/bytecodes.c"
+ #line 3237 "Python/bytecodes.c"
assert(PyFunction_Check(frame->f_funcobj));
PyFunctionObject *func = (PyFunctionObject *)frame->f_funcobj;
PyGenObject *gen = (PyGenObject *)_Py_MakeCoro(func);
@@ -4574,7 +4576,7 @@
frame = cframe.current_frame = prev;
_PyFrame_StackPush(frame, (PyObject *)gen);
goto resume_frame;
- #line 4578 "Python/generated_cases.c.h"
+ #line 4580 "Python/generated_cases.c.h"
}
TARGET(BUILD_SLICE) {
@@ -4582,15 +4584,15 @@
PyObject *stop = stack_pointer[-(1 + ((oparg == 3) ? 1 : 0))];
PyObject *start = stack_pointer[-(2 + ((oparg == 3) ? 1 : 0))];
PyObject *slice;
- #line 3258 "Python/bytecodes.c"
+ #line 3260 "Python/bytecodes.c"
slice = PySlice_New(start, stop, step);
- #line 4588 "Python/generated_cases.c.h"
+ #line 4590 "Python/generated_cases.c.h"
Py_DECREF(start);
Py_DECREF(stop);
Py_XDECREF(step);
- #line 3260 "Python/bytecodes.c"
+ #line 3262 "Python/bytecodes.c"
if (slice == NULL) { STACK_SHRINK(((oparg == 3) ? 1 : 0)); goto pop_2_error; }
- #line 4594 "Python/generated_cases.c.h"
+ #line 4596 "Python/generated_cases.c.h"
STACK_SHRINK(((oparg == 3) ? 1 : 0));
STACK_SHRINK(1);
stack_pointer[-1] = slice;
@@ -4601,7 +4603,7 @@
PyObject *fmt_spec = ((oparg & FVS_MASK) == FVS_HAVE_SPEC) ? stack_pointer[-((((oparg & FVS_MASK) == FVS_HAVE_SPEC) ? 1 : 0))] : NULL;
PyObject *value = stack_pointer[-(1 + (((oparg & FVS_MASK) == FVS_HAVE_SPEC) ? 1 : 0))];
PyObject *result;
- #line 3264 "Python/bytecodes.c"
+ #line 3266 "Python/bytecodes.c"
/* Handles f-string value formatting. */
PyObject *(*conv_fn)(PyObject *);
int which_conversion = oparg & FVC_MASK;
@@ -4636,7 +4638,7 @@
Py_DECREF(value);
Py_XDECREF(fmt_spec);
if (result == NULL) { STACK_SHRINK((((oparg & FVS_MASK) == FVS_HAVE_SPEC) ? 1 : 0)); goto pop_1_error; }
- #line 4640 "Python/generated_cases.c.h"
+ #line 4642 "Python/generated_cases.c.h"
STACK_SHRINK((((oparg & FVS_MASK) == FVS_HAVE_SPEC) ? 1 : 0));
stack_pointer[-1] = result;
DISPATCH();
@@ -4645,10 +4647,10 @@
TARGET(COPY) {
PyObject *bottom = stack_pointer[-(1 + (oparg-1))];
PyObject *top;
- #line 3301 "Python/bytecodes.c"
+ #line 3303 "Python/bytecodes.c"
assert(oparg > 0);
top = Py_NewRef(bottom);
- #line 4652 "Python/generated_cases.c.h"
+ #line 4654 "Python/generated_cases.c.h"
STACK_GROW(1);
stack_pointer[-1] = top;
DISPATCH();
@@ -4660,7 +4662,7 @@
PyObject *rhs = stack_pointer[-1];
PyObject *lhs = stack_pointer[-2];
PyObject *res;
- #line 3306 "Python/bytecodes.c"
+ #line 3308 "Python/bytecodes.c"
#if ENABLE_SPECIALIZATION
_PyBinaryOpCache *cache = (_PyBinaryOpCache *)next_instr;
if (ADAPTIVE_COUNTER_IS_ZERO(cache->counter)) {
@@ -4675,12 +4677,12 @@
assert((unsigned)oparg < Py_ARRAY_LENGTH(binary_ops));
assert(binary_ops[oparg]);
res = binary_ops[oparg](lhs, rhs);
- #line 4679 "Python/generated_cases.c.h"
+ #line 4681 "Python/generated_cases.c.h"
Py_DECREF(lhs);
Py_DECREF(rhs);
- #line 3321 "Python/bytecodes.c"
+ #line 3323 "Python/bytecodes.c"
if (res == NULL) goto pop_2_error;
- #line 4684 "Python/generated_cases.c.h"
+ #line 4686 "Python/generated_cases.c.h"
STACK_SHRINK(1);
stack_pointer[-1] = res;
next_instr += 1;
@@ -4690,16 +4692,16 @@
TARGET(SWAP) {
PyObject *top = stack_pointer[-1];
PyObject *bottom = stack_pointer[-(2 + (oparg-2))];
- #line 3326 "Python/bytecodes.c"
+ #line 3328 "Python/bytecodes.c"
assert(oparg >= 2);
- #line 4696 "Python/generated_cases.c.h"
+ #line 4698 "Python/generated_cases.c.h"
stack_pointer[-1] = bottom;
stack_pointer[-(2 + (oparg-2))] = top;
DISPATCH();
}
TARGET(INSTRUMENTED_INSTRUCTION) {
- #line 3330 "Python/bytecodes.c"
+ #line 3332 "Python/bytecodes.c"
int next_opcode = _Py_call_instrumentation_instruction(
tstate, frame, next_instr-1);
if (next_opcode < 0) goto error;
@@ -4711,26 +4713,26 @@
assert(next_opcode > 0 && next_opcode < 256);
opcode = next_opcode;
DISPATCH_GOTO();
- #line 4715 "Python/generated_cases.c.h"
+ #line 4717 "Python/generated_cases.c.h"
}
TARGET(INSTRUMENTED_JUMP_FORWARD) {
- #line 3344 "Python/bytecodes.c"
+ #line 3346 "Python/bytecodes.c"
INSTRUMENTED_JUMP(next_instr-1, next_instr+oparg, PY_MONITORING_EVENT_JUMP);
- #line 4721 "Python/generated_cases.c.h"
+ #line 4723 "Python/generated_cases.c.h"
DISPATCH();
}
TARGET(INSTRUMENTED_JUMP_BACKWARD) {
- #line 3348 "Python/bytecodes.c"
+ #line 3350 "Python/bytecodes.c"
INSTRUMENTED_JUMP(next_instr-1, next_instr-oparg, PY_MONITORING_EVENT_JUMP);
- #line 4728 "Python/generated_cases.c.h"
+ #line 4730 "Python/generated_cases.c.h"
CHECK_EVAL_BREAKER();
DISPATCH();
}
TARGET(INSTRUMENTED_POP_JUMP_IF_TRUE) {
- #line 3353 "Python/bytecodes.c"
+ #line 3355 "Python/bytecodes.c"
PyObject *cond = POP();
int err = PyObject_IsTrue(cond);
Py_DECREF(cond);
@@ -4739,12 +4741,12 @@
assert(err == 0 || err == 1);
int offset = err*oparg;
INSTRUMENTED_JUMP(here, next_instr + offset, PY_MONITORING_EVENT_BRANCH);
- #line 4743 "Python/generated_cases.c.h"
+ #line 4745 "Python/generated_cases.c.h"
DISPATCH();
}
TARGET(INSTRUMENTED_POP_JUMP_IF_FALSE) {
- #line 3364 "Python/bytecodes.c"
+ #line 3366 "Python/bytecodes.c"
PyObject *cond = POP();
int err = PyObject_IsTrue(cond);
Py_DECREF(cond);
@@ -4753,12 +4755,12 @@
assert(err == 0 || err == 1);
int offset = (1-err)*oparg;
INSTRUMENTED_JUMP(here, next_instr + offset, PY_MONITORING_EVENT_BRANCH);
- #line 4757 "Python/generated_cases.c.h"
+ #line 4759 "Python/generated_cases.c.h"
DISPATCH();
}
TARGET(INSTRUMENTED_POP_JUMP_IF_NONE) {
- #line 3375 "Python/bytecodes.c"
+ #line 3377 "Python/bytecodes.c"
PyObject *value = POP();
_Py_CODEUNIT *here = next_instr-1;
int offset;
@@ -4770,12 +4772,12 @@
offset = 0;
}
INSTRUMENTED_JUMP(here, next_instr + offset, PY_MONITORING_EVENT_BRANCH);
- #line 4774 "Python/generated_cases.c.h"
+ #line 4776 "Python/generated_cases.c.h"
DISPATCH();
}
TARGET(INSTRUMENTED_POP_JUMP_IF_NOT_NONE) {
- #line 3389 "Python/bytecodes.c"
+ #line 3391 "Python/bytecodes.c"
PyObject *value = POP();
_Py_CODEUNIT *here = next_instr-1;
int offset;
@@ -4787,30 +4789,30 @@
offset = oparg;
}
INSTRUMENTED_JUMP(here, next_instr + offset, PY_MONITORING_EVENT_BRANCH);
- #line 4791 "Python/generated_cases.c.h"
+ #line 4793 "Python/generated_cases.c.h"
DISPATCH();
}
TARGET(EXTENDED_ARG) {
- #line 3403 "Python/bytecodes.c"
+ #line 3405 "Python/bytecodes.c"
assert(oparg);
opcode = next_instr->op.code;
oparg = oparg << 8 | next_instr->op.arg;
PRE_DISPATCH_GOTO();
DISPATCH_GOTO();
- #line 4802 "Python/generated_cases.c.h"
+ #line 4804 "Python/generated_cases.c.h"
}
TARGET(CACHE) {
- #line 3411 "Python/bytecodes.c"
+ #line 3413 "Python/bytecodes.c"
assert(0 && "Executing a cache.");
Py_UNREACHABLE();
- #line 4809 "Python/generated_cases.c.h"
+ #line 4811 "Python/generated_cases.c.h"
}
TARGET(RESERVED) {
- #line 3416 "Python/bytecodes.c"
+ #line 3418 "Python/bytecodes.c"
assert(0 && "Executing RESERVED instruction.");
Py_UNREACHABLE();
- #line 4816 "Python/generated_cases.c.h"
+ #line 4818 "Python/generated_cases.c.h"
}
diff --git a/Python/marshal.c b/Python/marshal.c
index 208996b05fc484..6439503d2c6879 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -625,6 +625,10 @@ w_clear_refs(WFILE *wf)
}
/* version currently has no effect for writing ints. */
+/* Note that while the documentation states that this function
+ * can error, currently it never does. Setting an exception in
+ * this function should be regarded as an API-breaking change.
+ */
void
PyMarshal_WriteLongToFile(long x, FILE *fp, int version)
{
diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c
index 06c43459624c67..8b846443ce8f6a 100644
--- a/Python/pylifecycle.c
+++ b/Python/pylifecycle.c
@@ -2035,7 +2035,7 @@ new_interpreter(PyThreadState **tstate_p, const PyInterpreterConfig *config)
const PyConfig *src_config;
if (save_tstate != NULL) {
// XXX Might new_interpreter() have been called without the GIL held?
- _PyEval_ReleaseLock(save_tstate);
+ _PyEval_ReleaseLock(save_tstate->interp, save_tstate);
src_config = _PyInterpreterState_GetConfig(save_tstate->interp);
}
else
diff --git a/Python/pystate.c b/Python/pystate.c
index 25e655a2027918..39fe5473ed46b3 100644
--- a/Python/pystate.c
+++ b/Python/pystate.c
@@ -822,6 +822,12 @@ interpreter_clear(PyInterpreterState *interp, PyThreadState *tstate)
p = p->next;
HEAD_UNLOCK(runtime);
}
+ if (tstate->interp == interp) {
+ /* We fix tstate->_status below when we for sure aren't using it
+ (e.g. no longer need the GIL). */
+ // XXX Eliminate the need to do this.
+ tstate->_status.cleared = 0;
+ }
/* It is possible that any of the objects below have a finalizer
that runs Python code or otherwise relies on a thread state
@@ -886,6 +892,12 @@ interpreter_clear(PyInterpreterState *interp, PyThreadState *tstate)
Py_CLEAR(interp->builtins);
Py_CLEAR(interp->interpreter_trampoline);
+ if (tstate->interp == interp) {
+ /* We are now safe to fix tstate->_status.cleared. */
+ // XXX Do this (much) earlier?
+ tstate->_status.cleared = 1;
+ }
+
for (int i=0; i < DICT_MAX_WATCHERS; i++) {
interp->dict_state.watchers[i] = NULL;
}
@@ -930,6 +942,7 @@ _PyInterpreterState_Clear(PyThreadState *tstate)
}
+static inline void tstate_deactivate(PyThreadState *tstate);
static void zapthreads(PyInterpreterState *interp);
void
@@ -943,7 +956,9 @@ PyInterpreterState_Delete(PyInterpreterState *interp)
PyThreadState *tcur = current_fast_get(runtime);
if (tcur != NULL && interp == tcur->interp) {
/* Unset current thread. After this, many C API calls become crashy. */
- _PyThreadState_Swap(runtime, NULL);
+ current_fast_clear(runtime);
+ tstate_deactivate(tcur);
+ _PyEval_ReleaseLock(interp, NULL);
}
zapthreads(interp);
@@ -1567,7 +1582,7 @@ _PyThreadState_DeleteCurrent(PyThreadState *tstate)
_Py_EnsureTstateNotNULL(tstate);
tstate_delete_common(tstate);
current_fast_clear(tstate->interp->runtime);
- _PyEval_ReleaseLock(tstate);
+ _PyEval_ReleaseLock(tstate->interp, NULL);
free_threadstate(tstate);
}
@@ -1907,7 +1922,7 @@ _PyThreadState_Swap(_PyRuntimeState *runtime, PyThreadState *newts)
{
PyThreadState *oldts = current_fast_get(runtime);
if (oldts != NULL) {
- _PyEval_ReleaseLock(oldts);
+ _PyEval_ReleaseLock(oldts->interp, oldts);
}
_swap_thread_states(runtime, oldts, newts);
if (newts != NULL) {
diff --git a/Tools/build/stable_abi.py b/Tools/build/stable_abi.py
index 88db93e935e9be..42b2dd92307bbf 100644
--- a/Tools/build/stable_abi.py
+++ b/Tools/build/stable_abi.py
@@ -684,7 +684,8 @@ def main():
if args.all:
run_all_generators = True
- args.unixy_check = True
+ if UNIXY:
+ args.unixy_check = True
try:
file = args.file.open('rb')
diff --git a/Tools/c-analyzer/cpython/_parser.py b/Tools/c-analyzer/cpython/_parser.py
index 9bd54db0f59c51..2ee341f8dd137d 100644
--- a/Tools/c-analyzer/cpython/_parser.py
+++ b/Tools/c-analyzer/cpython/_parser.py
@@ -71,6 +71,7 @@ def clean_lines(text):
# only huge constants (safe but parsing is slow)
Modules/_ssl_data.h
+Modules/_ssl_data_31.h
Modules/_ssl_data_300.h
Modules/_ssl_data_111.h
Modules/cjkcodecs/mappings_*.h
diff --git a/Tools/c-analyzer/cpython/ignored.tsv b/Tools/c-analyzer/cpython/ignored.tsv
index e9056aed5dc0b2..4c40a04a6854bf 100644
--- a/Tools/c-analyzer/cpython/ignored.tsv
+++ b/Tools/c-analyzer/cpython/ignored.tsv
@@ -424,6 +424,8 @@ Modules/_testcapi/watchers.c - num_code_object_destroyed_events -
Modules/_testcapi/watchers.c - pyfunc_watchers -
Modules/_testcapi/watchers.c - func_watcher_ids -
Modules/_testcapi/watchers.c - func_watcher_callbacks -
+Modules/_testcapimodule.c - BasicStaticTypes -
+Modules/_testcapimodule.c - num_basic_static_types_used -
Modules/_testcapimodule.c - ContainerNoGC_members -
Modules/_testcapimodule.c - ContainerNoGC_type -
Modules/_testcapimodule.c - FmData -
diff --git a/Tools/msi/build.bat b/Tools/msi/build.bat
index 8771d004211ea9..b9aab887c4939b 100644
--- a/Tools/msi/build.bat
+++ b/Tools/msi/build.bat
@@ -29,29 +29,23 @@ call "%D%get_externals.bat"
call "%PCBUILD%find_msbuild.bat" %MSBUILD%
if ERRORLEVEL 1 (echo Cannot locate MSBuild.exe on PATH or as MSBUILD variable & exit /b 2)
-if defined BUILDX86 (
- call "%PCBUILD%build.bat" -p Win32 -d -e %REBUILD% %BUILDTEST%
- if errorlevel 1 exit /B %ERRORLEVEL%
- call "%PCBUILD%build.bat" -p Win32 -e %REBUILD% %BUILDTEST%
- if errorlevel 1 exit /B %ERRORLEVEL%
-)
-if defined BUILDX64 (
- call "%PCBUILD%build.bat" -p x64 -d -e %REBUILD% %BUILDTEST%
- if errorlevel 1 exit /B %ERRORLEVEL%
- call "%PCBUILD%build.bat" -p x64 -e %REBUILD% %BUILDTEST%
- if errorlevel 1 exit /B %ERRORLEVEL%
-)
-if defined BUILDARM64 (
- call "%PCBUILD%build.bat" -p ARM64 -d -e %REBUILD% %BUILDTEST%
- if errorlevel 1 exit /B %ERRORLEVEL%
- call "%PCBUILD%build.bat" -p ARM64 -e %REBUILD% %BUILDTEST%
- if errorlevel 1 exit /B %ERRORLEVEL%
-)
+if defined BUILDX86 call "%PCBUILD%build.bat" -p Win32 -d -e %REBUILD% %BUILDTEST%
+if errorlevel 1 exit /B %ERRORLEVEL%
+if defined BUILDX86 call "%PCBUILD%build.bat" -p Win32 -e %REBUILD% %BUILDTEST%
+if errorlevel 1 exit /B %ERRORLEVEL%
-if defined BUILDDOC (
- call "%PCBUILD%..\Doc\make.bat" html
- if errorlevel 1 exit /B %ERRORLEVEL%
-)
+if defined BUILDX64 call "%PCBUILD%build.bat" -p x64 -d -e %REBUILD% %BUILDTEST%
+if errorlevel 1 exit /B %ERRORLEVEL%
+if defined BUILDX64 call "%PCBUILD%build.bat" -p x64 -e %REBUILD% %BUILDTEST%
+if errorlevel 1 exit /B %ERRORLEVEL%
+
+if defined BUILDARM64 call "%PCBUILD%build.bat" -p ARM64 -d -e %REBUILD% %BUILDTEST%
+if errorlevel 1 exit /B %ERRORLEVEL%
+if defined BUILDARM64 call "%PCBUILD%build.bat" -p ARM64 -e %REBUILD% %BUILDTEST%
+if errorlevel 1 exit /B %ERRORLEVEL%
+
+if defined BUILDDOC call "%PCBUILD%..\Doc\make.bat" html
+if errorlevel 1 exit /B %ERRORLEVEL%
rem Build the launcher MSI separately
%MSBUILD% "%D%launcher\launcher.wixproj" /p:Platform=x86
@@ -68,18 +62,14 @@ if defined REBUILD (
set BUILD_CMD=%BUILD_CMD% /t:Rebuild
)
-if defined BUILDX86 (
- %MSBUILD% /p:Platform=x86 %BUILD_CMD%
- if errorlevel 1 exit /B %ERRORLEVEL%
-)
-if defined BUILDX64 (
- %MSBUILD% /p:Platform=x64 %BUILD_CMD%
- if errorlevel 1 exit /B %ERRORLEVEL%
-)
-if defined BUILDARM64 (
- %MSBUILD% /p:Platform=ARM64 %BUILD_CMD%
- if errorlevel 1 exit /B %ERRORLEVEL%
-)
+if defined BUILDX86 %MSBUILD% /p:Platform=x86 %BUILD_CMD%
+if errorlevel 1 exit /B %ERRORLEVEL%
+
+if defined BUILDX64 %MSBUILD% /p:Platform=x64 %BUILD_CMD%
+if errorlevel 1 exit /B %ERRORLEVEL%
+
+if defined BUILDARM64 %MSBUILD% /p:Platform=ARM64 %BUILD_CMD%
+if errorlevel 1 exit /B %ERRORLEVEL%
exit /B 0
diff --git a/Tools/msi/bundle/Default.wxl b/Tools/msi/bundle/Default.wxl
index e83a540a0e6726..6f8befba3a2523 100644
--- a/Tools/msi/bundle/Default.wxl
+++ b/Tools/msi/bundle/Default.wxl
@@ -112,10 +112,10 @@ See <a href="https://docs.python.org/[ShortVersion]/whatsnew/[ShortVersion].h
Thank you for using [WixBundleName].
Thank you for using [WixBundleName].
-Feel free to email <a href="mailto:python-list@python.org">python-list@python.org</a> if you continue to encounter issues.
+Feel free to post at <a href="https://discuss.python.org/c/users/7">discuss.python.org</a> if you continue to encounter issues.
Thank you for using [WixBundleName].
-Feel free to email <a href="mailto:python-list@python.org">python-list@python.org</a> if you encountered problems.
+Feel free to post at <a href="https://discuss.python.org/c/users/7">discuss.python.org</a> if you encountered problems.
One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the <a href="#">log file</a>.
You must restart your computer to complete the rollback of the software.
@@ -123,7 +123,7 @@ Feel free to email <a href="mailto:python-list@python.org">python-list@pyt
Unable to install [WixBundleName] due to an existing install. Use Programs and Features to modify, repair or remove [WixBundleName].
At least Windows 8.1 or Windows Server 2012 are required to install [WixBundleName]
-Visit <a href="https://www.python.org/">python.org</a> to download an earlier version of Python.
+Visit <a href="https://www.python.org/downloads/">python.org</a> to download an earlier version of Python.
Disable path length limit
Changes your machine configuration to allow programs, including Python, to bypass the 260 character "MAX_PATH" limitation.
diff --git a/Tools/ssl/multissltests.py b/Tools/ssl/multissltests.py
index c0fbee9ca6f98f..f9809c9b54665b 100755
--- a/Tools/ssl/multissltests.py
+++ b/Tools/ssl/multissltests.py
@@ -46,8 +46,9 @@
]
OPENSSL_RECENT_VERSIONS = [
- "1.1.1t",
- "3.0.8"
+ "1.1.1u",
+ "3.0.9",
+ "3.1.1",
]
LIBRESSL_OLD_VERSIONS = [
diff --git a/aclocal.m4 b/aclocal.m4
index 6a33c0cc9d9e8c..da8ee95b9c7f6b 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.16.3 -*- Autoconf -*-
+# generated automatically by aclocal 1.16.4 -*- Autoconf -*-
-# Copyright (C) 1996-2020 Free Software Foundation, Inc.
+# Copyright (C) 1996-2021 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -184,7 +184,7 @@ AS_VAR_POPDEF([CACHEVAR])dnl
# and this notice are preserved. This file is offered as-is, without any
# warranty.
-#serial 10
+#serial 11
AU_ALIAS([CHECK_SSL], [AX_CHECK_OPENSSL])
AC_DEFUN([AX_CHECK_OPENSSL], [
@@ -227,7 +227,7 @@ AC_DEFUN([AX_CHECK_OPENSSL], [
if ! $found; then
OPENSSL_INCLUDES=
for ssldir in $ssldirs; do
- AC_MSG_CHECKING([for openssl/ssl.h in $ssldir])
+ AC_MSG_CHECKING([for include/openssl/ssl.h in $ssldir])
if test -f "$ssldir/include/openssl/ssl.h"; then
OPENSSL_INCLUDES="-I$ssldir/include"
OPENSSL_LDFLAGS="-L$ssldir/lib"
@@ -621,7 +621,7 @@ AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"],
# AM_CONDITIONAL -*- Autoconf -*-
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -652,7 +652,7 @@ AC_CONFIG_COMMANDS_PRE(
Usually this means the macro was only invoked conditionally.]])
fi])])
-# Copyright (C) 2006-2020 Free Software Foundation, Inc.
+# Copyright (C) 2006-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
diff --git a/configure b/configure
index 2b863be108be26..e89155b5bbef94 100755
--- a/configure
+++ b/configure
@@ -1,11 +1,12 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for python 3.12.
+# Generated by GNU Autoconf 2.71 for python 3.12.
#
# Report bugs to .
#
#
-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation,
+# Inc.
#
#
# This configure script is free software; the Free Software Foundation
@@ -16,14 +17,16 @@
# Be more Bourne compatible
DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+as_nop=:
+if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
emulate sh
NULLCMD=:
# Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
-else
+else $as_nop
case `(set -o) 2>/dev/null` in #(
*posix*) :
set -o posix ;; #(
@@ -33,46 +36,46 @@ esac
fi
+
+# Reset variables that may have inherited troublesome values from
+# the environment.
+
+# IFS needs to be set, to space, tab, and newline, in precisely that order.
+# (If _AS_PATH_WALK were called with IFS unset, it would have the
+# side effect of setting IFS to empty, thus disabling word splitting.)
+# Quoting is to prevent editors from complaining about space-tab.
as_nl='
'
export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='print -r --'
- as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='printf %s\n'
- as_echo_n='printf %s'
-else
- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
- as_echo_n='/usr/ucb/echo -n'
- else
- as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
- as_echo_n_body='eval
- arg=$1;
- case $arg in #(
- *"$as_nl"*)
- expr "X$arg" : "X\\(.*\\)$as_nl";
- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
- esac;
- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
- '
- export as_echo_n_body
- as_echo_n='sh -c $as_echo_n_body as_echo'
- fi
- export as_echo_body
- as_echo='sh -c $as_echo_body as_echo'
-fi
+IFS=" "" $as_nl"
+
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# Ensure predictable behavior from utilities with locale-dependent output.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# We cannot yet rely on "unset" to work, but we need these variables
+# to be unset--not just set to an empty or harmless value--now, to
+# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct
+# also avoids known problems related to "unset" and subshell syntax
+# in other old shells (e.g. bash 2.01 and pdksh 5.2.14).
+for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH
+do eval test \${$as_var+y} \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+
+# Ensure that fds 0, 1, and 2 are open.
+if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi
+if (exec 3>&2) ; then :; else exec 2>/dev/null; fi
# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
+if ${PATH_SEPARATOR+false} :; then
PATH_SEPARATOR=:
(PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
(PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
@@ -81,13 +84,6 @@ if test "${PATH_SEPARATOR+set}" != set; then
fi
-# IFS
-# We need space, tab and new line, in precisely that order. Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" "" $as_nl"
-
# Find who we are. Look in the path if we contain no directory separator.
as_myself=
case $0 in #((
@@ -96,8 +92,12 @@ case $0 in #((
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ test -r "$as_dir$0" && as_myself=$as_dir$0 && break
done
IFS=$as_save_IFS
@@ -109,30 +109,10 @@ if test "x$as_myself" = x; then
as_myself=$0
fi
if test ! -f "$as_myself"; then
- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
exit 1
fi
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there. '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
- && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
# Use a proper internal environment variable to ensure we don't fall
# into an infinite loop, continuously re-executing ourselves.
@@ -154,20 +134,22 @@ esac
exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-as_fn_exit 255
+printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
fi
# We don't want this to propagate to other subprocesses.
{ _as_can_reexec=; unset _as_can_reexec;}
if test "x$CONFIG_SHELL" = x; then
- as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+ as_bourne_compatible="as_nop=:
+if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
emulate sh
NULLCMD=:
# Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
# is contrary to our usage. Disable this feature.
alias -g '\${1+\"\$@\"}'='\"\$@\"'
setopt NO_GLOB_SUBST
-else
+else \$as_nop
case \`(set -o) 2>/dev/null\` in #(
*posix*) :
set -o posix ;; #(
@@ -187,42 +169,53 @@ as_fn_success || { exitcode=1; echo as_fn_success failed.; }
as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+if ( set x; as_fn_ret_success y && test x = \"\$1\" )
+then :
-else
+else \$as_nop
exitcode=1; echo positional parameters were not saved.
fi
test x\$exitcode = x0 || exit 1
+blah=\$(echo \$(echo blah))
+test x\"\$blah\" = xblah || exit 1
test -x / || exit 1"
as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
test \$(( 1 + 1 )) = 2 || exit 1"
- if (eval "$as_required") 2>/dev/null; then :
+ if (eval "$as_required") 2>/dev/null
+then :
as_have_required=yes
-else
+else $as_nop
as_have_required=no
fi
- if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null
+then :
-else
+else $as_nop
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
as_found=false
for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
as_found=:
case $as_dir in #(
/*)
for as_base in sh bash ksh sh5; do
# Try only shells that exist, to save several forks.
- as_shell=$as_dir/$as_base
+ as_shell=$as_dir$as_base
if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null
+then :
CONFIG_SHELL=$as_shell as_have_required=yes
- if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null
+then :
break 2
fi
fi
@@ -230,14 +223,21 @@ fi
esac
as_found=false
done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
- CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
IFS=$as_save_IFS
+if $as_found
+then :
+
+else $as_nop
+ if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+ as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null
+then :
+ CONFIG_SHELL=$SHELL as_have_required=yes
+fi
+fi
- if test "x$CONFIG_SHELL" != x; then :
+ if test "x$CONFIG_SHELL" != x
+then :
export CONFIG_SHELL
# We cannot yet assume a decent shell, so we have to provide a
# neutralization value for shells without unset; and this also
@@ -255,18 +255,19 @@ esac
exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
exit 255
fi
- if test x$as_have_required = xno; then :
- $as_echo "$0: This script requires a shell more modern than all"
- $as_echo "$0: the shells that I found on your system."
- if test x${ZSH_VERSION+set} = xset ; then
- $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
- $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+ if test x$as_have_required = xno
+then :
+ printf "%s\n" "$0: This script requires a shell more modern than all"
+ printf "%s\n" "$0: the shells that I found on your system."
+ if test ${ZSH_VERSION+y} ; then
+ printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+ printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later."
else
- $as_echo "$0: Please tell bug-autoconf@gnu.org and
+ printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and
$0: https://github.com/python/cpython/issues/ about your
$0: system, including any error possibly output before this
$0: message. Then install a modern shell, or manually run
@@ -294,6 +295,7 @@ as_fn_unset ()
}
as_unset=as_fn_unset
+
# as_fn_set_status STATUS
# -----------------------
# Set $? to STATUS, without forking.
@@ -311,6 +313,14 @@ as_fn_exit ()
as_fn_set_status $1
exit $1
} # as_fn_exit
+# as_fn_nop
+# ---------
+# Do nothing but, unlike ":", preserve the value of $?.
+as_fn_nop ()
+{
+ return $?
+}
+as_nop=as_fn_nop
# as_fn_mkdir_p
# -------------
@@ -325,7 +335,7 @@ as_fn_mkdir_p ()
as_dirs=
while :; do
case $as_dir in #(
- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
*) as_qdir=$as_dir;;
esac
as_dirs="'$as_qdir' $as_dirs"
@@ -334,7 +344,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$as_dir" : 'X\(//\)[^/]' \| \
X"$as_dir" : 'X\(//\)$' \| \
X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
+printf "%s\n" X"$as_dir" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -373,12 +383,13 @@ as_fn_executable_p ()
# advantage of any shell optimizations that allow amortized linear growth over
# repeated appends, instead of the typical quadratic growth present in naive
# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null
+then :
eval 'as_fn_append ()
{
eval $1+=\$2
}'
-else
+else $as_nop
as_fn_append ()
{
eval $1=\$$1\$2
@@ -390,18 +401,27 @@ fi # as_fn_append
# Perform arithmetic evaluation on the ARGs, and store the result in the
# global $as_val. Take advantage of shells that can avoid forks. The arguments
# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null
+then :
eval 'as_fn_arith ()
{
as_val=$(( $* ))
}'
-else
+else $as_nop
as_fn_arith ()
{
as_val=`expr "$@" || test $? -eq 1`
}
fi # as_fn_arith
+# as_fn_nop
+# ---------
+# Do nothing but, unlike ":", preserve the value of $?.
+as_fn_nop ()
+{
+ return $?
+}
+as_nop=as_fn_nop
# as_fn_error STATUS ERROR [LINENO LOG_FD]
# ----------------------------------------
@@ -413,9 +433,9 @@ as_fn_error ()
as_status=$1; test $as_status -eq 0 && as_status=1
if test "$4"; then
as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
fi
- $as_echo "$as_me: error: $2" >&2
+ printf "%s\n" "$as_me: error: $2" >&2
as_fn_exit $as_status
} # as_fn_error
@@ -442,7 +462,7 @@ as_me=`$as_basename -- "$0" ||
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
X"$0" : 'X\(//\)$' \| \
X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
+printf "%s\n" X/"$0" |
sed '/^.*\/\([^/][^/]*\)\/*$/{
s//\1/
q
@@ -486,7 +506,7 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
s/-\n.*//
' >$as_me.lineno &&
chmod +x "$as_me.lineno" ||
- { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+ { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
# If we had to re-execute with $CONFIG_SHELL, we're ensured to have
# already done that, so ensure we don't try to do so again and fall
@@ -500,6 +520,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
exit
}
+
+# Determine whether it's possible to make 'echo' print without a newline.
+# These variables are no longer used directly by Autoconf, but are AC_SUBSTed
+# for compatibility with existing Makefiles.
ECHO_C= ECHO_N= ECHO_T=
case `echo -n x` in #(((((
-n*)
@@ -513,6 +537,13 @@ case `echo -n x` in #(((((
ECHO_N='-n';;
esac
+# For backward compatibility with old third-party macros, we provide
+# the shell variables $as_echo and $as_echo_n. New code should use
+# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively.
+as_echo='printf %s\n'
+as_echo_n='printf %s'
+
+
rm -f conf$$ conf$$.exe conf$$.file
if test -d conf$$.dir; then
rm -f conf$$.dir/conf$$.file
@@ -588,40 +619,36 @@ PACKAGE_URL=''
ac_unique_file="Include/object.h"
# Factoring default headers for most tests.
ac_includes_default="\
-#include
-#ifdef HAVE_SYS_TYPES_H
-# include
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include
+#include
+#ifdef HAVE_STDIO_H
+# include
#endif
-#ifdef STDC_HEADERS
+#ifdef HAVE_STDLIB_H
# include
-# include
-#else
-# ifdef HAVE_STDLIB_H
-# include
-# endif
#endif
#ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-# include
-# endif
# include
#endif
-#ifdef HAVE_STRINGS_H
-# include
-#endif
#ifdef HAVE_INTTYPES_H
# include
#endif
#ifdef HAVE_STDINT_H
# include
#endif
+#ifdef HAVE_STRINGS_H
+# include
+#endif
+#ifdef HAVE_SYS_TYPES_H
+# include
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include
+#endif
#ifdef HAVE_UNISTD_H
# include
#endif"
+ac_header_c_list=
ac_subst_vars='LTLIBOBJS
MODULE_BLOCK
MODULE_XXLIMITED_35_FALSE
@@ -1208,8 +1235,6 @@ do
*) ac_optarg=yes ;;
esac
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
case $ac_dashdash$ac_option in
--)
ac_dashdash=yes ;;
@@ -1250,9 +1275,9 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid feature name: $ac_useropt"
+ as_fn_error $? "invalid feature name: \`$ac_useropt'"
ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"enable_$ac_useropt"
@@ -1276,9 +1301,9 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid feature name: $ac_useropt"
+ as_fn_error $? "invalid feature name: \`$ac_useropt'"
ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"enable_$ac_useropt"
@@ -1489,9 +1514,9 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid package name: $ac_useropt"
+ as_fn_error $? "invalid package name: \`$ac_useropt'"
ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"with_$ac_useropt"
@@ -1505,9 +1530,9 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid package name: $ac_useropt"
+ as_fn_error $? "invalid package name: \`$ac_useropt'"
ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"with_$ac_useropt"
@@ -1551,9 +1576,9 @@ Try \`$0 --help' for more information"
*)
# FIXME: should be removed in autoconf 3.0.
- $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2
expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2
: "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
;;
@@ -1569,7 +1594,7 @@ if test -n "$ac_unrecognized_opts"; then
case $enable_option_checking in
no) ;;
fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
- *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
esac
fi
@@ -1633,7 +1658,7 @@ $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$as_myself" : 'X\(//\)[^/]' \| \
X"$as_myself" : 'X\(//\)$' \| \
X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
+printf "%s\n" X"$as_myself" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -1847,8 +1872,8 @@ Optional Packages:
select hash algorithm for use in Python/pyhash.c
(default is SipHash13)
--with-tzpath=
- Select the default time zone search path for zoneinfo.TZPATH
-
+ Select the default time zone search path for
+ zoneinfo.TZPATH
--with-libs='lib1 ...' link against additional libs (default is no)
--with-system-expat build pyexpat module using an installed expat
library, see Doc/library/pyexpat.rst (default is no)
@@ -1994,9 +2019,9 @@ if test "$ac_init_help" = "recursive"; then
case "$ac_dir" in
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
*)
- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'`
# A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
case $ac_top_builddir_sub in
"") ac_top_builddir_sub=. ac_top_build_prefix= ;;
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -2024,7 +2049,8 @@ esac
ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
cd "$ac_dir" || { ac_status=$?; continue; }
- # Check for guested configure.
+ # Check for configure.gnu first; this name is used for a wrapper for
+ # Metaconfig's "Configure" on case-insensitive file systems.
if test -f "$ac_srcdir/configure.gnu"; then
echo &&
$SHELL "$ac_srcdir/configure.gnu" --help=recursive
@@ -2032,7 +2058,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
echo &&
$SHELL "$ac_srcdir/configure" --help=recursive
else
- $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2
fi || ac_status=$?
cd "$ac_pwd" || { ac_status=$?; break; }
done
@@ -2042,9 +2068,9 @@ test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
python configure 3.12
-generated by GNU Autoconf 2.69
+generated by GNU Autoconf 2.71
-Copyright (C) 2012 Free Software Foundation, Inc.
+Copyright (C) 2021 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
@@ -2061,14 +2087,14 @@ fi
ac_fn_c_try_compile ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- rm -f conftest.$ac_objext
+ rm -f conftest.$ac_objext conftest.beam
if { { ac_try="$ac_compile"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_compile") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
@@ -2076,14 +2102,15 @@ $as_echo "$ac_try_echo"; } >&5
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
- } && test -s conftest.$ac_objext; then :
+ } && test -s conftest.$ac_objext
+then :
ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
@@ -2105,7 +2132,7 @@ case "(($ac_try" in
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
@@ -2113,14 +2140,15 @@ $as_echo "$ac_try_echo"; } >&5
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } > conftest.i && {
test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
test ! -s conftest.err
- }; then :
+ }
+then :
ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
@@ -2130,139 +2158,6 @@ fi
} # ac_fn_c_try_cpp
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
-ac_fn_c_check_header_mongrel ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if eval \${$3+:} false; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
- # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_header_compiler=yes
-else
- ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <$2>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
- ac_header_preproc=yes
-else
- ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
- yes:no: )
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
- ;;
- no:yes:* )
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( $as_echo "## -------------------------------------------------------- ##
-## Report this to https://github.com/python/cpython/issues/ ##
-## -------------------------------------------------------- ##"
- ) | sed "s/^/$as_me: WARNING: /" >&2
- ;;
-esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_mongrel
-
-# ac_fn_c_try_run LINENO
-# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
-ac_fn_c_try_run ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if { { ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
- { { case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then :
- ac_retval=0
-else
- $as_echo "$as_me: program exited with status $ac_status" >&5
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_retval=$ac_status
-fi
- rm -rf conftest.dSYM conftest_ipa8_conftest.oo
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_run
-
# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
# -------------------------------------------------------
# Tests whether HEADER exists and can be compiled using the include files in
@@ -2270,26 +2165,28 @@ fi
ac_fn_c_check_header_compile ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+printf %s "checking for $2... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
#include <$2>
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
eval "$3=yes"
-else
+else $as_nop
eval "$3=no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_header_compile
@@ -2300,14 +2197,14 @@ $as_echo "$ac_res" >&6; }
ac_fn_c_try_link ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- rm -f conftest.$ac_objext conftest$ac_exeext
+ rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext
if { { ac_try="$ac_link"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_link") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
@@ -2315,17 +2212,18 @@ $as_echo "$ac_try_echo"; } >&5
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest$ac_exeext && {
test "$cross_compiling" = yes ||
test -x conftest$ac_exeext
- }; then :
+ }
+then :
ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
@@ -2340,6 +2238,49 @@ fi
} # ac_fn_c_try_link
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that
+# executables *can* be run.
+ac_fn_c_try_run ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+printf "%s\n" "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+printf "%s\n" "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }
+then :
+ ac_retval=0
+else $as_nop
+ printf "%s\n" "$as_me: program exited with status $ac_status" >&5
+ printf "%s\n" "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=$ac_status
+fi
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
# -------------------------------------------
# Tests whether TYPE exists after having included INCLUDES, setting cache
@@ -2347,17 +2288,18 @@ fi
ac_fn_c_check_type ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+printf %s "checking for $2... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
eval "$3=no"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
if (sizeof ($2))
return 0;
@@ -2365,12 +2307,13 @@ if (sizeof ($2))
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
if (sizeof (($2)))
return 0;
@@ -2378,18 +2321,19 @@ if (sizeof (($2)))
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
-else
+else $as_nop
eval "$3=yes"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_type
@@ -2408,7 +2352,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(($2) >= 0)];
test_array [0] = 0;
@@ -2418,14 +2362,15 @@ return test_array [0];
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_lo=0 ac_mid=0
while :; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(($2) <= $ac_mid)];
test_array [0] = 0;
@@ -2435,9 +2380,10 @@ return test_array [0];
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_hi=$ac_mid; break
-else
+else $as_nop
as_fn_arith $ac_mid + 1 && ac_lo=$as_val
if test $ac_lo -le $ac_mid; then
ac_lo= ac_hi=
@@ -2445,14 +2391,14 @@ else
fi
as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
done
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(($2) < 0)];
test_array [0] = 0;
@@ -2462,14 +2408,15 @@ return test_array [0];
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_hi=-1 ac_mid=-1
while :; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(($2) >= $ac_mid)];
test_array [0] = 0;
@@ -2479,9 +2426,10 @@ return test_array [0];
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_lo=$ac_mid; break
-else
+else $as_nop
as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
if test $ac_mid -le $ac_hi; then
ac_lo= ac_hi=
@@ -2489,14 +2437,14 @@ else
fi
as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
done
-else
+else $as_nop
ac_lo= ac_hi=
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
# Binary search between lo and hi bounds.
while test "x$ac_lo" != "x$ac_hi"; do
as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
@@ -2504,7 +2452,7 @@ while test "x$ac_lo" != "x$ac_hi"; do
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(($2) <= $ac_mid)];
test_array [0] = 0;
@@ -2514,12 +2462,13 @@ return test_array [0];
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_hi=$ac_mid
-else
+else $as_nop
as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
done
case $ac_lo in #((
?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
@@ -2529,12 +2478,12 @@ esac
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
-static long int longval () { return $2; }
-static unsigned long int ulongval () { return $2; }
+static long int longval (void) { return $2; }
+static unsigned long int ulongval (void) { return $2; }
#include
#include
int
-main ()
+main (void)
{
FILE *f = fopen ("conftest.val", "w");
@@ -2562,9 +2511,10 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
echo >>conftest.val; read $3 &5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+printf %s "checking for $2... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Define $2 to an innocuous variant, in case declares $2.
@@ -2595,16 +2546,9 @@ else
#define $2 innocuous_$2
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $2 (); below.
- Prefer to if __STDC__ is defined, since
- exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include
-#else
-# include
-#endif
+ which can conflict with char $2 (); below. */
+#include
#undef $2
/* Override any GCC internal prototype to avoid an error.
@@ -2622,47 +2566,51 @@ choke me
#endif
int
-main ()
+main (void)
{
return $2 ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
eval "$3=yes"
-else
+else $as_nop
eval "$3=no"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_func
-# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
-# ---------------------------------------------
+# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR
+# ------------------------------------------------------------------
# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
-# accordingly.
-ac_fn_c_check_decl ()
+# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR.
+ac_fn_check_decl ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
as_decl_name=`echo $2|sed 's/ *(.*//'`
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
+printf %s "checking whether $as_decl_name is declared... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
-$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ eval ac_save_FLAGS=\$$6
+ as_fn_append $6 " $5"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
#ifndef $as_decl_name
#ifdef __cplusplus
@@ -2676,19 +2624,22 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
eval "$3=yes"
-else
+else $as_nop
eval "$3=no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ eval $6=\$ac_save_FLAGS
+
fi
eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-} # ac_fn_c_check_decl
+} # ac_fn_check_decl
# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES
# ----------------------------------------------------
@@ -2697,16 +2648,17 @@ $as_echo "$ac_res" >&6; }
ac_fn_c_check_member ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
-$as_echo_n "checking for $2.$3... " >&6; }
-if eval \${$4+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
+printf %s "checking for $2.$3... " >&6; }
+if eval test \${$4+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$5
int
-main ()
+main (void)
{
static $2 ac_aggr;
if (ac_aggr.$3)
@@ -2715,14 +2667,15 @@ return 0;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
eval "$4=yes"
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$5
int
-main ()
+main (void)
{
static $2 ac_aggr;
if (sizeof ac_aggr.$3)
@@ -2731,29 +2684,50 @@ return 0;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
eval "$4=yes"
-else
+else $as_nop
eval "$4=no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
eval ac_res=\$$4
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_member
+ac_configure_args_raw=
+for ac_arg
+do
+ case $ac_arg in
+ *\'*)
+ ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ as_fn_append ac_configure_args_raw " '$ac_arg'"
+done
+
+case $ac_configure_args_raw in
+ *$as_nl*)
+ ac_safe_unquote= ;;
+ *)
+ ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab.
+ ac_unsafe_a="$ac_unsafe_z#~"
+ ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g"
+ ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;;
+esac
+
cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by python $as_me 3.12, which was
-generated by GNU Autoconf 2.69. Invocation command line was
+generated by GNU Autoconf 2.71. Invocation command line was
- $ $0 $@
+ $ $0$ac_configure_args_raw
_ACEOF
exec 5>>config.log
@@ -2786,8 +2760,12 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- $as_echo "PATH: $as_dir"
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ printf "%s\n" "PATH: $as_dir"
done
IFS=$as_save_IFS
@@ -2822,7 +2800,7 @@ do
| -silent | --silent | --silen | --sile | --sil)
continue ;;
*\'*)
- ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
esac
case $ac_pass in
1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
@@ -2857,11 +2835,13 @@ done
# WARNING: Use '\'' to represent an apostrophe within the trap.
# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
trap 'exit_status=$?
+ # Sanitize IFS.
+ IFS=" "" $as_nl"
# Save into config.log some information that might help in debugging.
{
echo
- $as_echo "## ---------------- ##
+ printf "%s\n" "## ---------------- ##
## Cache variables. ##
## ---------------- ##"
echo
@@ -2872,8 +2852,8 @@ trap 'exit_status=$?
case $ac_val in #(
*${as_nl}*)
case $ac_var in #(
- *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
esac
case $ac_var in #(
_ | IFS | as_nl) ;; #(
@@ -2897,7 +2877,7 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
)
echo
- $as_echo "## ----------------- ##
+ printf "%s\n" "## ----------------- ##
## Output variables. ##
## ----------------- ##"
echo
@@ -2905,14 +2885,14 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
do
eval ac_val=\$$ac_var
case $ac_val in
- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
esac
- $as_echo "$ac_var='\''$ac_val'\''"
+ printf "%s\n" "$ac_var='\''$ac_val'\''"
done | sort
echo
if test -n "$ac_subst_files"; then
- $as_echo "## ------------------- ##
+ printf "%s\n" "## ------------------- ##
## File substitutions. ##
## ------------------- ##"
echo
@@ -2920,15 +2900,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
do
eval ac_val=\$$ac_var
case $ac_val in
- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
esac
- $as_echo "$ac_var='\''$ac_val'\''"
+ printf "%s\n" "$ac_var='\''$ac_val'\''"
done | sort
echo
fi
if test -s confdefs.h; then
- $as_echo "## ----------- ##
+ printf "%s\n" "## ----------- ##
## confdefs.h. ##
## ----------- ##"
echo
@@ -2936,8 +2916,8 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
echo
fi
test "$ac_signal" != 0 &&
- $as_echo "$as_me: caught signal $ac_signal"
- $as_echo "$as_me: exit $exit_status"
+ printf "%s\n" "$as_me: caught signal $ac_signal"
+ printf "%s\n" "$as_me: exit $exit_status"
} >&5
rm -f core *.core core.conftest.* &&
rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
@@ -2951,63 +2931,48 @@ ac_signal=0
# confdefs.h avoids OS command line length limits that DEFS can exceed.
rm -f -r conftest* confdefs.h
-$as_echo "/* confdefs.h */" > confdefs.h
+printf "%s\n" "/* confdefs.h */" > confdefs.h
# Predefined preprocessor variables.
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
+printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
+printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
+printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
+printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
+printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
+printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h
# Let the site file select an alternate cache file if it wants to.
# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
if test -n "$CONFIG_SITE"; then
- # We do not want a PATH search for config.site.
- case $CONFIG_SITE in #((
- -*) ac_site_file1=./$CONFIG_SITE;;
- */*) ac_site_file1=$CONFIG_SITE;;
- *) ac_site_file1=./$CONFIG_SITE;;
- esac
+ ac_site_files="$CONFIG_SITE"
elif test "x$prefix" != xNONE; then
- ac_site_file1=$prefix/share/config.site
- ac_site_file2=$prefix/etc/config.site
+ ac_site_files="$prefix/share/config.site $prefix/etc/config.site"
else
- ac_site_file1=$ac_default_prefix/share/config.site
- ac_site_file2=$ac_default_prefix/etc/config.site
+ ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+
+for ac_site_file in $ac_site_files
do
- test "x$ac_site_file" = xNONE && continue
- if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+ case $ac_site_file in #(
+ */*) :
+ ;; #(
+ *) :
+ ac_site_file=./$ac_site_file ;;
+esac
+ if test -f "$ac_site_file" && test -r "$ac_site_file"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;}
sed 's/^/| /' "$ac_site_file" >&5
. "$ac_site_file" \
- || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "failed to load site script $ac_site_file
See \`config.log' for more details" "$LINENO" 5; }
fi
@@ -3017,75 +2982,493 @@ if test -r "$cache_file"; then
# Some versions of bash will fail to source /dev/null (special files
# actually), so we avoid doing that. DJGPP emulates it as a regular file.
if test /dev/null != "$cache_file" && test -f "$cache_file"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+printf "%s\n" "$as_me: loading cache $cache_file" >&6;}
case $cache_file in
[\\/]* | ?:[\\/]* ) . "$cache_file";;
*) . "./$cache_file";;
esac
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+printf "%s\n" "$as_me: creating cache $cache_file" >&6;}
>$cache_file
fi
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in $ac_precious_vars; do
- eval ac_old_set=\$ac_cv_env_${ac_var}_set
- eval ac_new_set=\$ac_env_${ac_var}_set
- eval ac_old_val=\$ac_cv_env_${ac_var}_value
- eval ac_new_val=\$ac_env_${ac_var}_value
- case $ac_old_set,$ac_new_set in
- set,)
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,set)
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,);;
- *)
- if test "x$ac_old_val" != "x$ac_new_val"; then
- # differences in whitespace do not lead to failure.
- ac_old_val_w=`echo x $ac_old_val`
- ac_new_val_w=`echo x $ac_new_val`
- if test "$ac_old_val_w" != "$ac_new_val_w"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
- ac_cache_corrupted=:
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
- eval $ac_var=\$ac_old_val
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
-$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
-$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
- fi;;
- esac
- # Pass precious variables to config.status.
- if test "$ac_new_set" = set; then
- case $ac_new_val in
- *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
- *) ac_arg=$ac_var=$ac_new_val ;;
- esac
- case " $ac_configure_args " in
- *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
- *) as_fn_append ac_configure_args " '$ac_arg'" ;;
- esac
- fi
+# Test code for whether the C compiler supports C89 (global declarations)
+ac_c_conftest_c89_globals='
+/* Does the compiler advertise C89 conformance?
+ Do not test the value of __STDC__, because some compilers set it to 0
+ while being otherwise adequately conformant. */
+#if !defined __STDC__
+# error "Compiler does not advertise C89 conformance"
+#endif
+
+#include
+#include
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */
+struct buf { int x; };
+struct buf * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not \xHH hex character constants.
+ These do not provoke an error unfortunately, instead are silently treated
+ as an "x". The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously \x00 != x always comes out true, for an
+ array size at least. It is necessary to write \x00 == 0 to get something
+ that is true only with -std. */
+int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) '\''x'\''
+int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int),
+ int, int);'
+
+# Test code for whether the C compiler supports C89 (body of main).
+ac_c_conftest_c89_main='
+ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]);
+'
+
+# Test code for whether the C compiler supports C99 (global declarations)
+ac_c_conftest_c99_globals='
+// Does the compiler advertise C99 conformance?
+#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L
+# error "Compiler does not advertise C99 conformance"
+#endif
+
+#include
+extern int puts (const char *);
+extern int printf (const char *, ...);
+extern int dprintf (int, const char *, ...);
+extern void *malloc (size_t);
+
+// Check varargs macros. These examples are taken from C99 6.10.3.5.
+// dprintf is used instead of fprintf to avoid needing to declare
+// FILE and stderr.
+#define debug(...) dprintf (2, __VA_ARGS__)
+#define showlist(...) puts (#__VA_ARGS__)
+#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
+static void
+test_varargs_macros (void)
+{
+ int x = 1234;
+ int y = 5678;
+ debug ("Flag");
+ debug ("X = %d\n", x);
+ showlist (The first, second, and third items.);
+ report (x>y, "x is %d but y is %d", x, y);
+}
+
+// Check long long types.
+#define BIG64 18446744073709551615ull
+#define BIG32 4294967295ul
+#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
+#if !BIG_OK
+ #error "your preprocessor is broken"
+#endif
+#if BIG_OK
+#else
+ #error "your preprocessor is broken"
+#endif
+static long long int bignum = -9223372036854775807LL;
+static unsigned long long int ubignum = BIG64;
+
+struct incomplete_array
+{
+ int datasize;
+ double data[];
+};
+
+struct named_init {
+ int number;
+ const wchar_t *name;
+ double average;
+};
+
+typedef const char *ccp;
+
+static inline int
+test_restrict (ccp restrict text)
+{
+ // See if C++-style comments work.
+ // Iterate through items via the restricted pointer.
+ // Also check for declarations in for loops.
+ for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i)
+ continue;
+ return 0;
+}
+
+// Check varargs and va_copy.
+static bool
+test_varargs (const char *format, ...)
+{
+ va_list args;
+ va_start (args, format);
+ va_list args_copy;
+ va_copy (args_copy, args);
+
+ const char *str = "";
+ int number = 0;
+ float fnumber = 0;
+
+ while (*format)
+ {
+ switch (*format++)
+ {
+ case '\''s'\'': // string
+ str = va_arg (args_copy, const char *);
+ break;
+ case '\''d'\'': // int
+ number = va_arg (args_copy, int);
+ break;
+ case '\''f'\'': // float
+ fnumber = va_arg (args_copy, double);
+ break;
+ default:
+ break;
+ }
+ }
+ va_end (args_copy);
+ va_end (args);
+
+ return *str && number && fnumber;
+}
+'
+
+# Test code for whether the C compiler supports C99 (body of main).
+ac_c_conftest_c99_main='
+ // Check bool.
+ _Bool success = false;
+ success |= (argc != 0);
+
+ // Check restrict.
+ if (test_restrict ("String literal") == 0)
+ success = true;
+ char *restrict newvar = "Another string";
+
+ // Check varargs.
+ success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234);
+ test_varargs_macros ();
+
+ // Check flexible array members.
+ struct incomplete_array *ia =
+ malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
+ ia->datasize = 10;
+ for (int i = 0; i < ia->datasize; ++i)
+ ia->data[i] = i * 1.234;
+
+ // Check named initializers.
+ struct named_init ni = {
+ .number = 34,
+ .name = L"Test wide string",
+ .average = 543.34343,
+ };
+
+ ni.number = 58;
+
+ int dynamic_array[ni.number];
+ dynamic_array[0] = argv[0][0];
+ dynamic_array[ni.number - 1] = 543;
+
+ // work around unused variable warnings
+ ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\''
+ || dynamic_array[ni.number - 1] != 543);
+'
+
+# Test code for whether the C compiler supports C11 (global declarations)
+ac_c_conftest_c11_globals='
+// Does the compiler advertise C11 conformance?
+#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L
+# error "Compiler does not advertise C11 conformance"
+#endif
+
+// Check _Alignas.
+char _Alignas (double) aligned_as_double;
+char _Alignas (0) no_special_alignment;
+extern char aligned_as_int;
+char _Alignas (0) _Alignas (int) aligned_as_int;
+
+// Check _Alignof.
+enum
+{
+ int_alignment = _Alignof (int),
+ int_array_alignment = _Alignof (int[100]),
+ char_alignment = _Alignof (char)
+};
+_Static_assert (0 < -_Alignof (int), "_Alignof is signed");
+
+// Check _Noreturn.
+int _Noreturn does_not_return (void) { for (;;) continue; }
+
+// Check _Static_assert.
+struct test_static_assert
+{
+ int x;
+ _Static_assert (sizeof (int) <= sizeof (long int),
+ "_Static_assert does not work in struct");
+ long int y;
+};
+
+// Check UTF-8 literals.
+#define u8 syntax error!
+char const utf8_literal[] = u8"happens to be ASCII" "another string";
+
+// Check duplicate typedefs.
+typedef long *long_ptr;
+typedef long int *long_ptr;
+typedef long_ptr long_ptr;
+
+// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1.
+struct anonymous
+{
+ union {
+ struct { int i; int j; };
+ struct { int k; long int l; } w;
+ };
+ int m;
+} v1;
+'
+
+# Test code for whether the C compiler supports C11 (body of main).
+ac_c_conftest_c11_main='
+ _Static_assert ((offsetof (struct anonymous, i)
+ == offsetof (struct anonymous, w.k)),
+ "Anonymous union alignment botch");
+ v1.i = 2;
+ v1.w.k = 5;
+ ok |= v1.i != 5;
+'
+
+# Test code for whether the C compiler supports C11 (complete).
+ac_c_conftest_c11_program="${ac_c_conftest_c89_globals}
+${ac_c_conftest_c99_globals}
+${ac_c_conftest_c11_globals}
+
+int
+main (int argc, char **argv)
+{
+ int ok = 0;
+ ${ac_c_conftest_c89_main}
+ ${ac_c_conftest_c99_main}
+ ${ac_c_conftest_c11_main}
+ return ok;
+}
+"
+
+# Test code for whether the C compiler supports C99 (complete).
+ac_c_conftest_c99_program="${ac_c_conftest_c89_globals}
+${ac_c_conftest_c99_globals}
+
+int
+main (int argc, char **argv)
+{
+ int ok = 0;
+ ${ac_c_conftest_c89_main}
+ ${ac_c_conftest_c99_main}
+ return ok;
+}
+"
+
+# Test code for whether the C compiler supports C89 (complete).
+ac_c_conftest_c89_program="${ac_c_conftest_c89_globals}
+
+int
+main (int argc, char **argv)
+{
+ int ok = 0;
+ ${ac_c_conftest_c89_main}
+ return ok;
+}
+"
+
+as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H"
+as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H"
+as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H"
+as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H"
+as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H"
+as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H"
+as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H"
+as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H"
+as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H"
+as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H"
+as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H"
+
+# Auxiliary files required by this configure script.
+ac_aux_files="install-sh config.guess config.sub"
+
+# Locations in which to look for auxiliary files.
+ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.."
+
+# Search for a directory containing all of the required auxiliary files,
+# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates.
+# If we don't find one directory that contains all the files we need,
+# we report the set of missing files from the *first* directory in
+# $ac_aux_dir_candidates and give up.
+ac_missing_aux_files=""
+ac_first_candidate=:
+printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in $ac_aux_dir_candidates
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ as_found=:
+
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5
+ ac_aux_dir_found=yes
+ ac_install_sh=
+ for ac_aux in $ac_aux_files
+ do
+ # As a special case, if "install-sh" is required, that requirement
+ # can be satisfied by any of "install-sh", "install.sh", or "shtool",
+ # and $ac_install_sh is set appropriately for whichever one is found.
+ if test x"$ac_aux" = x"install-sh"
+ then
+ if test -f "${as_dir}install-sh"; then
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5
+ ac_install_sh="${as_dir}install-sh -c"
+ elif test -f "${as_dir}install.sh"; then
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5
+ ac_install_sh="${as_dir}install.sh -c"
+ elif test -f "${as_dir}shtool"; then
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5
+ ac_install_sh="${as_dir}shtool install -c"
+ else
+ ac_aux_dir_found=no
+ if $ac_first_candidate; then
+ ac_missing_aux_files="${ac_missing_aux_files} install-sh"
+ else
+ break
+ fi
+ fi
+ else
+ if test -f "${as_dir}${ac_aux}"; then
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5
+ else
+ ac_aux_dir_found=no
+ if $ac_first_candidate; then
+ ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}"
+ else
+ break
+ fi
+ fi
+ fi
+ done
+ if test "$ac_aux_dir_found" = yes; then
+ ac_aux_dir="$as_dir"
+ break
+ fi
+ ac_first_candidate=false
+
+ as_found=false
+done
+IFS=$as_save_IFS
+if $as_found
+then :
+
+else $as_nop
+ as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5
+fi
+
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+if test -f "${ac_aux_dir}config.guess"; then
+ ac_config_guess="$SHELL ${ac_aux_dir}config.guess"
+fi
+if test -f "${ac_aux_dir}config.sub"; then
+ ac_config_sub="$SHELL ${ac_aux_dir}config.sub"
+fi
+if test -f "$ac_aux_dir/configure"; then
+ ac_configure="$SHELL ${ac_aux_dir}configure"
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val=\$ac_cv_env_${ac_var}_value
+ eval ac_new_val=\$ac_env_${ac_var}_value
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ # differences in whitespace do not lead to failure.
+ ac_old_val_w=`echo x $ac_old_val`
+ ac_new_val_w=`echo x $ac_new_val`
+ if test "$ac_old_val_w" != "$ac_new_val_w"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ ac_cache_corrupted=:
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ eval $ac_var=\$ac_old_val
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
+printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
+printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;}
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+ *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+ esac
+ fi
done
if $ac_cache_corrupted; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
- as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;}
+ as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file'
+ and start over" "$LINENO" 5
fi
## -------------------- ##
## Main body of script. ##
@@ -3130,11 +3513,12 @@ if test -e $srcdir/.git
then
# Extract the first word of "git", so it can be a program name with args.
set dummy git; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_HAS_GIT+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_HAS_GIT+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$HAS_GIT"; then
ac_cv_prog_HAS_GIT="$HAS_GIT" # Let the user override the test.
else
@@ -3142,11 +3526,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_HAS_GIT="found"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -3158,11 +3546,11 @@ fi
fi
HAS_GIT=$ac_cv_prog_HAS_GIT
if test -n "$HAS_GIT"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAS_GIT" >&5
-$as_echo "$HAS_GIT" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $HAS_GIT" >&5
+printf "%s\n" "$HAS_GIT" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -3184,55 +3572,30 @@ fi
ac_config_headers="$ac_config_headers pyconfig.h"
-ac_aux_dir=
-for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
- if test -f "$ac_dir/install-sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install-sh -c"
- break
- elif test -f "$ac_dir/install.sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
- elif test -f "$ac_dir/shtool"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/shtool install -c"
- break
- fi
-done
-if test -z "$ac_aux_dir"; then
- as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
-fi
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
- as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+ # Make sure we can run config.sub.
+$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 ||
+ as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if ${ac_cv_build+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+printf %s "checking build system type... " >&6; }
+if test ${ac_cv_build+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_build_alias=$build_alias
test "x$ac_build_alias" = x &&
- ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+ ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"`
test "x$ac_build_alias" = x &&
as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` ||
+ as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+printf "%s\n" "$ac_cv_build" >&6; }
case $ac_cv_build in
*-*-*) ;;
*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
@@ -3251,21 +3614,22 @@ IFS=$ac_save_IFS
case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if ${ac_cv_host+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+printf %s "checking host system type... " >&6; }
+if test ${ac_cv_host+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test "x$host_alias" = x; then
ac_cv_host=$ac_cv_build
else
- ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+ ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` ||
+ as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+printf "%s\n" "$ac_cv_host" >&6; }
case $ac_cv_host in
*-*-*) ;;
*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
@@ -3287,7 +3651,8 @@ case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-if test "x$cross_compiling" = xmaybe; then :
+if test "x$cross_compiling" = xmaybe
+then :
as_fn_error $? "Cross compiling required --host=HOST-TUPLE and --build=ARCH" "$LINENO" 5
fi
@@ -3297,15 +3662,18 @@ rm -f pybuilddir.txt
# Check whether --with-build-python was given.
-if test "${with_build_python+set}" = set; then :
+if test ${with_build_python+y}
+then :
withval=$with_build_python;
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-build-python" >&5
-$as_echo_n "checking for --with-build-python... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-build-python" >&5
+printf %s "checking for --with-build-python... " >&6; }
- if test "x$with_build_python" = xyes; then :
+ if test "x$with_build_python" = xyes
+then :
with_build_python=python$PACKAGE_VERSION
fi
- if test "x$with_build_python" = xno; then :
+ if test "x$with_build_python" = xno
+then :
as_fn_error $? "invalid --with-build-python option: expected path or \"yes\", not \"no\"" "$LINENO" 5
fi
@@ -3319,12 +3687,13 @@ fi
ac_cv_prog_PYTHON_FOR_REGEN=$with_build_python
PYTHON_FOR_FREEZE="$with_build_python"
PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH) '$with_build_python
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_build_python" >&5
-$as_echo "$with_build_python" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_build_python" >&5
+printf "%s\n" "$with_build_python" >&6; }
-else
+else $as_nop
- if test "x$cross_compiling" = xyes; then :
+ if test "x$cross_compiling" = xyes
+then :
as_fn_error $? "Cross compiling requires --with-build-python" "$LINENO" 5
fi
@@ -3336,13 +3705,14 @@ fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python interpreter freezing" >&5
-$as_echo_n "checking for Python interpreter freezing... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_FOR_FREEZE" >&5
-$as_echo "$PYTHON_FOR_FREEZE" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python interpreter freezing" >&5
+printf %s "checking for Python interpreter freezing... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_FOR_FREEZE" >&5
+printf "%s\n" "$PYTHON_FOR_FREEZE" >&6; }
-if test "x$cross_compiling" = xyes; then :
+if test "x$cross_compiling" = xyes
+then :
FREEZE_MODULE_BOOTSTRAP='$(PYTHON_FOR_FREEZE) $(srcdir)/Programs/_freeze_module.py'
FREEZE_MODULE_BOOTSTRAP_DEPS='$(srcdir)/Programs/_freeze_module.py'
@@ -3350,7 +3720,7 @@ if test "x$cross_compiling" = xyes; then :
FREEZE_MODULE_DEPS='$(FREEZE_MODULE_BOOTSTRAP_DEPS)'
PYTHON_FOR_BUILD_DEPS=''
-else
+else $as_nop
FREEZE_MODULE_BOOTSTRAP='./Programs/_freeze_module'
FREEZE_MODULE_BOOTSTRAP_DEPS="Programs/_freeze_module"
@@ -3370,11 +3740,12 @@ for ac_prog in python$PACKAGE_VERSION python3.12 python3.11 python3.10 python3 p
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_PYTHON_FOR_REGEN+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_PYTHON_FOR_REGEN+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$PYTHON_FOR_REGEN"; then
ac_cv_prog_PYTHON_FOR_REGEN="$PYTHON_FOR_REGEN" # Let the user override the test.
else
@@ -3382,11 +3753,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_PYTHON_FOR_REGEN="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -3397,11 +3772,11 @@ fi
fi
PYTHON_FOR_REGEN=$ac_cv_prog_PYTHON_FOR_REGEN
if test -n "$PYTHON_FOR_REGEN"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_FOR_REGEN" >&5
-$as_echo "$PYTHON_FOR_REGEN" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_FOR_REGEN" >&5
+printf "%s\n" "$PYTHON_FOR_REGEN" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -3411,14 +3786,14 @@ test -n "$PYTHON_FOR_REGEN" || PYTHON_FOR_REGEN="python3"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking Python for regen version" >&5
-$as_echo_n "checking Python for regen version... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Python for regen version" >&5
+printf %s "checking Python for regen version... " >&6; }
if command -v "$PYTHON_FOR_REGEN" >/dev/null 2>&1; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $($PYTHON_FOR_REGEN -V 2>/dev/null)" >&5
-$as_echo "$($PYTHON_FOR_REGEN -V 2>/dev/null)" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $($PYTHON_FOR_REGEN -V 2>/dev/null)" >&5
+printf "%s\n" "$($PYTHON_FOR_REGEN -V 2>/dev/null)" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: missing" >&5
-$as_echo "missing" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: missing" >&5
+printf "%s\n" "missing" >&6; }
fi
@@ -3446,21 +3821,21 @@ SOVERSION=1.0
# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
# them.
-$as_echo "#define _NETBSD_SOURCE 1" >>confdefs.h
+printf "%s\n" "#define _NETBSD_SOURCE 1" >>confdefs.h
# The later definition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
# them.
-$as_echo "#define __BSD_VISIBLE 1" >>confdefs.h
+printf "%s\n" "#define __BSD_VISIBLE 1" >>confdefs.h
# The later definition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable
# them.
-$as_echo "#define _DARWIN_C_SOURCE 1" >>confdefs.h
+printf "%s\n" "#define _DARWIN_C_SOURCE 1" >>confdefs.h
@@ -3472,9 +3847,10 @@ CONFIG_ARGS="$ac_configure_args"
# Check whether --with-pkg-config was given.
-if test "${with_pkg_config+set}" = set; then :
+if test ${with_pkg_config+y}
+then :
withval=$with_pkg_config;
-else
+else $as_nop
with_pkg_config=check
fi
@@ -3498,11 +3874,12 @@ if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PKG_CONFIG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PKG_CONFIG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $PKG_CONFIG in
[\\/]* | ?:[\\/]*)
ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
@@ -3512,11 +3889,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -3528,11 +3909,11 @@ esac
fi
PKG_CONFIG=$ac_cv_path_PKG_CONFIG
if test -n "$PKG_CONFIG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
-$as_echo "$PKG_CONFIG" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+printf "%s\n" "$PKG_CONFIG" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -3541,11 +3922,12 @@ if test -z "$ac_cv_path_PKG_CONFIG"; then
ac_pt_PKG_CONFIG=$PKG_CONFIG
# Extract the first word of "pkg-config", so it can be a program name with args.
set dummy pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_ac_pt_PKG_CONFIG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $ac_pt_PKG_CONFIG in
[\\/]* | ?:[\\/]*)
ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
@@ -3555,11 +3937,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -3571,11 +3957,11 @@ esac
fi
ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
if test -n "$ac_pt_PKG_CONFIG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
-$as_echo "$ac_pt_PKG_CONFIG" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
+printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_pt_PKG_CONFIG" = x; then
@@ -3583,8 +3969,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
PKG_CONFIG=$ac_pt_PKG_CONFIG
@@ -3596,14 +3982,14 @@ fi
fi
if test -n "$PKG_CONFIG"; then
_pkg_min_version=0.9.0
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
-$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
+printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
PKG_CONFIG=""
fi
fi
@@ -3622,10 +4008,11 @@ if test "$with_pkg_config" = yes -a -z "$PKG_CONFIG"; then
as_fn_error $? "pkg-config is required" "$LINENO" 5]
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-universalsdk" >&5
-$as_echo_n "checking for --enable-universalsdk... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-universalsdk" >&5
+printf %s "checking for --enable-universalsdk... " >&6; }
# Check whether --enable-universalsdk was given.
-if test "${enable_universalsdk+set}" = set; then :
+if test ${enable_universalsdk+y}
+then :
enableval=$enable_universalsdk;
case $enableval in
yes)
@@ -3657,7 +4044,7 @@ if test "${enable_universalsdk+set}" = set; then :
esac
-else
+else $as_nop
UNIVERSALSDK=
enable_universalsdk=
@@ -3666,11 +4053,11 @@ fi
if test -n "${UNIVERSALSDK}"
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${UNIVERSALSDK}" >&5
-$as_echo "${UNIVERSALSDK}" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${UNIVERSALSDK}" >&5
+printf "%s\n" "${UNIVERSALSDK}" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -3693,11 +4080,12 @@ fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-universal-archs" >&5
-$as_echo_n "checking for --with-universal-archs... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-universal-archs" >&5
+printf %s "checking for --with-universal-archs... " >&6; }
# Check whether --with-universal-archs was given.
-if test "${with_universal_archs+set}" = set; then :
+if test ${with_universal_archs+y}
+then :
withval=$with_universal_archs;
UNIVERSAL_ARCHS="$withval"
@@ -3705,22 +4093,23 @@ fi
if test -n "${UNIVERSALSDK}"
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${UNIVERSAL_ARCHS}" >&5
-$as_echo "${UNIVERSAL_ARCHS}" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${UNIVERSAL_ARCHS}" >&5
+printf "%s\n" "${UNIVERSAL_ARCHS}" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# Check whether --with-framework-name was given.
-if test "${with_framework_name+set}" = set; then :
+if test ${with_framework_name+y}
+then :
withval=$with_framework_name;
PYTHONFRAMEWORK=${withval}
PYTHONFRAMEWORKDIR=${withval}.framework
PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr 'A-Z' 'a-z'`
-else
+else $as_nop
PYTHONFRAMEWORK=Python
PYTHONFRAMEWORKDIR=Python.framework
@@ -3729,7 +4118,8 @@ else
fi
# Check whether --enable-framework was given.
-if test "${enable_framework+set}" = set; then :
+if test ${enable_framework+y}
+then :
enableval=$enable_framework;
case $enableval in
yes)
@@ -3818,7 +4208,7 @@ if test "${enable_framework+set}" = set; then :
esac
-else
+else $as_nop
PYTHONFRAMEWORK=
PYTHONFRAMEWORKDIR=no-framework
@@ -3853,15 +4243,13 @@ fi
-cat >>confdefs.h <<_ACEOF
-#define _PYTHONFRAMEWORK "${PYTHONFRAMEWORK}"
-_ACEOF
+printf "%s\n" "#define _PYTHONFRAMEWORK \"${PYTHONFRAMEWORK}\"" >>confdefs.h
# Set name for machine-dependent library files
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking MACHDEP" >&5
-$as_echo_n "checking MACHDEP... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking MACHDEP" >&5
+printf %s "checking MACHDEP... " >&6; }
if test -z "$MACHDEP"
then
# avoid using uname for cross builds
@@ -3917,8 +4305,8 @@ then
'') MACHDEP="unknown";;
esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: \"$MACHDEP\"" >&5
-$as_echo "\"$MACHDEP\"" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: \"$MACHDEP\"" >&5
+printf "%s\n" "\"$MACHDEP\"" >&6; }
if test "$cross_compiling" = yes; then
@@ -3970,7 +4358,7 @@ case $ac_sys_system/$ac_sys_release in
# also defined. This can be overridden by defining _BSD_SOURCE
# As this has a different meaning on Linux, only define it on OpenBSD
-$as_echo "#define _BSD_SOURCE 1" >>confdefs.h
+printf "%s\n" "#define _BSD_SOURCE 1" >>confdefs.h
;;
OpenBSD/*)
@@ -3978,7 +4366,7 @@ $as_echo "#define _BSD_SOURCE 1" >>confdefs.h
# also defined. This can be overridden by defining _BSD_SOURCE
# As this has a different meaning on Linux, only define it on OpenBSD
-$as_echo "#define _BSD_SOURCE 1" >>confdefs.h
+printf "%s\n" "#define _BSD_SOURCE 1" >>confdefs.h
;;
# Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
@@ -4036,7 +4424,7 @@ if test $define_xopen_source = yes
then
# X/Open 7, incorporating POSIX.1-2008
-$as_echo "#define _XOPEN_SOURCE 700" >>confdefs.h
+printf "%s\n" "#define _XOPEN_SOURCE 700" >>confdefs.h
# On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
@@ -4044,11 +4432,11 @@ $as_echo "#define _XOPEN_SOURCE 700" >>confdefs.h
# several APIs are not declared. Since this is also needed in some
# cases for HP-UX, we define it globally.
-$as_echo "#define _XOPEN_SOURCE_EXTENDED 1" >>confdefs.h
+printf "%s\n" "#define _XOPEN_SOURCE_EXTENDED 1" >>confdefs.h
-$as_echo "#define _POSIX_C_SOURCE 200809L" >>confdefs.h
+printf "%s\n" "#define _POSIX_C_SOURCE 200809L" >>confdefs.h
fi
@@ -4063,7 +4451,7 @@ esac
if test $define_stdc_a1 = yes
then
-$as_echo "#define _INCLUDE__STDC_A1_SOURCE 1" >>confdefs.h
+printf "%s\n" "#define _INCLUDE__STDC_A1_SOURCE 1" >>confdefs.h
fi
@@ -4111,11 +4499,12 @@ if test "$ac_sys_system" = "Darwin"
then
# Extract the first word of "xcrun", so it can be a program name with args.
set dummy xcrun; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_HAS_XCRUN+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_HAS_XCRUN+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$HAS_XCRUN"; then
ac_cv_prog_HAS_XCRUN="$HAS_XCRUN" # Let the user override the test.
else
@@ -4123,11 +4512,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_HAS_XCRUN="yes"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4139,16 +4532,16 @@ fi
fi
HAS_XCRUN=$ac_cv_prog_HAS_XCRUN
if test -n "$HAS_XCRUN"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAS_XCRUN" >&5
-$as_echo "$HAS_XCRUN" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $HAS_XCRUN" >&5
+printf "%s\n" "$HAS_XCRUN" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking macOS SDKROOT" >&5
-$as_echo_n "checking macOS SDKROOT... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking macOS SDKROOT" >&5
+printf %s "checking macOS SDKROOT... " >&6; }
if test -z "$SDKROOT"; then
if test "$HAS_XCRUN" = "yes"; then
SDKROOT=$(xcrun --show-sdk-path)
@@ -4156,8 +4549,8 @@ $as_echo_n "checking macOS SDKROOT... " >&6; }
SDKROOT="/"
fi
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SDKROOT" >&5
-$as_echo "$SDKROOT" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SDKROOT" >&5
+printf "%s\n" "$SDKROOT" >&6; }
# Compiler selection on MacOSX is more complicated than
# AC_PROG_CC can handle, see Mac/README for more
@@ -4187,8 +4580,8 @@ $as_echo "$SDKROOT" >&6; }
then
if test -n "`"$found_gcc" --version | grep llvm-gcc`"
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: Detected llvm-gcc, falling back to clang" >&5
-$as_echo "$as_me: Detected llvm-gcc, falling back to clang" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Detected llvm-gcc, falling back to clang" >&5
+printf "%s\n" "$as_me: Detected llvm-gcc, falling back to clang" >&6;}
CC="$found_clang"
CXX="$found_clang++"
fi
@@ -4196,8 +4589,8 @@ $as_echo "$as_me: Detected llvm-gcc, falling back to clang" >&6;}
elif test -z "$found_gcc" -a -n "$found_clang"
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: No GCC found, use CLANG" >&5
-$as_echo "$as_me: No GCC found, use CLANG" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: No GCC found, use CLANG" >&5
+printf "%s\n" "$as_me: No GCC found, use CLANG" >&6;}
CC="$found_clang"
CXX="$found_clang++"
@@ -4206,8 +4599,8 @@ $as_echo "$as_me: No GCC found, use CLANG" >&6;}
found_clang=`/usr/bin/xcrun -find clang 2>/dev/null`
if test -n "${found_clang}"
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: Using clang from Xcode.app" >&5
-$as_echo "$as_me: Using clang from Xcode.app" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Using clang from Xcode.app" >&5
+printf "%s\n" "$as_me: Using clang from Xcode.app" >&6;}
CC="${found_clang}"
CXX="`/usr/bin/xcrun -find clang++`"
@@ -4216,6 +4609,15 @@ $as_echo "$as_me: Using clang from Xcode.app" >&6;}
fi
fi
fi
+
+
+
+
+
+
+
+
+
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -4224,11 +4626,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
@@ -4236,11 +4639,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}gcc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4251,11 +4658,11 @@ fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -4264,11 +4671,12 @@ if test -z "$ac_cv_prog_CC"; then
ac_ct_CC=$CC
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_CC"; then
ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
else
@@ -4276,11 +4684,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="gcc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4291,11 +4703,11 @@ fi
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_CC" = x; then
@@ -4303,8 +4715,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
CC=$ac_ct_CC
@@ -4317,11 +4729,12 @@ if test -z "$CC"; then
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
@@ -4329,11 +4742,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}cc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4344,11 +4761,11 @@ fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -4357,11 +4774,12 @@ fi
if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
@@ -4370,15 +4788,19 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
ac_prog_rejected=yes
continue
fi
ac_cv_prog_CC="cc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4394,18 +4816,18 @@ if test $ac_prog_rejected = yes; then
# However, it has the same basename, so the bogon will be chosen
# first if we set CC to just the basename; use the full file name.
shift
- ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@"
fi
fi
fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -4416,11 +4838,12 @@ if test -z "$CC"; then
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
@@ -4428,11 +4851,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4443,11 +4870,11 @@ fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -4460,11 +4887,12 @@ if test -z "$CC"; then
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_CC"; then
ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
else
@@ -4472,11 +4900,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4487,11 +4919,11 @@ fi
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -4503,8 +4935,8 @@ done
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
CC=$ac_ct_CC
@@ -4512,57 +4944,161 @@ esac
fi
fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
- { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_compiler $ac_option >&5") 2>conftest.err
- ac_status=$?
- if test -s conftest.err; then
- sed '10a\
-... rest of stderr output deleted ...
- 10q' conftest.err >conftest.er1
- cat conftest.er1 >&5
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args.
+set dummy ${ac_tool_prefix}clang; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}clang"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
fi
- rm -f conftest.er1 conftest.err
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }
done
+ done
+IFS=$as_save_IFS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
-int
-main ()
-{
- ;
- return 0;
-}
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "clang", so it can be a program name with args.
+set dummy clang; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="clang"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+fi
+
+
+test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion -version; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+printf "%s\n" "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
_ACEOF
ac_clean_files_save=$ac_clean_files
ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
# Try to create an executable without -o first, disregard a.out.
# It will help us diagnose broken compilers, and finding out an intuition
# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+printf %s "checking whether the C compiler works... " >&6; }
+ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
# The possible output files:
ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
@@ -4583,11 +5119,12 @@ case "(($ac_try" in
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_link_default") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+then :
# Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
# in a Makefile. We should not override ac_cv_exeext if it was cached,
@@ -4604,7 +5141,7 @@ do
# certainly right.
break;;
*.* )
- if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+ if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no;
then :; else
ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
fi
@@ -4620,44 +5157,46 @@ do
done
test "$ac_cv_exeext" = no && ac_cv_exeext=
-else
+else $as_nop
ac_file=''
fi
-if test -z "$ac_file"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
+if test -z "$ac_file"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "C compiler cannot create executables
See \`config.log' for more details" "$LINENO" 5; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+printf %s "checking for C compiler default output file name... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+printf "%s\n" "$ac_file" >&6; }
ac_exeext=$ac_cv_exeext
rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+printf %s "checking for suffix of executables... " >&6; }
if { { ac_try="$ac_link"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_link") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+then :
# If both `conftest.exe' and `conftest' are `present' (well, observable)
# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
# work properly (i.e., refer to `conftest.exe'), while it won't with
@@ -4671,15 +5210,15 @@ for ac_file in conftest.exe conftest conftest.*; do
* ) break;;
esac
done
-else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+else $as_nop
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "cannot compute suffix of executables: cannot compile and link
See \`config.log' for more details" "$LINENO" 5; }
fi
rm -f conftest conftest$ac_cv_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+printf "%s\n" "$ac_cv_exeext" >&6; }
rm -f conftest.$ac_ext
EXEEXT=$ac_cv_exeext
@@ -4688,7 +5227,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
int
-main ()
+main (void)
{
FILE *f = fopen ("conftest.out", "w");
return ferror (f) || fclose (f) != 0;
@@ -4700,8 +5239,8 @@ _ACEOF
ac_clean_files="$ac_clean_files conftest.out"
# Check that the compiler produces executables we can run. If not, either
# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+printf %s "checking whether we are cross compiling... " >&6; }
if test "$cross_compiling" != yes; then
{ { ac_try="$ac_link"
case "(($ac_try" in
@@ -4709,10 +5248,10 @@ case "(($ac_try" in
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_link") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
if { ac_try='./conftest$ac_cv_exeext'
{ { case "(($ac_try" in
@@ -4720,39 +5259,40 @@ $as_echo "$ac_try_echo"; } >&5
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_try") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }; then
cross_compiling=no
else
if test "$cross_compiling" = maybe; then
cross_compiling=yes
else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run C compiled programs.
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot run C compiled programs.
If you meant to cross compile, use \`--host'.
See \`config.log' for more details" "$LINENO" 5; }
fi
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+printf "%s\n" "$cross_compiling" >&6; }
rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_objext+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+printf %s "checking for suffix of object files... " >&6; }
+if test ${ac_cv_objext+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
@@ -4766,11 +5306,12 @@ case "(($ac_try" in
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_compile") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+then :
for ac_file in conftest.o conftest.obj conftest.*; do
test -f "$ac_file" || continue;
case $ac_file in
@@ -4779,31 +5320,32 @@ $as_echo "$ac_try_echo"; } >&5
break;;
esac
done
-else
- $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "cannot compute suffix of object files: cannot compile
See \`config.log' for more details" "$LINENO" 5; }
fi
rm -f conftest.$ac_cv_objext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+printf "%s\n" "$ac_cv_objext" >&6; }
OBJEXT=$ac_cv_objext
ac_objext=$OBJEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5
+printf %s "checking whether the compiler supports GNU C... " >&6; }
+if test ${ac_cv_c_compiler_gnu+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
#ifndef __GNUC__
choke me
@@ -4813,29 +5355,33 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_compiler_gnu=yes
-else
+else $as_nop
ac_compiler_gnu=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
ac_cv_c_compiler_gnu=$ac_compiler_gnu
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; }
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
if test $ac_compiler_gnu = yes; then
GCC=yes
else
GCC=
fi
-ac_test_CFLAGS=${CFLAGS+set}
+ac_test_CFLAGS=${CFLAGS+y}
ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+printf %s "checking whether $CC accepts -g... " >&6; }
+if test ${ac_cv_prog_cc_g+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_save_c_werror_flag=$ac_c_werror_flag
ac_c_werror_flag=yes
ac_cv_prog_cc_g=no
@@ -4844,57 +5390,60 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_prog_cc_g=yes
-else
+else $as_nop
CFLAGS=""
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
-else
+else $as_nop
ac_c_werror_flag=$ac_save_c_werror_flag
CFLAGS="-g"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_prog_cc_g=yes
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
ac_c_werror_flag=$ac_save_c_werror_flag
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+printf "%s\n" "$ac_cv_prog_cc_g" >&6; }
+if test $ac_test_CFLAGS; then
CFLAGS=$ac_save_CFLAGS
elif test $ac_cv_prog_cc_g = yes; then
if test "$GCC" = yes; then
@@ -4909,94 +5458,144 @@ else
CFLAGS=
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_prog_cc_c89=no
+ac_prog_cc_stdc=no
+if test x$ac_prog_cc_stdc = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5
+printf %s "checking for $CC option to enable C11 features... " >&6; }
+if test ${ac_cv_prog_cc_c11+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_prog_cc_c11=no
ac_save_CC=$CC
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include
-#include
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
- char **p;
- int i;
-{
- return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
- char *s;
- va_list v;
- va_start (v,p);
- s = g (p, va_arg (v,int));
- va_end (v);
- return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
- function prototypes and stuff, but not '\xHH' hex character constants.
- These don't provoke an error unfortunately, instead are silently treated
- as 'x'. The following induces an error, until -std is added to get
- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
- array size at least. It's necessary to write '\x00'==0 to get something
- that's true only with -std. */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+$ac_c_conftest_c11_program
+_ACEOF
+for ac_arg in '' -std=gnu11
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_prog_cc_c11=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+ test "x$ac_cv_prog_cc_c11" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+fi
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
- inside strings and character constants. */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+if test "x$ac_cv_prog_cc_c11" = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+ if test "x$ac_cv_prog_cc_c11" = x
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5
+printf "%s\n" "$ac_cv_prog_cc_c11" >&6; }
+ CC="$CC $ac_cv_prog_cc_c11"
+fi
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11
+ ac_prog_cc_stdc=c11
+fi
+fi
+if test x$ac_prog_cc_stdc = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5
+printf %s "checking for $CC option to enable C99 features... " >&6; }
+if test ${ac_cv_prog_cc_c99+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_prog_cc_c99=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_c_conftest_c99_program
+_ACEOF
+for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99=
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_prog_cc_c99=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+ test "x$ac_cv_prog_cc_c99" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+fi
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
- ;
- return 0;
-}
+if test "x$ac_cv_prog_cc_c99" = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+ if test "x$ac_cv_prog_cc_c99" = x
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
+printf "%s\n" "$ac_cv_prog_cc_c99" >&6; }
+ CC="$CC $ac_cv_prog_cc_c99"
+fi
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99
+ ac_prog_cc_stdc=c99
+fi
+fi
+if test x$ac_prog_cc_stdc = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5
+printf %s "checking for $CC option to enable C89 features... " >&6; }
+if test ${ac_cv_prog_cc_c89+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_c_conftest_c89_program
_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
- -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
do
CC="$ac_save_CC $ac_arg"
- if ac_fn_c_try_compile "$LINENO"; then :
+ if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_prog_cc_c89=$ac_arg
fi
-rm -f core conftest.err conftest.$ac_objext
+rm -f core conftest.err conftest.$ac_objext conftest.beam
test "x$ac_cv_prog_cc_c89" != "xno" && break
done
rm -f conftest.$ac_ext
CC=$ac_save_CC
-
fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
- x)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
- xno)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
- *)
- CC="$CC $ac_cv_prog_cc_c89"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
+if test "x$ac_cv_prog_cc_c89" = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+ if test "x$ac_cv_prog_cc_c89" = x
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+printf "%s\n" "$ac_cv_prog_cc_c89" >&6; }
+ CC="$CC $ac_cv_prog_cc_c89"
+fi
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89
+ ac_prog_cc_stdc=c89
+fi
fi
ac_ext=c
@@ -5010,40 +5609,36 @@ ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+printf %s "checking how to run the C preprocessor... " >&6; }
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
fi
if test -z "$CPP"; then
- if ${ac_cv_prog_CPP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- # Double quotes because CPP needs to be expanded
- for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+ if test ${ac_cv_prog_CPP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ # Double quotes because $CC needs to be expanded
+ for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp
do
ac_preproc_ok=false
for ac_c_preproc_warn_flag in '' yes
do
# Use a header file that comes with gcc, so configuring glibc
# with a fresh cross-compiler works.
- # Prefer to if __STDC__ is defined, since
- # exists even on freestanding compilers.
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#ifdef __STDC__
-# include
-#else
-# include
-#endif
+#include
Syntax error
_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
-else
+else $as_nop
# Broken: fails on valid input.
continue
fi
@@ -5055,10 +5650,11 @@ rm -f conftest.err conftest.i conftest.$ac_ext
/* end confdefs.h. */
#include
_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
# Broken: success on invalid input.
continue
-else
+else $as_nop
# Passes both tests.
ac_preproc_ok=:
break
@@ -5068,7 +5664,8 @@ rm -f conftest.err conftest.i conftest.$ac_ext
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
+if $ac_preproc_ok
+then :
break
fi
@@ -5080,29 +5677,24 @@ fi
else
ac_cv_prog_CPP=$CPP
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+printf "%s\n" "$CPP" >&6; }
ac_preproc_ok=false
for ac_c_preproc_warn_flag in '' yes
do
# Use a header file that comes with gcc, so configuring glibc
# with a fresh cross-compiler works.
- # Prefer to if __STDC__ is defined, since
- # exists even on freestanding compilers.
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#ifdef __STDC__
-# include
-#else
-# include
-#endif
+#include
Syntax error
_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
-else
+else $as_nop
# Broken: fails on valid input.
continue
fi
@@ -5114,10 +5706,11 @@ rm -f conftest.err conftest.i conftest.$ac_ext
/* end confdefs.h. */
#include
_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
# Broken: success on invalid input.
continue
-else
+else $as_nop
# Passes both tests.
ac_preproc_ok=:
break
@@ -5127,11 +5720,12 @@ rm -f conftest.err conftest.i conftest.$ac_ext
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
+if $ac_preproc_ok
+then :
-else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+else $as_nop
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
See \`config.log' for more details" "$LINENO" 5; }
fi
@@ -5142,11 +5736,12 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+printf %s "checking for grep that handles long lines and -e... " >&6; }
+if test ${ac_cv_path_GREP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -z "$GREP"; then
ac_path_GREP_found=false
# Loop through the user's path and test for each of PROGNAME-LIST
@@ -5154,10 +5749,15 @@ else
for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in grep ggrep; do
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_prog in grep ggrep
+ do
for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+ ac_path_GREP="$as_dir$ac_prog$ac_exec_ext"
as_fn_executable_p "$ac_path_GREP" || continue
# Check for GNU ac_path_GREP and select it if it is found.
# Check for GNU $ac_path_GREP
@@ -5166,13 +5766,13 @@ case `"$ac_path_GREP" --version 2>&1` in
ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
*)
ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
+ printf %s 0123456789 >"conftest.in"
while :
do
cat "conftest.in" "conftest.in" >"conftest.tmp"
mv "conftest.tmp" "conftest.in"
cp "conftest.in" "conftest.nl"
- $as_echo 'GREP' >> "conftest.nl"
+ printf "%s\n" 'GREP' >> "conftest.nl"
"$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
as_fn_arith $ac_count + 1 && ac_count=$as_val
@@ -5200,16 +5800,17 @@ else
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+printf "%s\n" "$ac_cv_path_GREP" >&6; }
GREP="$ac_cv_path_GREP"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
-$as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if ${ac_cv_path_SED+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+printf %s "checking for a sed that does not truncate output... " >&6; }
+if test ${ac_cv_path_SED+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
for ac_i in 1 2 3 4 5 6 7; do
ac_script="$ac_script$as_nl$ac_script"
@@ -5223,10 +5824,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in sed gsed; do
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_prog in sed gsed
+ do
for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+ ac_path_SED="$as_dir$ac_prog$ac_exec_ext"
as_fn_executable_p "$ac_path_SED" || continue
# Check for GNU ac_path_SED and select it if it is found.
# Check for GNU $ac_path_SED
@@ -5235,13 +5841,13 @@ case `"$ac_path_SED" --version 2>&1` in
ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
*)
ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
+ printf %s 0123456789 >"conftest.in"
while :
do
cat "conftest.in" "conftest.in" >"conftest.tmp"
mv "conftest.tmp" "conftest.in"
cp "conftest.in" "conftest.nl"
- $as_echo '' >> "conftest.nl"
+ printf "%s\n" '' >> "conftest.nl"
"$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
as_fn_arith $ac_count + 1 && ac_count=$as_val
@@ -5269,16 +5875,17 @@ else
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
-$as_echo "$ac_cv_path_SED" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+printf "%s\n" "$ac_cv_path_SED" >&6; }
SED="$ac_cv_path_SED"
rm -f conftest.sed
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+printf %s "checking for egrep... " >&6; }
+if test ${ac_cv_path_EGREP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
then ac_cv_path_EGREP="$GREP -E"
else
@@ -5289,10 +5896,15 @@ else
for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in egrep; do
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_prog in egrep
+ do
for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+ ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext"
as_fn_executable_p "$ac_path_EGREP" || continue
# Check for GNU ac_path_EGREP and select it if it is found.
# Check for GNU $ac_path_EGREP
@@ -5301,13 +5913,13 @@ case `"$ac_path_EGREP" --version 2>&1` in
ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
*)
ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
+ printf %s 0123456789 >"conftest.in"
while :
do
cat "conftest.in" "conftest.in" >"conftest.tmp"
mv "conftest.tmp" "conftest.in"
cp "conftest.in" "conftest.nl"
- $as_echo 'EGREP' >> "conftest.nl"
+ printf "%s\n" 'EGREP' >> "conftest.nl"
"$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
as_fn_arith $ac_count + 1 && ac_count=$as_val
@@ -5336,17 +5948,18 @@ fi
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+printf "%s\n" "$ac_cv_path_EGREP" >&6; }
EGREP="$ac_cv_path_EGREP"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CC compiler name" >&5
-$as_echo_n "checking for CC compiler name... " >&6; }
-if ${ac_cv_cc_name+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CC compiler name" >&5
+printf %s "checking for CC compiler name... " >&6; }
+if test ${ac_cv_cc_name+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat > conftest.c <&5
-$as_echo "$ac_cv_cc_name" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cc_name" >&5
+printf "%s\n" "$ac_cv_cc_name" >&6; }
# checks for UNIX variants that set C preprocessor variables
# may set _GNU_SOURCE, __EXTENSIONS__, _POSIX_PTHREAD_SEMANTICS,
# _POSIX_SOURCE, _POSIX_1_SOURCE, and more
+ac_header= ac_cache=
+for ac_item in $ac_header_c_list
+do
+ if test $ac_cache; then
+ ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default"
+ if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then
+ printf "%s\n" "#define $ac_item 1" >> confdefs.h
+ fi
+ ac_header= ac_cache=
+ elif test $ac_header; then
+ ac_cache=$ac_item
+ else
+ ac_header=$ac_item
+ fi
+done
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+
+
+
+
+
+
+
+if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes
+then :
+
+printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+
+
+
+
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
+printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; }
+if test ${ac_cv_safe_to_define___extensions__+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include
-#include
-#include
-#include
+# define __EXTENSIONS__ 1
+ $ac_includes_default
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_header_stdc=yes
-else
- ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
- ac_cv_header_stdc=no
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_safe_to_define___extensions__=yes
+else $as_nop
+ ac_cv_safe_to_define___extensions__=no
fi
-rm -f conftest*
-
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
+printf "%s\n" "$ac_cv_safe_to_define___extensions__" >&6; }
-if test $ac_cv_header_stdc = yes; then
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5
+printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; }
+if test ${ac_cv_should_define__xopen_source+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_should_define__xopen_source=no
+ if test $ac_cv_header_wchar_h = yes
+then :
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "free" >/dev/null 2>&1; then :
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
+ #include
+ mbstate_t x;
+int
+main (void)
+{
-fi
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
-if test $ac_cv_header_stdc = yes; then
- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
- if test "$cross_compiling" = yes; then :
- :
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include
-#include
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
- (('a' <= (c) && (c) <= 'i') \
- || ('j' <= (c) && (c) <= 'r') \
- || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+ #define _XOPEN_SOURCE 500
+ #include
+ mbstate_t x;
int
-main ()
+main (void)
{
- int i;
- for (i = 0; i < 256; i++)
- if (XOR (islower (i), ISLOWER (i))
- || toupper (i) != TOUPPER (i))
- return 2;
+
+ ;
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
- ac_cv_header_stdc=no
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_should_define__xopen_source=yes
fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5
+printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; }
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+ printf "%s\n" "#define _ALL_SOURCE 1" >>confdefs.h
-fi
+ printf "%s\n" "#define _DARWIN_C_SOURCE 1" >>confdefs.h
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
- inttypes.h stdint.h unistd.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+ printf "%s\n" "#define _GNU_SOURCE 1" >>confdefs.h
-fi
+ printf "%s\n" "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h
-done
+ printf "%s\n" "#define _NETBSD_SOURCE 1" >>confdefs.h
+ printf "%s\n" "#define _OPENBSD_SOURCE 1" >>confdefs.h
+ printf "%s\n" "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
- ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
-if test "x$ac_cv_header_minix_config_h" = xyes; then :
- MINIX=yes
-else
- MINIX=
-fi
+ printf "%s\n" "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h
- if test "$MINIX" = yes; then
+ printf "%s\n" "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h
-$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h
-$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h
-$as_echo "#define _MINIX 1" >>confdefs.h
+ printf "%s\n" "#define _TANDEM_SOURCE 1" >>confdefs.h
- fi
+ if test $ac_cv_header_minix_config_h = yes
+then :
+ MINIX=yes
+ printf "%s\n" "#define _MINIX 1" >>confdefs.h
+ printf "%s\n" "#define _POSIX_SOURCE 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
-$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
-if ${ac_cv_safe_to_define___extensions__+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
+ printf "%s\n" "#define _POSIX_1_SOURCE 2" >>confdefs.h
-# define __EXTENSIONS__ 1
- $ac_includes_default
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_safe_to_define___extensions__=yes
-else
- ac_cv_safe_to_define___extensions__=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else $as_nop
+ MINIX=
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
-$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
- test $ac_cv_safe_to_define___extensions__ = yes &&
- $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h
-
- $as_echo "#define _ALL_SOURCE 1" >>confdefs.h
+ if test $ac_cv_safe_to_define___extensions__ = yes
+then :
+ printf "%s\n" "#define __EXTENSIONS__ 1" >>confdefs.h
- $as_echo "#define _GNU_SOURCE 1" >>confdefs.h
-
- $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
-
- $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
+fi
+ if test $ac_cv_should_define__xopen_source = yes
+then :
+ printf "%s\n" "#define _XOPEN_SOURCE 500" >>confdefs.h
+fi
@@ -5580,11 +6172,12 @@ then
gcc) if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}g++", so it can be a program name with args.
set dummy ${ac_tool_prefix}g++; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_CXX+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_CXX+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $CXX in
[\\/]* | ?:[\\/]*)
ac_cv_path_CXX="$CXX" # Let the user override the test with a path.
@@ -5594,11 +6187,15 @@ else
for as_dir in notfound
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_CXX="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_CXX="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -5610,11 +6207,11 @@ esac
fi
CXX=$ac_cv_path_CXX
if test -n "$CXX"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
-$as_echo "$CXX" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+printf "%s\n" "$CXX" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -5623,11 +6220,12 @@ if test -z "$ac_cv_path_CXX"; then
ac_pt_CXX=$CXX
# Extract the first word of "g++", so it can be a program name with args.
set dummy g++; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_ac_pt_CXX+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_ac_pt_CXX+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $ac_pt_CXX in
[\\/]* | ?:[\\/]*)
ac_cv_path_ac_pt_CXX="$ac_pt_CXX" # Let the user override the test with a path.
@@ -5637,11 +6235,15 @@ else
for as_dir in notfound
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_ac_pt_CXX="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_CXX="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -5653,11 +6255,11 @@ esac
fi
ac_pt_CXX=$ac_cv_path_ac_pt_CXX
if test -n "$ac_pt_CXX"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_CXX" >&5
-$as_echo "$ac_pt_CXX" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_CXX" >&5
+printf "%s\n" "$ac_pt_CXX" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_pt_CXX" = x; then
@@ -5665,8 +6267,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
CXX=$ac_pt_CXX
@@ -5678,11 +6280,12 @@ fi
cc) if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}c++", so it can be a program name with args.
set dummy ${ac_tool_prefix}c++; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_CXX+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_CXX+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $CXX in
[\\/]* | ?:[\\/]*)
ac_cv_path_CXX="$CXX" # Let the user override the test with a path.
@@ -5692,11 +6295,15 @@ else
for as_dir in notfound
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_CXX="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_CXX="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -5708,11 +6315,11 @@ esac
fi
CXX=$ac_cv_path_CXX
if test -n "$CXX"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
-$as_echo "$CXX" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+printf "%s\n" "$CXX" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -5721,11 +6328,12 @@ if test -z "$ac_cv_path_CXX"; then
ac_pt_CXX=$CXX
# Extract the first word of "c++", so it can be a program name with args.
set dummy c++; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_ac_pt_CXX+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_ac_pt_CXX+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $ac_pt_CXX in
[\\/]* | ?:[\\/]*)
ac_cv_path_ac_pt_CXX="$ac_pt_CXX" # Let the user override the test with a path.
@@ -5735,11 +6343,15 @@ else
for as_dir in notfound
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_ac_pt_CXX="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_CXX="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -5751,11 +6363,11 @@ esac
fi
ac_pt_CXX=$ac_cv_path_ac_pt_CXX
if test -n "$ac_pt_CXX"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_CXX" >&5
-$as_echo "$ac_pt_CXX" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_CXX" >&5
+printf "%s\n" "$ac_pt_CXX" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_pt_CXX" = x; then
@@ -5763,8 +6375,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
CXX=$ac_pt_CXX
@@ -5776,11 +6388,12 @@ fi
clang|*/clang) if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}clang++", so it can be a program name with args.
set dummy ${ac_tool_prefix}clang++; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_CXX+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_CXX+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $CXX in
[\\/]* | ?:[\\/]*)
ac_cv_path_CXX="$CXX" # Let the user override the test with a path.
@@ -5790,11 +6403,15 @@ else
for as_dir in notfound
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_CXX="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_CXX="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -5806,11 +6423,11 @@ esac
fi
CXX=$ac_cv_path_CXX
if test -n "$CXX"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
-$as_echo "$CXX" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+printf "%s\n" "$CXX" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -5819,11 +6436,12 @@ if test -z "$ac_cv_path_CXX"; then
ac_pt_CXX=$CXX
# Extract the first word of "clang++", so it can be a program name with args.
set dummy clang++; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_ac_pt_CXX+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_ac_pt_CXX+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $ac_pt_CXX in
[\\/]* | ?:[\\/]*)
ac_cv_path_ac_pt_CXX="$ac_pt_CXX" # Let the user override the test with a path.
@@ -5833,11 +6451,15 @@ else
for as_dir in notfound
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_ac_pt_CXX="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_CXX="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -5849,11 +6471,11 @@ esac
fi
ac_pt_CXX=$ac_cv_path_ac_pt_CXX
if test -n "$ac_pt_CXX"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_CXX" >&5
-$as_echo "$ac_pt_CXX" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_CXX" >&5
+printf "%s\n" "$ac_pt_CXX" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_pt_CXX" = x; then
@@ -5861,8 +6483,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
CXX=$ac_pt_CXX
@@ -5874,11 +6496,12 @@ fi
icc|*/icc) if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}icpc", so it can be a program name with args.
set dummy ${ac_tool_prefix}icpc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_CXX+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_CXX+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $CXX in
[\\/]* | ?:[\\/]*)
ac_cv_path_CXX="$CXX" # Let the user override the test with a path.
@@ -5888,11 +6511,15 @@ else
for as_dir in notfound
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_CXX="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_CXX="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -5904,11 +6531,11 @@ esac
fi
CXX=$ac_cv_path_CXX
if test -n "$CXX"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
-$as_echo "$CXX" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+printf "%s\n" "$CXX" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -5917,11 +6544,12 @@ if test -z "$ac_cv_path_CXX"; then
ac_pt_CXX=$CXX
# Extract the first word of "icpc", so it can be a program name with args.
set dummy icpc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_ac_pt_CXX+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_ac_pt_CXX+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $ac_pt_CXX in
[\\/]* | ?:[\\/]*)
ac_cv_path_ac_pt_CXX="$ac_pt_CXX" # Let the user override the test with a path.
@@ -5931,11 +6559,15 @@ else
for as_dir in notfound
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_ac_pt_CXX="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_CXX="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -5947,11 +6579,11 @@ esac
fi
ac_pt_CXX=$ac_cv_path_ac_pt_CXX
if test -n "$ac_pt_CXX"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_CXX" >&5
-$as_echo "$ac_pt_CXX" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_CXX" >&5
+printf "%s\n" "$ac_pt_CXX" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_pt_CXX" = x; then
@@ -5959,8 +6591,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
CXX=$ac_pt_CXX
@@ -5982,11 +6614,12 @@ then
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CXX+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CXX+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$CXX"; then
ac_cv_prog_CXX="$CXX" # Let the user override the test.
else
@@ -5994,11 +6627,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -6009,11 +6646,11 @@ fi
fi
CXX=$ac_cv_prog_CXX
if test -n "$CXX"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
-$as_echo "$CXX" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+printf "%s\n" "$CXX" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -6026,11 +6663,12 @@ if test -z "$CXX"; then
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CXX+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CXX+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_CXX"; then
ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
else
@@ -6038,11 +6676,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CXX="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -6053,11 +6695,11 @@ fi
fi
ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
if test -n "$ac_ct_CXX"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
-$as_echo "$ac_ct_CXX" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
+printf "%s\n" "$ac_ct_CXX" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -6069,8 +6711,8 @@ done
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
CXX=$ac_ct_CXX
@@ -6084,12 +6726,12 @@ fi
fi
if test "$preset_cxx" != "$CXX"
then
- { $as_echo "$as_me:${as_lineno-$LINENO}:
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}:
By default, distutils will build C++ extension modules with \"$CXX\".
If this is not intended, then set CXX on the configure command line.
" >&5
-$as_echo "$as_me:
+printf "%s\n" "$as_me:
By default, distutils will build C++ extension modules with \"$CXX\".
If this is not intended, then set CXX on the configure command line.
@@ -6097,8 +6739,8 @@ $as_echo "$as_me:
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the platform triplet based on compiler characteristics" >&5
-$as_echo_n "checking for the platform triplet based on compiler characteristics... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the platform triplet based on compiler characteristics" >&5
+printf %s "checking for the platform triplet based on compiler characteristics... " >&6; }
cat > conftest.c <conftest.out 2>/dev/null; then
PLATFORM_TRIPLET=`echo "$PLATFORM_TRIPLET" | sed 's/linux-gnu/linux-musl/'`
;;
esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PLATFORM_TRIPLET" >&5
-$as_echo "$PLATFORM_TRIPLET" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PLATFORM_TRIPLET" >&5
+printf "%s\n" "$PLATFORM_TRIPLET" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
-$as_echo "none" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5
+printf "%s\n" "none" >&6; }
fi
rm -f conftest.c conftest.out
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for multiarch" >&5
-$as_echo_n "checking for multiarch... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for multiarch" >&5
+printf %s "checking for multiarch... " >&6; }
case $ac_sys_system in #(
Darwin*) :
MULTIARCH="" ;; #(
@@ -6302,8 +6944,8 @@ case $ac_sys_system in #(
;;
esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MULTIARCH" >&5
-$as_echo "$MULTIARCH" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MULTIARCH" >&5
+printf "%s\n" "$MULTIARCH" >&6; }
if test x$PLATFORM_TRIPLET != x && test x$MULTIARCH != x; then
if test x$PLATFORM_TRIPLET != x$MULTIARCH; then
@@ -6319,8 +6961,8 @@ if test x$MULTIARCH != x; then
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PEP 11 support tier" >&5
-$as_echo_n "checking for PEP 11 support tier... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PEP 11 support tier" >&5
+printf %s "checking for PEP 11 support tier... " >&6; }
case $host/$ac_cv_cc_name in #(
x86_64-*-linux-gnu/gcc) :
PY_SUPPORT_TIER=1 ;; #(
@@ -6363,31 +7005,30 @@ esac
case $PY_SUPPORT_TIER in #(
1) :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $host/$ac_cv_cc_name has tier 1 (supported)" >&5
-$as_echo "$host/$ac_cv_cc_name has tier 1 (supported)" >&6; } ;; #(
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $host/$ac_cv_cc_name has tier 1 (supported)" >&5
+printf "%s\n" "$host/$ac_cv_cc_name has tier 1 (supported)" >&6; } ;; #(
2) :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $host/$ac_cv_cc_name has tier 2 (supported)" >&5
-$as_echo "$host/$ac_cv_cc_name has tier 2 (supported)" >&6; } ;; #(
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $host/$ac_cv_cc_name has tier 2 (supported)" >&5
+printf "%s\n" "$host/$ac_cv_cc_name has tier 2 (supported)" >&6; } ;; #(
3) :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $host/$ac_cv_cc_name has tier 3 (partially supported)" >&5
-$as_echo "$host/$ac_cv_cc_name has tier 3 (partially supported)" >&6; } ;; #(
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $host/$ac_cv_cc_name has tier 3 (partially supported)" >&5
+printf "%s\n" "$host/$ac_cv_cc_name has tier 3 (partially supported)" >&6; } ;; #(
*) :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $host/$ac_cv_cc_name is not supported" >&5
-$as_echo "$as_me: WARNING: $host/$ac_cv_cc_name is not supported" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $host/$ac_cv_cc_name is not supported" >&5
+printf "%s\n" "$as_me: WARNING: $host/$ac_cv_cc_name is not supported" >&2;}
;;
esac
-cat >>confdefs.h <<_ACEOF
-#define PY_SUPPORT_TIER $PY_SUPPORT_TIER
-_ACEOF
+printf "%s\n" "#define PY_SUPPORT_TIER $PY_SUPPORT_TIER" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -Wl,--no-as-needed" >&5
-$as_echo_n "checking for -Wl,--no-as-needed... " >&6; }
-if ${ac_cv_wl_no_as_needed+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -Wl,--no-as-needed" >&5
+printf %s "checking for -Wl,--no-as-needed... " >&6; }
+if test ${ac_cv_wl_no_as_needed+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
save_LDFLAGS="$LDFLAGS"
as_fn_append LDFLAGS " -Wl,--no-as-needed"
@@ -6395,31 +7036,32 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
NO_AS_NEEDED="-Wl,--no-as-needed"
ac_cv_wl_no_as_needed=yes
-else
+else $as_nop
NO_AS_NEEDED=""
ac_cv_wl_no_as_needed=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LDFLAGS="$save_LDFLAGS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_wl_no_as_needed" >&5
-$as_echo "$ac_cv_wl_no_as_needed" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_wl_no_as_needed" >&5
+printf "%s\n" "$ac_cv_wl_no_as_needed" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the Android API level" >&5
-$as_echo_n "checking for the Android API level... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the Android API level" >&5
+printf %s "checking for the Android API level... " >&6; }
cat > conftest.c <conftest.out 2>/dev/null; then
ANDROID_API_LEVEL=`sed -n -e '/__ANDROID_API__/d' -e 's/^android_api = //p' conftest.out`
_arm_arch=`sed -n -e '/__ARM_ARCH/d' -e 's/^arm_arch = //p' conftest.out`
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ANDROID_API_LEVEL" >&5
-$as_echo "$ANDROID_API_LEVEL" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ANDROID_API_LEVEL" >&5
+printf "%s\n" "$ANDROID_API_LEVEL" >&6; }
if test -z "$ANDROID_API_LEVEL"; then
as_fn_error $? "Fatal: you must define __ANDROID_API__" "$LINENO" 5
fi
-cat >>confdefs.h <<_ACEOF
-#define ANDROID_API_LEVEL $ANDROID_API_LEVEL
-_ACEOF
+printf "%s\n" "#define ANDROID_API_LEVEL $ANDROID_API_LEVEL" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the Android arm ABI" >&5
-$as_echo_n "checking for the Android arm ABI... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_arm_arch" >&5
-$as_echo "$_arm_arch" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the Android arm ABI" >&5
+printf %s "checking for the Android arm ABI... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $_arm_arch" >&5
+printf "%s\n" "$_arm_arch" >&6; }
if test "$_arm_arch" = 7; then
BASECFLAGS="${BASECFLAGS} -mfloat-abi=softfp -mfpu=vfpv3-d16"
LDFLAGS="${LDFLAGS} -march=armv7-a -Wl,--fix-cortex-a8"
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: not Android" >&5
-$as_echo "not Android" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not Android" >&5
+printf "%s\n" "not Android" >&6; }
fi
rm -f conftest.c conftest.out
@@ -6468,13 +7108,15 @@ case $ac_sys_system/$ac_sys_release in #(
;;
esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-emscripten-target" >&5
-$as_echo_n "checking for --with-emscripten-target... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-emscripten-target" >&5
+printf %s "checking for --with-emscripten-target... " >&6; }
# Check whether --with-emscripten-target was given.
-if test "${with_emscripten_target+set}" = set; then :
+if test ${with_emscripten_target+y}
+then :
withval=$with_emscripten_target;
- if test "x$ac_sys_system" = xEmscripten; then :
+ if test "x$ac_sys_system" = xEmscripten
+then :
case $with_emscripten_target in #(
browser) :
@@ -6490,27 +7132,29 @@ if test "${with_emscripten_target+set}" = set; then :
;;
esac
-else
+else $as_nop
as_fn_error $? "--with-emscripten-target only applies to Emscripten" "$LINENO" 5
fi
-else
+else $as_nop
- if test "x$ac_sys_system" = xEmscripten; then :
+ if test "x$ac_sys_system" = xEmscripten
+then :
ac_sys_emscripten_target=browser
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_sys_emscripten_target" >&5
-$as_echo "$ac_sys_emscripten_target" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_sys_emscripten_target" >&5
+printf "%s\n" "$ac_sys_emscripten_target" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-wasm-dynamic-linking" >&5
-$as_echo_n "checking for --enable-wasm-dynamic-linking... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-wasm-dynamic-linking" >&5
+printf %s "checking for --enable-wasm-dynamic-linking... " >&6; }
# Check whether --enable-wasm-dynamic-linking was given.
-if test "${enable_wasm_dynamic_linking+set}" = set; then :
+if test ${enable_wasm_dynamic_linking+y}
+then :
enableval=$enable_wasm_dynamic_linking;
case $ac_sys_system in #(
Emscripten) :
@@ -6522,19 +7166,20 @@ if test "${enable_wasm_dynamic_linking+set}" = set; then :
;;
esac
-else
+else $as_nop
enable_wasm_dynamic_linking=missing
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_wasm_dynamic_linking" >&5
-$as_echo "$enable_wasm_dynamic_linking" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_wasm_dynamic_linking" >&5
+printf "%s\n" "$enable_wasm_dynamic_linking" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-wasm-pthreads" >&5
-$as_echo_n "checking for --enable-wasm-pthreads... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-wasm-pthreads" >&5
+printf %s "checking for --enable-wasm-pthreads... " >&6; }
# Check whether --enable-wasm-pthreads was given.
-if test "${enable_wasm_pthreads+set}" = set; then :
+if test ${enable_wasm_pthreads+y}
+then :
enableval=$enable_wasm_pthreads;
case $ac_sys_system in #(
Emscripten) :
@@ -6546,20 +7191,21 @@ if test "${enable_wasm_pthreads+set}" = set; then :
;;
esac
-else
+else $as_nop
enable_wasm_pthreads=missing
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_wasm_pthreads" >&5
-$as_echo "$enable_wasm_pthreads" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_wasm_pthreads" >&5
+printf "%s\n" "$enable_wasm_pthreads" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-suffix" >&5
-$as_echo_n "checking for --with-suffix... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-suffix" >&5
+printf %s "checking for --with-suffix... " >&6; }
# Check whether --with-suffix was given.
-if test "${with_suffix+set}" = set; then :
+if test ${with_suffix+y}
+then :
withval=$with_suffix;
case $with_suffix in #(
no) :
@@ -6571,7 +7217,7 @@ if test "${with_suffix+set}" = set; then :
;;
esac
-else
+else $as_nop
case $ac_sys_system/$ac_sys_emscripten_target in #(
Emscripten/browser*) :
@@ -6587,26 +7233,26 @@ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $EXEEXT" >&5
-$as_echo "$EXEEXT" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $EXEEXT" >&5
+printf "%s\n" "$EXEEXT" >&6; }
# Test whether we're running on a non-case-sensitive system, in which
# case we give a warning if no ext is given
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for case-insensitive build directory" >&5
-$as_echo_n "checking for case-insensitive build directory... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for case-insensitive build directory" >&5
+printf %s "checking for case-insensitive build directory... " >&6; }
if test ! -d CaseSensitiveTestDir; then
mkdir CaseSensitiveTestDir
fi
if test -d casesensitivetestdir && test -z "$EXEEXT"
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
BUILDEXEEXT=.exe
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
BUILDEXEEXT=$EXEEXT
fi
rmdir CaseSensitiveTestDir
@@ -6619,14 +7265,14 @@ hp*|HP*)
esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking LIBRARY" >&5
-$as_echo_n "checking LIBRARY... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking LIBRARY" >&5
+printf %s "checking LIBRARY... " >&6; }
if test -z "$LIBRARY"
then
LIBRARY='libpython$(VERSION)$(ABIFLAGS).a'
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBRARY" >&5
-$as_echo "$LIBRARY" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBRARY" >&5
+printf "%s\n" "$LIBRARY" >&6; }
# LDLIBRARY is the name of the library to link against (as opposed to the
# name of the library into which to insert object files). BLDLIBRARY is also
@@ -6665,8 +7311,8 @@ LDVERSION="$VERSION"
# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
# python might then depend on the C++ runtime
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking LINKCC" >&5
-$as_echo_n "checking LINKCC... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking LINKCC" >&5
+printf %s "checking LINKCC... " >&6; }
if test -z "$LINKCC"
then
LINKCC='$(PURIFY) $(CC)'
@@ -6677,8 +7323,8 @@ then
LINKCC=qcc;;
esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINKCC" >&5
-$as_echo "$LINKCC" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LINKCC" >&5
+printf "%s\n" "$LINKCC" >&6; }
# EXPORTSYMS holds the list of exported symbols for AIX.
# EXPORTSFROM holds the module name exporting symbols on AIX.
@@ -6686,16 +7332,16 @@ EXPORTSYMS=
EXPORTSFROM=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking EXPORTSYMS" >&5
-$as_echo_n "checking EXPORTSYMS... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking EXPORTSYMS" >&5
+printf %s "checking EXPORTSYMS... " >&6; }
case $ac_sys_system in
AIX*)
EXPORTSYMS="Modules/python.exp"
EXPORTSFROM=. # the main executable
;;
esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $EXPORTSYMS" >&5
-$as_echo "$EXPORTSYMS" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $EXPORTSYMS" >&5
+printf "%s\n" "$EXPORTSYMS" >&6; }
# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
# make sure we default having it set to "no": this is used by
@@ -6703,8 +7349,8 @@ $as_echo "$EXPORTSYMS" >&6; }
# to linker command lines, and failing to detect GNU ld simply results
# in the same behaviour as before.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
-$as_echo_n "checking for GNU ld... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+printf %s "checking for GNU ld... " >&6; }
ac_prog=ld
if test "$GCC" = yes; then
ac_prog=`$CC -print-prog-name=ld`
@@ -6715,13 +7361,14 @@ case `"$ac_prog" -V 2>&1 < /dev/null` in
*)
GNULD=no;;
esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNULD" >&5
-$as_echo "$GNULD" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GNULD" >&5
+printf "%s\n" "$GNULD" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-shared" >&5
-$as_echo_n "checking for --enable-shared... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-shared" >&5
+printf %s "checking for --enable-shared... " >&6; }
# Check whether --enable-shared was given.
-if test "${enable_shared+set}" = set; then :
+if test ${enable_shared+y}
+then :
enableval=$enable_shared;
fi
@@ -6735,37 +7382,39 @@ then
enable_shared="no";;
esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
-$as_echo "$enable_shared" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
+printf "%s\n" "$enable_shared" >&6; }
# --with-static-libpython
STATIC_LIBPYTHON=1
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-static-libpython" >&5
-$as_echo_n "checking for --with-static-libpython... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-static-libpython" >&5
+printf %s "checking for --with-static-libpython... " >&6; }
# Check whether --with-static-libpython was given.
-if test "${with_static_libpython+set}" = set; then :
+if test ${with_static_libpython+y}
+then :
withval=$with_static_libpython;
if test "$withval" = no
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; };
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; };
STATIC_LIBPYTHON=0
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; };
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; };
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-profiling" >&5
-$as_echo_n "checking for --enable-profiling... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-profiling" >&5
+printf %s "checking for --enable-profiling... " >&6; }
# Check whether --enable-profiling was given.
-if test "${enable_profiling+set}" = set; then :
+if test ${enable_profiling+y}
+then :
enableval=$enable_profiling;
fi
@@ -6776,27 +7425,28 @@ if test "x$enable_profiling" = xyes; then
/* end confdefs.h. */
int main(void) { return 0; }
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
-else
+else $as_nop
enable_profiling=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CC="$ac_save_cc"
else
enable_profiling=no
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_profiling" >&5
-$as_echo "$enable_profiling" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_profiling" >&5
+printf "%s\n" "$enable_profiling" >&6; }
if test "x$enable_profiling" = xyes; then
BASECFLAGS="-pg $BASECFLAGS"
LDFLAGS="-pg $LDFLAGS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking LDLIBRARY" >&5
-$as_echo_n "checking LDLIBRARY... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking LDLIBRARY" >&5
+printf %s "checking LDLIBRARY... " >&6; }
# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
# library that we build, but we do not want to link against it (we
@@ -6817,7 +7467,7 @@ fi
if test $enable_shared = "yes"; then
PY_ENABLE_SHARED=1
-$as_echo "#define Py_ENABLE_SHARED 1" >>confdefs.h
+printf "%s\n" "#define Py_ENABLE_SHARED 1" >>confdefs.h
case $ac_sys_system in
CYGWIN*)
@@ -6890,11 +7540,12 @@ then
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}node", so it can be a program name with args.
set dummy ${ac_tool_prefix}node; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_NODE+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_NODE+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $NODE in
[\\/]* | ?:[\\/]*)
ac_cv_path_NODE="$NODE" # Let the user override the test with a path.
@@ -6904,11 +7555,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_NODE="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_NODE="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -6920,11 +7575,11 @@ esac
fi
NODE=$ac_cv_path_NODE
if test -n "$NODE"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NODE" >&5
-$as_echo "$NODE" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NODE" >&5
+printf "%s\n" "$NODE" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -6933,11 +7588,12 @@ if test -z "$ac_cv_path_NODE"; then
ac_pt_NODE=$NODE
# Extract the first word of "node", so it can be a program name with args.
set dummy node; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_ac_pt_NODE+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_ac_pt_NODE+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $ac_pt_NODE in
[\\/]* | ?:[\\/]*)
ac_cv_path_ac_pt_NODE="$ac_pt_NODE" # Let the user override the test with a path.
@@ -6947,11 +7603,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_ac_pt_NODE="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_NODE="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -6963,11 +7623,11 @@ esac
fi
ac_pt_NODE=$ac_cv_path_ac_pt_NODE
if test -n "$ac_pt_NODE"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_NODE" >&5
-$as_echo "$ac_pt_NODE" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_NODE" >&5
+printf "%s\n" "$ac_pt_NODE" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_pt_NODE" = x; then
@@ -6975,8 +7635,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
NODE=$ac_pt_NODE
@@ -6988,11 +7648,12 @@ fi
HOSTRUNNER="$NODE"
# bigint for ctypes c_longlong, c_longdouble
# no longer available in Node 16
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for node --experimental-wasm-bigint" >&5
-$as_echo_n "checking for node --experimental-wasm-bigint... " >&6; }
-if ${ac_cv_tool_node_wasm_bigint+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for node --experimental-wasm-bigint" >&5
+printf %s "checking for node --experimental-wasm-bigint... " >&6; }
+if test ${ac_cv_tool_node_wasm_bigint+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if $NODE -v --experimental-wasm-bigint > /dev/null 2>&1; then
ac_cv_tool_node_wasm_bigint=yes
@@ -7001,23 +7662,26 @@ else
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_tool_node_wasm_bigint" >&5
-$as_echo "$ac_cv_tool_node_wasm_bigint" >&6; }
- if test "x$ac_cv_tool_node_wasm_bigint" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_tool_node_wasm_bigint" >&5
+printf "%s\n" "$ac_cv_tool_node_wasm_bigint" >&6; }
+ if test "x$ac_cv_tool_node_wasm_bigint" = xyes
+then :
as_fn_append HOSTRUNNER " --experimental-wasm-bigint"
fi
- if test "x$enable_wasm_pthreads" = xyes; then :
+ if test "x$enable_wasm_pthreads" = xyes
+then :
as_fn_append HOSTRUNNER " --experimental-wasm-threads"
# no longer available in Node 16
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for node --experimental-wasm-bulk-memory" >&5
-$as_echo_n "checking for node --experimental-wasm-bulk-memory... " >&6; }
-if ${ac_cv_tool_node_wasm_bulk_memory+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for node --experimental-wasm-bulk-memory" >&5
+printf %s "checking for node --experimental-wasm-bulk-memory... " >&6; }
+if test ${ac_cv_tool_node_wasm_bulk_memory+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if $NODE -v --experimental-wasm-bulk-memory > /dev/null 2>&1; then
ac_cv_tool_node_wasm_bulk_memory=yes
@@ -7026,9 +7690,10 @@ else
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_tool_node_wasm_bulk_memory" >&5
-$as_echo "$ac_cv_tool_node_wasm_bulk_memory" >&6; }
- if test "x$ac_cv_tool_node_wasm_bulk_memory" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_tool_node_wasm_bulk_memory" >&5
+printf "%s\n" "$ac_cv_tool_node_wasm_bulk_memory" >&6; }
+ if test "x$ac_cv_tool_node_wasm_bulk_memory" = xyes
+then :
as_fn_append HOSTRUNNER " --experimental-wasm-bulk-memory"
@@ -7036,7 +7701,8 @@ fi
fi
- if test "x$host_cpu" = xwasm64; then :
+ if test "x$host_cpu" = xwasm64
+then :
as_fn_append HOSTRUNNER " --experimental-wasm-memory64"
fi
;; #(
@@ -7048,17 +7714,17 @@ fi
esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking HOSTRUNNER" >&5
-$as_echo_n "checking HOSTRUNNER... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $HOSTRUNNER" >&5
-$as_echo "$HOSTRUNNER" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking HOSTRUNNER" >&5
+printf %s "checking HOSTRUNNER... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $HOSTRUNNER" >&5
+printf "%s\n" "$HOSTRUNNER" >&6; }
if test -n "$HOSTRUNNER"; then
PYTHON_FOR_BUILD="_PYTHON_HOSTRUNNER='$HOSTRUNNER' $PYTHON_FOR_BUILD"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $LDLIBRARY" >&5
-$as_echo "$LDLIBRARY" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LDLIBRARY" >&5
+printf "%s\n" "$LDLIBRARY" >&6; }
# LIBRARY_DEPS, LINK_PYTHON_OBJS and LINK_PYTHON_DEPS variable
case $ac_sys_system/$ac_sys_emscripten_target in #(
@@ -7097,11 +7763,12 @@ if test -n "$ac_tool_prefix"; then
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AR+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_AR+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$AR"; then
ac_cv_prog_AR="$AR" # Let the user override the test.
else
@@ -7109,11 +7776,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -7124,11 +7795,11 @@ fi
fi
AR=$ac_cv_prog_AR
if test -n "$AR"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+printf "%s\n" "$AR" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -7141,11 +7812,12 @@ if test -z "$AR"; then
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AR+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_AR+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_AR"; then
ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
else
@@ -7153,11 +7825,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_AR="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -7168,11 +7844,11 @@ fi
fi
ac_ct_AR=$ac_cv_prog_ac_ct_AR
if test -n "$ac_ct_AR"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+printf "%s\n" "$ac_ct_AR" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -7184,8 +7860,8 @@ done
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
AR=$ac_ct_AR
@@ -7208,7 +7884,8 @@ hp*|HP*)
INSTALL="${srcdir}/install-sh -c"
fi
esac
-# Find a good install program. We prefer a C program (faster),
+
+ # Find a good install program. We prefer a C program (faster),
# so one script is as good as another. But avoid the broken or
# incompatible versions:
# SysV /etc/install, /usr/sbin/install
@@ -7222,20 +7899,25 @@ esac
# OS/2's system install, which has a completely different semantic
# ./install, which can be erroneously created by make from ./install.sh.
# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+printf %s "checking for a BSD-compatible install... " >&6; }
if test -z "$INSTALL"; then
-if ${ac_cv_path_install+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+if test ${ac_cv_path_install+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in #((
- ./ | .// | /[cC]/* | \
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ # Account for fact that we put trailing slashes in our PATH walk.
+case $as_dir in #((
+ ./ | /[cC]/* | \
/etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
/usr/ucb/* ) ;;
@@ -7245,13 +7927,13 @@ case $as_dir/ in #((
# by default.
for ac_prog in ginstall scoinst install; do
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then
if test $ac_prog = install &&
- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
# AIX install. It has an incompatible calling convention.
:
elif test $ac_prog = install &&
- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
# program-specific install script used by HP pwplus--don't use.
:
else
@@ -7259,12 +7941,12 @@ case $as_dir/ in #((
echo one > conftest.one
echo two > conftest.two
mkdir conftest.dir
- if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" &&
test -s conftest.one && test -s conftest.two &&
test -s conftest.dir/conftest.one &&
test -s conftest.dir/conftest.two
then
- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c"
break 3
fi
fi
@@ -7280,7 +7962,7 @@ IFS=$as_save_IFS
rm -rf conftest.one conftest.two conftest.dir
fi
- if test "${ac_cv_path_install+set}" = set; then
+ if test ${ac_cv_path_install+y}; then
INSTALL=$ac_cv_path_install
else
# As a last resort, use the slow shell script. Don't cache a
@@ -7290,8 +7972,8 @@ fi
INSTALL=$ac_install_sh
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+printf "%s\n" "$INSTALL" >&6; }
# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
# It thinks the first close brace ends the variable substitution.
@@ -7301,25 +7983,31 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
-$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5
+printf %s "checking for a race-free mkdir -p... " >&6; }
if test -z "$MKDIR_P"; then
- if ${ac_cv_path_mkdir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ if test ${ac_cv_path_mkdir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_prog in mkdir gmkdir; do
for ac_exec_ext in '' $ac_executable_extensions; do
- as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
- case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
- 'mkdir (GNU coreutils) '* | \
- 'mkdir (coreutils) '* | \
+ as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue
+ case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir ('*'coreutils) '* | \
+ 'BusyBox '* | \
'mkdir (fileutils) '4.1*)
- ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext
break 3;;
esac
done
@@ -7330,7 +8018,7 @@ IFS=$as_save_IFS
fi
test -d ./--version && rmdir ./--version
- if test "${ac_cv_path_mkdir+set}" = set; then
+ if test ${ac_cv_path_mkdir+y}; then
MKDIR_P="$ac_cv_path_mkdir -p"
else
# As a last resort, use the slow shell script. Don't cache a
@@ -7340,8 +8028,8 @@ fi
MKDIR_P="$ac_install_sh -d"
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
-$as_echo "$MKDIR_P" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+printf "%s\n" "$MKDIR_P" >&6; }
# Not every filesystem supports hard links
@@ -7358,71 +8046,76 @@ fi
ABIFLAGS=""
# Check for --with-pydebug
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-pydebug" >&5
-$as_echo_n "checking for --with-pydebug... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-pydebug" >&5
+printf %s "checking for --with-pydebug... " >&6; }
# Check whether --with-pydebug was given.
-if test "${with_pydebug+set}" = set; then :
+if test ${with_pydebug+y}
+then :
withval=$with_pydebug;
if test "$withval" != no
then
-$as_echo "#define Py_DEBUG 1" >>confdefs.h
+printf "%s\n" "#define Py_DEBUG 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; };
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; };
Py_DEBUG='true'
ABIFLAGS="${ABIFLAGS}d"
-else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }; Py_DEBUG='false'
+else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }; Py_DEBUG='false'
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# Check for --with-trace-refs
# --with-trace-refs
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-trace-refs" >&5
-$as_echo_n "checking for --with-trace-refs... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-trace-refs" >&5
+printf %s "checking for --with-trace-refs... " >&6; }
# Check whether --with-trace-refs was given.
-if test "${with_trace_refs+set}" = set; then :
+if test ${with_trace_refs+y}
+then :
withval=$with_trace_refs;
-else
+else $as_nop
with_trace_refs=no
+
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_trace_refs" >&5
-$as_echo "$with_trace_refs" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_trace_refs" >&5
+printf "%s\n" "$with_trace_refs" >&6; }
if test "$with_trace_refs" = "yes"
then
-$as_echo "#define Py_TRACE_REFS 1" >>confdefs.h
+printf "%s\n" "#define Py_TRACE_REFS 1" >>confdefs.h
fi
# Check for --enable-pystats
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-pystats" >&5
-$as_echo_n "checking for --enable-pystats... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-pystats" >&5
+printf %s "checking for --enable-pystats... " >&6; }
# Check whether --enable-pystats was given.
-if test "${enable_pystats+set}" = set; then :
+if test ${enable_pystats+y}
+then :
enableval=$enable_pystats;
-else
+else $as_nop
enable_pystats=no
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_pystats" >&5
-$as_echo "$enable_pystats" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_pystats" >&5
+printf "%s\n" "$enable_pystats" >&6; }
-if test "x$enable_pystats" = xyes; then :
+if test "x$enable_pystats" = xyes
+then :
-$as_echo "#define Py_STATS 1" >>confdefs.h
+printf "%s\n" "#define Py_STATS 1" >>confdefs.h
fi
@@ -7430,11 +8123,12 @@ fi
# Check for --with-assertions.
# This allows enabling assertions without Py_DEBUG.
assertions='false'
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-assertions" >&5
-$as_echo_n "checking for --with-assertions... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-assertions" >&5
+printf %s "checking for --with-assertions... " >&6; }
# Check whether --with-assertions was given.
-if test "${with_assertions+set}" = set; then :
+if test ${with_assertions+y}
+then :
withval=$with_assertions;
if test "$withval" != no
then
@@ -7443,39 +8137,40 @@ fi
fi
if test "$assertions" = 'true'; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
elif test "$Py_DEBUG" = 'true'; then
assertions='true'
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: implied by --with-pydebug" >&5
-$as_echo "implied by --with-pydebug" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: implied by --with-pydebug" >&5
+printf "%s\n" "implied by --with-pydebug" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# Enable optimization flags
Py_OPT='false'
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-optimizations" >&5
-$as_echo_n "checking for --enable-optimizations... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-optimizations" >&5
+printf %s "checking for --enable-optimizations... " >&6; }
# Check whether --enable-optimizations was given.
-if test "${enable_optimizations+set}" = set; then :
+if test ${enable_optimizations+y}
+then :
enableval=$enable_optimizations;
if test "$enableval" != no
then
Py_OPT='true'
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; };
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; };
else
Py_OPT='false'
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; };
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; };
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -7489,11 +8184,12 @@ if test "$Py_OPT" = 'true' ; then
DEF_MAKE_RULE="build_all"
case $CC in
*gcc*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fno-semantic-interposition" >&5
-$as_echo_n "checking whether C compiler accepts -fno-semantic-interposition... " >&6; }
-if ${ax_cv_check_cflags___fno_semantic_interposition+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fno-semantic-interposition" >&5
+printf %s "checking whether C compiler accepts -fno-semantic-interposition... " >&6; }
+if test ${ax_cv_check_cflags___fno_semantic_interposition+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ax_check_save_flags=$CFLAGS
CFLAGS="$CFLAGS -fno-semantic-interposition"
@@ -7501,29 +8197,31 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ax_cv_check_cflags___fno_semantic_interposition=yes
-else
+else $as_nop
ax_cv_check_cflags___fno_semantic_interposition=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
CFLAGS=$ax_check_save_flags
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fno_semantic_interposition" >&5
-$as_echo "$ax_cv_check_cflags___fno_semantic_interposition" >&6; }
-if test "x$ax_cv_check_cflags___fno_semantic_interposition" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fno_semantic_interposition" >&5
+printf "%s\n" "$ax_cv_check_cflags___fno_semantic_interposition" >&6; }
+if test "x$ax_cv_check_cflags___fno_semantic_interposition" = xyes
+then :
CFLAGS_NODIST="$CFLAGS_NODIST -fno-semantic-interposition"
LDFLAGS_NODIST="$LDFLAGS_NODIST -fno-semantic-interposition"
-else
+else $as_nop
:
fi
@@ -7540,14 +8238,14 @@ else
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking PROFILE_TASK" >&5
-$as_echo_n "checking PROFILE_TASK... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking PROFILE_TASK" >&5
+printf %s "checking PROFILE_TASK... " >&6; }
if test -z "$PROFILE_TASK"
then
PROFILE_TASK='-m test --pgo --timeout=$(TESTTIMEOUT)'
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $PROFILE_TASK" >&5
-$as_echo "$PROFILE_TASK" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PROFILE_TASK" >&5
+printf "%s\n" "$PROFILE_TASK" >&6; }
# Make llvm-related checks work on systems where llvm tools are not installed with their
# normal names in the default $PATH (ie: Ubuntu). They exist under the
@@ -7570,35 +8268,36 @@ then
fi
# Enable LTO flags
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-lto" >&5
-$as_echo_n "checking for --with-lto... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-lto" >&5
+printf %s "checking for --with-lto... " >&6; }
# Check whether --with-lto was given.
-if test "${with_lto+set}" = set; then :
+if test ${with_lto+y}
+then :
withval=$with_lto;
case "$withval" in
full)
Py_LTO='true'
Py_LTO_POLICY='full'
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
;;
thin)
Py_LTO='true'
Py_LTO_POLICY='thin'
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
;;
yes)
Py_LTO='true'
Py_LTO_POLICY='default'
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
;;
no)
Py_LTO='false'
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
;;
*)
Py_LTO='false'
@@ -7606,20 +8305,21 @@ $as_echo "no" >&6; }
;;
esac
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "$Py_LTO" = 'true' ; then
case $CC in
*clang*)
LDFLAGS_NOLTO="-fno-lto"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -flto=thin" >&5
-$as_echo_n "checking whether C compiler accepts -flto=thin... " >&6; }
-if ${ax_cv_check_cflags___flto_thin+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -flto=thin" >&5
+printf %s "checking whether C compiler accepts -flto=thin... " >&6; }
+if test ${ax_cv_check_cflags___flto_thin+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ax_check_save_flags=$CFLAGS
CFLAGS="$CFLAGS -flto=thin"
@@ -7627,26 +8327,28 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ax_cv_check_cflags___flto_thin=yes
-else
+else $as_nop
ax_cv_check_cflags___flto_thin=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
CFLAGS=$ax_check_save_flags
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___flto_thin" >&5
-$as_echo "$ax_cv_check_cflags___flto_thin" >&6; }
-if test "x$ax_cv_check_cflags___flto_thin" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___flto_thin" >&5
+printf "%s\n" "$ax_cv_check_cflags___flto_thin" >&6; }
+if test "x$ax_cv_check_cflags___flto_thin" = xyes
+then :
LDFLAGS_NOLTO="-flto=thin"
-else
+else $as_nop
LDFLAGS_NOLTO="-flto"
fi
@@ -7654,11 +8356,12 @@ fi
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}llvm-ar", so it can be a program name with args.
set dummy ${ac_tool_prefix}llvm-ar; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_LLVM_AR+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_LLVM_AR+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $LLVM_AR in
[\\/]* | ?:[\\/]*)
ac_cv_path_LLVM_AR="$LLVM_AR" # Let the user override the test with a path.
@@ -7668,11 +8371,15 @@ else
for as_dir in ${llvm_path}
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_LLVM_AR="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_LLVM_AR="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -7684,11 +8391,11 @@ esac
fi
LLVM_AR=$ac_cv_path_LLVM_AR
if test -n "$LLVM_AR"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LLVM_AR" >&5
-$as_echo "$LLVM_AR" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LLVM_AR" >&5
+printf "%s\n" "$LLVM_AR" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -7697,11 +8404,12 @@ if test -z "$ac_cv_path_LLVM_AR"; then
ac_pt_LLVM_AR=$LLVM_AR
# Extract the first word of "llvm-ar", so it can be a program name with args.
set dummy llvm-ar; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_ac_pt_LLVM_AR+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_ac_pt_LLVM_AR+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $ac_pt_LLVM_AR in
[\\/]* | ?:[\\/]*)
ac_cv_path_ac_pt_LLVM_AR="$ac_pt_LLVM_AR" # Let the user override the test with a path.
@@ -7711,11 +8419,15 @@ else
for as_dir in ${llvm_path}
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_ac_pt_LLVM_AR="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_LLVM_AR="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -7727,11 +8439,11 @@ esac
fi
ac_pt_LLVM_AR=$ac_cv_path_ac_pt_LLVM_AR
if test -n "$ac_pt_LLVM_AR"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_LLVM_AR" >&5
-$as_echo "$ac_pt_LLVM_AR" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_LLVM_AR" >&5
+printf "%s\n" "$ac_pt_LLVM_AR" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_pt_LLVM_AR" = x; then
@@ -7739,8 +8451,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
LLVM_AR=$ac_pt_LLVM_AR
@@ -7764,8 +8476,8 @@ fi
then
LLVM_AR='/usr/bin/xcrun ar'
LLVM_AR_FOUND=found
- { $as_echo "$as_me:${as_lineno-$LINENO}: llvm-ar found via xcrun: ${LLVM_AR}" >&5
-$as_echo "$as_me: llvm-ar found via xcrun: ${LLVM_AR}" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: llvm-ar found via xcrun: ${LLVM_AR}" >&5
+printf "%s\n" "$as_me: llvm-ar found via xcrun: ${LLVM_AR}" >&6;}
fi
fi
if test $LLVM_AR_FOUND = not-found
@@ -7782,11 +8494,12 @@ $as_echo "$as_me: llvm-ar found via xcrun: ${LLVM_AR}" >&6;}
if test $Py_LTO_POLICY = default
then
# Check that ThinLTO is accepted.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -flto=thin" >&5
-$as_echo_n "checking whether C compiler accepts -flto=thin... " >&6; }
-if ${ax_cv_check_cflags___flto_thin+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -flto=thin" >&5
+printf %s "checking whether C compiler accepts -flto=thin... " >&6; }
+if test ${ax_cv_check_cflags___flto_thin+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ax_check_save_flags=$CFLAGS
CFLAGS="$CFLAGS -flto=thin"
@@ -7794,29 +8507,31 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ax_cv_check_cflags___flto_thin=yes
-else
+else $as_nop
ax_cv_check_cflags___flto_thin=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
CFLAGS=$ax_check_save_flags
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___flto_thin" >&5
-$as_echo "$ax_cv_check_cflags___flto_thin" >&6; }
-if test "x$ax_cv_check_cflags___flto_thin" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___flto_thin" >&5
+printf "%s\n" "$ax_cv_check_cflags___flto_thin" >&6; }
+if test "x$ax_cv_check_cflags___flto_thin" = xyes
+then :
LTOFLAGS="-flto=thin -Wl,-export_dynamic -Wl,-object_path_lto,\"\$@\".lto"
LTOCFLAGS="-flto=thin"
-else
+else $as_nop
LTOFLAGS="-flto -Wl,-export_dynamic -Wl,-object_path_lto,\"\$@\".lto"
LTOCFLAGS="-flto"
@@ -7833,11 +8548,12 @@ fi
if test $Py_LTO_POLICY = default
then
# Check that ThinLTO is accepted
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -flto=thin" >&5
-$as_echo_n "checking whether C compiler accepts -flto=thin... " >&6; }
-if ${ax_cv_check_cflags___flto_thin+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -flto=thin" >&5
+printf %s "checking whether C compiler accepts -flto=thin... " >&6; }
+if test ${ax_cv_check_cflags___flto_thin+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ax_check_save_flags=$CFLAGS
CFLAGS="$CFLAGS -flto=thin"
@@ -7845,26 +8561,28 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ax_cv_check_cflags___flto_thin=yes
-else
+else $as_nop
ax_cv_check_cflags___flto_thin=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
CFLAGS=$ax_check_save_flags
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___flto_thin" >&5
-$as_echo "$ax_cv_check_cflags___flto_thin" >&6; }
-if test "x$ax_cv_check_cflags___flto_thin" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___flto_thin" >&5
+printf "%s\n" "$ax_cv_check_cflags___flto_thin" >&6; }
+if test "x$ax_cv_check_cflags___flto_thin" = xyes
+then :
LTOFLAGS="-flto=thin"
-else
+else $as_nop
LTOFLAGS="-flto"
fi
@@ -7920,11 +8638,12 @@ fi
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}llvm-profdata", so it can be a program name with args.
set dummy ${ac_tool_prefix}llvm-profdata; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_LLVM_PROFDATA+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_LLVM_PROFDATA+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $LLVM_PROFDATA in
[\\/]* | ?:[\\/]*)
ac_cv_path_LLVM_PROFDATA="$LLVM_PROFDATA" # Let the user override the test with a path.
@@ -7934,11 +8653,15 @@ else
for as_dir in ${llvm_path}
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_LLVM_PROFDATA="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_LLVM_PROFDATA="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -7950,11 +8673,11 @@ esac
fi
LLVM_PROFDATA=$ac_cv_path_LLVM_PROFDATA
if test -n "$LLVM_PROFDATA"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LLVM_PROFDATA" >&5
-$as_echo "$LLVM_PROFDATA" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LLVM_PROFDATA" >&5
+printf "%s\n" "$LLVM_PROFDATA" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -7963,11 +8686,12 @@ if test -z "$ac_cv_path_LLVM_PROFDATA"; then
ac_pt_LLVM_PROFDATA=$LLVM_PROFDATA
# Extract the first word of "llvm-profdata", so it can be a program name with args.
set dummy llvm-profdata; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_ac_pt_LLVM_PROFDATA+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_ac_pt_LLVM_PROFDATA+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $ac_pt_LLVM_PROFDATA in
[\\/]* | ?:[\\/]*)
ac_cv_path_ac_pt_LLVM_PROFDATA="$ac_pt_LLVM_PROFDATA" # Let the user override the test with a path.
@@ -7977,11 +8701,15 @@ else
for as_dir in ${llvm_path}
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_ac_pt_LLVM_PROFDATA="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_LLVM_PROFDATA="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -7993,11 +8721,11 @@ esac
fi
ac_pt_LLVM_PROFDATA=$ac_cv_path_ac_pt_LLVM_PROFDATA
if test -n "$ac_pt_LLVM_PROFDATA"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_LLVM_PROFDATA" >&5
-$as_echo "$ac_pt_LLVM_PROFDATA" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_LLVM_PROFDATA" >&5
+printf "%s\n" "$ac_pt_LLVM_PROFDATA" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_pt_LLVM_PROFDATA" = x; then
@@ -8005,8 +8733,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
LLVM_PROFDATA=$ac_pt_LLVM_PROFDATA
@@ -8031,8 +8759,8 @@ then
# https://apple.stackexchange.com/questions/197053/
LLVM_PROFDATA='/usr/bin/xcrun llvm-profdata'
LLVM_PROF_FOUND=found
- { $as_echo "$as_me:${as_lineno-$LINENO}: llvm-profdata found via xcrun: ${LLVM_PROFDATA}" >&5
-$as_echo "$as_me: llvm-profdata found via xcrun: ${LLVM_PROFDATA}" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: llvm-profdata found via xcrun: ${LLVM_PROFDATA}" >&5
+printf "%s\n" "$as_me: llvm-profdata found via xcrun: ${LLVM_PROFDATA}" >&6;}
fi
fi
LLVM_PROF_ERR=no
@@ -8086,24 +8814,25 @@ esac
# BOLT optimization. Always configured after PGO since it always runs after PGO.
Py_BOLT='false'
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-bolt" >&5
-$as_echo_n "checking for --enable-bolt... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-bolt" >&5
+printf %s "checking for --enable-bolt... " >&6; }
# Check whether --enable-bolt was given.
-if test "${enable_bolt+set}" = set; then :
+if test ${enable_bolt+y}
+then :
enableval=$enable_bolt;
if test "$enableval" != no
then
Py_BOLT='true'
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; };
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; };
else
Py_BOLT='false'
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; };
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; };
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -8115,11 +8844,12 @@ if test "$Py_BOLT" = 'true' ; then
# -fno-reorder-blocks-and-partition is required for bolt to work.
# Possibly GCC only.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fno-reorder-blocks-and-partition" >&5
-$as_echo_n "checking whether C compiler accepts -fno-reorder-blocks-and-partition... " >&6; }
-if ${ax_cv_check_cflags___fno_reorder_blocks_and_partition+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fno-reorder-blocks-and-partition" >&5
+printf %s "checking whether C compiler accepts -fno-reorder-blocks-and-partition... " >&6; }
+if test ${ax_cv_check_cflags___fno_reorder_blocks_and_partition+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ax_check_save_flags=$CFLAGS
CFLAGS="$CFLAGS -fno-reorder-blocks-and-partition"
@@ -8127,28 +8857,30 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ax_cv_check_cflags___fno_reorder_blocks_and_partition=yes
-else
+else $as_nop
ax_cv_check_cflags___fno_reorder_blocks_and_partition=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
CFLAGS=$ax_check_save_flags
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fno_reorder_blocks_and_partition" >&5
-$as_echo "$ax_cv_check_cflags___fno_reorder_blocks_and_partition" >&6; }
-if test "x$ax_cv_check_cflags___fno_reorder_blocks_and_partition" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fno_reorder_blocks_and_partition" >&5
+printf "%s\n" "$ax_cv_check_cflags___fno_reorder_blocks_and_partition" >&6; }
+if test "x$ax_cv_check_cflags___fno_reorder_blocks_and_partition" = xyes
+then :
CFLAGS_NODIST="$CFLAGS_NODIST -fno-reorder-blocks-and-partition"
-else
+else $as_nop
:
fi
@@ -8164,11 +8896,12 @@ fi
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}llvm-bolt", so it can be a program name with args.
set dummy ${ac_tool_prefix}llvm-bolt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_LLVM_BOLT+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_LLVM_BOLT+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $LLVM_BOLT in
[\\/]* | ?:[\\/]*)
ac_cv_path_LLVM_BOLT="$LLVM_BOLT" # Let the user override the test with a path.
@@ -8178,11 +8911,15 @@ else
for as_dir in ${llvm_path}
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_LLVM_BOLT="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_LLVM_BOLT="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -8194,11 +8931,11 @@ esac
fi
LLVM_BOLT=$ac_cv_path_LLVM_BOLT
if test -n "$LLVM_BOLT"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LLVM_BOLT" >&5
-$as_echo "$LLVM_BOLT" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LLVM_BOLT" >&5
+printf "%s\n" "$LLVM_BOLT" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -8207,11 +8944,12 @@ if test -z "$ac_cv_path_LLVM_BOLT"; then
ac_pt_LLVM_BOLT=$LLVM_BOLT
# Extract the first word of "llvm-bolt", so it can be a program name with args.
set dummy llvm-bolt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_ac_pt_LLVM_BOLT+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_ac_pt_LLVM_BOLT+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $ac_pt_LLVM_BOLT in
[\\/]* | ?:[\\/]*)
ac_cv_path_ac_pt_LLVM_BOLT="$ac_pt_LLVM_BOLT" # Let the user override the test with a path.
@@ -8221,11 +8959,15 @@ else
for as_dir in ${llvm_path}
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_ac_pt_LLVM_BOLT="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_LLVM_BOLT="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -8237,11 +8979,11 @@ esac
fi
ac_pt_LLVM_BOLT=$ac_cv_path_ac_pt_LLVM_BOLT
if test -n "$ac_pt_LLVM_BOLT"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_LLVM_BOLT" >&5
-$as_echo "$ac_pt_LLVM_BOLT" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_LLVM_BOLT" >&5
+printf "%s\n" "$ac_pt_LLVM_BOLT" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_pt_LLVM_BOLT" = x; then
@@ -8249,8 +8991,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
LLVM_BOLT=$ac_pt_LLVM_BOLT
@@ -8261,8 +9003,8 @@ fi
if test -n "${LLVM_BOLT}" -a -x "${LLVM_BOLT}"
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"Found llvm-bolt\"" >&5
-$as_echo "\"Found llvm-bolt\"" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: \"Found llvm-bolt\"" >&5
+printf "%s\n" "\"Found llvm-bolt\"" >&6; }
else
as_fn_error $? "llvm-bolt is required for a --enable-bolt build but could not be found." "$LINENO" 5
fi
@@ -8271,11 +9013,12 @@ $as_echo "\"Found llvm-bolt\"" >&6; }
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}merge-fdata", so it can be a program name with args.
set dummy ${ac_tool_prefix}merge-fdata; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_MERGE_FDATA+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_MERGE_FDATA+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $MERGE_FDATA in
[\\/]* | ?:[\\/]*)
ac_cv_path_MERGE_FDATA="$MERGE_FDATA" # Let the user override the test with a path.
@@ -8285,11 +9028,15 @@ else
for as_dir in ${llvm_path}
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_MERGE_FDATA="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_MERGE_FDATA="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -8301,11 +9048,11 @@ esac
fi
MERGE_FDATA=$ac_cv_path_MERGE_FDATA
if test -n "$MERGE_FDATA"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MERGE_FDATA" >&5
-$as_echo "$MERGE_FDATA" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MERGE_FDATA" >&5
+printf "%s\n" "$MERGE_FDATA" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -8314,11 +9061,12 @@ if test -z "$ac_cv_path_MERGE_FDATA"; then
ac_pt_MERGE_FDATA=$MERGE_FDATA
# Extract the first word of "merge-fdata", so it can be a program name with args.
set dummy merge-fdata; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_ac_pt_MERGE_FDATA+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_ac_pt_MERGE_FDATA+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $ac_pt_MERGE_FDATA in
[\\/]* | ?:[\\/]*)
ac_cv_path_ac_pt_MERGE_FDATA="$ac_pt_MERGE_FDATA" # Let the user override the test with a path.
@@ -8328,11 +9076,15 @@ else
for as_dir in ${llvm_path}
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_ac_pt_MERGE_FDATA="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_MERGE_FDATA="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -8344,11 +9096,11 @@ esac
fi
ac_pt_MERGE_FDATA=$ac_cv_path_ac_pt_MERGE_FDATA
if test -n "$ac_pt_MERGE_FDATA"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_MERGE_FDATA" >&5
-$as_echo "$ac_pt_MERGE_FDATA" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_MERGE_FDATA" >&5
+printf "%s\n" "$ac_pt_MERGE_FDATA" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_pt_MERGE_FDATA" = x; then
@@ -8356,8 +9108,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
MERGE_FDATA=$ac_pt_MERGE_FDATA
@@ -8368,8 +9120,8 @@ fi
if test -n "${MERGE_FDATA}" -a -x "${MERGE_FDATA}"
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"Found merge-fdata\"" >&5
-$as_echo "\"Found merge-fdata\"" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: \"Found merge-fdata\"" >&5
+printf "%s\n" "\"Found merge-fdata\"" >&6; }
else
as_fn_error $? "merge-fdata is required for a --enable-bolt build but could not be found." "$LINENO" 5
fi
@@ -8377,33 +9129,33 @@ fi
BOLT_BINARIES='$(BUILDPYTHON)'
-if test "x$enable_shared" = xyes; then :
+if test "x$enable_shared" = xyes
+then :
BOLT_BINARIES="${BOLT_BINARIES} \$(INSTSONAME)"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking BOLT_INSTRUMENT_FLAGS" >&5
-$as_echo_n "checking BOLT_INSTRUMENT_FLAGS... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking BOLT_INSTRUMENT_FLAGS" >&5
+printf %s "checking BOLT_INSTRUMENT_FLAGS... " >&6; }
if test -z "${BOLT_INSTRUMENT_FLAGS}"
then
BOLT_INSTRUMENT_FLAGS=
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOLT_INSTRUMENT_FLAGS" >&5
-$as_echo "$BOLT_INSTRUMENT_FLAGS" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $BOLT_INSTRUMENT_FLAGS" >&5
+printf "%s\n" "$BOLT_INSTRUMENT_FLAGS" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking BOLT_APPLY_FLAGS" >&5
-$as_echo_n "checking BOLT_APPLY_FLAGS... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking BOLT_APPLY_FLAGS" >&5
+printf %s "checking BOLT_APPLY_FLAGS... " >&6; }
if test -z "${BOLT_APPLY_FLAGS}"
then
- BOLT_APPLY_FLAGS=-update-debug-sections -reorder-blocks=ext-tsp -reorder-functions=hfsort+ -split-functions -icf=1 -inline-all -split-eh -reorder-functions-use-hot-size -peepholes=none -jump-tables=aggressive -inline-ap -indirect-call-promotion=all -dyno-stats -use-gnu-stack -frame-opt=hot
-
+ BOLT_APPLY_FLAGS=" -update-debug-sections -reorder-blocks=ext-tsp -reorder-functions=hfsort+ -split-functions -icf=1 -inline-all -split-eh -reorder-functions-use-hot-size -peepholes=none -jump-tables=aggressive -inline-ap -indirect-call-promotion=all -dyno-stats -use-gnu-stack -frame-opt=hot "
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOLT_APPLY_FLAGS" >&5
-$as_echo "$BOLT_APPLY_FLAGS" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $BOLT_APPLY_FLAGS" >&5
+printf "%s\n" "$BOLT_APPLY_FLAGS" >&6; }
# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
# merged with this chunk of code?
@@ -8433,76 +9185,82 @@ esac
save_CFLAGS=$CFLAGS
CFLAGS="-fstrict-overflow -fno-strict-overflow"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -fstrict-overflow and -fno-strict-overflow" >&5
-$as_echo_n "checking if $CC supports -fstrict-overflow and -fno-strict-overflow... " >&6; }
-if ${ac_cv_cc_supports_fstrict_overflow+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -fstrict-overflow and -fno-strict-overflow" >&5
+printf %s "checking if $CC supports -fstrict-overflow and -fno-strict-overflow... " >&6; }
+if test ${ac_cv_cc_supports_fstrict_overflow+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_cc_supports_fstrict_overflow=yes
-else
+else $as_nop
ac_cv_cc_supports_fstrict_overflow=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cc_supports_fstrict_overflow" >&5
-$as_echo "$ac_cv_cc_supports_fstrict_overflow" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cc_supports_fstrict_overflow" >&5
+printf "%s\n" "$ac_cv_cc_supports_fstrict_overflow" >&6; }
CFLAGS=$save_CFLAGS
-if test "x$ac_cv_cc_supports_fstrict_overflow" = xyes; then :
+if test "x$ac_cv_cc_supports_fstrict_overflow" = xyes
+then :
STRICT_OVERFLOW_CFLAGS="-fstrict-overflow"
NO_STRICT_OVERFLOW_CFLAGS="-fno-strict-overflow"
-else
+else $as_nop
STRICT_OVERFLOW_CFLAGS=""
NO_STRICT_OVERFLOW_CFLAGS=""
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-strict-overflow" >&5
-$as_echo_n "checking for --with-strict-overflow... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-strict-overflow" >&5
+printf %s "checking for --with-strict-overflow... " >&6; }
# Check whether --with-strict-overflow was given.
-if test "${with_strict_overflow+set}" = set; then :
+if test ${with_strict_overflow+y}
+then :
withval=$with_strict_overflow;
- if test "x$ac_cv_cc_supports_fstrict_overflow" = xno; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --with-strict-overflow=yes requires a compiler that supports -fstrict-overflow" >&5
-$as_echo "$as_me: WARNING: --with-strict-overflow=yes requires a compiler that supports -fstrict-overflow" >&2;}
+ if test "x$ac_cv_cc_supports_fstrict_overflow" = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: --with-strict-overflow=yes requires a compiler that supports -fstrict-overflow" >&5
+printf "%s\n" "$as_me: WARNING: --with-strict-overflow=yes requires a compiler that supports -fstrict-overflow" >&2;}
fi
-else
+else $as_nop
with_strict_overflow=no
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_strict_overflow" >&5
-$as_echo "$with_strict_overflow" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_strict_overflow" >&5
+printf "%s\n" "$with_strict_overflow" >&6; }
# Check if CC supports -Og optimization level
save_CFLAGS=$CFLAGS
CFLAGS="-Og"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Og optimization level" >&5
-$as_echo_n "checking if $CC supports -Og optimization level... " >&6; }
-if ${ac_cv_cc_supports_og+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Og optimization level" >&5
+printf %s "checking if $CC supports -Og optimization level... " >&6; }
+if test ${ac_cv_cc_supports_og+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
@@ -8510,26 +9268,28 @@ main ()
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_cc_supports_og=yes
-else
+else $as_nop
ac_cv_cc_supports_og=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cc_supports_og" >&5
-$as_echo "$ac_cv_cc_supports_og" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cc_supports_og" >&5
+printf "%s\n" "$ac_cv_cc_supports_og" >&6; }
CFLAGS=$save_CFLAGS
# Optimization messes up debuggers, so turn it off for
# debug builds.
PYDEBUG_CFLAGS="-O0"
-if test "x$ac_cv_cc_supports_og" = xyes; then :
+if test "x$ac_cv_cc_supports_og" = xyes
+then :
PYDEBUG_CFLAGS="-Og"
fi
@@ -8577,9 +9337,10 @@ fi
case $ac_sys_system in #(
Emscripten) :
- if test "x$Py_DEBUG" = xyes; then :
+ if test "x$Py_DEBUG" = xyes
+then :
wasm_debug=yes
-else
+else $as_nop
wasm_debug=no
fi
@@ -8589,13 +9350,15 @@ fi
as_fn_append LDFLAGS_NODIST " -sFORCE_FILESYSTEM -lidbfs.js -lnodefs.js -lproxyfs.js -lworkerfs.js"
- if test "x$enable_wasm_dynamic_linking" = xyes; then :
+ if test "x$enable_wasm_dynamic_linking" = xyes
+then :
as_fn_append LINKFORSHARED " -sMAIN_MODULE"
fi
- if test "x$enable_wasm_pthreads" = xyes; then :
+ if test "x$enable_wasm_pthreads" = xyes
+then :
as_fn_append CFLAGS_NODIST " -pthread"
as_fn_append LDFLAGS_NODIST " -sUSE_PTHREADS"
@@ -8606,7 +9369,8 @@ fi
case $ac_sys_emscripten_target in #(
browser*) :
- if test "x$ac_sys_emscripten_target" = xbrowser-debug; then :
+ if test "x$ac_sys_emscripten_target" = xbrowser-debug
+then :
wasm_debug=yes
fi
as_fn_append LINKFORSHARED " --preload-file=\$(WASM_ASSETS_DIR)"
@@ -8616,7 +9380,8 @@ fi
;; #(
node*) :
- if test "x$ac_sys_emscripten_target" = xnode-debug; then :
+ if test "x$ac_sys_emscripten_target" = xnode-debug
+then :
wasm_debug=yes
fi
as_fn_append LDFLAGS_NODIST " -sALLOW_MEMORY_GROWTH -sNODERAWFS"
@@ -8628,12 +9393,13 @@ fi
;;
esac
- if test "x$wasm_debug" = xyes; then :
+ if test "x$wasm_debug" = xyes
+then :
as_fn_append LDFLAGS_NODIST " -sASSERTIONS"
as_fn_append LINKFORSHARED " $WASM_LINKFORSHARED_DEBUG"
-else
+else $as_nop
as_fn_append LINKFORSHARED " -O2 -g0"
@@ -8642,13 +9408,13 @@ fi
WASI) :
-$as_echo "#define _WASI_EMULATED_SIGNAL 1" >>confdefs.h
+printf "%s\n" "#define _WASI_EMULATED_SIGNAL 1" >>confdefs.h
-$as_echo "#define _WASI_EMULATED_GETPID 1" >>confdefs.h
+printf "%s\n" "#define _WASI_EMULATED_GETPID 1" >>confdefs.h
-$as_echo "#define _WASI_EMULATED_PROCESS_CLOCKS 1" >>confdefs.h
+printf "%s\n" "#define _WASI_EMULATED_PROCESS_CLOCKS 1" >>confdefs.h
LIBS="$LIBS -lwasi-emulated-signal -lwasi-emulated-getpid -lwasi-emulated-process-clocks"
echo "#define _WASI_EMULATED_SIGNAL 1" >> confdefs.h
@@ -8686,9 +9452,10 @@ UNIVERSAL_ARCH_FLAGS=
# tweak BASECFLAGS based on compiler and platform
-if test "x$with_strict_overflow" = xyes; then :
+if test "x$with_strict_overflow" = xyes
+then :
BASECFLAGS="$BASECFLAGS $STRICT_OVERFLOW_CFLAGS"
-else
+else $as_nop
BASECFLAGS="$BASECFLAGS $NO_STRICT_OVERFLOW_CFLAGS"
fi
@@ -8698,11 +9465,12 @@ yes)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can add -Wextra" >&5
-$as_echo_n "checking if we can add -Wextra... " >&6; }
-if ${ac_cv_enable_extra_warning+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can add -Wextra" >&5
+printf %s "checking if we can add -Wextra... " >&6; }
+if test ${ac_cv_enable_extra_warning+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
py_cflags=$CFLAGS
as_fn_append CFLAGS "-Wextra -Werror"
@@ -8710,27 +9478,29 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_enable_extra_warning=yes
-else
+else $as_nop
ac_cv_enable_extra_warning=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
CFLAGS=$py_cflags
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_enable_extra_warning" >&5
-$as_echo "$ac_cv_enable_extra_warning" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_enable_extra_warning" >&5
+printf "%s\n" "$ac_cv_enable_extra_warning" >&6; }
- if test "x$ac_cv_enable_extra_warning" = xyes; then :
+ if test "x$ac_cv_enable_extra_warning" = xyes
+then :
CFLAGS_NODIST="$CFLAGS_NODIST -Wextra"
fi
@@ -8741,17 +9511,18 @@ fi
ac_save_cc="$CC"
CC="$CC -fno-strict-aliasing"
save_CFLAGS="$CFLAGS"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts and needs -fno-strict-aliasing" >&5
-$as_echo_n "checking whether $CC accepts and needs -fno-strict-aliasing... " >&6; }
-if ${ac_cv_no_strict_aliasing+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts and needs -fno-strict-aliasing" >&5
+printf %s "checking whether $CC accepts and needs -fno-strict-aliasing... " >&6; }
+if test ${ac_cv_no_strict_aliasing+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
@@ -8759,7 +9530,8 @@ main ()
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
CC="$ac_save_cc -fstrict-aliasing"
CFLAGS="$CFLAGS -Werror -Wstrict-aliasing"
@@ -8768,7 +9540,7 @@ if ac_fn_c_try_compile "$LINENO"; then :
void f(int **x) {}
int
-main ()
+main (void)
{
double *x; f((int **) &x);
;
@@ -8776,29 +9548,31 @@ double *x; f((int **) &x);
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_no_strict_aliasing=no
-else
+else $as_nop
ac_cv_no_strict_aliasing=yes
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-else
+else $as_nop
ac_cv_no_strict_aliasing=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_no_strict_aliasing" >&5
-$as_echo "$ac_cv_no_strict_aliasing" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_no_strict_aliasing" >&5
+printf "%s\n" "$ac_cv_no_strict_aliasing" >&6; }
CFLAGS="$save_CFLAGS"
CC="$ac_save_cc"
- if test "x$ac_cv_no_strict_aliasing" = xyes; then :
+ if test "x$ac_cv_no_strict_aliasing" = xyes
+then :
BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
fi
@@ -8809,11 +9583,12 @@ fi
ac_cv_disable_unused_result_warning=no
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can disable $CC unused-result warning" >&5
-$as_echo_n "checking if we can disable $CC unused-result warning... " >&6; }
-if ${ac_cv_disable_unused_result_warning+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can disable $CC unused-result warning" >&5
+printf %s "checking if we can disable $CC unused-result warning... " >&6; }
+if test ${ac_cv_disable_unused_result_warning+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
py_cflags=$CFLAGS
as_fn_append CFLAGS "-Wunused-result -Werror"
@@ -8821,41 +9596,44 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_disable_unused_result_warning=yes
-else
+else $as_nop
ac_cv_disable_unused_result_warning=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
CFLAGS=$py_cflags
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_disable_unused_result_warning" >&5
-$as_echo "$ac_cv_disable_unused_result_warning" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_disable_unused_result_warning" >&5
+printf "%s\n" "$ac_cv_disable_unused_result_warning" >&6; }
;; #(
*) :
;;
esac
- if test "x$ac_cv_disable_unused_result_warning" = xyes; then :
+ if test "x$ac_cv_disable_unused_result_warning" = xyes
+then :
BASECFLAGS="$BASECFLAGS -Wno-unused-result"
CFLAGS_NODIST="$CFLAGS_NODIST -Wno-unused-result"
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can disable $CC unused-parameter warning" >&5
-$as_echo_n "checking if we can disable $CC unused-parameter warning... " >&6; }
-if ${ac_cv_disable_unused_parameter_warning+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can disable $CC unused-parameter warning" >&5
+printf %s "checking if we can disable $CC unused-parameter warning... " >&6; }
+if test ${ac_cv_disable_unused_parameter_warning+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
py_cflags=$CFLAGS
as_fn_append CFLAGS "-Wunused-parameter -Werror"
@@ -8863,37 +9641,40 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_disable_unused_parameter_warning=yes
-else
+else $as_nop
ac_cv_disable_unused_parameter_warning=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
CFLAGS=$py_cflags
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_disable_unused_parameter_warning" >&5
-$as_echo "$ac_cv_disable_unused_parameter_warning" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_disable_unused_parameter_warning" >&5
+printf "%s\n" "$ac_cv_disable_unused_parameter_warning" >&6; }
- if test "x$ac_cv_disable_unused_parameter_warning" = xyes; then :
+ if test "x$ac_cv_disable_unused_parameter_warning" = xyes
+then :
CFLAGS_NODIST="$CFLAGS_NODIST -Wno-unused-parameter"
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can disable $CC int-conversion warning" >&5
-$as_echo_n "checking if we can disable $CC int-conversion warning... " >&6; }
-if ${ac_cv_disable_int_conversion_warning+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can disable $CC int-conversion warning" >&5
+printf %s "checking if we can disable $CC int-conversion warning... " >&6; }
+if test ${ac_cv_disable_int_conversion_warning+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
py_cflags=$CFLAGS
as_fn_append CFLAGS "-Wint-conversion -Werror"
@@ -8901,37 +9682,40 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_disable_int_conversion_warning=yes
-else
+else $as_nop
ac_cv_disable_int_conversion_warning=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
CFLAGS=$py_cflags
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_disable_int_conversion_warning" >&5
-$as_echo "$ac_cv_disable_int_conversion_warning" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_disable_int_conversion_warning" >&5
+printf "%s\n" "$ac_cv_disable_int_conversion_warning" >&6; }
- if test "x$ac_cv_disable_int_conversion" = xyes; then :
+ if test "x$ac_cv_disable_int_conversion" = xyes
+then :
CFLAGS_NODIST="$CFLAGS_NODIST -Wno-int-conversion"
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can disable $CC missing-field-initializers warning" >&5
-$as_echo_n "checking if we can disable $CC missing-field-initializers warning... " >&6; }
-if ${ac_cv_disable_missing_field_initializers_warning+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can disable $CC missing-field-initializers warning" >&5
+printf %s "checking if we can disable $CC missing-field-initializers warning... " >&6; }
+if test ${ac_cv_disable_missing_field_initializers_warning+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
py_cflags=$CFLAGS
as_fn_append CFLAGS "-Wmissing-field-initializers -Werror"
@@ -8939,37 +9723,40 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_disable_missing_field_initializers_warning=yes
-else
+else $as_nop
ac_cv_disable_missing_field_initializers_warning=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
CFLAGS=$py_cflags
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_disable_missing_field_initializers_warning" >&5
-$as_echo "$ac_cv_disable_missing_field_initializers_warning" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_disable_missing_field_initializers_warning" >&5
+printf "%s\n" "$ac_cv_disable_missing_field_initializers_warning" >&6; }
- if test "x$ac_cv_disable_missing_field_initializers_warning" = xyes; then :
+ if test "x$ac_cv_disable_missing_field_initializers_warning" = xyes
+then :
CFLAGS_NODIST="$CFLAGS_NODIST -Wno-missing-field-initializers"
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can enable $CC sign-compare warning" >&5
-$as_echo_n "checking if we can enable $CC sign-compare warning... " >&6; }
-if ${ac_cv_enable_sign_compare_warning+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can enable $CC sign-compare warning" >&5
+printf %s "checking if we can enable $CC sign-compare warning... " >&6; }
+if test ${ac_cv_enable_sign_compare_warning+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
py_cflags=$CFLAGS
as_fn_append CFLAGS "-Wsign-compare -Werror"
@@ -8977,37 +9764,40 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_enable_sign_compare_warning=yes
-else
+else $as_nop
ac_cv_enable_sign_compare_warning=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
CFLAGS=$py_cflags
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_enable_sign_compare_warning" >&5
-$as_echo "$ac_cv_enable_sign_compare_warning" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_enable_sign_compare_warning" >&5
+printf "%s\n" "$ac_cv_enable_sign_compare_warning" >&6; }
- if test "x$ac_cv_enable_sign_compare_warning" = xyes; then :
+ if test "x$ac_cv_enable_sign_compare_warning" = xyes
+then :
BASECFLAGS="$BASECFLAGS -Wsign-compare"
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can enable $CC unreachable-code warning" >&5
-$as_echo_n "checking if we can enable $CC unreachable-code warning... " >&6; }
-if ${ac_cv_enable_unreachable_code_warning+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can enable $CC unreachable-code warning" >&5
+printf %s "checking if we can enable $CC unreachable-code warning... " >&6; }
+if test ${ac_cv_enable_unreachable_code_warning+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
py_cflags=$CFLAGS
as_fn_append CFLAGS "-Wunreachable-code -Werror"
@@ -9015,24 +9805,25 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_enable_unreachable_code_warning=yes
-else
+else $as_nop
ac_cv_enable_unreachable_code_warning=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
CFLAGS=$py_cflags
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_enable_unreachable_code_warning" >&5
-$as_echo "$ac_cv_enable_unreachable_code_warning" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_enable_unreachable_code_warning" >&5
+printf "%s\n" "$ac_cv_enable_unreachable_code_warning" >&6; }
# Don't enable unreachable code warning in debug mode, since it usually
@@ -9053,11 +9844,12 @@ $as_echo "$ac_cv_enable_unreachable_code_warning" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can enable $CC strict-prototypes warning" >&5
-$as_echo_n "checking if we can enable $CC strict-prototypes warning... " >&6; }
-if ${ac_cv_enable_strict_prototypes_warning+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can enable $CC strict-prototypes warning" >&5
+printf %s "checking if we can enable $CC strict-prototypes warning... " >&6; }
+if test ${ac_cv_enable_strict_prototypes_warning+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
py_cflags=$CFLAGS
as_fn_append CFLAGS "-Wstrict-prototypes -Werror"
@@ -9065,43 +9857,46 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_enable_strict_prototypes_warning=yes
-else
+else $as_nop
ac_cv_enable_strict_prototypes_warning=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
CFLAGS=$py_cflags
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_enable_strict_prototypes_warning" >&5
-$as_echo "$ac_cv_enable_strict_prototypes_warning" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_enable_strict_prototypes_warning" >&5
+printf "%s\n" "$ac_cv_enable_strict_prototypes_warning" >&6; }
- if test "x$ac_cv_enable_strict_prototypes_warning" = xyes; then :
+ if test "x$ac_cv_enable_strict_prototypes_warning" = xyes
+then :
CFLAGS_NODIST="$CFLAGS_NODIST -Wstrict-prototypes"
fi
ac_save_cc="$CC"
CC="$CC -Werror=implicit-function-declaration"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can make implicit function declaration an error in $CC" >&5
-$as_echo_n "checking if we can make implicit function declaration an error in $CC... " >&6; }
-if ${ac_cv_enable_implicit_function_declaration_error+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can make implicit function declaration an error in $CC" >&5
+printf %s "checking if we can make implicit function declaration an error in $CC... " >&6; }
+if test ${ac_cv_enable_implicit_function_declaration_error+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
@@ -9109,38 +9904,41 @@ main ()
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_enable_implicit_function_declaration_error=yes
-else
+else $as_nop
ac_cv_enable_implicit_function_declaration_error=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_enable_implicit_function_declaration_error" >&5
-$as_echo "$ac_cv_enable_implicit_function_declaration_error" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_enable_implicit_function_declaration_error" >&5
+printf "%s\n" "$ac_cv_enable_implicit_function_declaration_error" >&6; }
CC="$ac_save_cc"
- if test "x$ac_cv_enable_implicit_function_declaration_error" = xyes; then :
+ if test "x$ac_cv_enable_implicit_function_declaration_error" = xyes
+then :
CFLAGS_NODIST="$CFLAGS_NODIST -Werror=implicit-function-declaration"
fi
ac_save_cc="$CC"
CC="$CC -fvisibility=hidden"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can use visibility in $CC" >&5
-$as_echo_n "checking if we can use visibility in $CC... " >&6; }
-if ${ac_cv_enable_visibility+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can use visibility in $CC" >&5
+printf %s "checking if we can use visibility in $CC... " >&6; }
+if test ${ac_cv_enable_visibility+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
@@ -9148,22 +9946,24 @@ main ()
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_enable_visibility=yes
-else
+else $as_nop
ac_cv_enable_visibility=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_enable_visibility" >&5
-$as_echo "$ac_cv_enable_visibility" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_enable_visibility" >&5
+printf "%s\n" "$ac_cv_enable_visibility" >&6; }
CC="$ac_save_cc"
- if test "x$ac_cv_enable_visibility" = xyes; then :
+ if test "x$ac_cv_enable_visibility" = xyes
+then :
CFLAGS_NODIST="$CFLAGS_NODIST -fvisibility=hidden"
fi
@@ -9186,8 +9986,8 @@ fi
# used to be here, but non-Apple gcc doesn't accept them.
if test "${CC}" = gcc
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking which compiler should be used" >&5
-$as_echo_n "checking which compiler should be used... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which compiler should be used" >&5
+printf %s "checking which compiler should be used... " >&6; }
case "${UNIVERSALSDK}" in
*/MacOSX10.4u.sdk)
# Build using 10.4 SDK, force usage of gcc when the
@@ -9197,8 +9997,8 @@ $as_echo_n "checking which compiler should be used... " >&6; }
CPP=cpp-4.0
;;
esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
fi
LIPO_INTEL64_FLAGS=""
@@ -9275,8 +10075,8 @@ $as_echo "$CC" >&6; }
# below to pick either 10.3, 10.4, or 10.5 as the target.
# 4. If we are running on OS X 10.2 or earlier, good luck!
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking which MACOSX_DEPLOYMENT_TARGET to use" >&5
-$as_echo_n "checking which MACOSX_DEPLOYMENT_TARGET to use... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which MACOSX_DEPLOYMENT_TARGET to use" >&5
+printf %s "checking which MACOSX_DEPLOYMENT_TARGET to use... " >&6; }
cur_target_major=`sw_vers -productVersion | \
sed 's/\([0-9]*\)\.\([0-9]*\).*/\1/'`
cur_target_minor=`sw_vers -productVersion | \
@@ -9313,32 +10113,33 @@ $as_echo_n "checking which MACOSX_DEPLOYMENT_TARGET to use... " >&6; }
MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
export MACOSX_DEPLOYMENT_TARGET
EXPORT_MACOSX_DEPLOYMENT_TARGET=''
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MACOSX_DEPLOYMENT_TARGET" >&5
-$as_echo "$MACOSX_DEPLOYMENT_TARGET" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MACOSX_DEPLOYMENT_TARGET" >&5
+printf "%s\n" "$MACOSX_DEPLOYMENT_TARGET" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if specified universal architectures work" >&5
-$as_echo_n "checking if specified universal architectures work... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if specified universal architectures work" >&5
+printf %s "checking if specified universal architectures work... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
int
-main ()
+main (void)
{
printf("%d", 42);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
as_fn_error $? "check config.log and use the '--with-universal-archs' option" "$LINENO" 5
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
# end of Darwin* tests
@@ -9384,14 +10185,16 @@ fi
# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
# So we have to see first whether pthreads are available without
# options before we can check whether -Kpthread improves anything.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads are available without options" >&5
-$as_echo_n "checking whether pthreads are available without options... " >&6; }
-if ${ac_cv_pthread_is_default+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads are available without options" >&5
+printf %s "checking whether pthreads are available without options... " >&6; }
+if test ${ac_cv_pthread_is_default+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
ac_cv_pthread_is_default=no
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -9409,13 +10212,14 @@ int main(void){
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ac_cv_pthread_is_default=yes
ac_cv_kthread=no
ac_cv_pthread=no
-else
+else $as_nop
ac_cv_pthread_is_default=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -9424,8 +10228,8 @@ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_pthread_is_default" >&5
-$as_echo "$ac_cv_pthread_is_default" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_pthread_is_default" >&5
+printf "%s\n" "$ac_cv_pthread_is_default" >&6; }
if test $ac_cv_pthread_is_default = yes
@@ -9437,16 +10241,18 @@ else
# Some compilers won't report that they do not support -Kpthread,
# so we need to run a program to see whether it really made the
# function available.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -Kpthread" >&5
-$as_echo_n "checking whether $CC accepts -Kpthread... " >&6; }
-if ${ac_cv_kpthread+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -Kpthread" >&5
+printf %s "checking whether $CC accepts -Kpthread... " >&6; }
+if test ${ac_cv_kpthread+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_save_cc="$CC"
CC="$CC -Kpthread"
-if test "$cross_compiling" = yes; then :
+if test "$cross_compiling" = yes
+then :
ac_cv_kpthread=no
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -9464,9 +10270,10 @@ int main(void){
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ac_cv_kpthread=yes
-else
+else $as_nop
ac_cv_kpthread=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -9475,8 +10282,8 @@ fi
CC="$ac_save_cc"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_kpthread" >&5
-$as_echo "$ac_cv_kpthread" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_kpthread" >&5
+printf "%s\n" "$ac_cv_kpthread" >&6; }
fi
if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
@@ -9486,16 +10293,18 @@ then
# Some compilers won't report that they do not support -Kthread,
# so we need to run a program to see whether it really made the
# function available.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -Kthread" >&5
-$as_echo_n "checking whether $CC accepts -Kthread... " >&6; }
-if ${ac_cv_kthread+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -Kthread" >&5
+printf %s "checking whether $CC accepts -Kthread... " >&6; }
+if test ${ac_cv_kthread+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_save_cc="$CC"
CC="$CC -Kthread"
-if test "$cross_compiling" = yes; then :
+if test "$cross_compiling" = yes
+then :
ac_cv_kthread=no
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -9513,9 +10322,10 @@ int main(void){
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ac_cv_kthread=yes
-else
+else $as_nop
ac_cv_kthread=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -9524,8 +10334,8 @@ fi
CC="$ac_save_cc"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_kthread" >&5
-$as_echo "$ac_cv_kthread" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_kthread" >&5
+printf "%s\n" "$ac_cv_kthread" >&6; }
fi
if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
@@ -9535,16 +10345,18 @@ then
# Some compilers won't report that they do not support -pthread,
# so we need to run a program to see whether it really made the
# function available.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -pthread" >&5
-$as_echo_n "checking whether $CC accepts -pthread... " >&6; }
-if ${ac_cv_pthread+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -pthread" >&5
+printf %s "checking whether $CC accepts -pthread... " >&6; }
+if test ${ac_cv_pthread+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_save_cc="$CC"
CC="$CC -pthread"
-if test "$cross_compiling" = yes; then :
+if test "$cross_compiling" = yes
+then :
ac_cv_pthread=no
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -9562,9 +10374,10 @@ int main(void){
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ac_cv_pthread=yes
-else
+else $as_nop
ac_cv_pthread=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -9573,19 +10386,20 @@ fi
CC="$ac_save_cc"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_pthread" >&5
-$as_echo "$ac_cv_pthread" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_pthread" >&5
+printf "%s\n" "$ac_cv_pthread" >&6; }
fi
# If we have set a CC compiler flag for thread support then
# check if it works for CXX, too.
if test ! -z "$CXX"
then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX also accepts flags for thread support" >&5
-$as_echo_n "checking whether $CXX also accepts flags for thread support... " >&6; }
-if ${ac_cv_cxx_thread+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX also accepts flags for thread support" >&5
+printf %s "checking whether $CXX also accepts flags for thread support... " >&6; }
+if test ${ac_cv_cxx_thread+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_save_cxx="$CXX"
if test "$ac_cv_kpthread" = "yes"
@@ -9619,503 +10433,973 @@ then
fi
CXX="$ac_save_cxx"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_thread" >&5
-$as_echo "$ac_cv_cxx_thread" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_thread" >&5
+printf "%s\n" "$ac_cv_cxx_thread" >&6; }
else
ac_cv_cxx_thread=no
fi
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h
# checks for header files
-for ac_header in \
- alloca.h asm/types.h bluetooth.h conio.h crypt.h direct.h dlfcn.h endian.h errno.h fcntl.h grp.h \
- ieeefp.h io.h langinfo.h libintl.h libutil.h linux/auxvec.h sys/auxv.h linux/fs.h linux/memfd.h \
- linux/random.h linux/soundcard.h \
- linux/tipc.h linux/wait.h netdb.h net/ethernet.h netinet/in.h netpacket/packet.h poll.h process.h pthread.h pty.h \
- sched.h setjmp.h shadow.h signal.h spawn.h stropts.h sys/audioio.h sys/bsdtty.h sys/devpoll.h \
- sys/endian.h sys/epoll.h sys/event.h sys/eventfd.h sys/file.h sys/ioctl.h sys/kern_control.h \
- sys/loadavg.h sys/lock.h sys/memfd.h sys/mkdev.h sys/mman.h sys/modem.h sys/param.h sys/poll.h \
- sys/random.h sys/resource.h sys/select.h sys/sendfile.h sys/socket.h sys/soundcard.h sys/stat.h \
- sys/statvfs.h sys/sys_domain.h sys/syscall.h sys/sysmacros.h sys/termio.h sys/time.h sys/times.h \
- sys/types.h sys/uio.h sys/un.h sys/utsname.h sys/wait.h sys/xattr.h sysexits.h syslog.h \
- termios.h util.h utime.h utmp.h \
+ac_fn_c_check_header_compile "$LINENO" "alloca.h" "ac_cv_header_alloca_h" "$ac_includes_default"
+if test "x$ac_cv_header_alloca_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_ALLOCA_H 1" >>confdefs.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_header_compile "$LINENO" "asm/types.h" "ac_cv_header_asm_types_h" "$ac_includes_default"
+if test "x$ac_cv_header_asm_types_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_ASM_TYPES_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "bluetooth.h" "ac_cv_header_bluetooth_h" "$ac_includes_default"
+if test "x$ac_cv_header_bluetooth_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_BLUETOOTH_H 1" >>confdefs.h
-done
+fi
+ac_fn_c_check_header_compile "$LINENO" "conio.h" "ac_cv_header_conio_h" "$ac_includes_default"
+if test "x$ac_cv_header_conio_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_CONIO_H 1" >>confdefs.h
-ac_header_dirent=no
-for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
- as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5
-$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; }
-if eval \${$as_ac_Header+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include
-#include <$ac_hdr>
+fi
+ac_fn_c_check_header_compile "$LINENO" "crypt.h" "ac_cv_header_crypt_h" "$ac_includes_default"
+if test "x$ac_cv_header_crypt_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_CRYPT_H 1" >>confdefs.h
-int
-main ()
-{
-if ((DIR *) 0)
-return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- eval "$as_ac_Header=yes"
-else
- eval "$as_ac_Header=no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_fn_c_check_header_compile "$LINENO" "direct.h" "ac_cv_header_direct_h" "$ac_includes_default"
+if test "x$ac_cv_header_direct_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_DIRECT_H 1" >>confdefs.h
+
fi
-eval ac_res=\$$as_ac_Header
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
-_ACEOF
+ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default"
+if test "x$ac_cv_header_dlfcn_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h
-ac_header_dirent=$ac_hdr; break
fi
+ac_fn_c_check_header_compile "$LINENO" "endian.h" "ac_cv_header_endian_h" "$ac_includes_default"
+if test "x$ac_cv_header_endian_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_ENDIAN_H 1" >>confdefs.h
-done
-# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
-if test $ac_header_dirent = dirent.h; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
-$as_echo_n "checking for library containing opendir... " >&6; }
-if ${ac_cv_search_opendir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
+fi
+ac_fn_c_check_header_compile "$LINENO" "errno.h" "ac_cv_header_errno_h" "$ac_includes_default"
+if test "x$ac_cv_header_errno_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_ERRNO_H 1" >>confdefs.h
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char opendir ();
-int
-main ()
-{
-return opendir ();
- ;
- return 0;
-}
-_ACEOF
-for ac_lib in '' dir; do
- if test -z "$ac_lib"; then
- ac_res="none required"
- else
- ac_res=-l$ac_lib
- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
- fi
- if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_search_opendir=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext
- if ${ac_cv_search_opendir+:} false; then :
- break
+ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "$ac_includes_default"
+if test "x$ac_cv_header_fcntl_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_FCNTL_H 1" >>confdefs.h
+
fi
-done
-if ${ac_cv_search_opendir+:} false; then :
+ac_fn_c_check_header_compile "$LINENO" "grp.h" "ac_cv_header_grp_h" "$ac_includes_default"
+if test "x$ac_cv_header_grp_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_GRP_H 1" >>confdefs.h
-else
- ac_cv_search_opendir=no
fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
+ac_fn_c_check_header_compile "$LINENO" "ieeefp.h" "ac_cv_header_ieeefp_h" "$ac_includes_default"
+if test "x$ac_cv_header_ieeefp_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_IEEEFP_H 1" >>confdefs.h
+
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
-$as_echo "$ac_cv_search_opendir" >&6; }
-ac_res=$ac_cv_search_opendir
-if test "$ac_res" != no; then :
- test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+ac_fn_c_check_header_compile "$LINENO" "io.h" "ac_cv_header_io_h" "$ac_includes_default"
+if test "x$ac_cv_header_io_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_IO_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "langinfo.h" "ac_cv_header_langinfo_h" "$ac_includes_default"
+if test "x$ac_cv_header_langinfo_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LANGINFO_H 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
-$as_echo_n "checking for library containing opendir... " >&6; }
-if ${ac_cv_search_opendir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
+fi
+ac_fn_c_check_header_compile "$LINENO" "libintl.h" "ac_cv_header_libintl_h" "$ac_includes_default"
+if test "x$ac_cv_header_libintl_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBINTL_H 1" >>confdefs.h
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char opendir ();
-int
-main ()
-{
-return opendir ();
- ;
- return 0;
-}
-_ACEOF
-for ac_lib in '' x; do
- if test -z "$ac_lib"; then
- ac_res="none required"
- else
- ac_res=-l$ac_lib
- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
- fi
- if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_search_opendir=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext
- if ${ac_cv_search_opendir+:} false; then :
- break
+ac_fn_c_check_header_compile "$LINENO" "libutil.h" "ac_cv_header_libutil_h" "$ac_includes_default"
+if test "x$ac_cv_header_libutil_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBUTIL_H 1" >>confdefs.h
+
fi
-done
-if ${ac_cv_search_opendir+:} false; then :
+ac_fn_c_check_header_compile "$LINENO" "linux/auxvec.h" "ac_cv_header_linux_auxvec_h" "$ac_includes_default"
+if test "x$ac_cv_header_linux_auxvec_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LINUX_AUXVEC_H 1" >>confdefs.h
-else
- ac_cv_search_opendir=no
fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
+ac_fn_c_check_header_compile "$LINENO" "sys/auxv.h" "ac_cv_header_sys_auxv_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_auxv_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_AUXV_H 1" >>confdefs.h
+
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
-$as_echo "$ac_cv_search_opendir" >&6; }
-ac_res=$ac_cv_search_opendir
-if test "$ac_res" != no; then :
- test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+ac_fn_c_check_header_compile "$LINENO" "linux/fs.h" "ac_cv_header_linux_fs_h" "$ac_includes_default"
+if test "x$ac_cv_header_linux_fs_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LINUX_FS_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "linux/memfd.h" "ac_cv_header_linux_memfd_h" "$ac_includes_default"
+if test "x$ac_cv_header_linux_memfd_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LINUX_MEMFD_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "linux/random.h" "ac_cv_header_linux_random_h" "$ac_includes_default"
+if test "x$ac_cv_header_linux_random_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LINUX_RANDOM_H 1" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sys/types.h defines makedev" >&5
-$as_echo_n "checking whether sys/types.h defines makedev... " >&6; }
-if ${ac_cv_header_sys_types_h_makedev+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include
-int
-main ()
-{
-return makedev(0, 0);
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_header_sys_types_h_makedev=yes
-else
- ac_cv_header_sys_types_h_makedev=no
fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
+ac_fn_c_check_header_compile "$LINENO" "linux/soundcard.h" "ac_cv_header_linux_soundcard_h" "$ac_includes_default"
+if test "x$ac_cv_header_linux_soundcard_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LINUX_SOUNDCARD_H 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_types_h_makedev" >&5
-$as_echo "$ac_cv_header_sys_types_h_makedev" >&6; }
+ac_fn_c_check_header_compile "$LINENO" "linux/tipc.h" "ac_cv_header_linux_tipc_h" "$ac_includes_default"
+if test "x$ac_cv_header_linux_tipc_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LINUX_TIPC_H 1" >>confdefs.h
-if test $ac_cv_header_sys_types_h_makedev = no; then
-ac_fn_c_check_header_mongrel "$LINENO" "sys/mkdev.h" "ac_cv_header_sys_mkdev_h" "$ac_includes_default"
-if test "x$ac_cv_header_sys_mkdev_h" = xyes; then :
+fi
+ac_fn_c_check_header_compile "$LINENO" "linux/wait.h" "ac_cv_header_linux_wait_h" "$ac_includes_default"
+if test "x$ac_cv_header_linux_wait_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LINUX_WAIT_H 1" >>confdefs.h
-$as_echo "#define MAJOR_IN_MKDEV 1" >>confdefs.h
+fi
+ac_fn_c_check_header_compile "$LINENO" "netdb.h" "ac_cv_header_netdb_h" "$ac_includes_default"
+if test "x$ac_cv_header_netdb_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_NETDB_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "net/ethernet.h" "ac_cv_header_net_ethernet_h" "$ac_includes_default"
+if test "x$ac_cv_header_net_ethernet_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_NET_ETHERNET_H 1" >>confdefs.h
+fi
+ac_fn_c_check_header_compile "$LINENO" "netinet/in.h" "ac_cv_header_netinet_in_h" "$ac_includes_default"
+if test "x$ac_cv_header_netinet_in_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_NETINET_IN_H 1" >>confdefs.h
+fi
+ac_fn_c_check_header_compile "$LINENO" "netpacket/packet.h" "ac_cv_header_netpacket_packet_h" "$ac_includes_default"
+if test "x$ac_cv_header_netpacket_packet_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_NETPACKET_PACKET_H 1" >>confdefs.h
- if test $ac_cv_header_sys_mkdev_h = no; then
- ac_fn_c_check_header_mongrel "$LINENO" "sys/sysmacros.h" "ac_cv_header_sys_sysmacros_h" "$ac_includes_default"
-if test "x$ac_cv_header_sys_sysmacros_h" = xyes; then :
+fi
+ac_fn_c_check_header_compile "$LINENO" "poll.h" "ac_cv_header_poll_h" "$ac_includes_default"
+if test "x$ac_cv_header_poll_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_POLL_H 1" >>confdefs.h
-$as_echo "#define MAJOR_IN_SYSMACROS 1" >>confdefs.h
+fi
+ac_fn_c_check_header_compile "$LINENO" "process.h" "ac_cv_header_process_h" "$ac_includes_default"
+if test "x$ac_cv_header_process_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_PROCESS_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
+if test "x$ac_cv_header_pthread_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_PTHREAD_H 1" >>confdefs.h
+fi
+ac_fn_c_check_header_compile "$LINENO" "pty.h" "ac_cv_header_pty_h" "$ac_includes_default"
+if test "x$ac_cv_header_pty_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_PTY_H 1" >>confdefs.h
- fi
fi
+ac_fn_c_check_header_compile "$LINENO" "sched.h" "ac_cv_header_sched_h" "$ac_includes_default"
+if test "x$ac_cv_header_sched_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SCHED_H 1" >>confdefs.h
+fi
+ac_fn_c_check_header_compile "$LINENO" "setjmp.h" "ac_cv_header_setjmp_h" "$ac_includes_default"
+if test "x$ac_cv_header_setjmp_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETJMP_H 1" >>confdefs.h
-# bluetooth/bluetooth.h has been known to not compile with -std=c99.
-# http://permalink.gmane.org/gmane.linux.bluez.kernel/22294
-SAVE_CFLAGS=$CFLAGS
-CFLAGS="-std=c99 $CFLAGS"
-for ac_header in bluetooth/bluetooth.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "bluetooth/bluetooth.h" "ac_cv_header_bluetooth_bluetooth_h" "$ac_includes_default"
-if test "x$ac_cv_header_bluetooth_bluetooth_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_BLUETOOTH_BLUETOOTH_H 1
-_ACEOF
+fi
+ac_fn_c_check_header_compile "$LINENO" "shadow.h" "ac_cv_header_shadow_h" "$ac_includes_default"
+if test "x$ac_cv_header_shadow_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SHADOW_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "signal.h" "ac_cv_header_signal_h" "$ac_includes_default"
+if test "x$ac_cv_header_signal_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SIGNAL_H 1" >>confdefs.h
-done
+fi
+ac_fn_c_check_header_compile "$LINENO" "spawn.h" "ac_cv_header_spawn_h" "$ac_includes_default"
+if test "x$ac_cv_header_spawn_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SPAWN_H 1" >>confdefs.h
-CFLAGS=$SAVE_CFLAGS
+fi
+ac_fn_c_check_header_compile "$LINENO" "stropts.h" "ac_cv_header_stropts_h" "$ac_includes_default"
+if test "x$ac_cv_header_stropts_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_STROPTS_H 1" >>confdefs.h
-# On Darwin (OS X) net/if.h requires sys/socket.h to be imported first.
-for ac_header in net/if.h
-do :
- ac_fn_c_check_header_compile "$LINENO" "net/if.h" "ac_cv_header_net_if_h" "#include
-#include
-#include
-#ifdef HAVE_SYS_SOCKET_H
-# include
-#endif
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/audioio.h" "ac_cv_header_sys_audioio_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_audioio_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_AUDIOIO_H 1" >>confdefs.h
-"
-if test "x$ac_cv_header_net_if_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_NET_IF_H 1
-_ACEOF
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/bsdtty.h" "ac_cv_header_sys_bsdtty_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_bsdtty_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_BSDTTY_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "sys/devpoll.h" "ac_cv_header_sys_devpoll_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_devpoll_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_DEVPOLL_H 1" >>confdefs.h
-done
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/endian.h" "ac_cv_header_sys_endian_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_endian_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_ENDIAN_H 1" >>confdefs.h
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/epoll.h" "ac_cv_header_sys_epoll_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_epoll_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_EPOLL_H 1" >>confdefs.h
-# On Linux, netlink.h requires asm/types.h
-for ac_header in linux/netlink.h
-do :
- ac_fn_c_check_header_compile "$LINENO" "linux/netlink.h" "ac_cv_header_linux_netlink_h" "
-#ifdef HAVE_ASM_TYPES_H
-#include
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include
-#endif
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/event.h" "ac_cv_header_sys_event_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_event_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_EVENT_H 1" >>confdefs.h
-"
-if test "x$ac_cv_header_linux_netlink_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LINUX_NETLINK_H 1
-_ACEOF
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/eventfd.h" "ac_cv_header_sys_eventfd_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_eventfd_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_EVENTFD_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "sys/file.h" "ac_cv_header_sys_file_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_file_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_FILE_H 1" >>confdefs.h
-done
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/ioctl.h" "ac_cv_header_sys_ioctl_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_ioctl_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_IOCTL_H 1" >>confdefs.h
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/kern_control.h" "ac_cv_header_sys_kern_control_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_kern_control_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_KERN_CONTROL_H 1" >>confdefs.h
-# On Linux, qrtr.h requires asm/types.h
-for ac_header in linux/qrtr.h
-do :
- ac_fn_c_check_header_compile "$LINENO" "linux/qrtr.h" "ac_cv_header_linux_qrtr_h" "
-#ifdef HAVE_ASM_TYPES_H
-#include
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include
-#endif
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/loadavg.h" "ac_cv_header_sys_loadavg_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_loadavg_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_LOADAVG_H 1" >>confdefs.h
-"
-if test "x$ac_cv_header_linux_qrtr_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LINUX_QRTR_H 1
-_ACEOF
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/lock.h" "ac_cv_header_sys_lock_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_lock_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_LOCK_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "sys/memfd.h" "ac_cv_header_sys_memfd_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_memfd_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_MEMFD_H 1" >>confdefs.h
-done
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/mkdev.h" "ac_cv_header_sys_mkdev_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_mkdev_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_MKDEV_H 1" >>confdefs.h
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_mman_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_MMAN_H 1" >>confdefs.h
-for ac_header in linux/vm_sockets.h
-do :
- ac_fn_c_check_header_compile "$LINENO" "linux/vm_sockets.h" "ac_cv_header_linux_vm_sockets_h" "
-#ifdef HAVE_SYS_SOCKET_H
-#include
-#endif
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/modem.h" "ac_cv_header_sys_modem_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_modem_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_MODEM_H 1" >>confdefs.h
-"
-if test "x$ac_cv_header_linux_vm_sockets_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LINUX_VM_SOCKETS_H 1
-_ACEOF
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_param_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_PARAM_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "sys/poll.h" "ac_cv_header_sys_poll_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_poll_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_POLL_H 1" >>confdefs.h
-done
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/random.h" "ac_cv_header_sys_random_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_random_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_RANDOM_H 1" >>confdefs.h
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_resource_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_RESOURCE_H 1" >>confdefs.h
-# On Linux, can.h, can/bcm.h, can/j1939.h, can/raw.h require sys/socket.h
-# On NetBSD, netcan/can.h requires sys/socket.h
-for ac_header in linux/can.h linux/can/bcm.h linux/can/j1939.h linux/can/raw.h netcan/can.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "
-#ifdef HAVE_SYS_SOCKET_H
-#include
-#endif
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_select_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_SELECT_H 1" >>confdefs.h
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/sendfile.h" "ac_cv_header_sys_sendfile_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_sendfile_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_SENDFILE_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_socket_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h
-done
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/soundcard.h" "ac_cv_header_sys_soundcard_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_soundcard_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_SOUNDCARD_H 1" >>confdefs.h
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/stat.h" "ac_cv_header_sys_stat_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_stat_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_STAT_H 1" >>confdefs.h
-# checks for typedefs
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_t in time.h" >&5
-$as_echo_n "checking for clock_t in time.h... " >&6; }
-if ${ac_cv_clock_t_time_h+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/statvfs.h" "ac_cv_header_sys_statvfs_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_statvfs_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_STATVFS_H 1" >>confdefs.h
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/sys_domain.h" "ac_cv_header_sys_sys_domain_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_sys_domain_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_SYS_DOMAIN_H 1" >>confdefs.h
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "clock_t" >/dev/null 2>&1; then :
- ac_cv_clock_t_time_h=yes
-else
- ac_cv_clock_t_time_h=no
fi
-rm -f conftest*
+ac_fn_c_check_header_compile "$LINENO" "sys/syscall.h" "ac_cv_header_sys_syscall_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_syscall_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_SYSCALL_H 1" >>confdefs.h
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/sysmacros.h" "ac_cv_header_sys_sysmacros_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_sysmacros_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_SYSMACROS_H 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_clock_t_time_h" >&5
-$as_echo "$ac_cv_clock_t_time_h" >&6; }
-if test "x$ac_cv_clock_t_time_h" = xno; then :
+ac_fn_c_check_header_compile "$LINENO" "sys/termio.h" "ac_cv_header_sys_termio_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_termio_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_TERMIO_H 1" >>confdefs.h
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_time_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_TIME_H 1" >>confdefs.h
-$as_echo "#define clock_t long" >>confdefs.h
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/times.h" "ac_cv_header_sys_times_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_times_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_TIMES_H 1" >>confdefs.h
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_types_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "sys/uio.h" "ac_cv_header_sys_uio_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_uio_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_UIO_H 1" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for makedev" >&5
-$as_echo_n "checking for makedev... " >&6; }
-if ${ac_cv_func_makedev+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/un.h" "ac_cv_header_sys_un_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_un_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_UN_H 1" >>confdefs.h
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/utsname.h" "ac_cv_header_sys_utsname_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_utsname_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_UTSNAME_H 1" >>confdefs.h
-#if defined(MAJOR_IN_MKDEV)
-#include
-#elif defined(MAJOR_IN_SYSMACROS)
-#include
-#else
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/wait.h" "ac_cv_header_sys_wait_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_wait_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_WAIT_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/xattr.h" "ac_cv_header_sys_xattr_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_xattr_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_XATTR_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sysexits.h" "ac_cv_header_sysexits_h" "$ac_includes_default"
+if test "x$ac_cv_header_sysexits_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYSEXITS_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "syslog.h" "ac_cv_header_syslog_h" "$ac_includes_default"
+if test "x$ac_cv_header_syslog_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYSLOG_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "termios.h" "ac_cv_header_termios_h" "$ac_includes_default"
+if test "x$ac_cv_header_termios_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_TERMIOS_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "util.h" "ac_cv_header_util_h" "$ac_includes_default"
+if test "x$ac_cv_header_util_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_UTIL_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "utime.h" "ac_cv_header_utime_h" "$ac_includes_default"
+if test "x$ac_cv_header_utime_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_UTIME_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "utmp.h" "ac_cv_header_utmp_h" "$ac_includes_default"
+if test "x$ac_cv_header_utmp_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_UTMP_H 1" >>confdefs.h
+
+fi
+
+ac_header_dirent=no
+for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
+ as_ac_Header=`printf "%s\n" "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5
+printf %s "checking for $ac_hdr that defines DIR... " >&6; }
+if eval test \${$as_ac_Header+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
#include
-#endif
+#include <$ac_hdr>
int
-main ()
+main (void)
{
-
- makedev(0, 0)
+if ((DIR *) 0)
+return 0;
;
return 0;
}
-
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_func_makedev=yes
-else
- ac_cv_func_makedev=no
+if ac_fn_c_try_compile "$LINENO"
+then :
+ eval "$as_ac_Header=yes"
+else $as_nop
+ eval "$as_ac_Header=no"
fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_makedev" >&5
-$as_echo "$ac_cv_func_makedev" >&6; }
+eval ac_res=\$$as_ac_Header
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Header"\" = x"yes"
+then :
+ cat >>confdefs.h <<_ACEOF
+#define `printf "%s\n" "HAVE_$ac_hdr" | $as_tr_cpp` 1
+_ACEOF
-if test "x$ac_cv_func_makedev" = xyes; then :
+ac_header_dirent=$ac_hdr; break
+fi
+done
+# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
+if test $ac_header_dirent = dirent.h; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
+printf %s "checking for library containing opendir... " >&6; }
+if test ${ac_cv_search_opendir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
-$as_echo "#define HAVE_MAKEDEV 1" >>confdefs.h
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+char opendir ();
+int
+main (void)
+{
+return opendir ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' dir
+do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ if ac_fn_c_try_link "$LINENO"
+then :
+ ac_cv_search_opendir=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext
+ if test ${ac_cv_search_opendir+y}
+then :
+ break
+fi
+done
+if test ${ac_cv_search_opendir+y}
+then :
+else $as_nop
+ ac_cv_search_opendir=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
+printf "%s\n" "$ac_cv_search_opendir" >&6; }
+ac_res=$ac_cv_search_opendir
+if test "$ac_res" != no
+then :
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
-# byte swapping
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for le64toh" >&5
-$as_echo_n "checking for le64toh... " >&6; }
-if ${ac_cv_func_le64toh+:} false; then :
- $as_echo_n "(cached) " >&6
else
-
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
+printf %s "checking for library containing opendir... " >&6; }
+if test ${ac_cv_search_opendir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#ifdef HAVE_ENDIAN_H
-#include
-#elif defined(HAVE_SYS_ENDIAN_H)
-#include
-#endif
-
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+char opendir ();
int
-main ()
+main (void)
{
-
- le64toh(1)
+return opendir ();
;
return 0;
}
-
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_func_le64toh=yes
-else
- ac_cv_func_le64toh=no
+for ac_lib in '' x
+do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ if ac_fn_c_try_link "$LINENO"
+then :
+ ac_cv_search_opendir=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext
+ if test ${ac_cv_search_opendir+y}
+then :
+ break
+fi
+done
+if test ${ac_cv_search_opendir+y}
+then :
+
+else $as_nop
+ ac_cv_search_opendir=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
+printf "%s\n" "$ac_cv_search_opendir" >&6; }
+ac_res=$ac_cv_search_opendir
+if test "$ac_res" != no
+then :
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_le64toh" >&5
-$as_echo "$ac_cv_func_le64toh" >&6; }
-if test "x$ac_cv_func_le64toh" = xyes; then :
+fi
-$as_echo "#define HAVE_HTOLE64 1" >>confdefs.h
+ac_fn_c_check_header_compile "$LINENO" "sys/mkdev.h" "ac_cv_header_sys_mkdev_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_mkdev_h" = xyes
+then :
+printf "%s\n" "#define MAJOR_IN_MKDEV 1" >>confdefs.h
fi
-use_lfs=yes
-# Don't use largefile support for GNU/Hurd
-case $ac_sys_system in GNU*)
- use_lfs=no
+if test $ac_cv_header_sys_mkdev_h = no; then
+ ac_fn_c_check_header_compile "$LINENO" "sys/sysmacros.h" "ac_cv_header_sys_sysmacros_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_sysmacros_h" = xyes
+then :
+
+printf "%s\n" "#define MAJOR_IN_SYSMACROS 1" >>confdefs.h
+
+fi
+
+fi
+
+
+# bluetooth/bluetooth.h has been known to not compile with -std=c99.
+# http://permalink.gmane.org/gmane.linux.bluez.kernel/22294
+SAVE_CFLAGS=$CFLAGS
+CFLAGS="-std=c99 $CFLAGS"
+ac_fn_c_check_header_compile "$LINENO" "bluetooth/bluetooth.h" "ac_cv_header_bluetooth_bluetooth_h" "$ac_includes_default"
+if test "x$ac_cv_header_bluetooth_bluetooth_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_BLUETOOTH_BLUETOOTH_H 1" >>confdefs.h
+
+fi
+
+CFLAGS=$SAVE_CFLAGS
+
+# On Darwin (OS X) net/if.h requires sys/socket.h to be imported first.
+ac_fn_c_check_header_compile "$LINENO" "net/if.h" "ac_cv_header_net_if_h" "#include
+#include
+#include
+#ifdef HAVE_SYS_SOCKET_H
+# include
+#endif
+
+"
+if test "x$ac_cv_header_net_if_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_NET_IF_H 1" >>confdefs.h
+
+fi
+
+
+# On Linux, netlink.h requires asm/types.h
+ac_fn_c_check_header_compile "$LINENO" "linux/netlink.h" "ac_cv_header_linux_netlink_h" "
+#ifdef HAVE_ASM_TYPES_H
+#include
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include
+#endif
+
+"
+if test "x$ac_cv_header_linux_netlink_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LINUX_NETLINK_H 1" >>confdefs.h
+
+fi
+
+
+# On Linux, qrtr.h requires asm/types.h
+ac_fn_c_check_header_compile "$LINENO" "linux/qrtr.h" "ac_cv_header_linux_qrtr_h" "
+#ifdef HAVE_ASM_TYPES_H
+#include
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include
+#endif
+
+"
+if test "x$ac_cv_header_linux_qrtr_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LINUX_QRTR_H 1" >>confdefs.h
+
+fi
+
+
+ac_fn_c_check_header_compile "$LINENO" "linux/vm_sockets.h" "ac_cv_header_linux_vm_sockets_h" "
+#ifdef HAVE_SYS_SOCKET_H
+#include
+#endif
+
+"
+if test "x$ac_cv_header_linux_vm_sockets_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LINUX_VM_SOCKETS_H 1" >>confdefs.h
+
+fi
+
+
+# On Linux, can.h, can/bcm.h, can/j1939.h, can/raw.h require sys/socket.h
+# On NetBSD, netcan/can.h requires sys/socket.h
+ac_fn_c_check_header_compile "$LINENO" "linux/can.h" "ac_cv_header_linux_can_h" "
+#ifdef HAVE_SYS_SOCKET_H
+#include
+#endif
+
+"
+if test "x$ac_cv_header_linux_can_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LINUX_CAN_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "linux/can/bcm.h" "ac_cv_header_linux_can_bcm_h" "
+#ifdef HAVE_SYS_SOCKET_H
+#include
+#endif
+
+"
+if test "x$ac_cv_header_linux_can_bcm_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LINUX_CAN_BCM_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "linux/can/j1939.h" "ac_cv_header_linux_can_j1939_h" "
+#ifdef HAVE_SYS_SOCKET_H
+#include
+#endif
+
+"
+if test "x$ac_cv_header_linux_can_j1939_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LINUX_CAN_J1939_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "linux/can/raw.h" "ac_cv_header_linux_can_raw_h" "
+#ifdef HAVE_SYS_SOCKET_H
+#include
+#endif
+
+"
+if test "x$ac_cv_header_linux_can_raw_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LINUX_CAN_RAW_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "netcan/can.h" "ac_cv_header_netcan_can_h" "
+#ifdef HAVE_SYS_SOCKET_H
+#include
+#endif
+
+"
+if test "x$ac_cv_header_netcan_can_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_NETCAN_CAN_H 1" >>confdefs.h
+
+fi
+
+
+# checks for typedefs
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for clock_t in time.h" >&5
+printf %s "checking for clock_t in time.h... " >&6; }
+if test ${ac_cv_clock_t_time_h+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "clock_t" >/dev/null 2>&1
+then :
+ ac_cv_clock_t_time_h=yes
+else $as_nop
+ ac_cv_clock_t_time_h=no
+fi
+rm -rf conftest*
+
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_clock_t_time_h" >&5
+printf "%s\n" "$ac_cv_clock_t_time_h" >&6; }
+if test "x$ac_cv_clock_t_time_h" = xno
+then :
+
+
+printf "%s\n" "#define clock_t long" >>confdefs.h
+
+
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for makedev" >&5
+printf %s "checking for makedev... " >&6; }
+if test ${ac_cv_func_makedev+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#if defined(MAJOR_IN_MKDEV)
+#include
+#elif defined(MAJOR_IN_SYSMACROS)
+#include
+#else
+#include
+#endif
+
+int
+main (void)
+{
+
+ makedev(0, 0)
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ ac_cv_func_makedev=yes
+else $as_nop
+ ac_cv_func_makedev=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_makedev" >&5
+printf "%s\n" "$ac_cv_func_makedev" >&6; }
+
+if test "x$ac_cv_func_makedev" = xyes
+then :
+
+
+printf "%s\n" "#define HAVE_MAKEDEV 1" >>confdefs.h
+
+
+fi
+
+# byte swapping
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for le64toh" >&5
+printf %s "checking for le64toh... " >&6; }
+if test ${ac_cv_func_le64toh+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#ifdef HAVE_ENDIAN_H
+#include
+#elif defined(HAVE_SYS_ENDIAN_H)
+#include
+#endif
+
+int
+main (void)
+{
+
+ le64toh(1)
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ ac_cv_func_le64toh=yes
+else $as_nop
+ ac_cv_func_le64toh=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_le64toh" >&5
+printf "%s\n" "$ac_cv_func_le64toh" >&6; }
+
+if test "x$ac_cv_func_le64toh" = xyes
+then :
+
+
+printf "%s\n" "#define HAVE_HTOLE64 1" >>confdefs.h
+
+
+fi
+
+use_lfs=yes
+# Don't use largefile support for GNU/Hurd
+case $ac_sys_system in GNU*)
+ use_lfs=no
esac
if test "$use_lfs" = "yes"; then
@@ -10124,15 +11408,15 @@ if test "$use_lfs" = "yes"; then
case $ac_sys_system/$ac_sys_release in
AIX*)
-$as_echo "#define _LARGE_FILES 1" >>confdefs.h
+printf "%s\n" "#define _LARGE_FILES 1" >>confdefs.h
;;
esac
-$as_echo "#define _LARGEFILE_SOURCE 1" >>confdefs.h
+printf "%s\n" "#define _LARGEFILE_SOURCE 1" >>confdefs.h
-$as_echo "#define _FILE_OFFSET_BITS 64" >>confdefs.h
+printf "%s\n" "#define _FILE_OFFSET_BITS 64" >>confdefs.h
fi
@@ -10145,96 +11429,121 @@ EOF
# Type availability checks
ac_fn_c_check_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default"
-if test "x$ac_cv_type_mode_t" = xyes; then :
+if test "x$ac_cv_type_mode_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define mode_t int
-_ACEOF
+printf "%s\n" "#define mode_t int" >>confdefs.h
fi
ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default"
-if test "x$ac_cv_type_off_t" = xyes; then :
+if test "x$ac_cv_type_off_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define off_t long int
-_ACEOF
+printf "%s\n" "#define off_t long int" >>confdefs.h
fi
-ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default"
-if test "x$ac_cv_type_pid_t" = xyes; then :
-else
+ ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default
+"
+if test "x$ac_cv_type_pid_t" = xyes
+then :
+
+else $as_nop
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #if defined _WIN64 && !defined __CYGWIN__
+ LLP64
+ #endif
+
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
-cat >>confdefs.h <<_ACEOF
-#define pid_t int
_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_pid_type='int'
+else $as_nop
+ ac_pid_type='__int64'
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+
+printf "%s\n" "#define pid_t $ac_pid_type" >>confdefs.h
+
fi
-cat >>confdefs.h <<_ACEOF
-#define RETSIGTYPE void
-_ACEOF
+
+printf "%s\n" "#define RETSIGTYPE void" >>confdefs.h
ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
-if test "x$ac_cv_type_size_t" = xyes; then :
+if test "x$ac_cv_type_size_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
-_ACEOF
+printf "%s\n" "#define size_t unsigned int" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5
-$as_echo_n "checking for uid_t in sys/types.h... " >&6; }
-if ${ac_cv_type_uid_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5
+printf %s "checking for uid_t in sys/types.h... " >&6; }
+if test ${ac_cv_type_uid_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "uid_t" >/dev/null 2>&1; then :
+ $EGREP "uid_t" >/dev/null 2>&1
+then :
ac_cv_type_uid_t=yes
-else
+else $as_nop
ac_cv_type_uid_t=no
fi
-rm -f conftest*
+rm -rf conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5
-$as_echo "$ac_cv_type_uid_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5
+printf "%s\n" "$ac_cv_type_uid_t" >&6; }
if test $ac_cv_type_uid_t = no; then
-$as_echo "#define uid_t int" >>confdefs.h
+printf "%s\n" "#define uid_t int" >>confdefs.h
-$as_echo "#define gid_t int" >>confdefs.h
+printf "%s\n" "#define gid_t int" >>confdefs.h
fi
ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default"
-if test "x$ac_cv_type_ssize_t" = xyes; then :
+if test "x$ac_cv_type_ssize_t" = xyes
+then :
-$as_echo "#define HAVE_SSIZE_T 1" >>confdefs.h
+printf "%s\n" "#define HAVE_SSIZE_T 1" >>confdefs.h
fi
ac_fn_c_check_type "$LINENO" "__uint128_t" "ac_cv_type___uint128_t" "$ac_includes_default"
-if test "x$ac_cv_type___uint128_t" = xyes; then :
+if test "x$ac_cv_type___uint128_t" = xyes
+then :
-$as_echo "#define HAVE_GCC_UINT128_T 1" >>confdefs.h
+printf "%s\n" "#define HAVE_GCC_UINT128_T 1" >>confdefs.h
fi
@@ -10245,17 +11554,19 @@ fi
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5
-$as_echo_n "checking size of int... " >&6; }
-if ${ac_cv_sizeof_int+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of int" >&5
+printf %s "checking size of int... " >&6; }
+if test ${ac_cv_sizeof_int+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"
+then :
+
+else $as_nop
if test "$ac_cv_type_int" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (int)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -10264,31 +11575,31 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5
-$as_echo "$ac_cv_sizeof_int" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5
+printf "%s\n" "$ac_cv_sizeof_int" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_INT $ac_cv_sizeof_int
-_ACEOF
+printf "%s\n" "#define SIZEOF_INT $ac_cv_sizeof_int" >>confdefs.h
# The cast to long int works around a bug in the HP C Compiler
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5
-$as_echo_n "checking size of long... " >&6; }
-if ${ac_cv_sizeof_long+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long" >&5
+printf %s "checking size of long... " >&6; }
+if test ${ac_cv_sizeof_long+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"
+then :
+
+else $as_nop
if test "$ac_cv_type_long" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (long)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -10297,33 +11608,30 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5
-$as_echo "$ac_cv_sizeof_long" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5
+printf "%s\n" "$ac_cv_sizeof_long" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_LONG $ac_cv_sizeof_long
-_ACEOF
+printf "%s\n" "#define SIZEOF_LONG $ac_cv_sizeof_long" >>confdefs.h
# The cast to long int works around a bug in the HP C Compiler,
# see AC_CHECK_SIZEOF for more information.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking alignment of long" >&5
-$as_echo_n "checking alignment of long... " >&6; }
-if ${ac_cv_alignof_long+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking alignment of long" >&5
+printf %s "checking alignment of long... " >&6; }
+if test ${ac_cv_alignof_long+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if ac_fn_c_compute_int "$LINENO" "(long int) offsetof (ac__type_alignof_, y)" "ac_cv_alignof_long" "$ac_includes_default
-#ifndef offsetof
-# define offsetof(type, member) ((char *) &((type *) 0)->member - (char *) 0)
-#endif
-typedef struct { char x; long y; } ac__type_alignof_;"; then :
+typedef struct { char x; long y; } ac__type_alignof_;"
+then :
-else
+else $as_nop
if test "$ac_cv_type_long" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute alignment of long
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -10332,31 +11640,31 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_alignof_long" >&5
-$as_echo "$ac_cv_alignof_long" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_alignof_long" >&5
+printf "%s\n" "$ac_cv_alignof_long" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define ALIGNOF_LONG $ac_cv_alignof_long
-_ACEOF
+printf "%s\n" "#define ALIGNOF_LONG $ac_cv_alignof_long" >>confdefs.h
# The cast to long int works around a bug in the HP C Compiler
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5
-$as_echo_n "checking size of long long... " >&6; }
-if ${ac_cv_sizeof_long_long+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long" "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5
+printf %s "checking size of long long... " >&6; }
+if test ${ac_cv_sizeof_long_long+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long" "$ac_includes_default"
+then :
+
+else $as_nop
if test "$ac_cv_type_long_long" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (long long)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -10365,31 +11673,31 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5
-$as_echo "$ac_cv_sizeof_long_long" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5
+printf "%s\n" "$ac_cv_sizeof_long_long" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long
-_ACEOF
+printf "%s\n" "#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long" >>confdefs.h
# The cast to long int works around a bug in the HP C Compiler
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void *" >&5
-$as_echo_n "checking size of void *... " >&6; }
-if ${ac_cv_sizeof_void_p+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void *))" "ac_cv_sizeof_void_p" "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of void *" >&5
+printf %s "checking size of void *... " >&6; }
+if test ${ac_cv_sizeof_void_p+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void *))" "ac_cv_sizeof_void_p" "$ac_includes_default"
+then :
+
+else $as_nop
if test "$ac_cv_type_void_p" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (void *)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -10398,31 +11706,31 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_void_p" >&5
-$as_echo "$ac_cv_sizeof_void_p" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_void_p" >&5
+printf "%s\n" "$ac_cv_sizeof_void_p" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_VOID_P $ac_cv_sizeof_void_p
-_ACEOF
+printf "%s\n" "#define SIZEOF_VOID_P $ac_cv_sizeof_void_p" >>confdefs.h
# The cast to long int works around a bug in the HP C Compiler
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short" >&5
-$as_echo_n "checking size of short... " >&6; }
-if ${ac_cv_sizeof_short+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of short" >&5
+printf %s "checking size of short... " >&6; }
+if test ${ac_cv_sizeof_short+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default"
+then :
+
+else $as_nop
if test "$ac_cv_type_short" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (short)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -10431,31 +11739,31 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5
-$as_echo "$ac_cv_sizeof_short" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5
+printf "%s\n" "$ac_cv_sizeof_short" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_SHORT $ac_cv_sizeof_short
-_ACEOF
+printf "%s\n" "#define SIZEOF_SHORT $ac_cv_sizeof_short" >>confdefs.h
# The cast to long int works around a bug in the HP C Compiler
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of float" >&5
-$as_echo_n "checking size of float... " >&6; }
-if ${ac_cv_sizeof_float+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (float))" "ac_cv_sizeof_float" "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of float" >&5
+printf %s "checking size of float... " >&6; }
+if test ${ac_cv_sizeof_float+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (float))" "ac_cv_sizeof_float" "$ac_includes_default"
+then :
+
+else $as_nop
if test "$ac_cv_type_float" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (float)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -10464,31 +11772,31 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_float" >&5
-$as_echo "$ac_cv_sizeof_float" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_float" >&5
+printf "%s\n" "$ac_cv_sizeof_float" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_FLOAT $ac_cv_sizeof_float
-_ACEOF
+printf "%s\n" "#define SIZEOF_FLOAT $ac_cv_sizeof_float" >>confdefs.h
# The cast to long int works around a bug in the HP C Compiler
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of double" >&5
-$as_echo_n "checking size of double... " >&6; }
-if ${ac_cv_sizeof_double+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (double))" "ac_cv_sizeof_double" "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of double" >&5
+printf %s "checking size of double... " >&6; }
+if test ${ac_cv_sizeof_double+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (double))" "ac_cv_sizeof_double" "$ac_includes_default"
+then :
+
+else $as_nop
if test "$ac_cv_type_double" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (double)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -10497,31 +11805,31 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_double" >&5
-$as_echo "$ac_cv_sizeof_double" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_double" >&5
+printf "%s\n" "$ac_cv_sizeof_double" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_DOUBLE $ac_cv_sizeof_double
-_ACEOF
+printf "%s\n" "#define SIZEOF_DOUBLE $ac_cv_sizeof_double" >>confdefs.h
# The cast to long int works around a bug in the HP C Compiler
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of fpos_t" >&5
-$as_echo_n "checking size of fpos_t... " >&6; }
-if ${ac_cv_sizeof_fpos_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (fpos_t))" "ac_cv_sizeof_fpos_t" "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of fpos_t" >&5
+printf %s "checking size of fpos_t... " >&6; }
+if test ${ac_cv_sizeof_fpos_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (fpos_t))" "ac_cv_sizeof_fpos_t" "$ac_includes_default"
+then :
+
+else $as_nop
if test "$ac_cv_type_fpos_t" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (fpos_t)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -10530,31 +11838,31 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_fpos_t" >&5
-$as_echo "$ac_cv_sizeof_fpos_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_fpos_t" >&5
+printf "%s\n" "$ac_cv_sizeof_fpos_t" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_FPOS_T $ac_cv_sizeof_fpos_t
-_ACEOF
+printf "%s\n" "#define SIZEOF_FPOS_T $ac_cv_sizeof_fpos_t" >>confdefs.h
# The cast to long int works around a bug in the HP C Compiler
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5
-$as_echo_n "checking size of size_t... " >&6; }
-if ${ac_cv_sizeof_size_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t" "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5
+printf %s "checking size of size_t... " >&6; }
+if test ${ac_cv_sizeof_size_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t" "$ac_includes_default"
+then :
+
+else $as_nop
if test "$ac_cv_type_size_t" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (size_t)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -10563,33 +11871,30 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5
-$as_echo "$ac_cv_sizeof_size_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5
+printf "%s\n" "$ac_cv_sizeof_size_t" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t
-_ACEOF
+printf "%s\n" "#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t" >>confdefs.h
# The cast to long int works around a bug in the HP C Compiler,
# see AC_CHECK_SIZEOF for more information.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking alignment of size_t" >&5
-$as_echo_n "checking alignment of size_t... " >&6; }
-if ${ac_cv_alignof_size_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking alignment of size_t" >&5
+printf %s "checking alignment of size_t... " >&6; }
+if test ${ac_cv_alignof_size_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if ac_fn_c_compute_int "$LINENO" "(long int) offsetof (ac__type_alignof_, y)" "ac_cv_alignof_size_t" "$ac_includes_default
-#ifndef offsetof
-# define offsetof(type, member) ((char *) &((type *) 0)->member - (char *) 0)
-#endif
-typedef struct { char x; size_t y; } ac__type_alignof_;"; then :
+typedef struct { char x; size_t y; } ac__type_alignof_;"
+then :
-else
+else $as_nop
if test "$ac_cv_type_size_t" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute alignment of size_t
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -10598,31 +11903,31 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_alignof_size_t" >&5
-$as_echo "$ac_cv_alignof_size_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_alignof_size_t" >&5
+printf "%s\n" "$ac_cv_alignof_size_t" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define ALIGNOF_SIZE_T $ac_cv_alignof_size_t
-_ACEOF
+printf "%s\n" "#define ALIGNOF_SIZE_T $ac_cv_alignof_size_t" >>confdefs.h
# The cast to long int works around a bug in the HP C Compiler
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of pid_t" >&5
-$as_echo_n "checking size of pid_t... " >&6; }
-if ${ac_cv_sizeof_pid_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (pid_t))" "ac_cv_sizeof_pid_t" "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of pid_t" >&5
+printf %s "checking size of pid_t... " >&6; }
+if test ${ac_cv_sizeof_pid_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (pid_t))" "ac_cv_sizeof_pid_t" "$ac_includes_default"
+then :
+
+else $as_nop
if test "$ac_cv_type_pid_t" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (pid_t)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -10631,31 +11936,31 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_pid_t" >&5
-$as_echo "$ac_cv_sizeof_pid_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_pid_t" >&5
+printf "%s\n" "$ac_cv_sizeof_pid_t" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_PID_T $ac_cv_sizeof_pid_t
-_ACEOF
+printf "%s\n" "#define SIZEOF_PID_T $ac_cv_sizeof_pid_t" >>confdefs.h
# The cast to long int works around a bug in the HP C Compiler
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of uintptr_t" >&5
-$as_echo_n "checking size of uintptr_t... " >&6; }
-if ${ac_cv_sizeof_uintptr_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (uintptr_t))" "ac_cv_sizeof_uintptr_t" "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of uintptr_t" >&5
+printf %s "checking size of uintptr_t... " >&6; }
+if test ${ac_cv_sizeof_uintptr_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (uintptr_t))" "ac_cv_sizeof_uintptr_t" "$ac_includes_default"
+then :
+
+else $as_nop
if test "$ac_cv_type_uintptr_t" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (uintptr_t)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -10664,33 +11969,30 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_uintptr_t" >&5
-$as_echo "$ac_cv_sizeof_uintptr_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_uintptr_t" >&5
+printf "%s\n" "$ac_cv_sizeof_uintptr_t" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_UINTPTR_T $ac_cv_sizeof_uintptr_t
-_ACEOF
+printf "%s\n" "#define SIZEOF_UINTPTR_T $ac_cv_sizeof_uintptr_t" >>confdefs.h
# The cast to long int works around a bug in the HP C Compiler,
# see AC_CHECK_SIZEOF for more information.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking alignment of max_align_t" >&5
-$as_echo_n "checking alignment of max_align_t... " >&6; }
-if ${ac_cv_alignof_max_align_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking alignment of max_align_t" >&5
+printf %s "checking alignment of max_align_t... " >&6; }
+if test ${ac_cv_alignof_max_align_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if ac_fn_c_compute_int "$LINENO" "(long int) offsetof (ac__type_alignof_, y)" "ac_cv_alignof_max_align_t" "$ac_includes_default
-#ifndef offsetof
-# define offsetof(type, member) ((char *) &((type *) 0)->member - (char *) 0)
-#endif
-typedef struct { char x; max_align_t y; } ac__type_alignof_;"; then :
+typedef struct { char x; max_align_t y; } ac__type_alignof_;"
+then :
-else
+else $as_nop
if test "$ac_cv_type_max_align_t" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute alignment of max_align_t
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -10699,23 +12001,22 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_alignof_max_align_t" >&5
-$as_echo "$ac_cv_alignof_max_align_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_alignof_max_align_t" >&5
+printf "%s\n" "$ac_cv_alignof_max_align_t" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define ALIGNOF_MAX_ALIGN_T $ac_cv_alignof_max_align_t
-_ACEOF
+printf "%s\n" "#define ALIGNOF_MAX_ALIGN_T $ac_cv_alignof_max_align_t" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long double" >&5
-$as_echo_n "checking for long double... " >&6; }
-if ${ac_cv_type_long_double+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for long double" >&5
+printf %s "checking for long double... " >&6; }
+if test ${ac_cv_type_long_double+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test "$GCC" = yes; then
ac_cv_type_long_double=yes
else
@@ -10725,7 +12026,7 @@ else
not support it. */
long double foo = 0.0L;
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(/* On Ultrix 4.3 cc, long double is 4 and double is 8. */
sizeof (double) <= sizeof (long double))];
@@ -10736,19 +12037,20 @@ return test_array [0];
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_type_long_double=yes
-else
+else $as_nop
ac_cv_type_long_double=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_double" >&5
-$as_echo "$ac_cv_type_long_double" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_double" >&5
+printf "%s\n" "$ac_cv_type_long_double" >&6; }
if test $ac_cv_type_long_double = yes; then
-$as_echo "#define HAVE_LONG_DOUBLE 1" >>confdefs.h
+printf "%s\n" "#define HAVE_LONG_DOUBLE 1" >>confdefs.h
fi
@@ -10756,17 +12058,19 @@ $as_echo "#define HAVE_LONG_DOUBLE 1" >>confdefs.h
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long double" >&5
-$as_echo_n "checking size of long double... " >&6; }
-if ${ac_cv_sizeof_long_double+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long double))" "ac_cv_sizeof_long_double" "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long double" >&5
+printf %s "checking size of long double... " >&6; }
+if test ${ac_cv_sizeof_long_double+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long double))" "ac_cv_sizeof_long_double" "$ac_includes_default"
+then :
+
+else $as_nop
if test "$ac_cv_type_long_double" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (long double)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -10775,14 +12079,12 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_double" >&5
-$as_echo "$ac_cv_sizeof_long_double" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_double" >&5
+printf "%s\n" "$ac_cv_sizeof_long_double" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_LONG_DOUBLE $ac_cv_sizeof_long_double
-_ACEOF
+printf "%s\n" "#define SIZEOF_LONG_DOUBLE $ac_cv_sizeof_long_double" >>confdefs.h
@@ -10790,17 +12092,19 @@ _ACEOF
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of _Bool" >&5
-$as_echo_n "checking size of _Bool... " >&6; }
-if ${ac_cv_sizeof__Bool+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (_Bool))" "ac_cv_sizeof__Bool" "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of _Bool" >&5
+printf %s "checking size of _Bool... " >&6; }
+if test ${ac_cv_sizeof__Bool+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (_Bool))" "ac_cv_sizeof__Bool" "$ac_includes_default"
+then :
+
+else $as_nop
if test "$ac_cv_type__Bool" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (_Bool)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -10809,14 +12113,12 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof__Bool" >&5
-$as_echo "$ac_cv_sizeof__Bool" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof__Bool" >&5
+printf "%s\n" "$ac_cv_sizeof__Bool" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF__BOOL $ac_cv_sizeof__Bool
-_ACEOF
+printf "%s\n" "#define SIZEOF__BOOL $ac_cv_sizeof__Bool" >>confdefs.h
@@ -10824,22 +12126,24 @@ _ACEOF
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of off_t" >&5
-$as_echo_n "checking size of off_t... " >&6; }
-if ${ac_cv_sizeof_off_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of off_t" >&5
+printf %s "checking size of off_t... " >&6; }
+if test ${ac_cv_sizeof_off_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (off_t))" "ac_cv_sizeof_off_t" "
#ifdef HAVE_SYS_TYPES_H
#include
#endif
-"; then :
+"
+then :
-else
+else $as_nop
if test "$ac_cv_type_off_t" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (off_t)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -10848,19 +12152,17 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_off_t" >&5
-$as_echo "$ac_cv_sizeof_off_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_off_t" >&5
+printf "%s\n" "$ac_cv_sizeof_off_t" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_OFF_T $ac_cv_sizeof_off_t
-_ACEOF
+printf "%s\n" "#define SIZEOF_OFF_T $ac_cv_sizeof_off_t" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable large file support" >&5
-$as_echo_n "checking whether to enable large file support... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable large file support" >&5
+printf %s "checking whether to enable large file support... " >&6; }
if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
"$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
have_largefile_support="yes"
@@ -10874,18 +12176,19 @@ case $ac_sys_system in #(
*) :
;;
esac
-if test "x$have_largefile_support" = xyes; then :
+if test "x$have_largefile_support" = xyes
+then :
-$as_echo "#define HAVE_LARGEFILE_SUPPORT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_LARGEFILE_SUPPORT 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-else
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -10893,11 +12196,12 @@ fi
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of time_t" >&5
-$as_echo_n "checking size of time_t... " >&6; }
-if ${ac_cv_sizeof_time_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of time_t" >&5
+printf %s "checking size of time_t... " >&6; }
+if test ${ac_cv_sizeof_time_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (time_t))" "ac_cv_sizeof_time_t" "
#ifdef HAVE_SYS_TYPES_H
#include
@@ -10906,12 +12210,13 @@ else
#include
#endif
-"; then :
+"
+then :
-else
+else $as_nop
if test "$ac_cv_type_time_t" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (time_t)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -10920,14 +12225,12 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_time_t" >&5
-$as_echo "$ac_cv_sizeof_time_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_time_t" >&5
+printf "%s\n" "$ac_cv_sizeof_time_t" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_TIME_T $ac_cv_sizeof_time_t
-_ACEOF
+printf "%s\n" "#define SIZEOF_TIME_T $ac_cv_sizeof_time_t" >>confdefs.h
@@ -10941,18 +12244,19 @@ elif test "$ac_cv_pthread" = "yes"
then CC="$CC -pthread"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_t" >&5
-$as_echo_n "checking for pthread_t... " >&6; }
-if ${ac_cv_have_pthread_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_t" >&5
+printf %s "checking for pthread_t... " >&6; }
+if test ${ac_cv_have_pthread_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
int
-main ()
+main (void)
{
pthread_t x; x = *(pthread_t*)0;
;
@@ -10960,38 +12264,42 @@ pthread_t x; x = *(pthread_t*)0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_have_pthread_t=yes
-else
+else $as_nop
ac_cv_have_pthread_t=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_pthread_t" >&5
-$as_echo "$ac_cv_have_pthread_t" >&6; }
-if test "x$ac_cv_have_pthread_t" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_pthread_t" >&5
+printf "%s\n" "$ac_cv_have_pthread_t" >&6; }
+if test "x$ac_cv_have_pthread_t" = xyes
+then :
# The cast to long int works around a bug in the HP C Compiler
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of pthread_t" >&5
-$as_echo_n "checking size of pthread_t... " >&6; }
-if ${ac_cv_sizeof_pthread_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of pthread_t" >&5
+printf %s "checking size of pthread_t... " >&6; }
+if test ${ac_cv_sizeof_pthread_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (pthread_t))" "ac_cv_sizeof_pthread_t" "
#ifdef HAVE_PTHREAD_H
#include
#endif
-"; then :
+"
+then :
-else
+else $as_nop
if test "$ac_cv_type_pthread_t" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (pthread_t)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -11000,14 +12308,12 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_pthread_t" >&5
-$as_echo "$ac_cv_sizeof_pthread_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_pthread_t" >&5
+printf "%s\n" "$ac_cv_sizeof_pthread_t" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_PTHREAD_T $ac_cv_sizeof_pthread_t
-_ACEOF
+printf "%s\n" "#define SIZEOF_PTHREAD_T $ac_cv_sizeof_pthread_t" >>confdefs.h
@@ -11019,18 +12325,20 @@ fi
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of pthread_key_t" >&5
-$as_echo_n "checking size of pthread_key_t... " >&6; }
-if ${ac_cv_sizeof_pthread_key_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of pthread_key_t" >&5
+printf %s "checking size of pthread_key_t... " >&6; }
+if test ${ac_cv_sizeof_pthread_key_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (pthread_key_t))" "ac_cv_sizeof_pthread_key_t" "#include
-"; then :
+"
+then :
-else
+else $as_nop
if test "$ac_cv_type_pthread_key_t" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (pthread_key_t)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -11039,77 +12347,78 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_pthread_key_t" >&5
-$as_echo "$ac_cv_sizeof_pthread_key_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_pthread_key_t" >&5
+printf "%s\n" "$ac_cv_sizeof_pthread_key_t" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_PTHREAD_KEY_T $ac_cv_sizeof_pthread_key_t
-_ACEOF
+printf "%s\n" "#define SIZEOF_PTHREAD_KEY_T $ac_cv_sizeof_pthread_key_t" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthread_key_t is compatible with int" >&5
-$as_echo_n "checking whether pthread_key_t is compatible with int... " >&6; }
-if ${ac_cv_pthread_key_t_is_arithmetic_type+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthread_key_t is compatible with int" >&5
+printf %s "checking whether pthread_key_t is compatible with int... " >&6; }
+if test ${ac_cv_pthread_key_t_is_arithmetic_type+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test "$ac_cv_sizeof_pthread_key_t" -eq "$ac_cv_sizeof_int" ; then
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
int
-main ()
+main (void)
{
pthread_key_t k; k * 1;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_pthread_key_t_is_arithmetic_type=yes
-else
+else $as_nop
ac_cv_pthread_key_t_is_arithmetic_type=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
else
ac_cv_pthread_key_t_is_arithmetic_type=no
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_pthread_key_t_is_arithmetic_type" >&5
-$as_echo "$ac_cv_pthread_key_t_is_arithmetic_type" >&6; }
-if test "x$ac_cv_pthread_key_t_is_arithmetic_type" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_pthread_key_t_is_arithmetic_type" >&5
+printf "%s\n" "$ac_cv_pthread_key_t_is_arithmetic_type" >&6; }
+if test "x$ac_cv_pthread_key_t_is_arithmetic_type" = xyes
+then :
-$as_echo "#define PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT 1" >>confdefs.h
+printf "%s\n" "#define PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT 1" >>confdefs.h
fi
CC="$ac_save_cc"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-framework" >&5
-$as_echo_n "checking for --enable-framework... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-framework" >&5
+printf %s "checking for --enable-framework... " >&6; }
if test "$enable_framework"
then
BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
# -F. is needed to allow linking to the framework while
# in the build location.
-$as_echo "#define WITH_NEXT_FRAMEWORK 1" >>confdefs.h
+printf "%s\n" "#define WITH_NEXT_FRAMEWORK 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
if test $enable_shared = "yes"
then
as_fn_error $? "Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead" "$LINENO" 5
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# Check for --with-dsymutil
@@ -11117,37 +12426,39 @@ fi
DSYMUTIL=
DSYMUTIL_PATH=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-dsymutil" >&5
-$as_echo_n "checking for --with-dsymutil... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-dsymutil" >&5
+printf %s "checking for --with-dsymutil... " >&6; }
# Check whether --with-dsymutil was given.
-if test "${with_dsymutil+set}" = set; then :
+if test ${with_dsymutil+y}
+then :
withval=$with_dsymutil;
if test "$withval" != no
then
if test "$MACHDEP" != "darwin"; then
as_fn_error $? "dsymutil debug linking is only available in macOS." "$LINENO" 5
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; };
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; };
DSYMUTIL='true'
-else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }; DSYMUTIL=
+else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }; DSYMUTIL=
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "$DSYMUTIL"; then
# Extract the first word of "dsymutil", so it can be a program name with args.
set dummy dsymutil; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_DSYMUTIL_PATH+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_DSYMUTIL_PATH+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $DSYMUTIL_PATH in
[\\/]* | ?:[\\/]*)
ac_cv_path_DSYMUTIL_PATH="$DSYMUTIL_PATH" # Let the user override the test with a path.
@@ -11157,11 +12468,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_DSYMUTIL_PATH="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_DSYMUTIL_PATH="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -11174,11 +12489,11 @@ esac
fi
DSYMUTIL_PATH=$ac_cv_path_DSYMUTIL_PATH
if test -n "$DSYMUTIL_PATH"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL_PATH" >&5
-$as_echo "$DSYMUTIL_PATH" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL_PATH" >&5
+printf "%s\n" "$DSYMUTIL_PATH" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -11187,54 +12502,57 @@ fi
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dyld" >&5
-$as_echo_n "checking for dyld... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dyld" >&5
+printf %s "checking for dyld... " >&6; }
case $ac_sys_system/$ac_sys_release in
Darwin/*)
-$as_echo "#define WITH_DYLD 1" >>confdefs.h
+printf "%s\n" "#define WITH_DYLD 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: always on for Darwin" >&5
-$as_echo "always on for Darwin" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: always on for Darwin" >&5
+printf "%s\n" "always on for Darwin" >&6; }
;;
*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
;;
esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-address-sanitizer" >&5
-$as_echo_n "checking for --with-address-sanitizer... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-address-sanitizer" >&5
+printf %s "checking for --with-address-sanitizer... " >&6; }
# Check whether --with-address_sanitizer was given.
-if test "${with_address_sanitizer+set}" = set; then :
+if test ${with_address_sanitizer+y}
+then :
withval=$with_address_sanitizer;
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $withval" >&5
-$as_echo "$withval" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $withval" >&5
+printf "%s\n" "$withval" >&6; }
BASECFLAGS="-fsanitize=address -fno-omit-frame-pointer $BASECFLAGS"
LDFLAGS="-fsanitize=address $LDFLAGS"
# ASan works by controlling memory allocation, our own malloc interferes.
with_pymalloc="no"
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-memory-sanitizer" >&5
-$as_echo_n "checking for --with-memory-sanitizer... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-memory-sanitizer" >&5
+printf %s "checking for --with-memory-sanitizer... " >&6; }
# Check whether --with-memory_sanitizer was given.
-if test "${with_memory_sanitizer+set}" = set; then :
+if test ${with_memory_sanitizer+y}
+then :
withval=$with_memory_sanitizer;
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $withval" >&5
-$as_echo "$withval" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fsanitize=memory" >&5
-$as_echo_n "checking whether C compiler accepts -fsanitize=memory... " >&6; }
-if ${ax_cv_check_cflags___fsanitize_memory+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $withval" >&5
+printf "%s\n" "$withval" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fsanitize=memory" >&5
+printf %s "checking whether C compiler accepts -fsanitize=memory... " >&6; }
+if test ${ax_cv_check_cflags___fsanitize_memory+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ax_check_save_flags=$CFLAGS
CFLAGS="$CFLAGS -fsanitize=memory"
@@ -11242,57 +12560,60 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ax_cv_check_cflags___fsanitize_memory=yes
-else
+else $as_nop
ax_cv_check_cflags___fsanitize_memory=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
CFLAGS=$ax_check_save_flags
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fsanitize_memory" >&5
-$as_echo "$ax_cv_check_cflags___fsanitize_memory" >&6; }
-if test "x$ax_cv_check_cflags___fsanitize_memory" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fsanitize_memory" >&5
+printf "%s\n" "$ax_cv_check_cflags___fsanitize_memory" >&6; }
+if test "x$ax_cv_check_cflags___fsanitize_memory" = xyes
+then :
BASECFLAGS="-fsanitize=memory -fsanitize-memory-track-origins=2 -fno-omit-frame-pointer $BASECFLAGS"
LDFLAGS="-fsanitize=memory -fsanitize-memory-track-origins=2 $LDFLAGS"
-else
+else $as_nop
as_fn_error $? "The selected compiler doesn't support memory sanitizer" "$LINENO" 5
fi
# MSan works by controlling memory allocation, our own malloc interferes.
with_pymalloc="no"
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-undefined-behavior-sanitizer" >&5
-$as_echo_n "checking for --with-undefined-behavior-sanitizer... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-undefined-behavior-sanitizer" >&5
+printf %s "checking for --with-undefined-behavior-sanitizer... " >&6; }
# Check whether --with-undefined_behavior_sanitizer was given.
-if test "${with_undefined_behavior_sanitizer+set}" = set; then :
+if test ${with_undefined_behavior_sanitizer+y}
+then :
withval=$with_undefined_behavior_sanitizer;
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $withval" >&5
-$as_echo "$withval" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $withval" >&5
+printf "%s\n" "$withval" >&6; }
BASECFLAGS="-fsanitize=undefined $BASECFLAGS"
LDFLAGS="-fsanitize=undefined $LDFLAGS"
with_ubsan="yes"
-else
+else $as_nop
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
with_ubsan="no"
fi
@@ -11308,8 +12629,8 @@ fi
# SHLIB_SUFFIX is the extension of shared libraries `(including the dot!)
# -- usually .so, .sl on HP-UX, .dll on Cygwin
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the extension of shared libraries" >&5
-$as_echo_n "checking the extension of shared libraries... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the extension of shared libraries" >&5
+printf %s "checking the extension of shared libraries... " >&6; }
if test -z "$SHLIB_SUFFIX"; then
case $ac_sys_system in
hp*|HP*)
@@ -11322,15 +12643,15 @@ if test -z "$SHLIB_SUFFIX"; then
*) SHLIB_SUFFIX=.so;;
esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $SHLIB_SUFFIX" >&5
-$as_echo "$SHLIB_SUFFIX" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SHLIB_SUFFIX" >&5
+printf "%s\n" "$SHLIB_SUFFIX" >&6; }
# LDSHARED is the ld *command* used to create shared library
# -- "cc -G" on SunOS 5.x.
# (Shared libraries in this instance are shared modules to be loaded into
# Python, as opposed to building Python itself as a shared library.)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking LDSHARED" >&5
-$as_echo_n "checking LDSHARED... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking LDSHARED" >&5
+printf %s "checking LDSHARED... " >&6; }
if test -z "$LDSHARED"
then
case $ac_sys_system/$ac_sys_release in
@@ -11446,7 +12767,8 @@ then
LDSHARED='$(CC) -Wl,-G,-Bexport'
LDCXXSHARED='$(CXX) -Wl,-G,-Bexport';;
WASI*)
- if test "x$enable_wasm_dynamic_linking" = xyes; then :
+ if test "x$enable_wasm_dynamic_linking" = xyes
+then :
fi;;
@@ -11461,20 +12783,20 @@ if test "$enable_wasm_dynamic_linking" = "yes" -a "$ac_sys_system" = "Emscripten
BLDSHARED='$(CC) -shared -sSIDE_MODULE=1'
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $LDSHARED" >&5
-$as_echo "$LDSHARED" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LDSHARED" >&5
+printf "%s\n" "$LDSHARED" >&6; }
LDCXXSHARED=${LDCXXSHARED-$LDSHARED}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking BLDSHARED flags" >&5
-$as_echo_n "checking BLDSHARED flags... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking BLDSHARED flags" >&5
+printf %s "checking BLDSHARED flags... " >&6; }
BLDSHARED=${BLDSHARED-$LDSHARED}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $BLDSHARED" >&5
-$as_echo "$BLDSHARED" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $BLDSHARED" >&5
+printf "%s\n" "$BLDSHARED" >&6; }
# CCSHARED are the C *flags* used to create objects to go into a shared
# library (module) -- this is only needed for a few systems
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking CCSHARED" >&5
-$as_echo_n "checking CCSHARED... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking CCSHARED" >&5
+printf %s "checking CCSHARED... " >&6; }
if test -z "$CCSHARED"
then
case $ac_sys_system/$ac_sys_release in
@@ -11491,7 +12813,8 @@ then
Linux-android*) ;;
Linux*|GNU*) CCSHARED="-fPIC";;
Emscripten*|WASI*)
- if test "x$enable_wasm_dynamic_linking" = xyes; then :
+ if test "x$enable_wasm_dynamic_linking" = xyes
+then :
CCSHARED="-fPIC"
@@ -11512,12 +12835,12 @@ fi;;
CCSHARED="-fpic -D__SO_PICABILINUX__ -ftls-model=global-dynamic"
esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CCSHARED" >&5
-$as_echo "$CCSHARED" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CCSHARED" >&5
+printf "%s\n" "$CCSHARED" >&6; }
# LINKFORSHARED are the flags passed to the $(CC) command that links
# the python executable -- this is only needed for a few systems
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking LINKFORSHARED" >&5
-$as_echo_n "checking LINKFORSHARED... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking LINKFORSHARED" >&5
+printf %s "checking LINKFORSHARED... " >&6; }
if test -z "$LINKFORSHARED"
then
case $ac_sys_system/$ac_sys_release in
@@ -11544,9 +12867,7 @@ then
LINKFORSHARED="-Wl,-stack_size,$stack_size $LINKFORSHARED"
-cat >>confdefs.h <<_ACEOF
-#define THREAD_STACK_SIZE 0x$stack_size
-_ACEOF
+printf "%s\n" "#define THREAD_STACK_SIZE 0x$stack_size" >>confdefs.h
if test "$enable_framework"
@@ -11585,13 +12906,13 @@ _ACEOF
LINKFORSHARED='-Wl,-export-dynamic';;
esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINKFORSHARED" >&5
-$as_echo "$LINKFORSHARED" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LINKFORSHARED" >&5
+printf "%s\n" "$LINKFORSHARED" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGSFORSHARED" >&5
-$as_echo_n "checking CFLAGSFORSHARED... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking CFLAGSFORSHARED" >&5
+printf %s "checking CFLAGSFORSHARED... " >&6; }
if test ! "$LIBRARY" = "$LDLIBRARY"
then
case $ac_sys_system in
@@ -11604,14 +12925,15 @@ then
esac
fi
-if test "x$enable_wasm_dynamic_linking" = xyes; then :
+if test "x$enable_wasm_dynamic_linking" = xyes
+then :
CFLAGSFORSHARED='$(CCSHARED)'
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CFLAGSFORSHARED" >&5
-$as_echo "$CFLAGSFORSHARED" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CFLAGSFORSHARED" >&5
+printf "%s\n" "$CFLAGSFORSHARED" >&6; }
# SHLIBS are libraries (except -lc and -lm) to link to the python shared
# library (with --enable-shared).
@@ -11622,17 +12944,17 @@ $as_echo "$CFLAGSFORSHARED" >&6; }
# don't need to link LIBS explicitly. The default should be only changed
# on systems where this approach causes problems.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking SHLIBS" >&5
-$as_echo_n "checking SHLIBS... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking SHLIBS" >&5
+printf %s "checking SHLIBS... " >&6; }
case "$ac_sys_system" in
*)
SHLIBS='$(LIBS)';;
esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $SHLIBS" >&5
-$as_echo "$SHLIBS" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SHLIBS" >&5
+printf "%s\n" "$SHLIBS" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking perf trampoline" >&5
-$as_echo_n "checking perf trampoline... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking perf trampoline" >&5
+printf %s "checking perf trampoline... " >&6; }
case $PLATFORM_TRIPLET in #(
x86_64-linux-gnu) :
perf_trampoline=yes ;; #(
@@ -11642,17 +12964,19 @@ case $PLATFORM_TRIPLET in #(
perf_trampoline=no
;;
esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $perf_trampoline" >&5
-$as_echo "$perf_trampoline" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $perf_trampoline" >&5
+printf "%s\n" "$perf_trampoline" >&6; }
-if test "x$perf_trampoline" = xyes; then :
+if test "x$perf_trampoline" = xyes
+then :
-$as_echo "#define PY_HAVE_PERF_TRAMPOLINE 1" >>confdefs.h
+printf "%s\n" "#define PY_HAVE_PERF_TRAMPOLINE 1" >>confdefs.h
PERF_TRAMPOLINE_OBJ=Python/asm_trampoline.o
- if test "x$Py_DEBUG" = xtrue; then :
+ if test "x$Py_DEBUG" = xtrue
+then :
as_fn_append BASECFLAGS " -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer"
@@ -11662,11 +12986,12 @@ fi
# checks for libraries
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sendfile in -lsendfile" >&5
-$as_echo_n "checking for sendfile in -lsendfile... " >&6; }
-if ${ac_cv_lib_sendfile_sendfile+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sendfile in -lsendfile" >&5
+printf %s "checking for sendfile in -lsendfile... " >&6; }
+if test ${ac_cv_lib_sendfile_sendfile+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsendfile $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -11675,43 +13000,41 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char sendfile ();
int
-main ()
+main (void)
{
return sendfile ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_sendfile_sendfile=yes
-else
+else $as_nop
ac_cv_lib_sendfile_sendfile=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sendfile_sendfile" >&5
-$as_echo "$ac_cv_lib_sendfile_sendfile" >&6; }
-if test "x$ac_cv_lib_sendfile_sendfile" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBSENDFILE 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sendfile_sendfile" >&5
+printf "%s\n" "$ac_cv_lib_sendfile_sendfile" >&6; }
+if test "x$ac_cv_lib_sendfile_sendfile" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBSENDFILE 1" >>confdefs.h
LIBS="-lsendfile $LIBS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+printf %s "checking for dlopen in -ldl... " >&6; }
+if test ${ac_cv_lib_dl_dlopen+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-ldl $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -11720,43 +13043,41 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char dlopen ();
int
-main ()
+main (void)
{
return dlopen ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_dl_dlopen=yes
-else
+else $as_nop
ac_cv_lib_dl_dlopen=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBDL 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBDL 1" >>confdefs.h
LIBS="-ldl $LIBS"
fi
- # Dynamic linking for SunOS/Solaris and SYSV
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
-$as_echo_n "checking for shl_load in -ldld... " >&6; }
-if ${ac_cv_lib_dld_shl_load+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ # Dynamic linking for SunOS/Solaris and SYSV
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+printf %s "checking for shl_load in -ldld... " >&6; }
+if test ${ac_cv_lib_dld_shl_load+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-ldld $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -11765,38 +13086,35 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char shl_load ();
int
-main ()
+main (void)
{
return shl_load ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_dld_shl_load=yes
-else
+else $as_nop
ac_cv_lib_dld_shl_load=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
-$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
-if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBDLD 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBDLD 1" >>confdefs.h
LIBS="-ldld $LIBS"
fi
- # Dynamic linking for HP-UX
+ # Dynamic linking for HP-UX
@@ -11804,51 +13122,50 @@ fi
have_uuid=missing
-for ac_header in uuid.h
+ for ac_header in uuid.h
do :
- ac_fn_c_check_header_mongrel "$LINENO" "uuid.h" "ac_cv_header_uuid_h" "$ac_includes_default"
-if test "x$ac_cv_header_uuid_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_UUID_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "uuid.h" "ac_cv_header_uuid_h" "$ac_includes_default"
+if test "x$ac_cv_header_uuid_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_UUID_H 1" >>confdefs.h
for ac_func in uuid_create uuid_enc_be
do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+if eval test \"x\$"$as_ac_var"\" = x"yes"
+then :
cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
-
- have_uuid=yes
+ have_uuid=yes
LIBUUID_CFLAGS=${LIBUUID_CFLAGS-""}
LIBUUID_LIBS=${LIBUUID_LIBS-""}
fi
-done
+done
fi
done
-
-if test "x$have_uuid" = xmissing; then :
+if test "x$have_uuid" = xmissing
+then :
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBUUID" >&5
-$as_echo_n "checking for LIBUUID... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LIBUUID" >&5
+printf %s "checking for LIBUUID... " >&6; }
if test -n "$LIBUUID_CFLAGS"; then
pkg_cv_LIBUUID_CFLAGS="$LIBUUID_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"uuid >= 2.20\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"uuid >= 2.20\""; } >&5
($PKG_CONFIG --exists --print-errors "uuid >= 2.20") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_LIBUUID_CFLAGS=`$PKG_CONFIG --cflags "uuid >= 2.20" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
@@ -11862,10 +13179,10 @@ if test -n "$LIBUUID_LIBS"; then
pkg_cv_LIBUUID_LIBS="$LIBUUID_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"uuid >= 2.20\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"uuid >= 2.20\""; } >&5
($PKG_CONFIG --exists --print-errors "uuid >= 2.20") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_LIBUUID_LIBS=`$PKG_CONFIG --libs "uuid >= 2.20" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
@@ -11879,8 +13196,8 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
_pkg_short_errors_supported=yes
@@ -11904,20 +13221,20 @@ save_LIBS=$LIBS
CPPFLAGS="$CPPFLAGS $LIBUUID_CFLAGS"
LDFLAGS="$LDFLAGS $LIBUUID_LIBS"
- for ac_header in uuid/uuid.h
+ for ac_header in uuid/uuid.h
do :
- ac_fn_c_check_header_mongrel "$LINENO" "uuid/uuid.h" "ac_cv_header_uuid_uuid_h" "$ac_includes_default"
-if test "x$ac_cv_header_uuid_uuid_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_UUID_UUID_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "uuid/uuid.h" "ac_cv_header_uuid_uuid_h" "$ac_includes_default"
+if test "x$ac_cv_header_uuid_uuid_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_UUID_UUID_H 1" >>confdefs.h
py_check_lib_save_LIBS=$LIBS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uuid_generate_time in -luuid" >&5
-$as_echo_n "checking for uuid_generate_time in -luuid... " >&6; }
-if ${ac_cv_lib_uuid_uuid_generate_time+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uuid_generate_time in -luuid" >&5
+printf %s "checking for uuid_generate_time in -luuid... " >&6; }
+if test ${ac_cv_lib_uuid_uuid_generate_time+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-luuid $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -11926,41 +13243,41 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char uuid_generate_time ();
int
-main ()
+main (void)
{
return uuid_generate_time ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_uuid_uuid_generate_time=yes
-else
+else $as_nop
ac_cv_lib_uuid_uuid_generate_time=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_uuid_uuid_generate_time" >&5
-$as_echo "$ac_cv_lib_uuid_uuid_generate_time" >&6; }
-if test "x$ac_cv_lib_uuid_uuid_generate_time" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_uuid_uuid_generate_time" >&5
+printf "%s\n" "$ac_cv_lib_uuid_uuid_generate_time" >&6; }
+if test "x$ac_cv_lib_uuid_uuid_generate_time" = xyes
+then :
have_uuid=yes
fi
LIBS=$py_check_lib_save_LIBS
py_check_lib_save_LIBS=$LIBS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uuid_generate_time_safe in -luuid" >&5
-$as_echo_n "checking for uuid_generate_time_safe in -luuid... " >&6; }
-if ${ac_cv_lib_uuid_uuid_generate_time_safe+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uuid_generate_time_safe in -luuid" >&5
+printf %s "checking for uuid_generate_time_safe in -luuid... " >&6; }
+if test ${ac_cv_lib_uuid_uuid_generate_time_safe+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-luuid $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -11969,44 +13286,41 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char uuid_generate_time_safe ();
int
-main ()
+main (void)
{
return uuid_generate_time_safe ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_uuid_uuid_generate_time_safe=yes
-else
+else $as_nop
ac_cv_lib_uuid_uuid_generate_time_safe=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_uuid_uuid_generate_time_safe" >&5
-$as_echo "$ac_cv_lib_uuid_uuid_generate_time_safe" >&6; }
-if test "x$ac_cv_lib_uuid_uuid_generate_time_safe" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_uuid_uuid_generate_time_safe" >&5
+printf "%s\n" "$ac_cv_lib_uuid_uuid_generate_time_safe" >&6; }
+if test "x$ac_cv_lib_uuid_uuid_generate_time_safe" = xyes
+then :
have_uuid=yes
- $as_echo "#define HAVE_UUID_GENERATE_TIME_SAFE 1" >>confdefs.h
-
+ printf "%s\n" "#define HAVE_UUID_GENERATE_TIME_SAFE 1" >>confdefs.h
fi
LIBS=$py_check_lib_save_LIBS
-
fi
done
-
- if test "x$have_uuid" = xyes; then :
+ if test "x$have_uuid" = xyes
+then :
LIBUUID_CFLAGS=${LIBUUID_CFLAGS-""}
LIBUUID_LIBS=${LIBUUID_LIBS-"-luuid"}
@@ -12022,8 +13336,8 @@ LIBS=$save_LIBS
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
save_CFLAGS=$CFLAGS
save_CPPFLAGS=$CPPFLAGS
@@ -12033,20 +13347,20 @@ save_LIBS=$LIBS
CPPFLAGS="$CPPFLAGS $LIBUUID_CFLAGS"
LDFLAGS="$LDFLAGS $LIBUUID_LIBS"
- for ac_header in uuid/uuid.h
+ for ac_header in uuid/uuid.h
do :
- ac_fn_c_check_header_mongrel "$LINENO" "uuid/uuid.h" "ac_cv_header_uuid_uuid_h" "$ac_includes_default"
-if test "x$ac_cv_header_uuid_uuid_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_UUID_UUID_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "uuid/uuid.h" "ac_cv_header_uuid_uuid_h" "$ac_includes_default"
+if test "x$ac_cv_header_uuid_uuid_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_UUID_UUID_H 1" >>confdefs.h
py_check_lib_save_LIBS=$LIBS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uuid_generate_time in -luuid" >&5
-$as_echo_n "checking for uuid_generate_time in -luuid... " >&6; }
-if ${ac_cv_lib_uuid_uuid_generate_time+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uuid_generate_time in -luuid" >&5
+printf %s "checking for uuid_generate_time in -luuid... " >&6; }
+if test ${ac_cv_lib_uuid_uuid_generate_time+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-luuid $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -12055,41 +13369,41 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char uuid_generate_time ();
int
-main ()
+main (void)
{
return uuid_generate_time ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_uuid_uuid_generate_time=yes
-else
+else $as_nop
ac_cv_lib_uuid_uuid_generate_time=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_uuid_uuid_generate_time" >&5
-$as_echo "$ac_cv_lib_uuid_uuid_generate_time" >&6; }
-if test "x$ac_cv_lib_uuid_uuid_generate_time" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_uuid_uuid_generate_time" >&5
+printf "%s\n" "$ac_cv_lib_uuid_uuid_generate_time" >&6; }
+if test "x$ac_cv_lib_uuid_uuid_generate_time" = xyes
+then :
have_uuid=yes
fi
LIBS=$py_check_lib_save_LIBS
py_check_lib_save_LIBS=$LIBS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uuid_generate_time_safe in -luuid" >&5
-$as_echo_n "checking for uuid_generate_time_safe in -luuid... " >&6; }
-if ${ac_cv_lib_uuid_uuid_generate_time_safe+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uuid_generate_time_safe in -luuid" >&5
+printf %s "checking for uuid_generate_time_safe in -luuid... " >&6; }
+if test ${ac_cv_lib_uuid_uuid_generate_time_safe+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-luuid $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -12098,44 +13412,41 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char uuid_generate_time_safe ();
int
-main ()
+main (void)
{
return uuid_generate_time_safe ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_uuid_uuid_generate_time_safe=yes
-else
+else $as_nop
ac_cv_lib_uuid_uuid_generate_time_safe=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_uuid_uuid_generate_time_safe" >&5
-$as_echo "$ac_cv_lib_uuid_uuid_generate_time_safe" >&6; }
-if test "x$ac_cv_lib_uuid_uuid_generate_time_safe" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_uuid_uuid_generate_time_safe" >&5
+printf "%s\n" "$ac_cv_lib_uuid_uuid_generate_time_safe" >&6; }
+if test "x$ac_cv_lib_uuid_uuid_generate_time_safe" = xyes
+then :
have_uuid=yes
- $as_echo "#define HAVE_UUID_GENERATE_TIME_SAFE 1" >>confdefs.h
-
+ printf "%s\n" "#define HAVE_UUID_GENERATE_TIME_SAFE 1" >>confdefs.h
fi
LIBS=$py_check_lib_save_LIBS
-
fi
done
-
- if test "x$have_uuid" = xyes; then :
+ if test "x$have_uuid" = xyes
+then :
LIBUUID_CFLAGS=${LIBUUID_CFLAGS-""}
LIBUUID_LIBS=${LIBUUID_LIBS-"-luuid"}
@@ -12153,31 +13464,31 @@ LIBS=$save_LIBS
else
LIBUUID_CFLAGS=$pkg_cv_LIBUUID_CFLAGS
LIBUUID_LIBS=$pkg_cv_LIBUUID_LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
- have_uuid=yes
- $as_echo "#define HAVE_UUID_H 1" >>confdefs.h
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ have_uuid=yes
+ printf "%s\n" "#define HAVE_UUID_H 1" >>confdefs.h
- $as_echo "#define HAVE_UUID_GENERATE_TIME_SAFE 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_UUID_GENERATE_TIME_SAFE 1" >>confdefs.h
fi
fi
-if test "x$have_uuid" = xmissing; then :
+if test "x$have_uuid" = xmissing
+then :
- for ac_header in uuid/uuid.h
+ for ac_header in uuid/uuid.h
do :
- ac_fn_c_check_header_mongrel "$LINENO" "uuid/uuid.h" "ac_cv_header_uuid_uuid_h" "$ac_includes_default"
-if test "x$ac_cv_header_uuid_uuid_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_UUID_UUID_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "uuid/uuid.h" "ac_cv_header_uuid_uuid_h" "$ac_includes_default"
+if test "x$ac_cv_header_uuid_uuid_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_UUID_UUID_H 1" >>confdefs.h
ac_fn_c_check_func "$LINENO" "uuid_generate_time" "ac_cv_func_uuid_generate_time"
-if test "x$ac_cv_func_uuid_generate_time" = xyes; then :
+if test "x$ac_cv_func_uuid_generate_time" = xyes
+then :
have_uuid=yes
LIBUUID_CFLAGS=${LIBUUID_CFLAGS-""}
@@ -12190,21 +13501,22 @@ fi
done
-
fi
-if test "x$have_uuid" = xmissing; then :
+if test "x$have_uuid" = xmissing
+then :
have_uuid=no
fi
# 'Real Time' functions on Solaris
# posix4 on Solaris 2.6
# pthread (first!) on Linux
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing sem_init" >&5
-$as_echo_n "checking for library containing sem_init... " >&6; }
-if ${ac_cv_search_sem_init+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing sem_init" >&5
+printf %s "checking for library containing sem_init... " >&6; }
+if test ${ac_cv_search_sem_init+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -12212,57 +13524,60 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char sem_init ();
int
-main ()
+main (void)
{
return sem_init ();
;
return 0;
}
_ACEOF
-for ac_lib in '' pthread rt posix4; do
+for ac_lib in '' pthread rt posix4
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_sem_init=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_sem_init+:} false; then :
+ if test ${ac_cv_search_sem_init+y}
+then :
break
fi
done
-if ${ac_cv_search_sem_init+:} false; then :
+if test ${ac_cv_search_sem_init+y}
+then :
-else
+else $as_nop
ac_cv_search_sem_init=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_sem_init" >&5
-$as_echo "$ac_cv_search_sem_init" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_sem_init" >&5
+printf "%s\n" "$ac_cv_search_sem_init" >&6; }
ac_res=$ac_cv_search_sem_init
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
# check if we need libintl for locale functions
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for textdomain in -lintl" >&5
-$as_echo_n "checking for textdomain in -lintl... " >&6; }
-if ${ac_cv_lib_intl_textdomain+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for textdomain in -lintl" >&5
+printf %s "checking for textdomain in -lintl... " >&6; }
+if test ${ac_cv_lib_intl_textdomain+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lintl $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -12271,32 +13586,31 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char textdomain ();
int
-main ()
+main (void)
{
return textdomain ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_intl_textdomain=yes
-else
+else $as_nop
ac_cv_lib_intl_textdomain=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_textdomain" >&5
-$as_echo "$ac_cv_lib_intl_textdomain" >&6; }
-if test "x$ac_cv_lib_intl_textdomain" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_textdomain" >&5
+printf "%s\n" "$ac_cv_lib_intl_textdomain" >&6; }
+if test "x$ac_cv_lib_intl_textdomain" = xyes
+then :
-$as_echo "#define WITH_LIBINTL 1" >>confdefs.h
+printf "%s\n" "#define WITH_LIBINTL 1" >>confdefs.h
LIBS="-lintl $LIBS"
fi
@@ -12304,14 +13618,14 @@ fi
# checks for system dependent C++ extensions support
case "$ac_sys_system" in
- AIX*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for genuine AIX C++ extensions support" >&5
-$as_echo_n "checking for genuine AIX C++ extensions support... " >&6; }
+ AIX*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for genuine AIX C++ extensions support" >&5
+printf %s "checking for genuine AIX C++ extensions support... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
int
-main ()
+main (void)
{
loadAndInit("", 0, "")
;
@@ -12319,48 +13633,49 @@ loadAndInit("", 0, "")
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
-$as_echo "#define AIX_GENUINE_CPLUSPLUS 1" >>confdefs.h
+printf "%s\n" "#define AIX_GENUINE_CPLUSPLUS 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-else
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
# BUILD_GNU_TYPE + AIX_BUILDDATE are used to construct the platform_tag
# of the AIX system used to build/package Python executable. This tag serves
# as a baseline for bdist module packages
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the system builddate" >&5
-$as_echo_n "checking for the system builddate... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the system builddate" >&5
+printf %s "checking for the system builddate... " >&6; }
AIX_BUILDDATE=$(lslpp -Lcq bos.mp64 | awk -F: '{ print $NF }')
-cat >>confdefs.h <<_ACEOF
-#define AIX_BUILDDATE $AIX_BUILDDATE
-_ACEOF
+printf "%s\n" "#define AIX_BUILDDATE $AIX_BUILDDATE" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AIX_BUILDDATE" >&5
-$as_echo "$AIX_BUILDDATE" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AIX_BUILDDATE" >&5
+printf "%s\n" "$AIX_BUILDDATE" >&6; }
;;
*) ;;
esac
# check for systems that require aligned memory access
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking aligned memory access is required" >&5
-$as_echo_n "checking aligned memory access is required... " >&6; }
-if ${ac_cv_aligned_required+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking aligned memory access is required" >&5
+printf %s "checking aligned memory access is required... " >&6; }
+if test ${ac_cv_aligned_required+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
ac_cv_aligned_required=yes
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -12377,9 +13692,10 @@ int main(void)
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ac_cv_aligned_required=no
-else
+else $as_nop
ac_cv_aligned_required=yes
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -12388,36 +13704,37 @@ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_aligned_required" >&5
-$as_echo "$ac_cv_aligned_required" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_aligned_required" >&5
+printf "%s\n" "$ac_cv_aligned_required" >&6; }
if test "$ac_cv_aligned_required" = yes ; then
-$as_echo "#define HAVE_ALIGNED_REQUIRED 1" >>confdefs.h
+printf "%s\n" "#define HAVE_ALIGNED_REQUIRED 1" >>confdefs.h
fi
# str, bytes and memoryview hash algorithm
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-hash-algorithm" >&5
-$as_echo_n "checking for --with-hash-algorithm... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-hash-algorithm" >&5
+printf %s "checking for --with-hash-algorithm... " >&6; }
# Check whether --with-hash_algorithm was given.
-if test "${with_hash_algorithm+set}" = set; then :
+if test ${with_hash_algorithm+y}
+then :
withval=$with_hash_algorithm;
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $withval" >&5
-$as_echo "$withval" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $withval" >&5
+printf "%s\n" "$withval" >&6; }
case "$withval" in
siphash13)
- $as_echo "#define Py_HASH_ALGORITHM 3" >>confdefs.h
+ printf "%s\n" "#define Py_HASH_ALGORITHM 3" >>confdefs.h
;;
siphash24)
- $as_echo "#define Py_HASH_ALGORITHM 1" >>confdefs.h
+ printf "%s\n" "#define Py_HASH_ALGORITHM 1" >>confdefs.h
;;
fnv)
- $as_echo "#define Py_HASH_ALGORITHM 2" >>confdefs.h
+ printf "%s\n" "#define Py_HASH_ALGORITHM 2" >>confdefs.h
;;
*)
@@ -12425,9 +13742,9 @@ case "$withval" in
;;
esac
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: default" >&5
-$as_echo "default" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: default" >&5
+printf "%s\n" "default" >&6; }
fi
@@ -12446,11 +13763,12 @@ validate_tzpath() {
}
TZPATH="/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-tzpath" >&5
-$as_echo_n "checking for --with-tzpath... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-tzpath" >&5
+printf %s "checking for --with-tzpath... " >&6; }
# Check whether --with-tzpath was given.
-if test "${with_tzpath+set}" = set; then :
+if test ${with_tzpath+y}
+then :
withval=$with_tzpath;
case "$withval" in
yes)
@@ -12459,25 +13777,26 @@ case "$withval" in
*)
validate_tzpath "$withval"
TZPATH="$withval"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"$withval\"" >&5
-$as_echo "\"$withval\"" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: \"$withval\"" >&5
+printf "%s\n" "\"$withval\"" >&6; }
;;
esac
-else
+else $as_nop
validate_tzpath "$TZPATH"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"$TZPATH\"" >&5
-$as_echo "\"$TZPATH\"" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: \"$TZPATH\"" >&5
+printf "%s\n" "\"$TZPATH\"" >&6; }
fi
# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for t_open in -lnsl" >&5
-$as_echo_n "checking for t_open in -lnsl... " >&6; }
-if ${ac_cv_lib_nsl_t_open+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for t_open in -lnsl" >&5
+printf %s "checking for t_open in -lnsl... " >&6; }
+if test ${ac_cv_lib_nsl_t_open+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lnsl $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -12486,38 +13805,38 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char t_open ();
int
-main ()
+main (void)
{
return t_open ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_nsl_t_open=yes
-else
+else $as_nop
ac_cv_lib_nsl_t_open=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_t_open" >&5
-$as_echo "$ac_cv_lib_nsl_t_open" >&6; }
-if test "x$ac_cv_lib_nsl_t_open" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_t_open" >&5
+printf "%s\n" "$ac_cv_lib_nsl_t_open" >&6; }
+if test "x$ac_cv_lib_nsl_t_open" = xyes
+then :
LIBS="-lnsl $LIBS"
fi
# SVR4
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5
-$as_echo_n "checking for socket in -lsocket... " >&6; }
-if ${ac_cv_lib_socket_socket+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5
+printf %s "checking for socket in -lsocket... " >&6; }
+if test ${ac_cv_lib_socket_socket+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsocket $LIBS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -12526,41 +13845,41 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char socket ();
int
-main ()
+main (void)
{
return socket ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_socket_socket=yes
-else
+else $as_nop
ac_cv_lib_socket_socket=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5
-$as_echo "$ac_cv_lib_socket_socket" >&6; }
-if test "x$ac_cv_lib_socket_socket" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5
+printf "%s\n" "$ac_cv_lib_socket_socket" >&6; }
+if test "x$ac_cv_lib_socket_socket" = xyes
+then :
LIBS="-lsocket $LIBS"
fi
# SVR4 sockets
case $ac_sys_system/$ac_sys_release in
Haiku*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lnetwork" >&5
-$as_echo_n "checking for socket in -lnetwork... " >&6; }
-if ${ac_cv_lib_network_socket+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for socket in -lnetwork" >&5
+printf %s "checking for socket in -lnetwork... " >&6; }
+if test ${ac_cv_lib_network_socket+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lnetwork $LIBS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -12569,74 +13888,76 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char socket ();
int
-main ()
+main (void)
{
return socket ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_network_socket=yes
-else
+else $as_nop
ac_cv_lib_network_socket=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_network_socket" >&5
-$as_echo "$ac_cv_lib_network_socket" >&6; }
-if test "x$ac_cv_lib_network_socket" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_network_socket" >&5
+printf "%s\n" "$ac_cv_lib_network_socket" >&6; }
+if test "x$ac_cv_lib_network_socket" = xyes
+then :
LIBS="-lnetwork $LIBS"
fi
;;
esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-libs" >&5
-$as_echo_n "checking for --with-libs... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-libs" >&5
+printf %s "checking for --with-libs... " >&6; }
# Check whether --with-libs was given.
-if test "${with_libs+set}" = set; then :
+if test ${with_libs+y}
+then :
withval=$with_libs;
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $withval" >&5
-$as_echo "$withval" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $withval" >&5
+printf "%s\n" "$withval" >&6; }
LIBS="$withval $LIBS"
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# Check for use of the system expat library
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-system-expat" >&5
-$as_echo_n "checking for --with-system-expat... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-system-expat" >&5
+printf %s "checking for --with-system-expat... " >&6; }
# Check whether --with-system_expat was given.
-if test "${with_system_expat+set}" = set; then :
+if test ${with_system_expat+y}
+then :
withval=$with_system_expat;
-else
+else $as_nop
with_system_expat="no"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_system_expat" >&5
-$as_echo "$with_system_expat" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_system_expat" >&5
+printf "%s\n" "$with_system_expat" >&6; }
-if test "x$with_system_expat" = xyes; then :
+if test "x$with_system_expat" = xyes
+then :
LIBEXPAT_CFLAGS=${LIBEXPAT_CFLAGS-""}
LIBEXPAT_LDFLAGS=${LIBEXPAT_LDFLAGS-"-lexpat"}
LIBEXPAT_INTERNAL=
-else
+else $as_nop
LIBEXPAT_CFLAGS="-I\$(srcdir)/Modules/expat"
LIBEXPAT_LDFLAGS="-lm \$(LIBEXPAT_A)"
@@ -12648,7 +13969,8 @@ fi
have_libffi=missing
-if test "x$ac_sys_system" = xDarwin; then :
+if test "x$ac_sys_system" = xDarwin
+then :
save_CFLAGS=$CFLAGS
save_CPPFLAGS=$CPPFLAGS
@@ -12657,14 +13979,16 @@ save_LIBS=$LIBS
CFLAGS="-I${SDKROOT}/usr/include/ffi $CFLAGS"
- ac_fn_c_check_header_mongrel "$LINENO" "ffi.h" "ac_cv_header_ffi_h" "$ac_includes_default"
-if test "x$ac_cv_header_ffi_h" = xyes; then :
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ffi_call in -lffi" >&5
-$as_echo_n "checking for ffi_call in -lffi... " >&6; }
-if ${ac_cv_lib_ffi_ffi_call+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ ac_fn_c_check_header_compile "$LINENO" "ffi.h" "ac_cv_header_ffi_h" "$ac_includes_default"
+if test "x$ac_cv_header_ffi_h" = xyes
+then :
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ffi_call in -lffi" >&5
+printf %s "checking for ffi_call in -lffi... " >&6; }
+if test ${ac_cv_lib_ffi_ffi_call+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lffi $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -12673,30 +13997,29 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char ffi_call ();
int
-main ()
+main (void)
{
return ffi_call ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_ffi_ffi_call=yes
-else
+else $as_nop
ac_cv_lib_ffi_ffi_call=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ffi_ffi_call" >&5
-$as_echo "$ac_cv_lib_ffi_ffi_call" >&6; }
-if test "x$ac_cv_lib_ffi_ffi_call" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ffi_ffi_call" >&5
+printf "%s\n" "$ac_cv_lib_ffi_ffi_call" >&6; }
+if test "x$ac_cv_lib_ffi_ffi_call" = xyes
+then :
have_libffi=yes
LIBFFI_CFLAGS="-I${SDKROOT}/usr/include/ffi -DUSING_APPLE_OS_LIBFFI=1"
@@ -12708,7 +14031,6 @@ fi
fi
-
CFLAGS=$save_CFLAGS
CPPFLAGS=$save_CPPFLAGS
LDFLAGS=$save_LDFLAGS
@@ -12717,21 +14039,22 @@ LIBS=$save_LIBS
fi
-if test "x$have_libffi" = xmissing; then :
+if test "x$have_libffi" = xmissing
+then :
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBFFI" >&5
-$as_echo_n "checking for LIBFFI... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LIBFFI" >&5
+printf %s "checking for LIBFFI... " >&6; }
if test -n "$LIBFFI_CFLAGS"; then
pkg_cv_LIBFFI_CFLAGS="$LIBFFI_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libffi\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libffi\""; } >&5
($PKG_CONFIG --exists --print-errors "libffi") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_LIBFFI_CFLAGS=`$PKG_CONFIG --cflags "libffi" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
@@ -12745,10 +14068,10 @@ if test -n "$LIBFFI_LIBS"; then
pkg_cv_LIBFFI_LIBS="$LIBFFI_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libffi\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libffi\""; } >&5
($PKG_CONFIG --exists --print-errors "libffi") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_LIBFFI_LIBS=`$PKG_CONFIG --libs "libffi" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
@@ -12762,8 +14085,8 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
_pkg_short_errors_supported=yes
@@ -12787,14 +14110,16 @@ save_LIBS=$LIBS
CPPFLAGS="$CPPFLAGS $LIBFFI_CFLAGS"
LDFLAGS="$LDFLAGS $LIBFFI_LIBS"
- ac_fn_c_check_header_mongrel "$LINENO" "ffi.h" "ac_cv_header_ffi_h" "$ac_includes_default"
-if test "x$ac_cv_header_ffi_h" = xyes; then :
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ffi_call in -lffi" >&5
-$as_echo_n "checking for ffi_call in -lffi... " >&6; }
-if ${ac_cv_lib_ffi_ffi_call+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ ac_fn_c_check_header_compile "$LINENO" "ffi.h" "ac_cv_header_ffi_h" "$ac_includes_default"
+if test "x$ac_cv_header_ffi_h" = xyes
+then :
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ffi_call in -lffi" >&5
+printf %s "checking for ffi_call in -lffi... " >&6; }
+if test ${ac_cv_lib_ffi_ffi_call+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lffi $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -12803,36 +14128,35 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char ffi_call ();
int
-main ()
+main (void)
{
return ffi_call ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_ffi_ffi_call=yes
-else
+else $as_nop
ac_cv_lib_ffi_ffi_call=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ffi_ffi_call" >&5
-$as_echo "$ac_cv_lib_ffi_ffi_call" >&6; }
-if test "x$ac_cv_lib_ffi_ffi_call" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ffi_ffi_call" >&5
+printf "%s\n" "$ac_cv_lib_ffi_ffi_call" >&6; }
+if test "x$ac_cv_lib_ffi_ffi_call" = xyes
+then :
have_libffi=yes
LIBFFI_CFLAGS=${LIBFFI_CFLAGS-""}
LIBFFI_LIBS=${LIBFFI_LIBS-"-lffi"}
-else
+else $as_nop
have_libffi=no
fi
@@ -12840,7 +14164,6 @@ fi
fi
-
CFLAGS=$save_CFLAGS
CPPFLAGS=$save_CPPFLAGS
LDFLAGS=$save_LDFLAGS
@@ -12849,8 +14172,8 @@ LIBS=$save_LIBS
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
save_CFLAGS=$CFLAGS
save_CPPFLAGS=$CPPFLAGS
@@ -12860,14 +14183,16 @@ save_LIBS=$LIBS
CPPFLAGS="$CPPFLAGS $LIBFFI_CFLAGS"
LDFLAGS="$LDFLAGS $LIBFFI_LIBS"
- ac_fn_c_check_header_mongrel "$LINENO" "ffi.h" "ac_cv_header_ffi_h" "$ac_includes_default"
-if test "x$ac_cv_header_ffi_h" = xyes; then :
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ffi_call in -lffi" >&5
-$as_echo_n "checking for ffi_call in -lffi... " >&6; }
-if ${ac_cv_lib_ffi_ffi_call+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ ac_fn_c_check_header_compile "$LINENO" "ffi.h" "ac_cv_header_ffi_h" "$ac_includes_default"
+if test "x$ac_cv_header_ffi_h" = xyes
+then :
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ffi_call in -lffi" >&5
+printf %s "checking for ffi_call in -lffi... " >&6; }
+if test ${ac_cv_lib_ffi_ffi_call+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lffi $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -12876,36 +14201,35 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char ffi_call ();
int
-main ()
+main (void)
{
return ffi_call ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_ffi_ffi_call=yes
-else
+else $as_nop
ac_cv_lib_ffi_ffi_call=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ffi_ffi_call" >&5
-$as_echo "$ac_cv_lib_ffi_ffi_call" >&6; }
-if test "x$ac_cv_lib_ffi_ffi_call" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ffi_ffi_call" >&5
+printf "%s\n" "$ac_cv_lib_ffi_ffi_call" >&6; }
+if test "x$ac_cv_lib_ffi_ffi_call" = xyes
+then :
have_libffi=yes
LIBFFI_CFLAGS=${LIBFFI_CFLAGS-""}
LIBFFI_LIBS=${LIBFFI_LIBS-"-lffi"}
-else
+else $as_nop
have_libffi=no
fi
@@ -12913,7 +14237,6 @@ fi
fi
-
CFLAGS=$save_CFLAGS
CPPFLAGS=$save_CPPFLAGS
LDFLAGS=$save_LDFLAGS
@@ -12924,14 +14247,15 @@ LIBS=$save_LIBS
else
LIBFFI_CFLAGS=$pkg_cv_LIBFFI_CFLAGS
LIBFFI_LIBS=$pkg_cv_LIBFFI_LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
have_libffi=yes
fi
fi
-if test "x$have_libffi" = xyes; then :
+if test "x$have_libffi" = xyes
+then :
ctypes_malloc_closure=no
case $ac_sys_system in #(
@@ -12945,7 +14269,8 @@ if test "x$have_libffi" = xyes; then :
*) :
;;
esac
- if test "x$ctypes_malloc_closure" = xyes; then :
+ if test "x$ctypes_malloc_closure" = xyes
+then :
MODULE__CTYPES_MALLOC_CLOSURE=_ctypes/malloc_closure.c
as_fn_append LIBFFI_CFLAGS " -DUSING_MALLOC_CLOSURE_DOT_C=1"
@@ -12953,7 +14278,8 @@ esac
fi
- if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+ if test "x$ac_cv_lib_dl_dlopen" = xyes
+then :
as_fn_append LIBFFI_LIBS " -ldl"
fi
@@ -12968,35 +14294,38 @@ save_LIBS=$LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ffi_prep_cif_var" >&5
-$as_echo_n "checking for ffi_prep_cif_var... " >&6; }
-if ${ac_cv_func_ffi_prep_cif_var+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ffi_prep_cif_var" >&5
+printf %s "checking for ffi_prep_cif_var... " >&6; }
+if test ${ac_cv_func_ffi_prep_cif_var+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
int
-main ()
+main (void)
{
void *x=ffi_prep_cif_var
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_ffi_prep_cif_var=yes
-else
+else $as_nop
ac_cv_func_ffi_prep_cif_var=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_ffi_prep_cif_var" >&5
-$as_echo "$ac_cv_func_ffi_prep_cif_var" >&6; }
- if test "x$ac_cv_func_ffi_prep_cif_var" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_ffi_prep_cif_var" >&5
+printf "%s\n" "$ac_cv_func_ffi_prep_cif_var" >&6; }
+ if test "x$ac_cv_func_ffi_prep_cif_var" = xyes
+then :
-$as_echo "#define HAVE_FFI_PREP_CIF_VAR 1" >>confdefs.h
+printf "%s\n" "#define HAVE_FFI_PREP_CIF_VAR 1" >>confdefs.h
fi
@@ -13004,35 +14333,38 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ffi_prep_closure_loc" >&5
-$as_echo_n "checking for ffi_prep_closure_loc... " >&6; }
-if ${ac_cv_func_ffi_prep_closure_loc+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ffi_prep_closure_loc" >&5
+printf %s "checking for ffi_prep_closure_loc... " >&6; }
+if test ${ac_cv_func_ffi_prep_closure_loc+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
int
-main ()
+main (void)
{
void *x=ffi_prep_closure_loc
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_ffi_prep_closure_loc=yes
-else
+else $as_nop
ac_cv_func_ffi_prep_closure_loc=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_ffi_prep_closure_loc" >&5
-$as_echo "$ac_cv_func_ffi_prep_closure_loc" >&6; }
- if test "x$ac_cv_func_ffi_prep_closure_loc" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_ffi_prep_closure_loc" >&5
+printf "%s\n" "$ac_cv_func_ffi_prep_closure_loc" >&6; }
+ if test "x$ac_cv_func_ffi_prep_closure_loc" = xyes
+then :
-$as_echo "#define HAVE_FFI_PREP_CLOSURE_LOC 1" >>confdefs.h
+printf "%s\n" "#define HAVE_FFI_PREP_CLOSURE_LOC 1" >>confdefs.h
fi
@@ -13040,35 +14372,38 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ffi_closure_alloc" >&5
-$as_echo_n "checking for ffi_closure_alloc... " >&6; }
-if ${ac_cv_func_ffi_closure_alloc+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ffi_closure_alloc" >&5
+printf %s "checking for ffi_closure_alloc... " >&6; }
+if test ${ac_cv_func_ffi_closure_alloc+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
int
-main ()
+main (void)
{
void *x=ffi_closure_alloc
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_ffi_closure_alloc=yes
-else
+else $as_nop
ac_cv_func_ffi_closure_alloc=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_ffi_closure_alloc" >&5
-$as_echo "$ac_cv_func_ffi_closure_alloc" >&6; }
- if test "x$ac_cv_func_ffi_closure_alloc" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_ffi_closure_alloc" >&5
+printf "%s\n" "$ac_cv_func_ffi_closure_alloc" >&6; }
+ if test "x$ac_cv_func_ffi_closure_alloc" = xyes
+then :
-$as_echo "#define HAVE_FFI_CLOSURE_ALLOC 1" >>confdefs.h
+printf "%s\n" "#define HAVE_FFI_CLOSURE_ALLOC 1" >>confdefs.h
fi
@@ -13085,32 +14420,35 @@ LIBS=$save_LIBS
fi
# Check for use of the system libmpdec library
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-system-libmpdec" >&5
-$as_echo_n "checking for --with-system-libmpdec... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-system-libmpdec" >&5
+printf %s "checking for --with-system-libmpdec... " >&6; }
# Check whether --with-system_libmpdec was given.
-if test "${with_system_libmpdec+set}" = set; then :
+if test ${with_system_libmpdec+y}
+then :
withval=$with_system_libmpdec;
-else
+else $as_nop
with_system_libmpdec="no"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_system_libmpdec" >&5
-$as_echo "$with_system_libmpdec" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_system_libmpdec" >&5
+printf "%s\n" "$with_system_libmpdec" >&6; }
-if test "x$with_system_libmpdec" = xyes; then :
+if test "x$with_system_libmpdec" = xyes
+then :
LIBMPDEC_CFLAGS=${LIBMPDEC_CFLAGS-""}
LIBMPDEC_LDFLAGS=${LIBMPDEC_LDFLAGS-"-lmpdec"}
LIBMPDEC_INTERNAL=
-else
+else $as_nop
LIBMPDEC_CFLAGS="-I\$(srcdir)/Modules/_decimal/libmpdec"
LIBMPDEC_LDFLAGS="-lm \$(LIBMPDEC_A)"
LIBMPDEC_INTERNAL="\$(LIBMPDEC_HEADERS) \$(LIBMPDEC_A)"
- if test "x$with_pydebug" = xyes; then :
+ if test "x$with_pydebug" = xyes
+then :
as_fn_append LIBMPDEC_CFLAGS " -DTEST_COVERAGE"
@@ -13122,13 +14460,14 @@ fi
# Check whether _decimal should use a coroutine-local or thread-local context
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-decimal-contextvar" >&5
-$as_echo_n "checking for --with-decimal-contextvar... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-decimal-contextvar" >&5
+printf %s "checking for --with-decimal-contextvar... " >&6; }
# Check whether --with-decimal_contextvar was given.
-if test "${with_decimal_contextvar+set}" = set; then :
+if test ${with_decimal_contextvar+y}
+then :
withval=$with_decimal_contextvar;
-else
+else $as_nop
with_decimal_contextvar="yes"
fi
@@ -13136,16 +14475,16 @@ fi
if test "$with_decimal_contextvar" != "no"
then
-$as_echo "#define WITH_DECIMAL_CONTEXTVAR 1" >>confdefs.h
+printf "%s\n" "#define WITH_DECIMAL_CONTEXTVAR 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_decimal_contextvar" >&5
-$as_echo "$with_decimal_contextvar" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_decimal_contextvar" >&5
+printf "%s\n" "$with_decimal_contextvar" >&6; }
# Check for libmpdec machine flavor
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for decimal libmpdec machine" >&5
-$as_echo_n "checking for decimal libmpdec machine... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for decimal libmpdec machine" >&5
+printf %s "checking for decimal libmpdec machine... " >&6; }
case $ac_sys_system in #(
Darwin*) :
libmpdec_system=Darwin ;; #(
@@ -13184,8 +14523,8 @@ esac
libmpdec_machine=ansi32
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libmpdec_machine" >&5
-$as_echo "$libmpdec_machine" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libmpdec_machine" >&5
+printf "%s\n" "$libmpdec_machine" >&6; }
case $libmpdec_machine in #(
x64) :
@@ -13223,17 +14562,17 @@ fi
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBNSL" >&5
-$as_echo_n "checking for LIBNSL... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LIBNSL" >&5
+printf %s "checking for LIBNSL... " >&6; }
if test -n "$LIBNSL_CFLAGS"; then
pkg_cv_LIBNSL_CFLAGS="$LIBNSL_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libnsl\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libnsl\""; } >&5
($PKG_CONFIG --exists --print-errors "libnsl") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_LIBNSL_CFLAGS=`$PKG_CONFIG --cflags "libnsl" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
@@ -13247,10 +14586,10 @@ if test -n "$LIBNSL_LIBS"; then
pkg_cv_LIBNSL_LIBS="$LIBNSL_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libnsl\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libnsl\""; } >&5
($PKG_CONFIG --exists --print-errors "libnsl") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_LIBNSL_LIBS=`$PKG_CONFIG --libs "libnsl" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
@@ -13264,8 +14603,8 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
_pkg_short_errors_supported=yes
@@ -13288,11 +14627,12 @@ save_LDFLAGS=$LDFLAGS
save_LIBS=$LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing yp_match" >&5
-$as_echo_n "checking for library containing yp_match... " >&6; }
-if ${ac_cv_search_yp_match+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing yp_match" >&5
+printf %s "checking for library containing yp_match... " >&6; }
+if test ${ac_cv_search_yp_match+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -13300,49 +14640,51 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char yp_match ();
int
-main ()
+main (void)
{
return yp_match ();
;
return 0;
}
_ACEOF
-for ac_lib in '' nsl; do
+for ac_lib in '' nsl
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_yp_match=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_yp_match+:} false; then :
+ if test ${ac_cv_search_yp_match+y}
+then :
break
fi
done
-if ${ac_cv_search_yp_match+:} false; then :
+if test ${ac_cv_search_yp_match+y}
+then :
-else
+else $as_nop
ac_cv_search_yp_match=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_yp_match" >&5
-$as_echo "$ac_cv_search_yp_match" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_yp_match" >&5
+printf "%s\n" "$ac_cv_search_yp_match" >&6; }
ac_res=$ac_cv_search_yp_match
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
have_nis=yes
-else
+else $as_nop
have_nis=no
fi
@@ -13365,8 +14707,8 @@ esac
LIBNSL_LIBS=${LIBNSL_LIBS-$libnsl}
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
LIBNSL_CFLAGS=${LIBNSL_CFLAGS-""}
save_CFLAGS=$CFLAGS
@@ -13375,11 +14717,12 @@ save_LDFLAGS=$LDFLAGS
save_LIBS=$LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing yp_match" >&5
-$as_echo_n "checking for library containing yp_match... " >&6; }
-if ${ac_cv_search_yp_match+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing yp_match" >&5
+printf %s "checking for library containing yp_match... " >&6; }
+if test ${ac_cv_search_yp_match+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -13387,49 +14730,51 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char yp_match ();
int
-main ()
+main (void)
{
return yp_match ();
;
return 0;
}
_ACEOF
-for ac_lib in '' nsl; do
+for ac_lib in '' nsl
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_yp_match=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_yp_match+:} false; then :
+ if test ${ac_cv_search_yp_match+y}
+then :
break
fi
done
-if ${ac_cv_search_yp_match+:} false; then :
+if test ${ac_cv_search_yp_match+y}
+then :
-else
+else $as_nop
ac_cv_search_yp_match=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_yp_match" >&5
-$as_echo "$ac_cv_search_yp_match" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_yp_match" >&5
+printf "%s\n" "$ac_cv_search_yp_match" >&6; }
ac_res=$ac_cv_search_yp_match
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
have_nis=yes
-else
+else $as_nop
have_nis=no
fi
@@ -13454,12 +14799,13 @@ esac
else
LIBNSL_CFLAGS=$pkg_cv_LIBNSL_CFLAGS
LIBNSL_LIBS=$pkg_cv_LIBNSL_LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
have_nis=yes
fi
-if test "x$have_nis" = xyes; then :
+if test "x$have_nis" = xyes
+then :
save_CFLAGS=$CFLAGS
save_CPPFLAGS=$CPPFLAGS
@@ -13468,18 +14814,13 @@ save_LIBS=$LIBS
CPPFLAGS="$CPPFLAGS $LIBNSL_CFLAGS"
- for ac_header in rpc/rpc.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "rpc/rpc.h" "ac_cv_header_rpc_rpc_h" "$ac_includes_default"
-if test "x$ac_cv_header_rpc_rpc_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_RPC_RPC_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "rpc/rpc.h" "ac_cv_header_rpc_rpc_h" "$ac_includes_default"
+if test "x$ac_cv_header_rpc_rpc_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_RPC_RPC_H 1" >>confdefs.h
fi
-done
-
CFLAGS=$save_CFLAGS
CPPFLAGS=$save_CPPFLAGS
@@ -13501,7 +14842,8 @@ esac
- if test "$ac_sys_system" = "Emscripten" -a -z "$LIBSQLITE3_CFLAGS" -a -z "$LIBSQLITE3_LIBS"; then :
+ if test "$ac_sys_system" = "Emscripten" -a -z "$LIBSQLITE3_CFLAGS" -a -z "$LIBSQLITE3_LIBS"
+then :
LIBSQLITE3_CFLAGS="-sUSE_SQLITE3"
LIBSQLITE3_LIBS="-sUSE_SQLITE3"
@@ -13513,17 +14855,17 @@ fi
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBSQLITE3" >&5
-$as_echo_n "checking for LIBSQLITE3... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LIBSQLITE3" >&5
+printf %s "checking for LIBSQLITE3... " >&6; }
if test -n "$LIBSQLITE3_CFLAGS"; then
pkg_cv_LIBSQLITE3_CFLAGS="$LIBSQLITE3_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sqlite3 >= 3.7.15\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sqlite3 >= 3.7.15\""; } >&5
($PKG_CONFIG --exists --print-errors "sqlite3 >= 3.7.15") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_LIBSQLITE3_CFLAGS=`$PKG_CONFIG --cflags "sqlite3 >= 3.7.15" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
@@ -13537,10 +14879,10 @@ if test -n "$LIBSQLITE3_LIBS"; then
pkg_cv_LIBSQLITE3_LIBS="$LIBSQLITE3_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sqlite3 >= 3.7.15\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sqlite3 >= 3.7.15\""; } >&5
($PKG_CONFIG --exists --print-errors "sqlite3 >= 3.7.15") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_LIBSQLITE3_LIBS=`$PKG_CONFIG --libs "sqlite3 >= 3.7.15" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
@@ -13554,8 +14896,8 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
_pkg_short_errors_supported=yes
@@ -13576,8 +14918,8 @@ fi
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
LIBSQLITE3_CFLAGS=${LIBSQLITE3_CFLAGS-""}
LIBSQLITE3_LIBS=${LIBSQLITE3_LIBS-"-lsqlite3"}
@@ -13586,8 +14928,8 @@ $as_echo "no" >&6; }
else
LIBSQLITE3_CFLAGS=$pkg_cv_LIBSQLITE3_CFLAGS
LIBSQLITE3_LIBS=$pkg_cv_LIBSQLITE3_LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
fi
as_fn_append LIBSQLITE3_CFLAGS ' -I$(srcdir)/Modules/_sqlite'
@@ -13603,8 +14945,9 @@ save_LIBS=$LIBS
CPPFLAGS="$CPPFLAGS $LIBSQLITE3_CFLAGS"
LDFLAGS="$LIBSQLITE3_LIBS $LDFLAGS"
- ac_fn_c_check_header_mongrel "$LINENO" "sqlite3.h" "ac_cv_header_sqlite3_h" "$ac_includes_default"
-if test "x$ac_cv_header_sqlite3_h" = xyes; then :
+ ac_fn_c_check_header_compile "$LINENO" "sqlite3.h" "ac_cv_header_sqlite3_h" "$ac_includes_default"
+if test "x$ac_cv_header_sqlite3_h" = xyes
+then :
have_sqlite3=yes
@@ -13618,7 +14961,7 @@ if test "x$ac_cv_header_sqlite3_h" = xyes; then :
#endif
int
-main ()
+main (void)
{
;
@@ -13626,15 +14969,17 @@ main ()
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
have_supported_sqlite3=yes
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_bind_double in -lsqlite3" >&5
-$as_echo_n "checking for sqlite3_bind_double in -lsqlite3... " >&6; }
-if ${ac_cv_lib_sqlite3_sqlite3_bind_double+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_bind_double in -lsqlite3" >&5
+printf %s "checking for sqlite3_bind_double in -lsqlite3... " >&6; }
+if test ${ac_cv_lib_sqlite3_sqlite3_bind_double+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsqlite3 $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -13643,37 +14988,34 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char sqlite3_bind_double ();
int
-main ()
+main (void)
{
return sqlite3_bind_double ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_sqlite3_sqlite3_bind_double=yes
-else
+else $as_nop
ac_cv_lib_sqlite3_sqlite3_bind_double=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_bind_double" >&5
-$as_echo "$ac_cv_lib_sqlite3_sqlite3_bind_double" >&6; }
-if test "x$ac_cv_lib_sqlite3_sqlite3_bind_double" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBSQLITE3 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_bind_double" >&5
+printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_bind_double" >&6; }
+if test "x$ac_cv_lib_sqlite3_sqlite3_bind_double" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBSQLITE3 1" >>confdefs.h
LIBS="-lsqlite3 $LIBS"
-else
+else $as_nop
have_supported_sqlite3=no
@@ -13681,11 +15023,12 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_column_decltype in -lsqlite3" >&5
-$as_echo_n "checking for sqlite3_column_decltype in -lsqlite3... " >&6; }
-if ${ac_cv_lib_sqlite3_sqlite3_column_decltype+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_column_decltype in -lsqlite3" >&5
+printf %s "checking for sqlite3_column_decltype in -lsqlite3... " >&6; }
+if test ${ac_cv_lib_sqlite3_sqlite3_column_decltype+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsqlite3 $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -13694,37 +15037,34 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char sqlite3_column_decltype ();
int
-main ()
+main (void)
{
return sqlite3_column_decltype ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_sqlite3_sqlite3_column_decltype=yes
-else
+else $as_nop
ac_cv_lib_sqlite3_sqlite3_column_decltype=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_column_decltype" >&5
-$as_echo "$ac_cv_lib_sqlite3_sqlite3_column_decltype" >&6; }
-if test "x$ac_cv_lib_sqlite3_sqlite3_column_decltype" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBSQLITE3 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_column_decltype" >&5
+printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_column_decltype" >&6; }
+if test "x$ac_cv_lib_sqlite3_sqlite3_column_decltype" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBSQLITE3 1" >>confdefs.h
LIBS="-lsqlite3 $LIBS"
-else
+else $as_nop
have_supported_sqlite3=no
@@ -13732,11 +15072,12 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_column_double in -lsqlite3" >&5
-$as_echo_n "checking for sqlite3_column_double in -lsqlite3... " >&6; }
-if ${ac_cv_lib_sqlite3_sqlite3_column_double+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_column_double in -lsqlite3" >&5
+printf %s "checking for sqlite3_column_double in -lsqlite3... " >&6; }
+if test ${ac_cv_lib_sqlite3_sqlite3_column_double+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsqlite3 $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -13745,37 +15086,34 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char sqlite3_column_double ();
int
-main ()
+main (void)
{
return sqlite3_column_double ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_sqlite3_sqlite3_column_double=yes
-else
+else $as_nop
ac_cv_lib_sqlite3_sqlite3_column_double=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_column_double" >&5
-$as_echo "$ac_cv_lib_sqlite3_sqlite3_column_double" >&6; }
-if test "x$ac_cv_lib_sqlite3_sqlite3_column_double" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBSQLITE3 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_column_double" >&5
+printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_column_double" >&6; }
+if test "x$ac_cv_lib_sqlite3_sqlite3_column_double" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBSQLITE3 1" >>confdefs.h
LIBS="-lsqlite3 $LIBS"
-else
+else $as_nop
have_supported_sqlite3=no
@@ -13783,11 +15121,12 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_complete in -lsqlite3" >&5
-$as_echo_n "checking for sqlite3_complete in -lsqlite3... " >&6; }
-if ${ac_cv_lib_sqlite3_sqlite3_complete+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_complete in -lsqlite3" >&5
+printf %s "checking for sqlite3_complete in -lsqlite3... " >&6; }
+if test ${ac_cv_lib_sqlite3_sqlite3_complete+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsqlite3 $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -13796,37 +15135,34 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char sqlite3_complete ();
int
-main ()
+main (void)
{
return sqlite3_complete ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_sqlite3_sqlite3_complete=yes
-else
+else $as_nop
ac_cv_lib_sqlite3_sqlite3_complete=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_complete" >&5
-$as_echo "$ac_cv_lib_sqlite3_sqlite3_complete" >&6; }
-if test "x$ac_cv_lib_sqlite3_sqlite3_complete" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBSQLITE3 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_complete" >&5
+printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_complete" >&6; }
+if test "x$ac_cv_lib_sqlite3_sqlite3_complete" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBSQLITE3 1" >>confdefs.h
LIBS="-lsqlite3 $LIBS"
-else
+else $as_nop
have_supported_sqlite3=no
@@ -13834,11 +15170,12 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_progress_handler in -lsqlite3" >&5
-$as_echo_n "checking for sqlite3_progress_handler in -lsqlite3... " >&6; }
-if ${ac_cv_lib_sqlite3_sqlite3_progress_handler+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_progress_handler in -lsqlite3" >&5
+printf %s "checking for sqlite3_progress_handler in -lsqlite3... " >&6; }
+if test ${ac_cv_lib_sqlite3_sqlite3_progress_handler+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsqlite3 $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -13847,37 +15184,34 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char sqlite3_progress_handler ();
int
-main ()
+main (void)
{
return sqlite3_progress_handler ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_sqlite3_sqlite3_progress_handler=yes
-else
+else $as_nop
ac_cv_lib_sqlite3_sqlite3_progress_handler=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_progress_handler" >&5
-$as_echo "$ac_cv_lib_sqlite3_sqlite3_progress_handler" >&6; }
-if test "x$ac_cv_lib_sqlite3_sqlite3_progress_handler" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBSQLITE3 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_progress_handler" >&5
+printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_progress_handler" >&6; }
+if test "x$ac_cv_lib_sqlite3_sqlite3_progress_handler" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBSQLITE3 1" >>confdefs.h
LIBS="-lsqlite3 $LIBS"
-else
+else $as_nop
have_supported_sqlite3=no
@@ -13885,11 +15219,12 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_result_double in -lsqlite3" >&5
-$as_echo_n "checking for sqlite3_result_double in -lsqlite3... " >&6; }
-if ${ac_cv_lib_sqlite3_sqlite3_result_double+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_result_double in -lsqlite3" >&5
+printf %s "checking for sqlite3_result_double in -lsqlite3... " >&6; }
+if test ${ac_cv_lib_sqlite3_sqlite3_result_double+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsqlite3 $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -13898,37 +15233,34 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char sqlite3_result_double ();
int
-main ()
+main (void)
{
return sqlite3_result_double ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_sqlite3_sqlite3_result_double=yes
-else
+else $as_nop
ac_cv_lib_sqlite3_sqlite3_result_double=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_result_double" >&5
-$as_echo "$ac_cv_lib_sqlite3_sqlite3_result_double" >&6; }
-if test "x$ac_cv_lib_sqlite3_sqlite3_result_double" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBSQLITE3 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_result_double" >&5
+printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_result_double" >&6; }
+if test "x$ac_cv_lib_sqlite3_sqlite3_result_double" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBSQLITE3 1" >>confdefs.h
LIBS="-lsqlite3 $LIBS"
-else
+else $as_nop
have_supported_sqlite3=no
@@ -13936,11 +15268,12 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_set_authorizer in -lsqlite3" >&5
-$as_echo_n "checking for sqlite3_set_authorizer in -lsqlite3... " >&6; }
-if ${ac_cv_lib_sqlite3_sqlite3_set_authorizer+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_set_authorizer in -lsqlite3" >&5
+printf %s "checking for sqlite3_set_authorizer in -lsqlite3... " >&6; }
+if test ${ac_cv_lib_sqlite3_sqlite3_set_authorizer+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsqlite3 $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -13949,37 +15282,34 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char sqlite3_set_authorizer ();
int
-main ()
+main (void)
{
return sqlite3_set_authorizer ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_sqlite3_sqlite3_set_authorizer=yes
-else
+else $as_nop
ac_cv_lib_sqlite3_sqlite3_set_authorizer=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_set_authorizer" >&5
-$as_echo "$ac_cv_lib_sqlite3_sqlite3_set_authorizer" >&6; }
-if test "x$ac_cv_lib_sqlite3_sqlite3_set_authorizer" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBSQLITE3 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_set_authorizer" >&5
+printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_set_authorizer" >&6; }
+if test "x$ac_cv_lib_sqlite3_sqlite3_set_authorizer" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBSQLITE3 1" >>confdefs.h
LIBS="-lsqlite3 $LIBS"
-else
+else $as_nop
have_supported_sqlite3=no
@@ -13987,11 +15317,12 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_trace_v2 in -lsqlite3" >&5
-$as_echo_n "checking for sqlite3_trace_v2 in -lsqlite3... " >&6; }
-if ${ac_cv_lib_sqlite3_sqlite3_trace_v2+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_trace_v2 in -lsqlite3" >&5
+printf %s "checking for sqlite3_trace_v2 in -lsqlite3... " >&6; }
+if test ${ac_cv_lib_sqlite3_sqlite3_trace_v2+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsqlite3 $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -14000,45 +15331,43 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char sqlite3_trace_v2 ();
int
-main ()
+main (void)
{
return sqlite3_trace_v2 ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_sqlite3_sqlite3_trace_v2=yes
-else
+else $as_nop
ac_cv_lib_sqlite3_sqlite3_trace_v2=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_trace_v2" >&5
-$as_echo "$ac_cv_lib_sqlite3_sqlite3_trace_v2" >&6; }
-if test "x$ac_cv_lib_sqlite3_sqlite3_trace_v2" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBSQLITE3 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_trace_v2" >&5
+printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_trace_v2" >&6; }
+if test "x$ac_cv_lib_sqlite3_sqlite3_trace_v2" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBSQLITE3 1" >>confdefs.h
LIBS="-lsqlite3 $LIBS"
-else
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_trace in -lsqlite3" >&5
-$as_echo_n "checking for sqlite3_trace in -lsqlite3... " >&6; }
-if ${ac_cv_lib_sqlite3_sqlite3_trace+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_trace in -lsqlite3" >&5
+printf %s "checking for sqlite3_trace in -lsqlite3... " >&6; }
+if test ${ac_cv_lib_sqlite3_sqlite3_trace+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsqlite3 $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -14047,37 +15376,34 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char sqlite3_trace ();
int
-main ()
+main (void)
{
return sqlite3_trace ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_sqlite3_sqlite3_trace=yes
-else
+else $as_nop
ac_cv_lib_sqlite3_sqlite3_trace=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_trace" >&5
-$as_echo "$ac_cv_lib_sqlite3_sqlite3_trace" >&6; }
-if test "x$ac_cv_lib_sqlite3_sqlite3_trace" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBSQLITE3 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_trace" >&5
+printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_trace" >&6; }
+if test "x$ac_cv_lib_sqlite3_sqlite3_trace" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBSQLITE3 1" >>confdefs.h
LIBS="-lsqlite3 $LIBS"
-else
+else $as_nop
have_supported_sqlite3=no
@@ -14090,11 +15416,12 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_value_double in -lsqlite3" >&5
-$as_echo_n "checking for sqlite3_value_double in -lsqlite3... " >&6; }
-if ${ac_cv_lib_sqlite3_sqlite3_value_double+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_value_double in -lsqlite3" >&5
+printf %s "checking for sqlite3_value_double in -lsqlite3... " >&6; }
+if test ${ac_cv_lib_sqlite3_sqlite3_value_double+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsqlite3 $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -14103,48 +15430,46 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char sqlite3_value_double ();
int
-main ()
+main (void)
{
return sqlite3_value_double ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_sqlite3_sqlite3_value_double=yes
-else
+else $as_nop
ac_cv_lib_sqlite3_sqlite3_value_double=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_value_double" >&5
-$as_echo "$ac_cv_lib_sqlite3_sqlite3_value_double" >&6; }
-if test "x$ac_cv_lib_sqlite3_sqlite3_value_double" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBSQLITE3 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_value_double" >&5
+printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_value_double" >&6; }
+if test "x$ac_cv_lib_sqlite3_sqlite3_value_double" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBSQLITE3 1" >>confdefs.h
LIBS="-lsqlite3 $LIBS"
-else
+else $as_nop
have_supported_sqlite3=no
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_load_extension in -lsqlite3" >&5
-$as_echo_n "checking for sqlite3_load_extension in -lsqlite3... " >&6; }
-if ${ac_cv_lib_sqlite3_sqlite3_load_extension+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_load_extension in -lsqlite3" >&5
+printf %s "checking for sqlite3_load_extension in -lsqlite3... " >&6; }
+if test ${ac_cv_lib_sqlite3_sqlite3_load_extension+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsqlite3 $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -14153,41 +15478,41 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char sqlite3_load_extension ();
int
-main ()
+main (void)
{
return sqlite3_load_extension ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_sqlite3_sqlite3_load_extension=yes
-else
+else $as_nop
ac_cv_lib_sqlite3_sqlite3_load_extension=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_load_extension" >&5
-$as_echo "$ac_cv_lib_sqlite3_sqlite3_load_extension" >&6; }
-if test "x$ac_cv_lib_sqlite3_sqlite3_load_extension" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_load_extension" >&5
+printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_load_extension" >&6; }
+if test "x$ac_cv_lib_sqlite3_sqlite3_load_extension" = xyes
+then :
have_sqlite3_load_extension=yes
-else
+else $as_nop
have_sqlite3_load_extension=no
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_serialize in -lsqlite3" >&5
-$as_echo_n "checking for sqlite3_serialize in -lsqlite3... " >&6; }
-if ${ac_cv_lib_sqlite3_sqlite3_serialize+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_serialize in -lsqlite3" >&5
+printf %s "checking for sqlite3_serialize in -lsqlite3... " >&6; }
+if test ${ac_cv_lib_sqlite3_sqlite3_serialize+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsqlite3 $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -14196,49 +15521,47 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char sqlite3_serialize ();
int
-main ()
+main (void)
{
return sqlite3_serialize ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_sqlite3_sqlite3_serialize=yes
-else
+else $as_nop
ac_cv_lib_sqlite3_sqlite3_serialize=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_serialize" >&5
-$as_echo "$ac_cv_lib_sqlite3_sqlite3_serialize" >&6; }
-if test "x$ac_cv_lib_sqlite3_sqlite3_serialize" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_serialize" >&5
+printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_serialize" >&6; }
+if test "x$ac_cv_lib_sqlite3_sqlite3_serialize" = xyes
+then :
-$as_echo "#define PY_SQLITE_HAVE_SERIALIZE 1" >>confdefs.h
+printf "%s\n" "#define PY_SQLITE_HAVE_SERIALIZE 1" >>confdefs.h
fi
-else
+else $as_nop
have_supported_sqlite3=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-
CFLAGS=$save_CFLAGS
CPPFLAGS=$save_CPPFLAGS
LDFLAGS=$save_LDFLAGS
@@ -14246,32 +15569,34 @@ LIBS=$save_LIBS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-loadable-sqlite-extensions" >&5
-$as_echo_n "checking for --enable-loadable-sqlite-extensions... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-loadable-sqlite-extensions" >&5
+printf %s "checking for --enable-loadable-sqlite-extensions... " >&6; }
# Check whether --enable-loadable-sqlite-extensions was given.
-if test "${enable_loadable_sqlite_extensions+set}" = set; then :
+if test ${enable_loadable_sqlite_extensions+y}
+then :
enableval=$enable_loadable_sqlite_extensions;
- if test "x$have_sqlite3_load_extension" = xno; then :
+ if test "x$have_sqlite3_load_extension" = xno
+then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: n/a" >&5
-$as_echo "n/a" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Your version of SQLite does not support loadable extensions" >&5
-$as_echo "$as_me: WARNING: Your version of SQLite does not support loadable extensions" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: n/a" >&5
+printf "%s\n" "n/a" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Your version of SQLite does not support loadable extensions" >&5
+printf "%s\n" "$as_me: WARNING: Your version of SQLite does not support loadable extensions" >&2;}
-else
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-$as_echo "#define PY_SQLITE_ENABLE_LOAD_EXTENSION 1" >>confdefs.h
+printf "%s\n" "#define PY_SQLITE_ENABLE_LOAD_EXTENSION 1" >>confdefs.h
fi
-else
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -14286,25 +15611,25 @@ for _QUERY in \
"tcl85 >= 8.5.12 tk85 >= 8.5.12" \
; do
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$_QUERY\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$_QUERY\""; } >&5
($PKG_CONFIG --exists --print-errors "$_QUERY") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for TCLTK" >&5
-$as_echo_n "checking for TCLTK... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for TCLTK" >&5
+printf %s "checking for TCLTK... " >&6; }
if test -n "$TCLTK_CFLAGS"; then
pkg_cv_TCLTK_CFLAGS="$TCLTK_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$_QUERY\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$_QUERY\""; } >&5
($PKG_CONFIG --exists --print-errors "$_QUERY") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_TCLTK_CFLAGS=`$PKG_CONFIG --cflags "$_QUERY" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
@@ -14318,10 +15643,10 @@ if test -n "$TCLTK_LIBS"; then
pkg_cv_TCLTK_LIBS="$TCLTK_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$_QUERY\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$_QUERY\""; } >&5
($PKG_CONFIG --exists --print-errors "$_QUERY") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_TCLTK_LIBS=`$PKG_CONFIG --libs "$_QUERY" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
@@ -14335,8 +15660,8 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
_pkg_short_errors_supported=yes
@@ -14353,24 +15678,26 @@ fi
found_tcltk=no
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
found_tcltk=no
else
TCLTK_CFLAGS=$pkg_cv_TCLTK_CFLAGS
TCLTK_LIBS=$pkg_cv_TCLTK_LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found_tcltk=yes
fi
fi
- if test "x$found_tcltk" = xyes; then :
+ if test "x$found_tcltk" = xyes
+then :
break
fi
done
-if test "x$found_tcltk" = xno; then :
+if test "x$found_tcltk" = xno
+then :
TCLTK_CFLAGS=${TCLTK_CFLAGS-""}
TCLTK_LIBS=${TCLTK_LIBS-""}
@@ -14381,25 +15708,25 @@ case $ac_sys_system in #(
FreeBSD*) :
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"x11\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"x11\""; } >&5
($PKG_CONFIG --exists --print-errors "x11") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for X11" >&5
-$as_echo_n "checking for X11... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for X11" >&5
+printf %s "checking for X11... " >&6; }
if test -n "$X11_CFLAGS"; then
pkg_cv_X11_CFLAGS="$X11_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"x11\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"x11\""; } >&5
($PKG_CONFIG --exists --print-errors "x11") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_X11_CFLAGS=`$PKG_CONFIG --cflags "x11" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
@@ -14413,10 +15740,10 @@ if test -n "$X11_LIBS"; then
pkg_cv_X11_LIBS="$X11_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"x11\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"x11\""; } >&5
($PKG_CONFIG --exists --print-errors "x11") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_X11_LIBS=`$PKG_CONFIG --libs "x11" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
@@ -14430,8 +15757,8 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
_pkg_short_errors_supported=yes
@@ -14457,10 +15784,10 @@ Alternatively, you may set the environment variables X11_CFLAGS
and X11_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details." "$LINENO" 5
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it
is in your PATH or set the PKG_CONFIG environment variable to the full
path to pkg-config.
@@ -14474,8 +15801,8 @@ See \`config.log' for more details" "$LINENO" 5; }
else
X11_CFLAGS=$pkg_cv_X11_CFLAGS
X11_LIBS=$pkg_cv_X11_LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
TCLTK_CFLAGS="$TCLTK_CFLAGS $X11_CFLAGS"
TCLTK_LIBS="$TCLTK_LIBS $X11_LIBS"
@@ -14521,7 +15848,7 @@ save_LIBS=$LIBS
#endif
int
-main ()
+main (void)
{
void *x1 = Tcl_Init;
@@ -14532,17 +15859,18 @@ main ()
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
have_tcltk=yes
as_fn_append TCLTK_CFLAGS " -Wno-strict-prototypes -DWITH_APPINIT=1"
-else
+else $as_nop
have_tcltk=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CFLAGS=$save_CFLAGS
@@ -14562,19 +15890,19 @@ save_LIBS=$LIBS
CPPFLAGS="$CPPFLAGS $GDBM_CFLAGS"
LDFLAGS="$GDBM_LIBS $LDFLAGS"
- for ac_header in gdbm.h
+ for ac_header in gdbm.h
do :
- ac_fn_c_check_header_mongrel "$LINENO" "gdbm.h" "ac_cv_header_gdbm_h" "$ac_includes_default"
-if test "x$ac_cv_header_gdbm_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GDBM_H 1
-_ACEOF
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gdbm_open in -lgdbm" >&5
-$as_echo_n "checking for gdbm_open in -lgdbm... " >&6; }
-if ${ac_cv_lib_gdbm_gdbm_open+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ ac_fn_c_check_header_compile "$LINENO" "gdbm.h" "ac_cv_header_gdbm_h" "$ac_includes_default"
+if test "x$ac_cv_header_gdbm_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_GDBM_H 1" >>confdefs.h
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gdbm_open in -lgdbm" >&5
+printf %s "checking for gdbm_open in -lgdbm... " >&6; }
+if test ${ac_cv_lib_gdbm_gdbm_open+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lgdbm $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -14583,46 +15911,44 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char gdbm_open ();
int
-main ()
+main (void)
{
return gdbm_open ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_gdbm_gdbm_open=yes
-else
+else $as_nop
ac_cv_lib_gdbm_gdbm_open=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gdbm_gdbm_open" >&5
-$as_echo "$ac_cv_lib_gdbm_gdbm_open" >&6; }
-if test "x$ac_cv_lib_gdbm_gdbm_open" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gdbm_gdbm_open" >&5
+printf "%s\n" "$ac_cv_lib_gdbm_gdbm_open" >&6; }
+if test "x$ac_cv_lib_gdbm_gdbm_open" = xyes
+then :
have_gdbm=yes
GDBM_LIBS=${GDBM_LIBS-"-lgdbm"}
-else
+else $as_nop
have_gdbm=no
fi
-else
+else $as_nop
have_gdbm=no
fi
done
-
CFLAGS=$save_CFLAGS
CPPFLAGS=$save_CPPFLAGS
LDFLAGS=$save_LDFLAGS
@@ -14630,13 +15956,12 @@ LIBS=$save_LIBS
-for ac_header in ndbm.h
+ for ac_header in ndbm.h
do :
- ac_fn_c_check_header_mongrel "$LINENO" "ndbm.h" "ac_cv_header_ndbm_h" "$ac_includes_default"
-if test "x$ac_cv_header_ndbm_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_NDBM_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "ndbm.h" "ac_cv_header_ndbm_h" "$ac_includes_default"
+if test "x$ac_cv_header_ndbm_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_NDBM_H 1" >>confdefs.h
save_CFLAGS=$CFLAGS
save_CPPFLAGS=$CPPFLAGS
@@ -14644,11 +15969,12 @@ save_LDFLAGS=$LDFLAGS
save_LIBS=$LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dbm_open" >&5
-$as_echo_n "checking for library containing dbm_open... " >&6; }
-if ${ac_cv_search_dbm_open+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dbm_open" >&5
+printf %s "checking for library containing dbm_open... " >&6; }
+if test ${ac_cv_search_dbm_open+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -14656,46 +15982,48 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char dbm_open ();
int
-main ()
+main (void)
{
return dbm_open ();
;
return 0;
}
_ACEOF
-for ac_lib in '' ndbm gdbm_compat; do
+for ac_lib in '' ndbm gdbm_compat
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_dbm_open=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_dbm_open+:} false; then :
+ if test ${ac_cv_search_dbm_open+y}
+then :
break
fi
done
-if ${ac_cv_search_dbm_open+:} false; then :
+if test ${ac_cv_search_dbm_open+y}
+then :
-else
+else $as_nop
ac_cv_search_dbm_open=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dbm_open" >&5
-$as_echo "$ac_cv_search_dbm_open" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dbm_open" >&5
+printf "%s\n" "$ac_cv_search_dbm_open" >&6; }
ac_res=$ac_cv_search_dbm_open
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
@@ -14712,9 +16040,8 @@ fi
done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ndbm presence and linker args" >&5
-$as_echo_n "checking for ndbm presence and linker args... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ndbm presence and linker args" >&5
+printf %s "checking for ndbm presence and linker args... " >&6; }
case $ac_cv_search_dbm_open in #(
*ndbm*|*gdbm_compat*) :
@@ -14732,55 +16059,59 @@ case $ac_cv_search_dbm_open in #(
*) :
;;
esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_ndbm ($dbm_ndbm)" >&5
-$as_echo "$have_ndbm ($dbm_ndbm)" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_ndbm ($dbm_ndbm)" >&5
+printf "%s\n" "$have_ndbm ($dbm_ndbm)" >&6; }
{ ac_cv_header_gdbm_ndbm_h=; unset ac_cv_header_gdbm_ndbm_h;}
-if ${ac_cv_header_gdbm_slash_ndbm_h+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
- ac_fn_c_check_header_mongrel "$LINENO" "gdbm/ndbm.h" "ac_cv_header_gdbm_ndbm_h" "$ac_includes_default"
-if test "x$ac_cv_header_gdbm_ndbm_h" = xyes; then :
+if test ${ac_cv_header_gdbm_slash_ndbm_h+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+
+ ac_fn_c_check_header_compile "$LINENO" "gdbm/ndbm.h" "ac_cv_header_gdbm_ndbm_h" "$ac_includes_default"
+if test "x$ac_cv_header_gdbm_ndbm_h" = xyes
+then :
ac_cv_header_gdbm_slash_ndbm_h=yes
-else
+else $as_nop
ac_cv_header_gdbm_slash_ndbm_h=no
fi
-
fi
-if test "x$ac_cv_header_gdbm_slash_ndbm_h" = xyes; then :
+if test "x$ac_cv_header_gdbm_slash_ndbm_h" = xyes
+then :
-$as_echo "#define HAVE_GDBM_NDBM_H 1" >>confdefs.h
+printf "%s\n" "#define HAVE_GDBM_NDBM_H 1" >>confdefs.h
fi
{ ac_cv_header_gdbm_ndbm_h=; unset ac_cv_header_gdbm_ndbm_h;}
-if ${ac_cv_header_gdbm_dash_ndbm_h+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
- ac_fn_c_check_header_mongrel "$LINENO" "gdbm-ndbm.h" "ac_cv_header_gdbm_ndbm_h" "$ac_includes_default"
-if test "x$ac_cv_header_gdbm_ndbm_h" = xyes; then :
+if test ${ac_cv_header_gdbm_dash_ndbm_h+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+
+ ac_fn_c_check_header_compile "$LINENO" "gdbm-ndbm.h" "ac_cv_header_gdbm_ndbm_h" "$ac_includes_default"
+if test "x$ac_cv_header_gdbm_ndbm_h" = xyes
+then :
ac_cv_header_gdbm_dash_ndbm_h=yes
-else
+else $as_nop
ac_cv_header_gdbm_dash_ndbm_h=no
fi
-
fi
-if test "x$ac_cv_header_gdbm_dash_ndbm_h" = xyes; then :
+if test "x$ac_cv_header_gdbm_dash_ndbm_h" = xyes
+then :
-$as_echo "#define HAVE_GDBM_DASH_NDBM_H 1" >>confdefs.h
+printf "%s\n" "#define HAVE_GDBM_DASH_NDBM_H 1" >>confdefs.h
fi
@@ -14794,11 +16125,12 @@ save_LDFLAGS=$LDFLAGS
save_LIBS=$LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dbm_open" >&5
-$as_echo_n "checking for library containing dbm_open... " >&6; }
-if ${ac_cv_search_dbm_open+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dbm_open" >&5
+printf %s "checking for library containing dbm_open... " >&6; }
+if test ${ac_cv_search_dbm_open+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -14806,49 +16138,51 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char dbm_open ();
int
-main ()
+main (void)
{
return dbm_open ();
;
return 0;
}
_ACEOF
-for ac_lib in '' gdbm_compat; do
+for ac_lib in '' gdbm_compat
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_dbm_open=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_dbm_open+:} false; then :
+ if test ${ac_cv_search_dbm_open+y}
+then :
break
fi
done
-if ${ac_cv_search_dbm_open+:} false; then :
+if test ${ac_cv_search_dbm_open+y}
+then :
-else
+else $as_nop
ac_cv_search_dbm_open=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dbm_open" >&5
-$as_echo "$ac_cv_search_dbm_open" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dbm_open" >&5
+printf "%s\n" "$ac_cv_search_dbm_open" >&6; }
ac_res=$ac_cv_search_dbm_open
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
have_gdbm_compat=yes
-else
+else $as_nop
have_gdbm_compat=no
fi
@@ -14863,19 +16197,19 @@ fi
# Check for libdb >= 5 with dbm_open()
# db.h re-defines the name of the function
-for ac_header in db.h
+ for ac_header in db.h
do :
- ac_fn_c_check_header_mongrel "$LINENO" "db.h" "ac_cv_header_db_h" "$ac_includes_default"
-if test "x$ac_cv_header_db_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_DB_H 1
-_ACEOF
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libdb" >&5
-$as_echo_n "checking for libdb... " >&6; }
-if ${ac_cv_have_libdb+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ ac_fn_c_check_header_compile "$LINENO" "db.h" "ac_cv_header_db_h" "$ac_includes_default"
+if test "x$ac_cv_header_db_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_DB_H 1" >>confdefs.h
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libdb" >&5
+printf %s "checking for libdb... " >&6; }
+if test ${ac_cv_have_libdb+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
save_CFLAGS=$CFLAGS
save_CPPFLAGS=$CPPFLAGS
@@ -14894,7 +16228,7 @@ save_LIBS=$LIBS
#endif
int
-main ()
+main (void)
{
DBM *dbm = dbm_open(NULL, 0, 0)
;
@@ -14902,12 +16236,13 @@ DBM *dbm = dbm_open(NULL, 0, 0)
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_have_libdb=yes
-else
+else $as_nop
ac_cv_have_libdb=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CFLAGS=$save_CFLAGS
@@ -14918,12 +16253,13 @@ LIBS=$save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_libdb" >&5
-$as_echo "$ac_cv_have_libdb" >&6; }
- if test "x$ac_cv_have_libdb" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_libdb" >&5
+printf "%s\n" "$ac_cv_have_libdb" >&6; }
+ if test "x$ac_cv_have_libdb" = xyes
+then :
-$as_echo "#define HAVE_LIBDB 1" >>confdefs.h
+printf "%s\n" "#define HAVE_LIBDB 1" >>confdefs.h
fi
@@ -14932,15 +16268,15 @@ fi
done
-
# Check for --with-dbmliborder
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-dbmliborder" >&5
-$as_echo_n "checking for --with-dbmliborder... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-dbmliborder" >&5
+printf %s "checking for --with-dbmliborder... " >&6; }
# Check whether --with-dbmliborder was given.
-if test "${with_dbmliborder+set}" = set; then :
+if test ${with_dbmliborder+y}
+then :
withval=$with_dbmliborder;
-else
+else $as_nop
with_dbmliborder=gdbm:ndbm:bdb
fi
@@ -14962,16 +16298,17 @@ for db in $with_dbmliborder; do
esac
done
IFS=$as_save_IFS
-if test "x$with_dbmliborder" = xerror; then :
+if test "x$with_dbmliborder" = xerror
+then :
as_fn_error $? "proper usage is --with-dbmliborder=db1:db2:... (gdbm:ndbm:bdb)" "$LINENO" 5
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_dbmliborder" >&5
-$as_echo "$with_dbmliborder" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_dbmliborder" >&5
+printf "%s\n" "$with_dbmliborder" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _dbm module CFLAGS and LIBS" >&5
-$as_echo_n "checking for _dbm module CFLAGS and LIBS... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _dbm module CFLAGS and LIBS" >&5
+printf %s "checking for _dbm module CFLAGS and LIBS... " >&6; }
have_dbm=no
as_save_IFS=$IFS
IFS=:
@@ -15004,8 +16341,8 @@ for db in $with_dbmliborder; do
esac
done
IFS=$as_save_IFS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $DBM_CFLAGS $DBM_LIBS" >&5
-$as_echo "$DBM_CFLAGS $DBM_LIBS" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DBM_CFLAGS $DBM_LIBS" >&5
+printf "%s\n" "$DBM_CFLAGS $DBM_LIBS" >&6; }
# Templates for things AC_DEFINEd more than once.
# For a single AC_DEFINE, no template is needed.
@@ -15014,7 +16351,7 @@ $as_echo "$DBM_CFLAGS $DBM_LIBS" >&6; }
if test "$ac_cv_pthread_is_default" = yes
then
# Defining _REENTRANT on system with POSIX threads should not hurt.
- $as_echo "#define _REENTRANT 1" >>confdefs.h
+ printf "%s\n" "#define _REENTRANT 1" >>confdefs.h
posix_threads=yes
if test "$ac_sys_system" = "SunOS"; then
@@ -15049,8 +16386,8 @@ else
# According to the POSIX spec, a pthreads implementation must
# define _POSIX_THREADS in unistd.h. Some apparently don't
# (e.g. gnu pth with pthread emulation)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _POSIX_THREADS in unistd.h" >&5
-$as_echo_n "checking for _POSIX_THREADS in unistd.h... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _POSIX_THREADS in unistd.h" >&5
+printf %s "checking for _POSIX_THREADS in unistd.h... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -15061,25 +16398,26 @@ yes
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "yes" >/dev/null 2>&1; then :
+ $EGREP "yes" >/dev/null 2>&1
+then :
unistd_defines_pthreads=yes
-else
+else $as_nop
unistd_defines_pthreads=no
fi
-rm -f conftest*
+rm -rf conftest*
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $unistd_defines_pthreads" >&5
-$as_echo "$unistd_defines_pthreads" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $unistd_defines_pthreads" >&5
+printf "%s\n" "$unistd_defines_pthreads" >&6; }
- $as_echo "#define _REENTRANT 1" >>confdefs.h
+ printf "%s\n" "#define _REENTRANT 1" >>confdefs.h
# Just looking for pthread_create in libpthread is not enough:
# on HP/UX, pthread.h renames pthread_create to a different symbol name.
# So we really have to include pthread.h, and then link.
_libs=$LIBS
LIBS="$LIBS -lpthread"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5
-$as_echo_n "checking for pthread_create in -lpthread... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5
+printf %s "checking for pthread_create in -lpthread... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -15089,7 +16427,7 @@ $as_echo_n "checking for pthread_create in -lpthread... " >&6; }
void * start_routine (void *arg) { exit (0); }
int
-main ()
+main (void)
{
pthread_create (NULL, NULL, start_routine, NULL)
@@ -15097,27 +16435,30 @@ pthread_create (NULL, NULL, start_routine, NULL)
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
posix_threads=yes
-else
+else $as_nop
LIBS=$_libs
ac_fn_c_check_func "$LINENO" "pthread_detach" "ac_cv_func_pthread_detach"
-if test "x$ac_cv_func_pthread_detach" = xyes; then :
+if test "x$ac_cv_func_pthread_detach" = xyes
+then :
posix_threads=yes
-else
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthreads" >&5
-$as_echo_n "checking for pthread_create in -lpthreads... " >&6; }
-if ${ac_cv_lib_pthreads_pthread_create+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthreads" >&5
+printf %s "checking for pthread_create in -lpthreads... " >&6; }
+if test ${ac_cv_lib_pthreads_pthread_create+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lpthreads $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -15126,41 +16467,41 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char pthread_create ();
int
-main ()
+main (void)
{
return pthread_create ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_pthreads_pthread_create=yes
-else
+else $as_nop
ac_cv_lib_pthreads_pthread_create=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthreads_pthread_create" >&5
-$as_echo "$ac_cv_lib_pthreads_pthread_create" >&6; }
-if test "x$ac_cv_lib_pthreads_pthread_create" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthreads_pthread_create" >&5
+printf "%s\n" "$ac_cv_lib_pthreads_pthread_create" >&6; }
+if test "x$ac_cv_lib_pthreads_pthread_create" = xyes
+then :
posix_threads=yes
LIBS="$LIBS -lpthreads"
-else
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lc_r" >&5
-$as_echo_n "checking for pthread_create in -lc_r... " >&6; }
-if ${ac_cv_lib_c_r_pthread_create+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lc_r" >&5
+printf %s "checking for pthread_create in -lc_r... " >&6; }
+if test ${ac_cv_lib_c_r_pthread_create+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lc_r $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -15169,41 +16510,41 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char pthread_create ();
int
-main ()
+main (void)
{
return pthread_create ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_c_r_pthread_create=yes
-else
+else $as_nop
ac_cv_lib_c_r_pthread_create=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_r_pthread_create" >&5
-$as_echo "$ac_cv_lib_c_r_pthread_create" >&6; }
-if test "x$ac_cv_lib_c_r_pthread_create" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_r_pthread_create" >&5
+printf "%s\n" "$ac_cv_lib_c_r_pthread_create" >&6; }
+if test "x$ac_cv_lib_c_r_pthread_create" = xyes
+then :
posix_threads=yes
LIBS="$LIBS -lc_r"
-else
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __pthread_create_system in -lpthread" >&5
-$as_echo_n "checking for __pthread_create_system in -lpthread... " >&6; }
-if ${ac_cv_lib_pthread___pthread_create_system+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __pthread_create_system in -lpthread" >&5
+printf %s "checking for __pthread_create_system in -lpthread... " >&6; }
+if test ${ac_cv_lib_pthread___pthread_create_system+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lpthread $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -15212,41 +16553,41 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char __pthread_create_system ();
int
-main ()
+main (void)
{
return __pthread_create_system ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_pthread___pthread_create_system=yes
-else
+else $as_nop
ac_cv_lib_pthread___pthread_create_system=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread___pthread_create_system" >&5
-$as_echo "$ac_cv_lib_pthread___pthread_create_system" >&6; }
-if test "x$ac_cv_lib_pthread___pthread_create_system" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread___pthread_create_system" >&5
+printf "%s\n" "$ac_cv_lib_pthread___pthread_create_system" >&6; }
+if test "x$ac_cv_lib_pthread___pthread_create_system" = xyes
+then :
posix_threads=yes
LIBS="$LIBS -lpthread"
-else
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lcma" >&5
-$as_echo_n "checking for pthread_create in -lcma... " >&6; }
-if ${ac_cv_lib_cma_pthread_create+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lcma" >&5
+printf %s "checking for pthread_create in -lcma... " >&6; }
+if test ${ac_cv_lib_cma_pthread_create+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lcma $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -15255,35 +16596,34 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char pthread_create ();
int
-main ()
+main (void)
{
return pthread_create ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_cma_pthread_create=yes
-else
+else $as_nop
ac_cv_lib_cma_pthread_create=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cma_pthread_create" >&5
-$as_echo "$ac_cv_lib_cma_pthread_create" >&6; }
-if test "x$ac_cv_lib_cma_pthread_create" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cma_pthread_create" >&5
+printf "%s\n" "$ac_cv_lib_cma_pthread_create" >&6; }
+if test "x$ac_cv_lib_cma_pthread_create" = xyes
+then :
posix_threads=yes
LIBS="$LIBS -lcma"
-else
+else $as_nop
case $ac_sys_system in #(
WASI) :
@@ -15304,14 +16644,15 @@ fi
fi
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for usconfig in -lmpc" >&5
-$as_echo_n "checking for usconfig in -lmpc... " >&6; }
-if ${ac_cv_lib_mpc_usconfig+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for usconfig in -lmpc" >&5
+printf %s "checking for usconfig in -lmpc... " >&6; }
+if test ${ac_cv_lib_mpc_usconfig+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lmpc $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -15320,30 +16661,29 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char usconfig ();
int
-main ()
+main (void)
{
return usconfig ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_mpc_usconfig=yes
-else
+else $as_nop
ac_cv_lib_mpc_usconfig=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mpc_usconfig" >&5
-$as_echo "$ac_cv_lib_mpc_usconfig" >&6; }
-if test "x$ac_cv_lib_mpc_usconfig" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mpc_usconfig" >&5
+printf "%s\n" "$ac_cv_lib_mpc_usconfig" >&6; }
+if test "x$ac_cv_lib_mpc_usconfig" = xyes
+then :
LIBS="$LIBS -lmpc"
@@ -15355,38 +16695,40 @@ fi
if test "$posix_threads" = "yes"; then
if test "$unistd_defines_pthreads" = "no"; then
-$as_echo "#define _POSIX_THREADS 1" >>confdefs.h
+printf "%s\n" "#define _POSIX_THREADS 1" >>confdefs.h
fi
# Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
case $ac_sys_system/$ac_sys_release in
SunOS/5.6)
-$as_echo "#define HAVE_PTHREAD_DESTRUCTOR 1" >>confdefs.h
+printf "%s\n" "#define HAVE_PTHREAD_DESTRUCTOR 1" >>confdefs.h
;;
SunOS/5.8)
-$as_echo "#define HAVE_BROKEN_POSIX_SEMAPHORES 1" >>confdefs.h
+printf "%s\n" "#define HAVE_BROKEN_POSIX_SEMAPHORES 1" >>confdefs.h
;;
AIX/*)
-$as_echo "#define HAVE_BROKEN_POSIX_SEMAPHORES 1" >>confdefs.h
+printf "%s\n" "#define HAVE_BROKEN_POSIX_SEMAPHORES 1" >>confdefs.h
;;
NetBSD/*)
-$as_echo "#define HAVE_BROKEN_POSIX_SEMAPHORES 1" >>confdefs.h
+printf "%s\n" "#define HAVE_BROKEN_POSIX_SEMAPHORES 1" >>confdefs.h
;;
esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if PTHREAD_SCOPE_SYSTEM is supported" >&5
-$as_echo_n "checking if PTHREAD_SCOPE_SYSTEM is supported... " >&6; }
-if ${ac_cv_pthread_system_supported+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if PTHREAD_SCOPE_SYSTEM is supported" >&5
+printf %s "checking if PTHREAD_SCOPE_SYSTEM is supported... " >&6; }
+if test ${ac_cv_pthread_system_supported+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
ac_cv_pthread_system_supported=no
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -15404,9 +16746,10 @@ else
return (0);
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ac_cv_pthread_system_supported=yes
-else
+else $as_nop
ac_cv_pthread_system_supported=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -15415,71 +16758,69 @@ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_pthread_system_supported" >&5
-$as_echo "$ac_cv_pthread_system_supported" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_pthread_system_supported" >&5
+printf "%s\n" "$ac_cv_pthread_system_supported" >&6; }
if test "$ac_cv_pthread_system_supported" = "yes"; then
-$as_echo "#define PTHREAD_SYSTEM_SCHED_SUPPORTED 1" >>confdefs.h
+printf "%s\n" "#define PTHREAD_SYSTEM_SCHED_SUPPORTED 1" >>confdefs.h
fi
- for ac_func in pthread_sigmask
+
+ for ac_func in pthread_sigmask
do :
ac_fn_c_check_func "$LINENO" "pthread_sigmask" "ac_cv_func_pthread_sigmask"
-if test "x$ac_cv_func_pthread_sigmask" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_PTHREAD_SIGMASK 1
-_ACEOF
+if test "x$ac_cv_func_pthread_sigmask" = xyes
+then :
+ printf "%s\n" "#define HAVE_PTHREAD_SIGMASK 1" >>confdefs.h
case $ac_sys_system in
CYGWIN*)
-$as_echo "#define HAVE_BROKEN_PTHREAD_SIGMASK 1" >>confdefs.h
+printf "%s\n" "#define HAVE_BROKEN_PTHREAD_SIGMASK 1" >>confdefs.h
;;
esac
fi
-done
- for ac_func in pthread_getcpuclockid
-do :
- ac_fn_c_check_func "$LINENO" "pthread_getcpuclockid" "ac_cv_func_pthread_getcpuclockid"
-if test "x$ac_cv_func_pthread_getcpuclockid" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_PTHREAD_GETCPUCLOCKID 1
-_ACEOF
+done
+ ac_fn_c_check_func "$LINENO" "pthread_getcpuclockid" "ac_cv_func_pthread_getcpuclockid"
+if test "x$ac_cv_func_pthread_getcpuclockid" = xyes
+then :
+ printf "%s\n" "#define HAVE_PTHREAD_GETCPUCLOCKID 1" >>confdefs.h
fi
-done
fi
-if test "x$posix_threads" = xstub; then :
+if test "x$posix_threads" = xstub
+then :
-$as_echo "#define HAVE_PTHREAD_STUBS 1" >>confdefs.h
+printf "%s\n" "#define HAVE_PTHREAD_STUBS 1" >>confdefs.h
fi
# Check for enable-ipv6
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if --enable-ipv6 is specified" >&5
-$as_echo_n "checking if --enable-ipv6 is specified... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if --enable-ipv6 is specified" >&5
+printf %s "checking if --enable-ipv6 is specified... " >&6; }
# Check whether --enable-ipv6 was given.
-if test "${enable_ipv6+set}" = set; then :
+if test ${enable_ipv6+y}
+then :
enableval=$enable_ipv6; case "$enableval" in
no)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
ipv6=no
;;
- *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- $as_echo "#define ENABLE_IPV6 1" >>confdefs.h
+ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ printf "%s\n" "#define ENABLE_IPV6 1" >>confdefs.h
ipv6=yes
;;
esac
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -15487,23 +16828,24 @@ else
#include
#include
int
-main ()
+main (void)
{
int domain = AF_INET6;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ipv6=yes
-else
+else $as_nop
ipv6=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
case $ac_sys_system in #(
WASI) :
@@ -15513,19 +16855,19 @@ case $ac_sys_system in #(
;;
esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ipv6" >&5
-$as_echo "$ipv6" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ipv6" >&5
+printf "%s\n" "$ipv6" >&6; }
if test "$ipv6" = "yes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if RFC2553 API is available" >&5
-$as_echo_n "checking if RFC2553 API is available... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if RFC2553 API is available" >&5
+printf %s "checking if RFC2553 API is available... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
#include
int
-main ()
+main (void)
{
struct sockaddr_in6 x;
x.sin6_scope_id;
@@ -15534,24 +16876,25 @@ struct sockaddr_in6 x;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
ipv6=yes
-else
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
ipv6=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
if test "$ipv6" = "yes"; then
- $as_echo "#define ENABLE_IPV6 1" >>confdefs.h
+ printf "%s\n" "#define ENABLE_IPV6 1" >>confdefs.h
fi
@@ -15563,8 +16906,8 @@ ipv6lib=none
ipv6trylibc=no
if test "$ipv6" = "yes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking ipv6 stack type" >&5
-$as_echo_n "checking ipv6 stack type... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking ipv6 stack type" >&5
+printf %s "checking ipv6 stack type... " >&6; }
for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
do
case $i in
@@ -15578,10 +16921,11 @@ yes
#endif
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "yes" >/dev/null 2>&1; then :
+ $EGREP "yes" >/dev/null 2>&1
+then :
ipv6type=$i
fi
-rm -f conftest*
+rm -rf conftest*
;;
kame)
@@ -15594,13 +16938,14 @@ yes
#endif
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "yes" >/dev/null 2>&1; then :
+ $EGREP "yes" >/dev/null 2>&1
+then :
ipv6type=$i;
ipv6lib=inet6
ipv6libdir=/usr/local/v6/lib
ipv6trylibc=yes
fi
-rm -f conftest*
+rm -rf conftest*
;;
linux-glibc)
@@ -15613,11 +16958,12 @@ yes
#endif
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "yes" >/dev/null 2>&1; then :
+ $EGREP "yes" >/dev/null 2>&1
+then :
ipv6type=$i;
ipv6trylibc=yes
fi
-rm -f conftest*
+rm -rf conftest*
;;
linux-inet6)
@@ -15646,12 +16992,13 @@ yes
#endif
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "yes" >/dev/null 2>&1; then :
+ $EGREP "yes" >/dev/null 2>&1
+then :
ipv6type=$i;
ipv6lib=inet6;
ipv6libdir=/usr/local/v6/lib
fi
-rm -f conftest*
+rm -rf conftest*
;;
v6d)
@@ -15664,13 +17011,14 @@ yes
#endif
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "yes" >/dev/null 2>&1; then :
+ $EGREP "yes" >/dev/null 2>&1
+then :
ipv6type=$i;
ipv6lib=v6;
ipv6libdir=/usr/local/v6/lib;
BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"
fi
-rm -f conftest*
+rm -rf conftest*
;;
zeta)
@@ -15683,12 +17031,13 @@ yes
#endif
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "yes" >/dev/null 2>&1; then :
+ $EGREP "yes" >/dev/null 2>&1
+then :
ipv6type=$i;
ipv6lib=inet6;
ipv6libdir=/usr/local/v6/lib
fi
-rm -f conftest*
+rm -rf conftest*
;;
esac
@@ -15696,22 +17045,23 @@ rm -f conftest*
break
fi
done
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ipv6type" >&5
-$as_echo "$ipv6type" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ipv6type" >&5
+printf "%s\n" "$ipv6type" >&6; }
fi
if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
- { $as_echo "$as_me:${as_lineno-$LINENO}: using lib$ipv6lib" >&5
-$as_echo "$as_me: using lib$ipv6lib" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: using lib$ipv6lib" >&5
+printf "%s\n" "$as_me: using lib$ipv6lib" >&6;}
else
- if test "x$ipv6trylibc" = xyes; then :
+ if test "x$ipv6trylibc" = xyes
+then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: using libc" >&5
-$as_echo "$as_me: using libc" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: using libc" >&5
+printf "%s\n" "$as_me: using libc" >&6;}
-else
+else $as_nop
as_fn_error $? "No $ipv6lib library found; cannot continue. You need to fetch lib$ipv6lib.a from appropriate ipv6 kit and compile beforehand." "$LINENO" 5
@@ -15720,84 +17070,91 @@ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking CAN_RAW_FD_FRAMES" >&5
-$as_echo_n "checking CAN_RAW_FD_FRAMES... " >&6; }
-if ${ac_cv_can_raw_fd_frames+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking CAN_RAW_FD_FRAMES" >&5
+printf %s "checking CAN_RAW_FD_FRAMES... " >&6; }
+if test ${ac_cv_can_raw_fd_frames+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* CAN_RAW_FD_FRAMES available check */
#include
int
-main ()
+main (void)
{
int can_raw_fd_frames = CAN_RAW_FD_FRAMES;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_can_raw_fd_frames=yes
-else
+else $as_nop
ac_cv_can_raw_fd_frames=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_can_raw_fd_frames" >&5
-$as_echo "$ac_cv_can_raw_fd_frames" >&6; }
-if test "x$ac_cv_can_raw_fd_frames" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_can_raw_fd_frames" >&5
+printf "%s\n" "$ac_cv_can_raw_fd_frames" >&6; }
+if test "x$ac_cv_can_raw_fd_frames" = xyes
+then :
-$as_echo "#define HAVE_LINUX_CAN_RAW_FD_FRAMES 1" >>confdefs.h
+printf "%s\n" "#define HAVE_LINUX_CAN_RAW_FD_FRAMES 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CAN_RAW_JOIN_FILTERS" >&5
-$as_echo_n "checking for CAN_RAW_JOIN_FILTERS... " >&6; }
-if ${ac_cv_can_raw_join_filters+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CAN_RAW_JOIN_FILTERS" >&5
+printf %s "checking for CAN_RAW_JOIN_FILTERS... " >&6; }
+if test ${ac_cv_can_raw_join_filters+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
int
-main ()
+main (void)
{
int can_raw_join_filters = CAN_RAW_JOIN_FILTERS;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_can_raw_join_filters=yes
-else
+else $as_nop
ac_cv_can_raw_join_filters=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_can_raw_join_filters" >&5
-$as_echo "$ac_cv_can_raw_join_filters" >&6; }
-if test "x$ac_cv_can_raw_join_filters" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_can_raw_join_filters" >&5
+printf "%s\n" "$ac_cv_can_raw_join_filters" >&6; }
+if test "x$ac_cv_can_raw_join_filters" = xyes
+then :
-$as_echo "#define HAVE_LINUX_CAN_RAW_JOIN_FILTERS 1" >>confdefs.h
+printf "%s\n" "#define HAVE_LINUX_CAN_RAW_JOIN_FILTERS 1" >>confdefs.h
fi
# Check for --with-doc-strings
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-doc-strings" >&5
-$as_echo_n "checking for --with-doc-strings... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-doc-strings" >&5
+printf %s "checking for --with-doc-strings... " >&6; }
# Check whether --with-doc-strings was given.
-if test "${with_doc_strings+set}" = set; then :
+if test ${with_doc_strings+y}
+then :
withval=$with_doc_strings;
fi
@@ -15808,18 +17165,19 @@ fi
if test "$with_doc_strings" != "no"
then
-$as_echo "#define WITH_DOC_STRINGS 1" >>confdefs.h
+printf "%s\n" "#define WITH_DOC_STRINGS 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_doc_strings" >&5
-$as_echo "$with_doc_strings" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_doc_strings" >&5
+printf "%s\n" "$with_doc_strings" >&6; }
# Check for Python-specific malloc support
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-pymalloc" >&5
-$as_echo_n "checking for --with-pymalloc... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-pymalloc" >&5
+printf %s "checking for --with-pymalloc... " >&6; }
# Check whether --with-pymalloc was given.
-if test "${with_pymalloc+set}" = set; then :
+if test ${with_pymalloc+y}
+then :
withval=$with_pymalloc;
fi
@@ -15839,19 +17197,20 @@ fi
if test "$with_pymalloc" != "no"
then
-$as_echo "#define WITH_PYMALLOC 1" >>confdefs.h
+printf "%s\n" "#define WITH_PYMALLOC 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_pymalloc" >&5
-$as_echo "$with_pymalloc" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_pymalloc" >&5
+printf "%s\n" "$with_pymalloc" >&6; }
# Check whether objects such as float, tuple and dict are using
# freelists to optimization memory allocation.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-freelists" >&5
-$as_echo_n "checking for --with-freelists... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-freelists" >&5
+printf %s "checking for --with-freelists... " >&6; }
# Check whether --with-freelists was given.
-if test "${with_freelists+set}" = set; then :
+if test ${with_freelists+y}
+then :
withval=$with_freelists;
fi
@@ -15863,337 +17222,1490 @@ fi
if test "$with_freelists" != "no"
then
-$as_echo "#define WITH_FREELISTS 1" >>confdefs.h
+printf "%s\n" "#define WITH_FREELISTS 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_freelists" >&5
-$as_echo "$with_freelists" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_freelists" >&5
+printf "%s\n" "$with_freelists" >&6; }
# Check for --with-c-locale-coercion
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-c-locale-coercion" >&5
-$as_echo_n "checking for --with-c-locale-coercion... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-c-locale-coercion" >&5
+printf %s "checking for --with-c-locale-coercion... " >&6; }
# Check whether --with-c-locale-coercion was given.
-if test "${with_c_locale_coercion+set}" = set; then :
+if test ${with_c_locale_coercion+y}
+then :
withval=$with_c_locale_coercion;
fi
-if test -z "$with_c_locale_coercion"
-then
- with_c_locale_coercion="yes"
+if test -z "$with_c_locale_coercion"
+then
+ with_c_locale_coercion="yes"
+fi
+if test "$with_c_locale_coercion" != "no"
+then
+
+printf "%s\n" "#define PY_COERCE_C_LOCALE 1" >>confdefs.h
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_c_locale_coercion" >&5
+printf "%s\n" "$with_c_locale_coercion" >&6; }
+
+# Check for Valgrind support
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-valgrind" >&5
+printf %s "checking for --with-valgrind... " >&6; }
+
+# Check whether --with-valgrind was given.
+if test ${with_valgrind+y}
+then :
+ withval=$with_valgrind;
+else $as_nop
+ with_valgrind=no
+
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_valgrind" >&5
+printf "%s\n" "$with_valgrind" >&6; }
+if test "$with_valgrind" != no; then
+ ac_fn_c_check_header_compile "$LINENO" "valgrind/valgrind.h" "ac_cv_header_valgrind_valgrind_h" "$ac_includes_default"
+if test "x$ac_cv_header_valgrind_valgrind_h" = xyes
+then :
+
+printf "%s\n" "#define WITH_VALGRIND 1" >>confdefs.h
+
+else $as_nop
+ as_fn_error $? "Valgrind support requested but headers not available" "$LINENO" 5
+
+fi
+
+ OPT="-DDYNAMIC_ANNOTATIONS_ENABLED=1 $OPT"
+fi
+
+# Check for DTrace support
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-dtrace" >&5
+printf %s "checking for --with-dtrace... " >&6; }
+
+# Check whether --with-dtrace was given.
+if test ${with_dtrace+y}
+then :
+ withval=$with_dtrace;
+else $as_nop
+ with_dtrace=no
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_dtrace" >&5
+printf "%s\n" "$with_dtrace" >&6; }
+
+
+
+
+
+DTRACE=
+DTRACE_HEADERS=
+DTRACE_OBJS=
+
+if test "$with_dtrace" = "yes"
+then
+ # Extract the first word of "dtrace", so it can be a program name with args.
+set dummy dtrace; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_DTRACE+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ case $DTRACE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_DTRACE="$DTRACE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_DTRACE="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_DTRACE" && ac_cv_path_DTRACE="not found"
+ ;;
+esac
+fi
+DTRACE=$ac_cv_path_DTRACE
+if test -n "$DTRACE"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DTRACE" >&5
+printf "%s\n" "$DTRACE" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+ if test "$DTRACE" = "not found"; then
+ as_fn_error $? "dtrace command not found on \$PATH" "$LINENO" 5
+ fi
+
+printf "%s\n" "#define WITH_DTRACE 1" >>confdefs.h
+
+ DTRACE_HEADERS="Include/pydtrace_probes.h"
+
+ # On OS X, DTrace providers do not need to be explicitly compiled and
+ # linked into the binary. Correspondingly, dtrace(1) is missing the ELF
+ # generation flag '-G'. We check for presence of this flag, rather than
+ # hardcoding support by OS, in the interest of robustness.
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether DTrace probes require linking" >&5
+printf %s "checking whether DTrace probes require linking... " >&6; }
+if test ${ac_cv_dtrace_link+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_dtrace_link=no
+ echo 'BEGIN{}' > conftest.d
+ "$DTRACE" $DFLAGS -G -s conftest.d -o conftest.o > /dev/null 2>&1 && \
+ ac_cv_dtrace_link=yes
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_dtrace_link" >&5
+printf "%s\n" "$ac_cv_dtrace_link" >&6; }
+ if test "$ac_cv_dtrace_link" = "yes"; then
+ DTRACE_OBJS="Python/pydtrace.o"
+ fi
+fi
+
+PLATFORM_HEADERS=
+PLATFORM_OBJS=
+
+case $ac_sys_system in #(
+ Emscripten) :
+
+ as_fn_append PLATFORM_OBJS ' Python/emscripten_signal.o'
+ as_fn_append PLATFORM_HEADERS ' $(srcdir)/Include/internal/pycore_emscripten_signal.h'
+ ;; #(
+ *) :
+ ;;
+esac
+
+
+
+# -I${DLINCLDIR} is added to the compile rule for importdl.o
+
+DLINCLDIR=.
+
+# the dlopen() function means we might want to use dynload_shlib.o. some
+# platforms have dlopen(), but don't want to use it.
+ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
+if test "x$ac_cv_func_dlopen" = xyes
+then :
+ printf "%s\n" "#define HAVE_DLOPEN 1" >>confdefs.h
+
+fi
+
+
+# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
+# loading of modules.
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking DYNLOADFILE" >&5
+printf %s "checking DYNLOADFILE... " >&6; }
+if test -z "$DYNLOADFILE"
+then
+ case $ac_sys_system/$ac_sys_release in
+ hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
+ *)
+ # use dynload_shlib.c and dlopen() if we have it; otherwise stub
+ # out any dynamic loading
+ if test "$ac_cv_func_dlopen" = yes
+ then DYNLOADFILE="dynload_shlib.o"
+ else DYNLOADFILE="dynload_stub.o"
+ fi
+ ;;
+ esac
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DYNLOADFILE" >&5
+printf "%s\n" "$DYNLOADFILE" >&6; }
+if test "$DYNLOADFILE" != "dynload_stub.o"
+then
+
+printf "%s\n" "#define HAVE_DYNAMIC_LOADING 1" >>confdefs.h
+
+fi
+
+# MACHDEP_OBJS can be set to platform-specific object files needed by Python
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking MACHDEP_OBJS" >&5
+printf %s "checking MACHDEP_OBJS... " >&6; }
+if test -z "$MACHDEP_OBJS"
+then
+ MACHDEP_OBJS=$extra_machdep_objs
+else
+ MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
+fi
+if test -z "$MACHDEP_OBJS"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5
+printf "%s\n" "none" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MACHDEP_OBJS" >&5
+printf "%s\n" "$MACHDEP_OBJS" >&6; }
+fi
+
+# checks for library functions
+ac_fn_c_check_func "$LINENO" "accept4" "ac_cv_func_accept4"
+if test "x$ac_cv_func_accept4" = xyes
+then :
+ printf "%s\n" "#define HAVE_ACCEPT4 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "alarm" "ac_cv_func_alarm"
+if test "x$ac_cv_func_alarm" = xyes
+then :
+ printf "%s\n" "#define HAVE_ALARM 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset"
+if test "x$ac_cv_func_bind_textdomain_codeset" = xyes
+then :
+ printf "%s\n" "#define HAVE_BIND_TEXTDOMAIN_CODESET 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "chmod" "ac_cv_func_chmod"
+if test "x$ac_cv_func_chmod" = xyes
+then :
+ printf "%s\n" "#define HAVE_CHMOD 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "chown" "ac_cv_func_chown"
+if test "x$ac_cv_func_chown" = xyes
+then :
+ printf "%s\n" "#define HAVE_CHOWN 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "clock" "ac_cv_func_clock"
+if test "x$ac_cv_func_clock" = xyes
+then :
+ printf "%s\n" "#define HAVE_CLOCK 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "close_range" "ac_cv_func_close_range"
+if test "x$ac_cv_func_close_range" = xyes
+then :
+ printf "%s\n" "#define HAVE_CLOSE_RANGE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "confstr" "ac_cv_func_confstr"
+if test "x$ac_cv_func_confstr" = xyes
+then :
+ printf "%s\n" "#define HAVE_CONFSTR 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "copy_file_range" "ac_cv_func_copy_file_range"
+if test "x$ac_cv_func_copy_file_range" = xyes
+then :
+ printf "%s\n" "#define HAVE_COPY_FILE_RANGE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "ctermid" "ac_cv_func_ctermid"
+if test "x$ac_cv_func_ctermid" = xyes
+then :
+ printf "%s\n" "#define HAVE_CTERMID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "dup" "ac_cv_func_dup"
+if test "x$ac_cv_func_dup" = xyes
+then :
+ printf "%s\n" "#define HAVE_DUP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "dup3" "ac_cv_func_dup3"
+if test "x$ac_cv_func_dup3" = xyes
+then :
+ printf "%s\n" "#define HAVE_DUP3 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "execv" "ac_cv_func_execv"
+if test "x$ac_cv_func_execv" = xyes
+then :
+ printf "%s\n" "#define HAVE_EXECV 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "explicit_bzero" "ac_cv_func_explicit_bzero"
+if test "x$ac_cv_func_explicit_bzero" = xyes
+then :
+ printf "%s\n" "#define HAVE_EXPLICIT_BZERO 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "explicit_memset" "ac_cv_func_explicit_memset"
+if test "x$ac_cv_func_explicit_memset" = xyes
+then :
+ printf "%s\n" "#define HAVE_EXPLICIT_MEMSET 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "faccessat" "ac_cv_func_faccessat"
+if test "x$ac_cv_func_faccessat" = xyes
+then :
+ printf "%s\n" "#define HAVE_FACCESSAT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "fchmod" "ac_cv_func_fchmod"
+if test "x$ac_cv_func_fchmod" = xyes
+then :
+ printf "%s\n" "#define HAVE_FCHMOD 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "fchmodat" "ac_cv_func_fchmodat"
+if test "x$ac_cv_func_fchmodat" = xyes
+then :
+ printf "%s\n" "#define HAVE_FCHMODAT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "fchown" "ac_cv_func_fchown"
+if test "x$ac_cv_func_fchown" = xyes
+then :
+ printf "%s\n" "#define HAVE_FCHOWN 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "fchownat" "ac_cv_func_fchownat"
+if test "x$ac_cv_func_fchownat" = xyes
+then :
+ printf "%s\n" "#define HAVE_FCHOWNAT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "fdopendir" "ac_cv_func_fdopendir"
+if test "x$ac_cv_func_fdopendir" = xyes
+then :
+ printf "%s\n" "#define HAVE_FDOPENDIR 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "fdwalk" "ac_cv_func_fdwalk"
+if test "x$ac_cv_func_fdwalk" = xyes
+then :
+ printf "%s\n" "#define HAVE_FDWALK 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "fexecve" "ac_cv_func_fexecve"
+if test "x$ac_cv_func_fexecve" = xyes
+then :
+ printf "%s\n" "#define HAVE_FEXECVE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "fork" "ac_cv_func_fork"
+if test "x$ac_cv_func_fork" = xyes
+then :
+ printf "%s\n" "#define HAVE_FORK 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "fork1" "ac_cv_func_fork1"
+if test "x$ac_cv_func_fork1" = xyes
+then :
+ printf "%s\n" "#define HAVE_FORK1 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "fpathconf" "ac_cv_func_fpathconf"
+if test "x$ac_cv_func_fpathconf" = xyes
+then :
+ printf "%s\n" "#define HAVE_FPATHCONF 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "fstatat" "ac_cv_func_fstatat"
+if test "x$ac_cv_func_fstatat" = xyes
+then :
+ printf "%s\n" "#define HAVE_FSTATAT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "ftime" "ac_cv_func_ftime"
+if test "x$ac_cv_func_ftime" = xyes
+then :
+ printf "%s\n" "#define HAVE_FTIME 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "ftruncate" "ac_cv_func_ftruncate"
+if test "x$ac_cv_func_ftruncate" = xyes
+then :
+ printf "%s\n" "#define HAVE_FTRUNCATE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "futimens" "ac_cv_func_futimens"
+if test "x$ac_cv_func_futimens" = xyes
+then :
+ printf "%s\n" "#define HAVE_FUTIMENS 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "futimes" "ac_cv_func_futimes"
+if test "x$ac_cv_func_futimes" = xyes
+then :
+ printf "%s\n" "#define HAVE_FUTIMES 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "futimesat" "ac_cv_func_futimesat"
+if test "x$ac_cv_func_futimesat" = xyes
+then :
+ printf "%s\n" "#define HAVE_FUTIMESAT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "gai_strerror" "ac_cv_func_gai_strerror"
+if test "x$ac_cv_func_gai_strerror" = xyes
+then :
+ printf "%s\n" "#define HAVE_GAI_STRERROR 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getegid" "ac_cv_func_getegid"
+if test "x$ac_cv_func_getegid" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETEGID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getentropy" "ac_cv_func_getentropy"
+if test "x$ac_cv_func_getentropy" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETENTROPY 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "geteuid" "ac_cv_func_geteuid"
+if test "x$ac_cv_func_geteuid" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETEUID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getgid" "ac_cv_func_getgid"
+if test "x$ac_cv_func_getgid" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETGID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getgrgid" "ac_cv_func_getgrgid"
+if test "x$ac_cv_func_getgrgid" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETGRGID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getgrgid_r" "ac_cv_func_getgrgid_r"
+if test "x$ac_cv_func_getgrgid_r" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETGRGID_R 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getgrnam_r" "ac_cv_func_getgrnam_r"
+if test "x$ac_cv_func_getgrnam_r" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETGRNAM_R 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getgrouplist" "ac_cv_func_getgrouplist"
+if test "x$ac_cv_func_getgrouplist" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETGROUPLIST 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getgroups" "ac_cv_func_getgroups"
+if test "x$ac_cv_func_getgroups" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETGROUPS 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "gethostname" "ac_cv_func_gethostname"
+if test "x$ac_cv_func_gethostname" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETHOSTNAME 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getitimer" "ac_cv_func_getitimer"
+if test "x$ac_cv_func_getitimer" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETITIMER 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getloadavg" "ac_cv_func_getloadavg"
+if test "x$ac_cv_func_getloadavg" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETLOADAVG 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getlogin" "ac_cv_func_getlogin"
+if test "x$ac_cv_func_getlogin" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETLOGIN 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getpeername" "ac_cv_func_getpeername"
+if test "x$ac_cv_func_getpeername" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETPEERNAME 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getpgid" "ac_cv_func_getpgid"
+if test "x$ac_cv_func_getpgid" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETPGID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getpid" "ac_cv_func_getpid"
+if test "x$ac_cv_func_getpid" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETPID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getppid" "ac_cv_func_getppid"
+if test "x$ac_cv_func_getppid" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETPPID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getpriority" "ac_cv_func_getpriority"
+if test "x$ac_cv_func_getpriority" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETPRIORITY 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "_getpty" "ac_cv_func__getpty"
+if test "x$ac_cv_func__getpty" = xyes
+then :
+ printf "%s\n" "#define HAVE__GETPTY 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getpwent" "ac_cv_func_getpwent"
+if test "x$ac_cv_func_getpwent" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETPWENT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getpwnam_r" "ac_cv_func_getpwnam_r"
+if test "x$ac_cv_func_getpwnam_r" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETPWNAM_R 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getpwuid" "ac_cv_func_getpwuid"
+if test "x$ac_cv_func_getpwuid" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETPWUID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getpwuid_r" "ac_cv_func_getpwuid_r"
+if test "x$ac_cv_func_getpwuid_r" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETPWUID_R 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getresgid" "ac_cv_func_getresgid"
+if test "x$ac_cv_func_getresgid" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETRESGID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getresuid" "ac_cv_func_getresuid"
+if test "x$ac_cv_func_getresuid" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETRESUID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getrusage" "ac_cv_func_getrusage"
+if test "x$ac_cv_func_getrusage" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETRUSAGE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getsid" "ac_cv_func_getsid"
+if test "x$ac_cv_func_getsid" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETSID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getspent" "ac_cv_func_getspent"
+if test "x$ac_cv_func_getspent" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETSPENT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getspnam" "ac_cv_func_getspnam"
+if test "x$ac_cv_func_getspnam" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETSPNAM 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getuid" "ac_cv_func_getuid"
+if test "x$ac_cv_func_getuid" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETUID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getwd" "ac_cv_func_getwd"
+if test "x$ac_cv_func_getwd" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETWD 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "if_nameindex" "ac_cv_func_if_nameindex"
+if test "x$ac_cv_func_if_nameindex" = xyes
+then :
+ printf "%s\n" "#define HAVE_IF_NAMEINDEX 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "initgroups" "ac_cv_func_initgroups"
+if test "x$ac_cv_func_initgroups" = xyes
+then :
+ printf "%s\n" "#define HAVE_INITGROUPS 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "kill" "ac_cv_func_kill"
+if test "x$ac_cv_func_kill" = xyes
+then :
+ printf "%s\n" "#define HAVE_KILL 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "killpg" "ac_cv_func_killpg"
+if test "x$ac_cv_func_killpg" = xyes
+then :
+ printf "%s\n" "#define HAVE_KILLPG 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "lchown" "ac_cv_func_lchown"
+if test "x$ac_cv_func_lchown" = xyes
+then :
+ printf "%s\n" "#define HAVE_LCHOWN 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "linkat" "ac_cv_func_linkat"
+if test "x$ac_cv_func_linkat" = xyes
+then :
+ printf "%s\n" "#define HAVE_LINKAT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "lockf" "ac_cv_func_lockf"
+if test "x$ac_cv_func_lockf" = xyes
+then :
+ printf "%s\n" "#define HAVE_LOCKF 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "lstat" "ac_cv_func_lstat"
+if test "x$ac_cv_func_lstat" = xyes
+then :
+ printf "%s\n" "#define HAVE_LSTAT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "lutimes" "ac_cv_func_lutimes"
+if test "x$ac_cv_func_lutimes" = xyes
+then :
+ printf "%s\n" "#define HAVE_LUTIMES 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "madvise" "ac_cv_func_madvise"
+if test "x$ac_cv_func_madvise" = xyes
+then :
+ printf "%s\n" "#define HAVE_MADVISE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "mbrtowc" "ac_cv_func_mbrtowc"
+if test "x$ac_cv_func_mbrtowc" = xyes
+then :
+ printf "%s\n" "#define HAVE_MBRTOWC 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "memrchr" "ac_cv_func_memrchr"
+if test "x$ac_cv_func_memrchr" = xyes
+then :
+ printf "%s\n" "#define HAVE_MEMRCHR 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "mkdirat" "ac_cv_func_mkdirat"
+if test "x$ac_cv_func_mkdirat" = xyes
+then :
+ printf "%s\n" "#define HAVE_MKDIRAT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "mkfifo" "ac_cv_func_mkfifo"
+if test "x$ac_cv_func_mkfifo" = xyes
+then :
+ printf "%s\n" "#define HAVE_MKFIFO 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "mkfifoat" "ac_cv_func_mkfifoat"
+if test "x$ac_cv_func_mkfifoat" = xyes
+then :
+ printf "%s\n" "#define HAVE_MKFIFOAT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "mknod" "ac_cv_func_mknod"
+if test "x$ac_cv_func_mknod" = xyes
+then :
+ printf "%s\n" "#define HAVE_MKNOD 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "mknodat" "ac_cv_func_mknodat"
+if test "x$ac_cv_func_mknodat" = xyes
+then :
+ printf "%s\n" "#define HAVE_MKNODAT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "mktime" "ac_cv_func_mktime"
+if test "x$ac_cv_func_mktime" = xyes
+then :
+ printf "%s\n" "#define HAVE_MKTIME 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap"
+if test "x$ac_cv_func_mmap" = xyes
+then :
+ printf "%s\n" "#define HAVE_MMAP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "mremap" "ac_cv_func_mremap"
+if test "x$ac_cv_func_mremap" = xyes
+then :
+ printf "%s\n" "#define HAVE_MREMAP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "nice" "ac_cv_func_nice"
+if test "x$ac_cv_func_nice" = xyes
+then :
+ printf "%s\n" "#define HAVE_NICE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "openat" "ac_cv_func_openat"
+if test "x$ac_cv_func_openat" = xyes
+then :
+ printf "%s\n" "#define HAVE_OPENAT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "opendir" "ac_cv_func_opendir"
+if test "x$ac_cv_func_opendir" = xyes
+then :
+ printf "%s\n" "#define HAVE_OPENDIR 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "pathconf" "ac_cv_func_pathconf"
+if test "x$ac_cv_func_pathconf" = xyes
+then :
+ printf "%s\n" "#define HAVE_PATHCONF 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "pause" "ac_cv_func_pause"
+if test "x$ac_cv_func_pause" = xyes
+then :
+ printf "%s\n" "#define HAVE_PAUSE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "pipe" "ac_cv_func_pipe"
+if test "x$ac_cv_func_pipe" = xyes
+then :
+ printf "%s\n" "#define HAVE_PIPE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "pipe2" "ac_cv_func_pipe2"
+if test "x$ac_cv_func_pipe2" = xyes
+then :
+ printf "%s\n" "#define HAVE_PIPE2 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "plock" "ac_cv_func_plock"
+if test "x$ac_cv_func_plock" = xyes
+then :
+ printf "%s\n" "#define HAVE_PLOCK 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "poll" "ac_cv_func_poll"
+if test "x$ac_cv_func_poll" = xyes
+then :
+ printf "%s\n" "#define HAVE_POLL 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "posix_fadvise" "ac_cv_func_posix_fadvise"
+if test "x$ac_cv_func_posix_fadvise" = xyes
+then :
+ printf "%s\n" "#define HAVE_POSIX_FADVISE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "posix_fallocate" "ac_cv_func_posix_fallocate"
+if test "x$ac_cv_func_posix_fallocate" = xyes
+then :
+ printf "%s\n" "#define HAVE_POSIX_FALLOCATE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "posix_spawn" "ac_cv_func_posix_spawn"
+if test "x$ac_cv_func_posix_spawn" = xyes
+then :
+ printf "%s\n" "#define HAVE_POSIX_SPAWN 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "posix_spawnp" "ac_cv_func_posix_spawnp"
+if test "x$ac_cv_func_posix_spawnp" = xyes
+then :
+ printf "%s\n" "#define HAVE_POSIX_SPAWNP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "pread" "ac_cv_func_pread"
+if test "x$ac_cv_func_pread" = xyes
+then :
+ printf "%s\n" "#define HAVE_PREAD 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "preadv" "ac_cv_func_preadv"
+if test "x$ac_cv_func_preadv" = xyes
+then :
+ printf "%s\n" "#define HAVE_PREADV 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "preadv2" "ac_cv_func_preadv2"
+if test "x$ac_cv_func_preadv2" = xyes
+then :
+ printf "%s\n" "#define HAVE_PREADV2 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "pthread_condattr_setclock" "ac_cv_func_pthread_condattr_setclock"
+if test "x$ac_cv_func_pthread_condattr_setclock" = xyes
+then :
+ printf "%s\n" "#define HAVE_PTHREAD_CONDATTR_SETCLOCK 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "pthread_init" "ac_cv_func_pthread_init"
+if test "x$ac_cv_func_pthread_init" = xyes
+then :
+ printf "%s\n" "#define HAVE_PTHREAD_INIT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "pthread_kill" "ac_cv_func_pthread_kill"
+if test "x$ac_cv_func_pthread_kill" = xyes
+then :
+ printf "%s\n" "#define HAVE_PTHREAD_KILL 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "pwrite" "ac_cv_func_pwrite"
+if test "x$ac_cv_func_pwrite" = xyes
+then :
+ printf "%s\n" "#define HAVE_PWRITE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "pwritev" "ac_cv_func_pwritev"
+if test "x$ac_cv_func_pwritev" = xyes
+then :
+ printf "%s\n" "#define HAVE_PWRITEV 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "pwritev2" "ac_cv_func_pwritev2"
+if test "x$ac_cv_func_pwritev2" = xyes
+then :
+ printf "%s\n" "#define HAVE_PWRITEV2 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "readlink" "ac_cv_func_readlink"
+if test "x$ac_cv_func_readlink" = xyes
+then :
+ printf "%s\n" "#define HAVE_READLINK 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "readlinkat" "ac_cv_func_readlinkat"
+if test "x$ac_cv_func_readlinkat" = xyes
+then :
+ printf "%s\n" "#define HAVE_READLINKAT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "readv" "ac_cv_func_readv"
+if test "x$ac_cv_func_readv" = xyes
+then :
+ printf "%s\n" "#define HAVE_READV 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "realpath" "ac_cv_func_realpath"
+if test "x$ac_cv_func_realpath" = xyes
+then :
+ printf "%s\n" "#define HAVE_REALPATH 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "renameat" "ac_cv_func_renameat"
+if test "x$ac_cv_func_renameat" = xyes
+then :
+ printf "%s\n" "#define HAVE_RENAMEAT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "rtpSpawn" "ac_cv_func_rtpSpawn"
+if test "x$ac_cv_func_rtpSpawn" = xyes
+then :
+ printf "%s\n" "#define HAVE_RTPSPAWN 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "sched_get_priority_max" "ac_cv_func_sched_get_priority_max"
+if test "x$ac_cv_func_sched_get_priority_max" = xyes
+then :
+ printf "%s\n" "#define HAVE_SCHED_GET_PRIORITY_MAX 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "sched_rr_get_interval" "ac_cv_func_sched_rr_get_interval"
+if test "x$ac_cv_func_sched_rr_get_interval" = xyes
+then :
+ printf "%s\n" "#define HAVE_SCHED_RR_GET_INTERVAL 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "sched_setaffinity" "ac_cv_func_sched_setaffinity"
+if test "x$ac_cv_func_sched_setaffinity" = xyes
+then :
+ printf "%s\n" "#define HAVE_SCHED_SETAFFINITY 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "sched_setparam" "ac_cv_func_sched_setparam"
+if test "x$ac_cv_func_sched_setparam" = xyes
+then :
+ printf "%s\n" "#define HAVE_SCHED_SETPARAM 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "sched_setscheduler" "ac_cv_func_sched_setscheduler"
+if test "x$ac_cv_func_sched_setscheduler" = xyes
+then :
+ printf "%s\n" "#define HAVE_SCHED_SETSCHEDULER 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "sem_clockwait" "ac_cv_func_sem_clockwait"
+if test "x$ac_cv_func_sem_clockwait" = xyes
+then :
+ printf "%s\n" "#define HAVE_SEM_CLOCKWAIT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "sem_getvalue" "ac_cv_func_sem_getvalue"
+if test "x$ac_cv_func_sem_getvalue" = xyes
+then :
+ printf "%s\n" "#define HAVE_SEM_GETVALUE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "sem_open" "ac_cv_func_sem_open"
+if test "x$ac_cv_func_sem_open" = xyes
+then :
+ printf "%s\n" "#define HAVE_SEM_OPEN 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "sem_timedwait" "ac_cv_func_sem_timedwait"
+if test "x$ac_cv_func_sem_timedwait" = xyes
+then :
+ printf "%s\n" "#define HAVE_SEM_TIMEDWAIT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "sem_unlink" "ac_cv_func_sem_unlink"
+if test "x$ac_cv_func_sem_unlink" = xyes
+then :
+ printf "%s\n" "#define HAVE_SEM_UNLINK 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "sendfile" "ac_cv_func_sendfile"
+if test "x$ac_cv_func_sendfile" = xyes
+then :
+ printf "%s\n" "#define HAVE_SENDFILE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setegid" "ac_cv_func_setegid"
+if test "x$ac_cv_func_setegid" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETEGID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "seteuid" "ac_cv_func_seteuid"
+if test "x$ac_cv_func_seteuid" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETEUID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setgid" "ac_cv_func_setgid"
+if test "x$ac_cv_func_setgid" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETGID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "sethostname" "ac_cv_func_sethostname"
+if test "x$ac_cv_func_sethostname" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETHOSTNAME 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setitimer" "ac_cv_func_setitimer"
+if test "x$ac_cv_func_setitimer" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETITIMER 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setlocale" "ac_cv_func_setlocale"
+if test "x$ac_cv_func_setlocale" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETLOCALE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setpgid" "ac_cv_func_setpgid"
+if test "x$ac_cv_func_setpgid" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETPGID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setpgrp" "ac_cv_func_setpgrp"
+if test "x$ac_cv_func_setpgrp" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETPGRP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setpriority" "ac_cv_func_setpriority"
+if test "x$ac_cv_func_setpriority" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETPRIORITY 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setregid" "ac_cv_func_setregid"
+if test "x$ac_cv_func_setregid" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETREGID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setresgid" "ac_cv_func_setresgid"
+if test "x$ac_cv_func_setresgid" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETRESGID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setresuid" "ac_cv_func_setresuid"
+if test "x$ac_cv_func_setresuid" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETRESUID 1" >>confdefs.h
+
fi
-if test "$with_c_locale_coercion" != "no"
-then
+ac_fn_c_check_func "$LINENO" "setreuid" "ac_cv_func_setreuid"
+if test "x$ac_cv_func_setreuid" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETREUID 1" >>confdefs.h
-$as_echo "#define PY_COERCE_C_LOCALE 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "setsid" "ac_cv_func_setsid"
+if test "x$ac_cv_func_setsid" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETSID 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_c_locale_coercion" >&5
-$as_echo "$with_c_locale_coercion" >&6; }
+ac_fn_c_check_func "$LINENO" "setuid" "ac_cv_func_setuid"
+if test "x$ac_cv_func_setuid" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETUID 1" >>confdefs.h
-# Check for Valgrind support
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-valgrind" >&5
-$as_echo_n "checking for --with-valgrind... " >&6; }
+fi
+ac_fn_c_check_func "$LINENO" "setvbuf" "ac_cv_func_setvbuf"
+if test "x$ac_cv_func_setvbuf" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETVBUF 1" >>confdefs.h
-# Check whether --with-valgrind was given.
-if test "${with_valgrind+set}" = set; then :
- withval=$with_valgrind;
-else
- with_valgrind=no
fi
+ac_fn_c_check_func "$LINENO" "shutdown" "ac_cv_func_shutdown"
+if test "x$ac_cv_func_shutdown" = xyes
+then :
+ printf "%s\n" "#define HAVE_SHUTDOWN 1" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_valgrind" >&5
-$as_echo "$with_valgrind" >&6; }
-if test "$with_valgrind" != no; then
- ac_fn_c_check_header_mongrel "$LINENO" "valgrind/valgrind.h" "ac_cv_header_valgrind_valgrind_h" "$ac_includes_default"
-if test "x$ac_cv_header_valgrind_valgrind_h" = xyes; then :
+fi
+ac_fn_c_check_func "$LINENO" "sigaction" "ac_cv_func_sigaction"
+if test "x$ac_cv_func_sigaction" = xyes
+then :
+ printf "%s\n" "#define HAVE_SIGACTION 1" >>confdefs.h
-$as_echo "#define WITH_VALGRIND 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "sigaltstack" "ac_cv_func_sigaltstack"
+if test "x$ac_cv_func_sigaltstack" = xyes
+then :
+ printf "%s\n" "#define HAVE_SIGALTSTACK 1" >>confdefs.h
-else
- as_fn_error $? "Valgrind support requested but headers not available" "$LINENO" 5
+fi
+ac_fn_c_check_func "$LINENO" "sigfillset" "ac_cv_func_sigfillset"
+if test "x$ac_cv_func_sigfillset" = xyes
+then :
+ printf "%s\n" "#define HAVE_SIGFILLSET 1" >>confdefs.h
fi
+ac_fn_c_check_func "$LINENO" "siginterrupt" "ac_cv_func_siginterrupt"
+if test "x$ac_cv_func_siginterrupt" = xyes
+then :
+ printf "%s\n" "#define HAVE_SIGINTERRUPT 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "sigpending" "ac_cv_func_sigpending"
+if test "x$ac_cv_func_sigpending" = xyes
+then :
+ printf "%s\n" "#define HAVE_SIGPENDING 1" >>confdefs.h
- OPT="-DDYNAMIC_ANNOTATIONS_ENABLED=1 $OPT"
fi
+ac_fn_c_check_func "$LINENO" "sigrelse" "ac_cv_func_sigrelse"
+if test "x$ac_cv_func_sigrelse" = xyes
+then :
+ printf "%s\n" "#define HAVE_SIGRELSE 1" >>confdefs.h
-# Check for DTrace support
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-dtrace" >&5
-$as_echo_n "checking for --with-dtrace... " >&6; }
+fi
+ac_fn_c_check_func "$LINENO" "sigtimedwait" "ac_cv_func_sigtimedwait"
+if test "x$ac_cv_func_sigtimedwait" = xyes
+then :
+ printf "%s\n" "#define HAVE_SIGTIMEDWAIT 1" >>confdefs.h
-# Check whether --with-dtrace was given.
-if test "${with_dtrace+set}" = set; then :
- withval=$with_dtrace;
-else
- with_dtrace=no
fi
+ac_fn_c_check_func "$LINENO" "sigwait" "ac_cv_func_sigwait"
+if test "x$ac_cv_func_sigwait" = xyes
+then :
+ printf "%s\n" "#define HAVE_SIGWAIT 1" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_dtrace" >&5
-$as_echo "$with_dtrace" >&6; }
+fi
+ac_fn_c_check_func "$LINENO" "sigwaitinfo" "ac_cv_func_sigwaitinfo"
+if test "x$ac_cv_func_sigwaitinfo" = xyes
+then :
+ printf "%s\n" "#define HAVE_SIGWAITINFO 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "snprintf" "ac_cv_func_snprintf"
+if test "x$ac_cv_func_snprintf" = xyes
+then :
+ printf "%s\n" "#define HAVE_SNPRINTF 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "splice" "ac_cv_func_splice"
+if test "x$ac_cv_func_splice" = xyes
+then :
+ printf "%s\n" "#define HAVE_SPLICE 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime"
+if test "x$ac_cv_func_strftime" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRFTIME 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "strlcpy" "ac_cv_func_strlcpy"
+if test "x$ac_cv_func_strlcpy" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRLCPY 1" >>confdefs.h
-DTRACE=
-DTRACE_HEADERS=
-DTRACE_OBJS=
+fi
+ac_fn_c_check_func "$LINENO" "strsignal" "ac_cv_func_strsignal"
+if test "x$ac_cv_func_strsignal" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRSIGNAL 1" >>confdefs.h
-if test "$with_dtrace" = "yes"
-then
- # Extract the first word of "dtrace", so it can be a program name with args.
-set dummy dtrace; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_DTRACE+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $DTRACE in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_DTRACE="$DTRACE" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_DTRACE="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
+fi
+ac_fn_c_check_func "$LINENO" "symlinkat" "ac_cv_func_symlinkat"
+if test "x$ac_cv_func_symlinkat" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYMLINKAT 1" >>confdefs.h
- test -z "$ac_cv_path_DTRACE" && ac_cv_path_DTRACE="not found"
- ;;
-esac
fi
-DTRACE=$ac_cv_path_DTRACE
-if test -n "$DTRACE"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DTRACE" >&5
-$as_echo "$DTRACE" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ac_fn_c_check_func "$LINENO" "sync" "ac_cv_func_sync"
+if test "x$ac_cv_func_sync" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYNC 1" >>confdefs.h
+
fi
+ac_fn_c_check_func "$LINENO" "sysconf" "ac_cv_func_sysconf"
+if test "x$ac_cv_func_sysconf" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYSCONF 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "system" "ac_cv_func_system"
+if test "x$ac_cv_func_system" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYSTEM 1" >>confdefs.h
- if test "$DTRACE" = "not found"; then
- as_fn_error $? "dtrace command not found on \$PATH" "$LINENO" 5
- fi
+fi
+ac_fn_c_check_func "$LINENO" "tcgetpgrp" "ac_cv_func_tcgetpgrp"
+if test "x$ac_cv_func_tcgetpgrp" = xyes
+then :
+ printf "%s\n" "#define HAVE_TCGETPGRP 1" >>confdefs.h
-$as_echo "#define WITH_DTRACE 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "tcsetpgrp" "ac_cv_func_tcsetpgrp"
+if test "x$ac_cv_func_tcsetpgrp" = xyes
+then :
+ printf "%s\n" "#define HAVE_TCSETPGRP 1" >>confdefs.h
- DTRACE_HEADERS="Include/pydtrace_probes.h"
+fi
+ac_fn_c_check_func "$LINENO" "tempnam" "ac_cv_func_tempnam"
+if test "x$ac_cv_func_tempnam" = xyes
+then :
+ printf "%s\n" "#define HAVE_TEMPNAM 1" >>confdefs.h
- # On OS X, DTrace providers do not need to be explicitly compiled and
- # linked into the binary. Correspondingly, dtrace(1) is missing the ELF
- # generation flag '-G'. We check for presence of this flag, rather than
- # hardcoding support by OS, in the interest of robustness.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether DTrace probes require linking" >&5
-$as_echo_n "checking whether DTrace probes require linking... " >&6; }
-if ${ac_cv_dtrace_link+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_dtrace_link=no
- echo 'BEGIN{}' > conftest.d
- "$DTRACE" $DFLAGS -G -s conftest.d -o conftest.o > /dev/null 2>&1 && \
- ac_cv_dtrace_link=yes
+fi
+ac_fn_c_check_func "$LINENO" "timegm" "ac_cv_func_timegm"
+if test "x$ac_cv_func_timegm" = xyes
+then :
+ printf "%s\n" "#define HAVE_TIMEGM 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_dtrace_link" >&5
-$as_echo "$ac_cv_dtrace_link" >&6; }
- if test "$ac_cv_dtrace_link" = "yes"; then
- DTRACE_OBJS="Python/pydtrace.o"
- fi
+ac_fn_c_check_func "$LINENO" "times" "ac_cv_func_times"
+if test "x$ac_cv_func_times" = xyes
+then :
+ printf "%s\n" "#define HAVE_TIMES 1" >>confdefs.h
+
fi
+ac_fn_c_check_func "$LINENO" "tmpfile" "ac_cv_func_tmpfile"
+if test "x$ac_cv_func_tmpfile" = xyes
+then :
+ printf "%s\n" "#define HAVE_TMPFILE 1" >>confdefs.h
-PLATFORM_HEADERS=
-PLATFORM_OBJS=
+fi
+ac_fn_c_check_func "$LINENO" "tmpnam" "ac_cv_func_tmpnam"
+if test "x$ac_cv_func_tmpnam" = xyes
+then :
+ printf "%s\n" "#define HAVE_TMPNAM 1" >>confdefs.h
-case $ac_sys_system in #(
- Emscripten) :
+fi
+ac_fn_c_check_func "$LINENO" "tmpnam_r" "ac_cv_func_tmpnam_r"
+if test "x$ac_cv_func_tmpnam_r" = xyes
+then :
+ printf "%s\n" "#define HAVE_TMPNAM_R 1" >>confdefs.h
- as_fn_append PLATFORM_OBJS ' Python/emscripten_signal.o'
- as_fn_append PLATFORM_HEADERS ' $(srcdir)/Include/internal/pycore_emscripten_signal.h'
- ;; #(
- *) :
- ;;
-esac
+fi
+ac_fn_c_check_func "$LINENO" "truncate" "ac_cv_func_truncate"
+if test "x$ac_cv_func_truncate" = xyes
+then :
+ printf "%s\n" "#define HAVE_TRUNCATE 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "ttyname" "ac_cv_func_ttyname"
+if test "x$ac_cv_func_ttyname" = xyes
+then :
+ printf "%s\n" "#define HAVE_TTYNAME 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "umask" "ac_cv_func_umask"
+if test "x$ac_cv_func_umask" = xyes
+then :
+ printf "%s\n" "#define HAVE_UMASK 1" >>confdefs.h
-# -I${DLINCLDIR} is added to the compile rule for importdl.o
+fi
+ac_fn_c_check_func "$LINENO" "uname" "ac_cv_func_uname"
+if test "x$ac_cv_func_uname" = xyes
+then :
+ printf "%s\n" "#define HAVE_UNAME 1" >>confdefs.h
-DLINCLDIR=.
+fi
+ac_fn_c_check_func "$LINENO" "unlinkat" "ac_cv_func_unlinkat"
+if test "x$ac_cv_func_unlinkat" = xyes
+then :
+ printf "%s\n" "#define HAVE_UNLINKAT 1" >>confdefs.h
-# the dlopen() function means we might want to use dynload_shlib.o. some
-# platforms have dlopen(), but don't want to use it.
-for ac_func in dlopen
-do :
- ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
-if test "x$ac_cv_func_dlopen" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_DLOPEN 1
-_ACEOF
+fi
+ac_fn_c_check_func "$LINENO" "utimensat" "ac_cv_func_utimensat"
+if test "x$ac_cv_func_utimensat" = xyes
+then :
+ printf "%s\n" "#define HAVE_UTIMENSAT 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "utimes" "ac_cv_func_utimes"
+if test "x$ac_cv_func_utimes" = xyes
+then :
+ printf "%s\n" "#define HAVE_UTIMES 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "vfork" "ac_cv_func_vfork"
+if test "x$ac_cv_func_vfork" = xyes
+then :
+ printf "%s\n" "#define HAVE_VFORK 1" >>confdefs.h
-# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
-# loading of modules.
+fi
+ac_fn_c_check_func "$LINENO" "wait" "ac_cv_func_wait"
+if test "x$ac_cv_func_wait" = xyes
+then :
+ printf "%s\n" "#define HAVE_WAIT 1" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking DYNLOADFILE" >&5
-$as_echo_n "checking DYNLOADFILE... " >&6; }
-if test -z "$DYNLOADFILE"
-then
- case $ac_sys_system/$ac_sys_release in
- hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
- *)
- # use dynload_shlib.c and dlopen() if we have it; otherwise stub
- # out any dynamic loading
- if test "$ac_cv_func_dlopen" = yes
- then DYNLOADFILE="dynload_shlib.o"
- else DYNLOADFILE="dynload_stub.o"
- fi
- ;;
- esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $DYNLOADFILE" >&5
-$as_echo "$DYNLOADFILE" >&6; }
-if test "$DYNLOADFILE" != "dynload_stub.o"
-then
+ac_fn_c_check_func "$LINENO" "wait3" "ac_cv_func_wait3"
+if test "x$ac_cv_func_wait3" = xyes
+then :
+ printf "%s\n" "#define HAVE_WAIT3 1" >>confdefs.h
-$as_echo "#define HAVE_DYNAMIC_LOADING 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "wait4" "ac_cv_func_wait4"
+if test "x$ac_cv_func_wait4" = xyes
+then :
+ printf "%s\n" "#define HAVE_WAIT4 1" >>confdefs.h
fi
+ac_fn_c_check_func "$LINENO" "waitid" "ac_cv_func_waitid"
+if test "x$ac_cv_func_waitid" = xyes
+then :
+ printf "%s\n" "#define HAVE_WAITID 1" >>confdefs.h
-# MACHDEP_OBJS can be set to platform-specific object files needed by Python
+fi
+ac_fn_c_check_func "$LINENO" "waitpid" "ac_cv_func_waitpid"
+if test "x$ac_cv_func_waitpid" = xyes
+then :
+ printf "%s\n" "#define HAVE_WAITPID 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "wcscoll" "ac_cv_func_wcscoll"
+if test "x$ac_cv_func_wcscoll" = xyes
+then :
+ printf "%s\n" "#define HAVE_WCSCOLL 1" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking MACHDEP_OBJS" >&5
-$as_echo_n "checking MACHDEP_OBJS... " >&6; }
-if test -z "$MACHDEP_OBJS"
-then
- MACHDEP_OBJS=$extra_machdep_objs
-else
- MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
fi
-if test -z "$MACHDEP_OBJS"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
-$as_echo "none" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MACHDEP_OBJS" >&5
-$as_echo "$MACHDEP_OBJS" >&6; }
+ac_fn_c_check_func "$LINENO" "wcsftime" "ac_cv_func_wcsftime"
+if test "x$ac_cv_func_wcsftime" = xyes
+then :
+ printf "%s\n" "#define HAVE_WCSFTIME 1" >>confdefs.h
+
fi
+ac_fn_c_check_func "$LINENO" "wcsxfrm" "ac_cv_func_wcsxfrm"
+if test "x$ac_cv_func_wcsxfrm" = xyes
+then :
+ printf "%s\n" "#define HAVE_WCSXFRM 1" >>confdefs.h
-# checks for library functions
-for ac_func in \
- accept4 alarm bind_textdomain_codeset chmod chown clock close_range confstr \
- copy_file_range ctermid dup dup3 execv explicit_bzero explicit_memset \
- faccessat fchmod fchmodat fchown fchownat fdopendir fdwalk fexecve \
- fork fork1 fpathconf fstatat ftime ftruncate futimens futimes futimesat \
- gai_strerror getegid getentropy geteuid getgid getgrgid getgrgid_r \
- getgrnam_r getgrouplist getgroups gethostname getitimer getloadavg getlogin \
- getpeername getpgid getpid getppid getpriority _getpty \
- getpwent getpwnam_r getpwuid getpwuid_r getresgid getresuid getrusage getsid getspent \
- getspnam getuid getwd if_nameindex initgroups kill killpg lchown linkat \
- lockf lstat lutimes madvise mbrtowc memrchr mkdirat mkfifo mkfifoat \
- mknod mknodat mktime mmap mremap nice openat opendir pathconf pause pipe \
- pipe2 plock poll posix_fadvise posix_fallocate posix_spawn posix_spawnp \
- pread preadv preadv2 pthread_condattr_setclock pthread_init pthread_kill \
- pwrite pwritev pwritev2 readlink readlinkat readv realpath renameat \
- rtpSpawn sched_get_priority_max sched_rr_get_interval sched_setaffinity \
- sched_setparam sched_setscheduler sem_clockwait sem_getvalue sem_open \
- sem_timedwait sem_unlink sendfile setegid seteuid setgid sethostname \
- setitimer setlocale setpgid setpgrp setpriority setregid setresgid \
- setresuid setreuid setsid setuid setvbuf shutdown sigaction sigaltstack \
- sigfillset siginterrupt sigpending sigrelse sigtimedwait sigwait \
- sigwaitinfo snprintf splice strftime strlcpy strsignal symlinkat sync \
- sysconf system tcgetpgrp tcsetpgrp tempnam timegm times tmpfile \
- tmpnam tmpnam_r truncate ttyname umask uname unlinkat utimensat utimes vfork \
- wait wait3 wait4 waitid waitpid wcscoll wcsftime wcsxfrm wmemcmp writev \
+fi
+ac_fn_c_check_func "$LINENO" "wmemcmp" "ac_cv_func_wmemcmp"
+if test "x$ac_cv_func_wmemcmp" = xyes
+then :
+ printf "%s\n" "#define HAVE_WMEMCMP 1" >>confdefs.h
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_func "$LINENO" "writev" "ac_cv_func_writev"
+if test "x$ac_cv_func_writev" = xyes
+then :
+ printf "%s\n" "#define HAVE_WRITEV 1" >>confdefs.h
fi
-done
# Force lchmod off for Linux. Linux disallows changing the mode of symbolic
# links. Some libc implementations have a stub lchmod implementation that always
# returns an error.
if test "$MACHDEP" != linux; then
- for ac_func in lchmod
-do :
ac_fn_c_check_func "$LINENO" "lchmod" "ac_cv_func_lchmod"
-if test "x$ac_cv_func_lchmod" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LCHMOD 1
-_ACEOF
+if test "x$ac_cv_func_lchmod" = xyes
+then :
+ printf "%s\n" "#define HAVE_LCHMOD 1" >>confdefs.h
fi
-done
fi
-ac_fn_c_check_decl "$LINENO" "dirfd" "ac_cv_have_decl_dirfd" "#include
- #include
-"
-if test "x$ac_cv_have_decl_dirfd" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5
+printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; }
+if test ${ac_cv_c_undeclared_builtin_options+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_save_CFLAGS=$CFLAGS
+ ac_cv_c_undeclared_builtin_options='cannot detect'
+ for ac_arg in '' -fno-builtin; do
+ CFLAGS="$ac_save_CFLAGS $ac_arg"
+ # This test program should *not* compile successfully.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main (void)
+{
+(void) strchr;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+
+else $as_nop
+ # This test program should compile successfully.
+ # No library function is consistently available on
+ # freestanding implementations, so test against a dummy
+ # declaration. Include always-available headers on the
+ # off chance that they somehow elicit warnings.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+#include
+#include
+#include
+extern void ac_decl (int, char *);
-$as_echo "#define HAVE_DIRFD 1" >>confdefs.h
+int
+main (void)
+{
+(void) ac_decl (0, (char *) 0);
+ (void) ac_decl;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ if test x"$ac_arg" = x
+then :
+ ac_cv_c_undeclared_builtin_options='none needed'
+else $as_nop
+ ac_cv_c_undeclared_builtin_options=$ac_arg
+fi
+ break
fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ done
+ CFLAGS=$ac_save_CFLAGS
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5
+printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; }
+ case $ac_cv_c_undeclared_builtin_options in #(
+ 'cannot detect') :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot make $CC report undeclared builtins
+See \`config.log' for more details" "$LINENO" 5; } ;; #(
+ 'none needed') :
+ ac_c_undeclared_builtin_options='' ;; #(
+ *) :
+ ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;;
+esac
+
+ac_fn_check_decl "$LINENO" "dirfd" "ac_cv_have_decl_dirfd" "#include
+ #include
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_dirfd" = xyes
+then :
+
+printf "%s\n" "#define HAVE_DIRFD 1" >>confdefs.h
+fi
# For some functions, having a definition is not sufficient, since
# we want to take their address.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for chroot" >&5
-$as_echo_n "checking for chroot... " >&6; }
-if ${ac_cv_func_chroot+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for chroot" >&5
+printf %s "checking for chroot... " >&6; }
+if test ${ac_cv_func_chroot+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
int
-main ()
+main (void)
{
void *x=chroot
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_chroot=yes
-else
+else $as_nop
ac_cv_func_chroot=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_chroot" >&5
-$as_echo "$ac_cv_func_chroot" >&6; }
- if test "x$ac_cv_func_chroot" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_chroot" >&5
+printf "%s\n" "$ac_cv_func_chroot" >&6; }
+ if test "x$ac_cv_func_chroot" = xyes
+then :
-$as_echo "#define HAVE_CHROOT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_CHROOT 1" >>confdefs.h
fi
@@ -16201,35 +18713,38 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for link" >&5
-$as_echo_n "checking for link... " >&6; }
-if ${ac_cv_func_link+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for link" >&5
+printf %s "checking for link... " >&6; }
+if test ${ac_cv_func_link+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
int
-main ()
+main (void)
{
void *x=link
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_link=yes
-else
+else $as_nop
ac_cv_func_link=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_link" >&5
-$as_echo "$ac_cv_func_link" >&6; }
- if test "x$ac_cv_func_link" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_link" >&5
+printf "%s\n" "$ac_cv_func_link" >&6; }
+ if test "x$ac_cv_func_link" = xyes
+then :
-$as_echo "#define HAVE_LINK 1" >>confdefs.h
+printf "%s\n" "#define HAVE_LINK 1" >>confdefs.h
fi
@@ -16237,35 +18752,38 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for symlink" >&5
-$as_echo_n "checking for symlink... " >&6; }
-if ${ac_cv_func_symlink+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for symlink" >&5
+printf %s "checking for symlink... " >&6; }
+if test ${ac_cv_func_symlink+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
int
-main ()
+main (void)
{
void *x=symlink
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_symlink=yes
-else
+else $as_nop
ac_cv_func_symlink=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_symlink" >&5
-$as_echo "$ac_cv_func_symlink" >&6; }
- if test "x$ac_cv_func_symlink" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_symlink" >&5
+printf "%s\n" "$ac_cv_func_symlink" >&6; }
+ if test "x$ac_cv_func_symlink" = xyes
+then :
-$as_echo "#define HAVE_SYMLINK 1" >>confdefs.h
+printf "%s\n" "#define HAVE_SYMLINK 1" >>confdefs.h
fi
@@ -16273,35 +18791,38 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fchdir" >&5
-$as_echo_n "checking for fchdir... " >&6; }
-if ${ac_cv_func_fchdir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fchdir" >&5
+printf %s "checking for fchdir... " >&6; }
+if test ${ac_cv_func_fchdir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
int
-main ()
+main (void)
{
void *x=fchdir
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_fchdir=yes
-else
+else $as_nop
ac_cv_func_fchdir=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fchdir" >&5
-$as_echo "$ac_cv_func_fchdir" >&6; }
- if test "x$ac_cv_func_fchdir" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fchdir" >&5
+printf "%s\n" "$ac_cv_func_fchdir" >&6; }
+ if test "x$ac_cv_func_fchdir" = xyes
+then :
-$as_echo "#define HAVE_FCHDIR 1" >>confdefs.h
+printf "%s\n" "#define HAVE_FCHDIR 1" >>confdefs.h
fi
@@ -16309,35 +18830,38 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fsync" >&5
-$as_echo_n "checking for fsync... " >&6; }
-if ${ac_cv_func_fsync+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fsync" >&5
+printf %s "checking for fsync... " >&6; }
+if test ${ac_cv_func_fsync+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
int
-main ()
+main (void)
{
void *x=fsync
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_fsync=yes
-else
+else $as_nop
ac_cv_func_fsync=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fsync" >&5
-$as_echo "$ac_cv_func_fsync" >&6; }
- if test "x$ac_cv_func_fsync" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fsync" >&5
+printf "%s\n" "$ac_cv_func_fsync" >&6; }
+ if test "x$ac_cv_func_fsync" = xyes
+then :
-$as_echo "#define HAVE_FSYNC 1" >>confdefs.h
+printf "%s\n" "#define HAVE_FSYNC 1" >>confdefs.h
fi
@@ -16345,35 +18869,38 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fdatasync" >&5
-$as_echo_n "checking for fdatasync... " >&6; }
-if ${ac_cv_func_fdatasync+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fdatasync" >&5
+printf %s "checking for fdatasync... " >&6; }
+if test ${ac_cv_func_fdatasync+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
int
-main ()
+main (void)
{
void *x=fdatasync
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_fdatasync=yes
-else
+else $as_nop
ac_cv_func_fdatasync=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fdatasync" >&5
-$as_echo "$ac_cv_func_fdatasync" >&6; }
- if test "x$ac_cv_func_fdatasync" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fdatasync" >&5
+printf "%s\n" "$ac_cv_func_fdatasync" >&6; }
+ if test "x$ac_cv_func_fdatasync" = xyes
+then :
-$as_echo "#define HAVE_FDATASYNC 1" >>confdefs.h
+printf "%s\n" "#define HAVE_FDATASYNC 1" >>confdefs.h
fi
@@ -16381,35 +18908,38 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for epoll_create" >&5
-$as_echo_n "checking for epoll_create... " >&6; }
-if ${ac_cv_func_epoll_create+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for epoll_create" >&5
+printf %s "checking for epoll_create... " >&6; }
+if test ${ac_cv_func_epoll_create+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
int
-main ()
+main (void)
{
void *x=epoll_create
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_epoll_create=yes
-else
+else $as_nop
ac_cv_func_epoll_create=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_epoll_create" >&5
-$as_echo "$ac_cv_func_epoll_create" >&6; }
- if test "x$ac_cv_func_epoll_create" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_epoll_create" >&5
+printf "%s\n" "$ac_cv_func_epoll_create" >&6; }
+ if test "x$ac_cv_func_epoll_create" = xyes
+then :
-$as_echo "#define HAVE_EPOLL 1" >>confdefs.h
+printf "%s\n" "#define HAVE_EPOLL 1" >>confdefs.h
fi
@@ -16417,35 +18947,38 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for epoll_create1" >&5
-$as_echo_n "checking for epoll_create1... " >&6; }
-if ${ac_cv_func_epoll_create1+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for epoll_create1" >&5
+printf %s "checking for epoll_create1... " >&6; }
+if test ${ac_cv_func_epoll_create1+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
int
-main ()
+main (void)
{
void *x=epoll_create1
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_epoll_create1=yes
-else
+else $as_nop
ac_cv_func_epoll_create1=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_epoll_create1" >&5
-$as_echo "$ac_cv_func_epoll_create1" >&6; }
- if test "x$ac_cv_func_epoll_create1" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_epoll_create1" >&5
+printf "%s\n" "$ac_cv_func_epoll_create1" >&6; }
+ if test "x$ac_cv_func_epoll_create1" = xyes
+then :
-$as_echo "#define HAVE_EPOLL_CREATE1 1" >>confdefs.h
+printf "%s\n" "#define HAVE_EPOLL_CREATE1 1" >>confdefs.h
fi
@@ -16453,11 +18986,12 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kqueue" >&5
-$as_echo_n "checking for kqueue... " >&6; }
-if ${ac_cv_func_kqueue+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for kqueue" >&5
+printf %s "checking for kqueue... " >&6; }
+if test ${ac_cv_func_kqueue+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -16465,26 +18999,28 @@ else
#include
int
-main ()
+main (void)
{
void *x=kqueue
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_kqueue=yes
-else
+else $as_nop
ac_cv_func_kqueue=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_kqueue" >&5
-$as_echo "$ac_cv_func_kqueue" >&6; }
- if test "x$ac_cv_func_kqueue" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_kqueue" >&5
+printf "%s\n" "$ac_cv_func_kqueue" >&6; }
+ if test "x$ac_cv_func_kqueue" = xyes
+then :
-$as_echo "#define HAVE_KQUEUE 1" >>confdefs.h
+printf "%s\n" "#define HAVE_KQUEUE 1" >>confdefs.h
fi
@@ -16492,11 +19028,12 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for prlimit" >&5
-$as_echo_n "checking for prlimit... " >&6; }
-if ${ac_cv_func_prlimit+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for prlimit" >&5
+printf %s "checking for prlimit... " >&6; }
+if test ${ac_cv_func_prlimit+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -16504,26 +19041,28 @@ else
#include
int
-main ()
+main (void)
{
void *x=prlimit
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_prlimit=yes
-else
+else $as_nop
ac_cv_func_prlimit=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_prlimit" >&5
-$as_echo "$ac_cv_func_prlimit" >&6; }
- if test "x$ac_cv_func_prlimit" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_prlimit" >&5
+printf "%s\n" "$ac_cv_func_prlimit" >&6; }
+ if test "x$ac_cv_func_prlimit" = xyes
+then :
-$as_echo "#define HAVE_PRLIMIT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_PRLIMIT 1" >>confdefs.h
fi
@@ -16532,35 +19071,38 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _dyld_shared_cache_contains_path" >&5
-$as_echo_n "checking for _dyld_shared_cache_contains_path... " >&6; }
-if ${ac_cv_func__dyld_shared_cache_contains_path+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _dyld_shared_cache_contains_path" >&5
+printf %s "checking for _dyld_shared_cache_contains_path... " >&6; }
+if test ${ac_cv_func__dyld_shared_cache_contains_path+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
int
-main ()
+main (void)
{
void *x=_dyld_shared_cache_contains_path
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func__dyld_shared_cache_contains_path=yes
-else
+else $as_nop
ac_cv_func__dyld_shared_cache_contains_path=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func__dyld_shared_cache_contains_path" >&5
-$as_echo "$ac_cv_func__dyld_shared_cache_contains_path" >&6; }
- if test "x$ac_cv_func__dyld_shared_cache_contains_path" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func__dyld_shared_cache_contains_path" >&5
+printf "%s\n" "$ac_cv_func__dyld_shared_cache_contains_path" >&6; }
+ if test "x$ac_cv_func__dyld_shared_cache_contains_path" = xyes
+then :
-$as_echo "#define HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH 1" >>confdefs.h
+printf "%s\n" "#define HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH 1" >>confdefs.h
fi
@@ -16569,11 +19111,12 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for memfd_create" >&5
-$as_echo_n "checking for memfd_create... " >&6; }
-if ${ac_cv_func_memfd_create+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for memfd_create" >&5
+printf %s "checking for memfd_create... " >&6; }
+if test ${ac_cv_func_memfd_create+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -16585,26 +19128,28 @@ else
#endif
int
-main ()
+main (void)
{
void *x=memfd_create
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_memfd_create=yes
-else
+else $as_nop
ac_cv_func_memfd_create=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_memfd_create" >&5
-$as_echo "$ac_cv_func_memfd_create" >&6; }
- if test "x$ac_cv_func_memfd_create" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_memfd_create" >&5
+printf "%s\n" "$ac_cv_func_memfd_create" >&6; }
+ if test "x$ac_cv_func_memfd_create" = xyes
+then :
-$as_echo "#define HAVE_MEMFD_CREATE 1" >>confdefs.h
+printf "%s\n" "#define HAVE_MEMFD_CREATE 1" >>confdefs.h
fi
@@ -16613,11 +19158,12 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for eventfd" >&5
-$as_echo_n "checking for eventfd... " >&6; }
-if ${ac_cv_func_eventfd+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for eventfd" >&5
+printf %s "checking for eventfd... " >&6; }
+if test ${ac_cv_func_eventfd+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -16626,26 +19172,28 @@ else
#endif
int
-main ()
+main (void)
{
void *x=eventfd
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_eventfd=yes
-else
+else $as_nop
ac_cv_func_eventfd=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_eventfd" >&5
-$as_echo "$ac_cv_func_eventfd" >&6; }
- if test "x$ac_cv_func_eventfd" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_eventfd" >&5
+printf "%s\n" "$ac_cv_func_eventfd" >&6; }
+ if test "x$ac_cv_func_eventfd" = xyes
+then :
-$as_echo "#define HAVE_EVENTFD 1" >>confdefs.h
+printf "%s\n" "#define HAVE_EVENTFD 1" >>confdefs.h
fi
@@ -16660,51 +19208,55 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ctermid_r" >&5
-$as_echo_n "checking for ctermid_r... " >&6; }
-if ${ac_cv_func_ctermid_r+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ctermid_r" >&5
+printf %s "checking for ctermid_r... " >&6; }
+if test ${ac_cv_func_ctermid_r+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
int
-main ()
+main (void)
{
void *x=ctermid_r
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_ctermid_r=yes
-else
+else $as_nop
ac_cv_func_ctermid_r=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_ctermid_r" >&5
-$as_echo "$ac_cv_func_ctermid_r" >&6; }
- if test "x$ac_cv_func_ctermid_r" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_ctermid_r" >&5
+printf "%s\n" "$ac_cv_func_ctermid_r" >&6; }
+ if test "x$ac_cv_func_ctermid_r" = xyes
+then :
-$as_echo "#define HAVE_CTERMID_R 1" >>confdefs.h
+printf "%s\n" "#define HAVE_CTERMID_R 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for flock declaration" >&5
-$as_echo_n "checking for flock declaration... " >&6; }
-if ${ac_cv_flock_decl+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for flock declaration" >&5
+printf %s "checking for flock declaration... " >&6; }
+if test ${ac_cv_flock_decl+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
int
-main ()
+main (void)
{
void* p = flock
@@ -16712,34 +19264,35 @@ void* p = flock
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_flock_decl=yes
-else
+else $as_nop
ac_cv_flock_decl=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_flock_decl" >&5
-$as_echo "$ac_cv_flock_decl" >&6; }
-if test "x$ac_cv_flock_decl" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_flock_decl" >&5
+printf "%s\n" "$ac_cv_flock_decl" >&6; }
+if test "x$ac_cv_flock_decl" = xyes
+then :
+
for ac_func in flock
do :
ac_fn_c_check_func "$LINENO" "flock" "ac_cv_func_flock"
-if test "x$ac_cv_func_flock" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_FLOCK 1
-_ACEOF
-
-fi
-done
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for flock in -lbsd" >&5
-$as_echo_n "checking for flock in -lbsd... " >&6; }
-if ${ac_cv_lib_bsd_flock+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+if test "x$ac_cv_func_flock" = xyes
+then :
+ printf "%s\n" "#define HAVE_FLOCK 1" >>confdefs.h
+
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for flock in -lbsd" >&5
+printf %s "checking for flock in -lbsd... " >&6; }
+if test ${ac_cv_lib_bsd_flock+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lbsd $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -16748,104 +19301,111 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char flock ();
int
-main ()
+main (void)
{
return flock ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_bsd_flock=yes
-else
+else $as_nop
ac_cv_lib_bsd_flock=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_flock" >&5
-$as_echo "$ac_cv_lib_bsd_flock" >&6; }
-if test "x$ac_cv_lib_bsd_flock" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_flock" >&5
+printf "%s\n" "$ac_cv_lib_bsd_flock" >&6; }
+if test "x$ac_cv_lib_bsd_flock" = xyes
+then :
FCNTL_LIBS="-lbsd"
fi
+fi
+done
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getpagesize" >&5
-$as_echo_n "checking for getpagesize... " >&6; }
-if ${ac_cv_func_getpagesize+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getpagesize" >&5
+printf %s "checking for getpagesize... " >&6; }
+if test ${ac_cv_func_getpagesize+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
int
-main ()
+main (void)
{
void *x=getpagesize
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_getpagesize=yes
-else
+else $as_nop
ac_cv_func_getpagesize=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getpagesize" >&5
-$as_echo "$ac_cv_func_getpagesize" >&6; }
- if test "x$ac_cv_func_getpagesize" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getpagesize" >&5
+printf "%s\n" "$ac_cv_func_getpagesize" >&6; }
+ if test "x$ac_cv_func_getpagesize" = xyes
+then :
-$as_echo "#define HAVE_GETPAGESIZE 1" >>confdefs.h
+printf "%s\n" "#define HAVE_GETPAGESIZE 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for broken unsetenv" >&5
-$as_echo_n "checking for broken unsetenv... " >&6; }
-if ${ac_cv_broken_unsetenv+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for broken unsetenv" >&5
+printf %s "checking for broken unsetenv... " >&6; }
+if test ${ac_cv_broken_unsetenv+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
int
-main ()
+main (void)
{
int res = unsetenv("DUMMY")
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_broken_unsetenv=no
-else
+else $as_nop
ac_cv_broken_unsetenv=yes
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_broken_unsetenv" >&5
-$as_echo "$ac_cv_broken_unsetenv" >&6; }
-if test "x$ac_cv_broken_unsetenv" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_broken_unsetenv" >&5
+printf "%s\n" "$ac_cv_broken_unsetenv" >&6; }
+if test "x$ac_cv_broken_unsetenv" = xyes
+then :
-$as_echo "#define HAVE_BROKEN_UNSETENV 1" >>confdefs.h
+printf "%s\n" "#define HAVE_BROKEN_UNSETENV 1" >>confdefs.h
fi
@@ -16854,11 +19414,12 @@ for ac_prog in true
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_TRUE+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_TRUE+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$TRUE"; then
ac_cv_prog_TRUE="$TRUE" # Let the user override the test.
else
@@ -16866,11 +19427,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_TRUE="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -16881,11 +19446,11 @@ fi
fi
TRUE=$ac_cv_prog_TRUE
if test -n "$TRUE"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TRUE" >&5
-$as_echo "$TRUE" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $TRUE" >&5
+printf "%s\n" "$TRUE" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -16894,11 +19459,12 @@ done
test -n "$TRUE" || TRUE="/bin/true"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inet_aton in -lc" >&5
-$as_echo_n "checking for inet_aton in -lc... " >&6; }
-if ${ac_cv_lib_c_inet_aton+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inet_aton in -lc" >&5
+printf %s "checking for inet_aton in -lc... " >&6; }
+if test ${ac_cv_lib_c_inet_aton+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lc $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -16907,37 +19473,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char inet_aton ();
int
-main ()
+main (void)
{
return inet_aton ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_c_inet_aton=yes
-else
+else $as_nop
ac_cv_lib_c_inet_aton=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_inet_aton" >&5
-$as_echo "$ac_cv_lib_c_inet_aton" >&6; }
-if test "x$ac_cv_lib_c_inet_aton" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_inet_aton" >&5
+printf "%s\n" "$ac_cv_lib_c_inet_aton" >&6; }
+if test "x$ac_cv_lib_c_inet_aton" = xyes
+then :
$ac_cv_prog_TRUE
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inet_aton in -lresolv" >&5
-$as_echo_n "checking for inet_aton in -lresolv... " >&6; }
-if ${ac_cv_lib_resolv_inet_aton+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inet_aton in -lresolv" >&5
+printf %s "checking for inet_aton in -lresolv... " >&6; }
+if test ${ac_cv_lib_resolv_inet_aton+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lresolv $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -16946,33 +19512,30 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char inet_aton ();
int
-main ()
+main (void)
{
return inet_aton ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_resolv_inet_aton=yes
-else
+else $as_nop
ac_cv_lib_resolv_inet_aton=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_inet_aton" >&5
-$as_echo "$ac_cv_lib_resolv_inet_aton" >&6; }
-if test "x$ac_cv_lib_resolv_inet_aton" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBRESOLV 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_inet_aton" >&5
+printf "%s\n" "$ac_cv_lib_resolv_inet_aton" >&6; }
+if test "x$ac_cv_lib_resolv_inet_aton" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBRESOLV 1" >>confdefs.h
LIBS="-lresolv $LIBS"
@@ -16984,14 +19547,16 @@ fi
# On Tru64, chflags seems to be present, but calling it will
# exit Python
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for chflags" >&5
-$as_echo_n "checking for chflags... " >&6; }
-if ${ac_cv_have_chflags+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for chflags" >&5
+printf %s "checking for chflags... " >&6; }
+if test ${ac_cv_have_chflags+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
ac_cv_have_chflags=cross
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17005,9 +19570,10 @@ int main(int argc, char *argv[])
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ac_cv_have_chflags=yes
-else
+else $as_nop
ac_cv_have_chflags=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -17016,31 +19582,34 @@ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_chflags" >&5
-$as_echo "$ac_cv_have_chflags" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_chflags" >&5
+printf "%s\n" "$ac_cv_have_chflags" >&6; }
if test "$ac_cv_have_chflags" = cross ; then
ac_fn_c_check_func "$LINENO" "chflags" "ac_cv_func_chflags"
-if test "x$ac_cv_func_chflags" = xyes; then :
+if test "x$ac_cv_func_chflags" = xyes
+then :
ac_cv_have_chflags="yes"
-else
+else $as_nop
ac_cv_have_chflags="no"
fi
fi
if test "$ac_cv_have_chflags" = yes ; then
-$as_echo "#define HAVE_CHFLAGS 1" >>confdefs.h
+printf "%s\n" "#define HAVE_CHFLAGS 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for lchflags" >&5
-$as_echo_n "checking for lchflags... " >&6; }
-if ${ac_cv_have_lchflags+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for lchflags" >&5
+printf %s "checking for lchflags... " >&6; }
+if test ${ac_cv_have_lchflags+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
ac_cv_have_lchflags=cross
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17054,9 +19623,10 @@ int main(int argc, char *argv[])
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ac_cv_have_lchflags=yes
-else
+else $as_nop
ac_cv_have_lchflags=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -17065,20 +19635,21 @@ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_lchflags" >&5
-$as_echo "$ac_cv_have_lchflags" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_lchflags" >&5
+printf "%s\n" "$ac_cv_have_lchflags" >&6; }
if test "$ac_cv_have_lchflags" = cross ; then
ac_fn_c_check_func "$LINENO" "lchflags" "ac_cv_func_lchflags"
-if test "x$ac_cv_func_lchflags" = xyes; then :
+if test "x$ac_cv_func_lchflags" = xyes
+then :
ac_cv_have_lchflags="yes"
-else
+else $as_nop
ac_cv_have_lchflags="no"
fi
fi
if test "$ac_cv_have_lchflags" = yes ; then
-$as_echo "#define HAVE_LCHFLAGS 1" >>confdefs.h
+printf "%s\n" "#define HAVE_LCHFLAGS 1" >>confdefs.h
fi
@@ -17087,7 +19658,8 @@ fi
- if test "$ac_sys_system" = "Emscripten" -a -z "$ZLIB_CFLAGS" -a -z "$ZLIB_LIBS"; then :
+ if test "$ac_sys_system" = "Emscripten" -a -z "$ZLIB_CFLAGS" -a -z "$ZLIB_LIBS"
+then :
ZLIB_CFLAGS="-sUSE_ZLIB"
ZLIB_LIBS="-sUSE_ZLIB"
@@ -17099,17 +19671,17 @@ fi
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ZLIB" >&5
-$as_echo_n "checking for ZLIB... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ZLIB" >&5
+printf %s "checking for ZLIB... " >&6; }
if test -n "$ZLIB_CFLAGS"; then
pkg_cv_ZLIB_CFLAGS="$ZLIB_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib >= 1.2.0\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib >= 1.2.0\""; } >&5
($PKG_CONFIG --exists --print-errors "zlib >= 1.2.0") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_ZLIB_CFLAGS=`$PKG_CONFIG --cflags "zlib >= 1.2.0" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
@@ -17123,10 +19695,10 @@ if test -n "$ZLIB_LIBS"; then
pkg_cv_ZLIB_LIBS="$ZLIB_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib >= 1.2.0\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib >= 1.2.0\""; } >&5
($PKG_CONFIG --exists --print-errors "zlib >= 1.2.0") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_ZLIB_LIBS=`$PKG_CONFIG --libs "zlib >= 1.2.0" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
@@ -17140,8 +19712,8 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
_pkg_short_errors_supported=yes
@@ -17165,20 +19737,20 @@ save_LIBS=$LIBS
CPPFLAGS="$CPPFLAGS $ZLIB_CFLAGS"
LDFLAGS="$LDFLAGS $ZLIB_LIBS"
- for ac_header in zlib.h
+ for ac_header in zlib.h
do :
- ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default"
-if test "x$ac_cv_header_zlib_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_ZLIB_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_zlib_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_ZLIB_H 1" >>confdefs.h
py_check_lib_save_LIBS=$LIBS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gzread in -lz" >&5
-$as_echo_n "checking for gzread in -lz... " >&6; }
-if ${ac_cv_lib_z_gzread+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gzread in -lz" >&5
+printf %s "checking for gzread in -lz... " >&6; }
+if test ${ac_cv_lib_z_gzread+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lz $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -17187,54 +19759,54 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char gzread ();
int
-main ()
+main (void)
{
return gzread ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_z_gzread=yes
-else
+else $as_nop
ac_cv_lib_z_gzread=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_gzread" >&5
-$as_echo "$ac_cv_lib_z_gzread" >&6; }
-if test "x$ac_cv_lib_z_gzread" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_gzread" >&5
+printf "%s\n" "$ac_cv_lib_z_gzread" >&6; }
+if test "x$ac_cv_lib_z_gzread" = xyes
+then :
have_zlib=yes
-else
+else $as_nop
have_zlib=no
fi
LIBS=$py_check_lib_save_LIBS
-else
+else $as_nop
have_zlib=no
fi
done
-
- if test "x$have_zlib" = xyes; then :
+ if test "x$have_zlib" = xyes
+then :
ZLIB_CFLAGS=${ZLIB_CFLAGS-""}
ZLIB_LIBS=${ZLIB_LIBS-"-lz"}
py_check_lib_save_LIBS=$LIBS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inflateCopy in -lz" >&5
-$as_echo_n "checking for inflateCopy in -lz... " >&6; }
-if ${ac_cv_lib_z_inflateCopy+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inflateCopy in -lz" >&5
+printf %s "checking for inflateCopy in -lz... " >&6; }
+if test ${ac_cv_lib_z_inflateCopy+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lz $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -17243,31 +19815,30 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char inflateCopy ();
int
-main ()
+main (void)
{
return inflateCopy ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_z_inflateCopy=yes
-else
+else $as_nop
ac_cv_lib_z_inflateCopy=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflateCopy" >&5
-$as_echo "$ac_cv_lib_z_inflateCopy" >&6; }
-if test "x$ac_cv_lib_z_inflateCopy" = xyes; then :
- $as_echo "#define HAVE_ZLIB_COPY 1" >>confdefs.h
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflateCopy" >&5
+printf "%s\n" "$ac_cv_lib_z_inflateCopy" >&6; }
+if test "x$ac_cv_lib_z_inflateCopy" = xyes
+then :
+ printf "%s\n" "#define HAVE_ZLIB_COPY 1" >>confdefs.h
fi
@@ -17284,8 +19855,8 @@ LIBS=$save_LIBS
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
save_CFLAGS=$CFLAGS
save_CPPFLAGS=$CPPFLAGS
@@ -17295,20 +19866,20 @@ save_LIBS=$LIBS
CPPFLAGS="$CPPFLAGS $ZLIB_CFLAGS"
LDFLAGS="$LDFLAGS $ZLIB_LIBS"
- for ac_header in zlib.h
+ for ac_header in zlib.h
do :
- ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default"
-if test "x$ac_cv_header_zlib_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_ZLIB_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_zlib_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_ZLIB_H 1" >>confdefs.h
py_check_lib_save_LIBS=$LIBS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gzread in -lz" >&5
-$as_echo_n "checking for gzread in -lz... " >&6; }
-if ${ac_cv_lib_z_gzread+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gzread in -lz" >&5
+printf %s "checking for gzread in -lz... " >&6; }
+if test ${ac_cv_lib_z_gzread+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lz $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -17317,54 +19888,54 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char gzread ();
int
-main ()
+main (void)
{
return gzread ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_z_gzread=yes
-else
+else $as_nop
ac_cv_lib_z_gzread=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_gzread" >&5
-$as_echo "$ac_cv_lib_z_gzread" >&6; }
-if test "x$ac_cv_lib_z_gzread" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_gzread" >&5
+printf "%s\n" "$ac_cv_lib_z_gzread" >&6; }
+if test "x$ac_cv_lib_z_gzread" = xyes
+then :
have_zlib=yes
-else
+else $as_nop
have_zlib=no
fi
LIBS=$py_check_lib_save_LIBS
-else
+else $as_nop
have_zlib=no
fi
done
-
- if test "x$have_zlib" = xyes; then :
+ if test "x$have_zlib" = xyes
+then :
ZLIB_CFLAGS=${ZLIB_CFLAGS-""}
ZLIB_LIBS=${ZLIB_LIBS-"-lz"}
py_check_lib_save_LIBS=$LIBS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inflateCopy in -lz" >&5
-$as_echo_n "checking for inflateCopy in -lz... " >&6; }
-if ${ac_cv_lib_z_inflateCopy+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inflateCopy in -lz" >&5
+printf %s "checking for inflateCopy in -lz... " >&6; }
+if test ${ac_cv_lib_z_inflateCopy+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lz $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -17373,31 +19944,30 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char inflateCopy ();
int
-main ()
+main (void)
{
return inflateCopy ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_z_inflateCopy=yes
-else
+else $as_nop
ac_cv_lib_z_inflateCopy=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflateCopy" >&5
-$as_echo "$ac_cv_lib_z_inflateCopy" >&6; }
-if test "x$ac_cv_lib_z_inflateCopy" = xyes; then :
- $as_echo "#define HAVE_ZLIB_COPY 1" >>confdefs.h
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflateCopy" >&5
+printf "%s\n" "$ac_cv_lib_z_inflateCopy" >&6; }
+if test "x$ac_cv_lib_z_inflateCopy" = xyes
+then :
+ printf "%s\n" "#define HAVE_ZLIB_COPY 1" >>confdefs.h
fi
@@ -17416,16 +19986,17 @@ LIBS=$save_LIBS
else
ZLIB_CFLAGS=$pkg_cv_ZLIB_CFLAGS
ZLIB_LIBS=$pkg_cv_ZLIB_LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
have_zlib=yes
- $as_echo "#define HAVE_ZLIB_COPY 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_ZLIB_COPY 1" >>confdefs.h
fi
-if test "x$have_zlib" = xyes; then :
+if test "x$have_zlib" = xyes
+then :
BINASCII_CFLAGS="-DUSE_ZLIB_CRC32 $ZLIB_CFLAGS"
BINASCII_LIBS="$ZLIB_LIBS"
@@ -17435,7 +20006,8 @@ fi
- if test "$ac_sys_system" = "Emscripten" -a -z "$BZIP2_CFLAGS" -a -z "$BZIP2_LIBS"; then :
+ if test "$ac_sys_system" = "Emscripten" -a -z "$BZIP2_CFLAGS" -a -z "$BZIP2_LIBS"
+then :
BZIP2_CFLAGS="-sUSE_BZIP2"
BZIP2_LIBS="-sUSE_BZIP2"
@@ -17447,17 +20019,17 @@ fi
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BZIP2" >&5
-$as_echo_n "checking for BZIP2... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BZIP2" >&5
+printf %s "checking for BZIP2... " >&6; }
if test -n "$BZIP2_CFLAGS"; then
pkg_cv_BZIP2_CFLAGS="$BZIP2_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"bzip2\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"bzip2\""; } >&5
($PKG_CONFIG --exists --print-errors "bzip2") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_BZIP2_CFLAGS=`$PKG_CONFIG --cflags "bzip2" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
@@ -17471,10 +20043,10 @@ if test -n "$BZIP2_LIBS"; then
pkg_cv_BZIP2_LIBS="$BZIP2_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"bzip2\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"bzip2\""; } >&5
($PKG_CONFIG --exists --print-errors "bzip2") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_BZIP2_LIBS=`$PKG_CONFIG --libs "bzip2" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
@@ -17488,8 +20060,8 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
_pkg_short_errors_supported=yes
@@ -17513,19 +20085,19 @@ save_LIBS=$LIBS
CPPFLAGS="$CPPFLAGS $BZIP2_CFLAGS"
LDFLAGS="$LDFLAGS $BZIP2_LIBS"
- for ac_header in bzlib.h
+ for ac_header in bzlib.h
do :
- ac_fn_c_check_header_mongrel "$LINENO" "bzlib.h" "ac_cv_header_bzlib_h" "$ac_includes_default"
-if test "x$ac_cv_header_bzlib_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_BZLIB_H 1
-_ACEOF
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BZ2_bzCompress in -lbz2" >&5
-$as_echo_n "checking for BZ2_bzCompress in -lbz2... " >&6; }
-if ${ac_cv_lib_bz2_BZ2_bzCompress+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ ac_fn_c_check_header_compile "$LINENO" "bzlib.h" "ac_cv_header_bzlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_bzlib_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_BZLIB_H 1" >>confdefs.h
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BZ2_bzCompress in -lbz2" >&5
+printf %s "checking for BZ2_bzCompress in -lbz2... " >&6; }
+if test ${ac_cv_lib_bz2_BZ2_bzCompress+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lbz2 $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -17534,43 +20106,42 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char BZ2_bzCompress ();
int
-main ()
+main (void)
{
return BZ2_bzCompress ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_bz2_BZ2_bzCompress=yes
-else
+else $as_nop
ac_cv_lib_bz2_BZ2_bzCompress=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bz2_BZ2_bzCompress" >&5
-$as_echo "$ac_cv_lib_bz2_BZ2_bzCompress" >&6; }
-if test "x$ac_cv_lib_bz2_BZ2_bzCompress" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bz2_BZ2_bzCompress" >&5
+printf "%s\n" "$ac_cv_lib_bz2_BZ2_bzCompress" >&6; }
+if test "x$ac_cv_lib_bz2_BZ2_bzCompress" = xyes
+then :
have_bzip2=yes
-else
+else $as_nop
have_bzip2=no
fi
-else
+else $as_nop
have_bzip2=no
fi
done
-
- if test "x$have_bzip2" = xyes; then :
+ if test "x$have_bzip2" = xyes
+then :
BZIP2_CFLAGS=${BZIP2_CFLAGS-""}
BZIP2_LIBS=${BZIP2_LIBS-"-lbz2"}
@@ -17585,8 +20156,8 @@ LIBS=$save_LIBS
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
save_CFLAGS=$CFLAGS
save_CPPFLAGS=$CPPFLAGS
@@ -17596,19 +20167,19 @@ save_LIBS=$LIBS
CPPFLAGS="$CPPFLAGS $BZIP2_CFLAGS"
LDFLAGS="$LDFLAGS $BZIP2_LIBS"
- for ac_header in bzlib.h
+ for ac_header in bzlib.h
do :
- ac_fn_c_check_header_mongrel "$LINENO" "bzlib.h" "ac_cv_header_bzlib_h" "$ac_includes_default"
-if test "x$ac_cv_header_bzlib_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_BZLIB_H 1
-_ACEOF
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BZ2_bzCompress in -lbz2" >&5
-$as_echo_n "checking for BZ2_bzCompress in -lbz2... " >&6; }
-if ${ac_cv_lib_bz2_BZ2_bzCompress+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ ac_fn_c_check_header_compile "$LINENO" "bzlib.h" "ac_cv_header_bzlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_bzlib_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_BZLIB_H 1" >>confdefs.h
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BZ2_bzCompress in -lbz2" >&5
+printf %s "checking for BZ2_bzCompress in -lbz2... " >&6; }
+if test ${ac_cv_lib_bz2_BZ2_bzCompress+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lbz2 $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -17617,43 +20188,42 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char BZ2_bzCompress ();
int
-main ()
+main (void)
{
return BZ2_bzCompress ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_bz2_BZ2_bzCompress=yes
-else
+else $as_nop
ac_cv_lib_bz2_BZ2_bzCompress=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bz2_BZ2_bzCompress" >&5
-$as_echo "$ac_cv_lib_bz2_BZ2_bzCompress" >&6; }
-if test "x$ac_cv_lib_bz2_BZ2_bzCompress" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bz2_BZ2_bzCompress" >&5
+printf "%s\n" "$ac_cv_lib_bz2_BZ2_bzCompress" >&6; }
+if test "x$ac_cv_lib_bz2_BZ2_bzCompress" = xyes
+then :
have_bzip2=yes
-else
+else $as_nop
have_bzip2=no
fi
-else
+else $as_nop
have_bzip2=no
fi
done
-
- if test "x$have_bzip2" = xyes; then :
+ if test "x$have_bzip2" = xyes
+then :
BZIP2_CFLAGS=${BZIP2_CFLAGS-""}
BZIP2_LIBS=${BZIP2_LIBS-"-lbz2"}
@@ -17670,24 +20240,24 @@ LIBS=$save_LIBS
else
BZIP2_CFLAGS=$pkg_cv_BZIP2_CFLAGS
BZIP2_LIBS=$pkg_cv_BZIP2_LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
have_bzip2=yes
fi
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBLZMA" >&5
-$as_echo_n "checking for LIBLZMA... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LIBLZMA" >&5
+printf %s "checking for LIBLZMA... " >&6; }
if test -n "$LIBLZMA_CFLAGS"; then
pkg_cv_LIBLZMA_CFLAGS="$LIBLZMA_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"liblzma\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"liblzma\""; } >&5
($PKG_CONFIG --exists --print-errors "liblzma") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_LIBLZMA_CFLAGS=`$PKG_CONFIG --cflags "liblzma" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
@@ -17701,10 +20271,10 @@ if test -n "$LIBLZMA_LIBS"; then
pkg_cv_LIBLZMA_LIBS="$LIBLZMA_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"liblzma\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"liblzma\""; } >&5
($PKG_CONFIG --exists --print-errors "liblzma") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_LIBLZMA_LIBS=`$PKG_CONFIG --libs "liblzma" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
@@ -17718,8 +20288,8 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
_pkg_short_errors_supported=yes
@@ -17743,19 +20313,19 @@ save_LIBS=$LIBS
CPPFLAGS="$CPPFLAGS $LIBLZMA_CFLAGS"
LDFLAGS="$LDFLAGS $LIBLZMA_LIBS"
- for ac_header in lzma.h
+ for ac_header in lzma.h
do :
- ac_fn_c_check_header_mongrel "$LINENO" "lzma.h" "ac_cv_header_lzma_h" "$ac_includes_default"
-if test "x$ac_cv_header_lzma_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LZMA_H 1
-_ACEOF
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lzma_easy_encoder in -llzma" >&5
-$as_echo_n "checking for lzma_easy_encoder in -llzma... " >&6; }
-if ${ac_cv_lib_lzma_lzma_easy_encoder+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ ac_fn_c_check_header_compile "$LINENO" "lzma.h" "ac_cv_header_lzma_h" "$ac_includes_default"
+if test "x$ac_cv_header_lzma_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LZMA_H 1" >>confdefs.h
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for lzma_easy_encoder in -llzma" >&5
+printf %s "checking for lzma_easy_encoder in -llzma... " >&6; }
+if test ${ac_cv_lib_lzma_lzma_easy_encoder+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-llzma $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -17764,43 +20334,42 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char lzma_easy_encoder ();
int
-main ()
+main (void)
{
return lzma_easy_encoder ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_lzma_lzma_easy_encoder=yes
-else
+else $as_nop
ac_cv_lib_lzma_lzma_easy_encoder=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lzma_lzma_easy_encoder" >&5
-$as_echo "$ac_cv_lib_lzma_lzma_easy_encoder" >&6; }
-if test "x$ac_cv_lib_lzma_lzma_easy_encoder" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lzma_lzma_easy_encoder" >&5
+printf "%s\n" "$ac_cv_lib_lzma_lzma_easy_encoder" >&6; }
+if test "x$ac_cv_lib_lzma_lzma_easy_encoder" = xyes
+then :
have_liblzma=yes
-else
+else $as_nop
have_liblzma=no
fi
-else
+else $as_nop
have_liblzma=no
fi
done
-
- if test "x$have_liblzma" = xyes; then :
+ if test "x$have_liblzma" = xyes
+then :
LIBLZMA_CFLAGS=${LIBLZMA_CFLAGS-""}
LIBLZMA_LIBS=${LIBLZMA_LIBS-"-llzma"}
@@ -17815,8 +20384,8 @@ LIBS=$save_LIBS
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
save_CFLAGS=$CFLAGS
save_CPPFLAGS=$CPPFLAGS
@@ -17826,19 +20395,19 @@ save_LIBS=$LIBS
CPPFLAGS="$CPPFLAGS $LIBLZMA_CFLAGS"
LDFLAGS="$LDFLAGS $LIBLZMA_LIBS"
- for ac_header in lzma.h
+ for ac_header in lzma.h
do :
- ac_fn_c_check_header_mongrel "$LINENO" "lzma.h" "ac_cv_header_lzma_h" "$ac_includes_default"
-if test "x$ac_cv_header_lzma_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LZMA_H 1
-_ACEOF
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lzma_easy_encoder in -llzma" >&5
-$as_echo_n "checking for lzma_easy_encoder in -llzma... " >&6; }
-if ${ac_cv_lib_lzma_lzma_easy_encoder+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ ac_fn_c_check_header_compile "$LINENO" "lzma.h" "ac_cv_header_lzma_h" "$ac_includes_default"
+if test "x$ac_cv_header_lzma_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LZMA_H 1" >>confdefs.h
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for lzma_easy_encoder in -llzma" >&5
+printf %s "checking for lzma_easy_encoder in -llzma... " >&6; }
+if test ${ac_cv_lib_lzma_lzma_easy_encoder+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-llzma $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -17847,43 +20416,42 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char lzma_easy_encoder ();
int
-main ()
+main (void)
{
return lzma_easy_encoder ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_lzma_lzma_easy_encoder=yes
-else
+else $as_nop
ac_cv_lib_lzma_lzma_easy_encoder=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lzma_lzma_easy_encoder" >&5
-$as_echo "$ac_cv_lib_lzma_lzma_easy_encoder" >&6; }
-if test "x$ac_cv_lib_lzma_lzma_easy_encoder" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lzma_lzma_easy_encoder" >&5
+printf "%s\n" "$ac_cv_lib_lzma_lzma_easy_encoder" >&6; }
+if test "x$ac_cv_lib_lzma_lzma_easy_encoder" = xyes
+then :
have_liblzma=yes
-else
+else $as_nop
have_liblzma=no
fi
-else
+else $as_nop
have_liblzma=no
fi
done
-
- if test "x$have_liblzma" = xyes; then :
+ if test "x$have_liblzma" = xyes
+then :
LIBLZMA_CFLAGS=${LIBLZMA_CFLAGS-""}
LIBLZMA_LIBS=${LIBLZMA_LIBS-"-llzma"}
@@ -17900,8 +20468,8 @@ LIBS=$save_LIBS
else
LIBLZMA_CFLAGS=$pkg_cv_LIBLZMA_CFLAGS
LIBLZMA_LIBS=$pkg_cv_LIBLZMA_LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
have_liblzma=yes
fi
@@ -17909,35 +20477,38 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for hstrerror" >&5
-$as_echo_n "checking for hstrerror... " >&6; }
-if ${ac_cv_func_hstrerror+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for hstrerror" >&5
+printf %s "checking for hstrerror... " >&6; }
+if test ${ac_cv_func_hstrerror+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
int
-main ()
+main (void)
{
void *x=hstrerror
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_hstrerror=yes
-else
+else $as_nop
ac_cv_func_hstrerror=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_hstrerror" >&5
-$as_echo "$ac_cv_func_hstrerror" >&6; }
- if test "x$ac_cv_func_hstrerror" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_hstrerror" >&5
+printf "%s\n" "$ac_cv_func_hstrerror" >&6; }
+ if test "x$ac_cv_func_hstrerror" = xyes
+then :
-$as_echo "#define HAVE_HSTRERROR 1" >>confdefs.h
+printf "%s\n" "#define HAVE_HSTRERROR 1" >>confdefs.h
fi
@@ -17945,35 +20516,38 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getservbyname" >&5
-$as_echo_n "checking for getservbyname... " >&6; }
-if ${ac_cv_func_getservbyname+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getservbyname" >&5
+printf %s "checking for getservbyname... " >&6; }
+if test ${ac_cv_func_getservbyname+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
int
-main ()
+main (void)
{
void *x=getservbyname
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_getservbyname=yes
-else
+else $as_nop
ac_cv_func_getservbyname=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getservbyname" >&5
-$as_echo "$ac_cv_func_getservbyname" >&6; }
- if test "x$ac_cv_func_getservbyname" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getservbyname" >&5
+printf "%s\n" "$ac_cv_func_getservbyname" >&6; }
+ if test "x$ac_cv_func_getservbyname" = xyes
+then :
-$as_echo "#define HAVE_GETSERVBYNAME 1" >>confdefs.h
+printf "%s\n" "#define HAVE_GETSERVBYNAME 1" >>confdefs.h
fi
@@ -17981,35 +20555,38 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getservbyport" >&5
-$as_echo_n "checking for getservbyport... " >&6; }
-if ${ac_cv_func_getservbyport+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getservbyport" >&5
+printf %s "checking for getservbyport... " >&6; }
+if test ${ac_cv_func_getservbyport+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
int
-main ()
+main (void)
{
void *x=getservbyport
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_getservbyport=yes
-else
+else $as_nop
ac_cv_func_getservbyport=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getservbyport" >&5
-$as_echo "$ac_cv_func_getservbyport" >&6; }
- if test "x$ac_cv_func_getservbyport" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getservbyport" >&5
+printf "%s\n" "$ac_cv_func_getservbyport" >&6; }
+ if test "x$ac_cv_func_getservbyport" = xyes
+then :
-$as_echo "#define HAVE_GETSERVBYPORT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_GETSERVBYPORT 1" >>confdefs.h
fi
@@ -18017,35 +20594,38 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname" >&5
-$as_echo_n "checking for gethostbyname... " >&6; }
-if ${ac_cv_func_gethostbyname+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname" >&5
+printf %s "checking for gethostbyname... " >&6; }
+if test ${ac_cv_func_gethostbyname+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
int
-main ()
+main (void)
{
void *x=gethostbyname
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_gethostbyname=yes
-else
+else $as_nop
ac_cv_func_gethostbyname=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_gethostbyname" >&5
-$as_echo "$ac_cv_func_gethostbyname" >&6; }
- if test "x$ac_cv_func_gethostbyname" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_gethostbyname" >&5
+printf "%s\n" "$ac_cv_func_gethostbyname" >&6; }
+ if test "x$ac_cv_func_gethostbyname" = xyes
+then :
-$as_echo "#define HAVE_GETHOSTBYNAME 1" >>confdefs.h
+printf "%s\n" "#define HAVE_GETHOSTBYNAME 1" >>confdefs.h
fi
@@ -18053,35 +20633,38 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyaddr" >&5
-$as_echo_n "checking for gethostbyaddr... " >&6; }
-if ${ac_cv_func_gethostbyaddr+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyaddr" >&5
+printf %s "checking for gethostbyaddr... " >&6; }
+if test ${ac_cv_func_gethostbyaddr+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
int
-main ()
+main (void)
{
void *x=gethostbyaddr
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_gethostbyaddr=yes
-else
+else $as_nop
ac_cv_func_gethostbyaddr=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_gethostbyaddr" >&5
-$as_echo "$ac_cv_func_gethostbyaddr" >&6; }
- if test "x$ac_cv_func_gethostbyaddr" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_gethostbyaddr" >&5
+printf "%s\n" "$ac_cv_func_gethostbyaddr" >&6; }
+ if test "x$ac_cv_func_gethostbyaddr" = xyes
+then :
-$as_echo "#define HAVE_GETHOSTBYADDR 1" >>confdefs.h
+printf "%s\n" "#define HAVE_GETHOSTBYADDR 1" >>confdefs.h
fi
@@ -18089,35 +20672,38 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getprotobyname" >&5
-$as_echo_n "checking for getprotobyname... " >&6; }
-if ${ac_cv_func_getprotobyname+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getprotobyname" >&5
+printf %s "checking for getprotobyname... " >&6; }
+if test ${ac_cv_func_getprotobyname+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
int
-main ()
+main (void)
{
void *x=getprotobyname
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_getprotobyname=yes
-else
+else $as_nop
ac_cv_func_getprotobyname=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getprotobyname" >&5
-$as_echo "$ac_cv_func_getprotobyname" >&6; }
- if test "x$ac_cv_func_getprotobyname" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getprotobyname" >&5
+printf "%s\n" "$ac_cv_func_getprotobyname" >&6; }
+ if test "x$ac_cv_func_getprotobyname" = xyes
+then :
-$as_echo "#define HAVE_GETPROTOBYNAME 1" >>confdefs.h
+printf "%s\n" "#define HAVE_GETPROTOBYNAME 1" >>confdefs.h
fi
@@ -18128,11 +20714,12 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inet_aton" >&5
-$as_echo_n "checking for inet_aton... " >&6; }
-if ${ac_cv_func_inet_aton+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inet_aton" >&5
+printf %s "checking for inet_aton... " >&6; }
+if test ${ac_cv_func_inet_aton+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18142,26 +20729,28 @@ else
#include
int
-main ()
+main (void)
{
void *x=inet_aton
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_inet_aton=yes
-else
+else $as_nop
ac_cv_func_inet_aton=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_inet_aton" >&5
-$as_echo "$ac_cv_func_inet_aton" >&6; }
- if test "x$ac_cv_func_inet_aton" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_inet_aton" >&5
+printf "%s\n" "$ac_cv_func_inet_aton" >&6; }
+ if test "x$ac_cv_func_inet_aton" = xyes
+then :
-$as_echo "#define HAVE_INET_ATON 1" >>confdefs.h
+printf "%s\n" "#define HAVE_INET_ATON 1" >>confdefs.h
fi
@@ -18169,11 +20758,12 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inet_ntoa" >&5
-$as_echo_n "checking for inet_ntoa... " >&6; }
-if ${ac_cv_func_inet_ntoa+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inet_ntoa" >&5
+printf %s "checking for inet_ntoa... " >&6; }
+if test ${ac_cv_func_inet_ntoa+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18183,26 +20773,28 @@ else
#include
int
-main ()
+main (void)
{
void *x=inet_ntoa
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_inet_ntoa=yes
-else
+else $as_nop
ac_cv_func_inet_ntoa=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_inet_ntoa" >&5
-$as_echo "$ac_cv_func_inet_ntoa" >&6; }
- if test "x$ac_cv_func_inet_ntoa" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_inet_ntoa" >&5
+printf "%s\n" "$ac_cv_func_inet_ntoa" >&6; }
+ if test "x$ac_cv_func_inet_ntoa" = xyes
+then :
-$as_echo "#define HAVE_INET_NTOA 1" >>confdefs.h
+printf "%s\n" "#define HAVE_INET_NTOA 1" >>confdefs.h
fi
@@ -18210,11 +20802,12 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inet_pton" >&5
-$as_echo_n "checking for inet_pton... " >&6; }
-if ${ac_cv_func_inet_pton+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inet_pton" >&5
+printf %s "checking for inet_pton... " >&6; }
+if test ${ac_cv_func_inet_pton+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18224,26 +20817,28 @@ else
#include
int
-main ()
+main (void)
{
void *x=inet_pton
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_inet_pton=yes
-else
+else $as_nop
ac_cv_func_inet_pton=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_inet_pton" >&5
-$as_echo "$ac_cv_func_inet_pton" >&6; }
- if test "x$ac_cv_func_inet_pton" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_inet_pton" >&5
+printf "%s\n" "$ac_cv_func_inet_pton" >&6; }
+ if test "x$ac_cv_func_inet_pton" = xyes
+then :
-$as_echo "#define HAVE_INET_PTON 1" >>confdefs.h
+printf "%s\n" "#define HAVE_INET_PTON 1" >>confdefs.h
fi
@@ -18251,11 +20846,12 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getpeername" >&5
-$as_echo_n "checking for getpeername... " >&6; }
-if ${ac_cv_func_getpeername+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getpeername" >&5
+printf %s "checking for getpeername... " >&6; }
+if test ${ac_cv_func_getpeername+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18265,26 +20861,28 @@ else
#include
int
-main ()
+main (void)
{
void *x=getpeername
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_getpeername=yes
-else
+else $as_nop
ac_cv_func_getpeername=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getpeername" >&5
-$as_echo "$ac_cv_func_getpeername" >&6; }
- if test "x$ac_cv_func_getpeername" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getpeername" >&5
+printf "%s\n" "$ac_cv_func_getpeername" >&6; }
+ if test "x$ac_cv_func_getpeername" = xyes
+then :
-$as_echo "#define HAVE_GETPEERNAME 1" >>confdefs.h
+printf "%s\n" "#define HAVE_GETPEERNAME 1" >>confdefs.h
fi
@@ -18292,11 +20890,12 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getsockname" >&5
-$as_echo_n "checking for getsockname... " >&6; }
-if ${ac_cv_func_getsockname+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getsockname" >&5
+printf %s "checking for getsockname... " >&6; }
+if test ${ac_cv_func_getsockname+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18306,26 +20905,28 @@ else
#include
int
-main ()
+main (void)
{
void *x=getsockname
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_getsockname=yes
-else
+else $as_nop
ac_cv_func_getsockname=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getsockname" >&5
-$as_echo "$ac_cv_func_getsockname" >&6; }
- if test "x$ac_cv_func_getsockname" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getsockname" >&5
+printf "%s\n" "$ac_cv_func_getsockname" >&6; }
+ if test "x$ac_cv_func_getsockname" = xyes
+then :
-$as_echo "#define HAVE_GETSOCKNAME 1" >>confdefs.h
+printf "%s\n" "#define HAVE_GETSOCKNAME 1" >>confdefs.h
fi
@@ -18333,11 +20934,12 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for accept" >&5
-$as_echo_n "checking for accept... " >&6; }
-if ${ac_cv_func_accept+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for accept" >&5
+printf %s "checking for accept... " >&6; }
+if test ${ac_cv_func_accept+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18347,26 +20949,28 @@ else
#include
int
-main ()
+main (void)
{
void *x=accept
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_accept=yes
-else
+else $as_nop
ac_cv_func_accept=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_accept" >&5
-$as_echo "$ac_cv_func_accept" >&6; }
- if test "x$ac_cv_func_accept" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_accept" >&5
+printf "%s\n" "$ac_cv_func_accept" >&6; }
+ if test "x$ac_cv_func_accept" = xyes
+then :
-$as_echo "#define HAVE_ACCEPT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_ACCEPT 1" >>confdefs.h
fi
@@ -18374,11 +20978,12 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bind" >&5
-$as_echo_n "checking for bind... " >&6; }
-if ${ac_cv_func_bind+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for bind" >&5
+printf %s "checking for bind... " >&6; }
+if test ${ac_cv_func_bind+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18388,26 +20993,28 @@ else
#include
int
-main ()
+main (void)
{
void *x=bind
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_bind=yes
-else
+else $as_nop
ac_cv_func_bind=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_bind" >&5
-$as_echo "$ac_cv_func_bind" >&6; }
- if test "x$ac_cv_func_bind" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_bind" >&5
+printf "%s\n" "$ac_cv_func_bind" >&6; }
+ if test "x$ac_cv_func_bind" = xyes
+then :
-$as_echo "#define HAVE_BIND 1" >>confdefs.h
+printf "%s\n" "#define HAVE_BIND 1" >>confdefs.h
fi
@@ -18415,11 +21022,12 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect" >&5
-$as_echo_n "checking for connect... " >&6; }
-if ${ac_cv_func_connect+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for connect" >&5
+printf %s "checking for connect... " >&6; }
+if test ${ac_cv_func_connect+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18429,26 +21037,28 @@ else
#include
int
-main ()
+main (void)
{
void *x=connect
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_connect=yes
-else
+else $as_nop
ac_cv_func_connect=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_connect" >&5
-$as_echo "$ac_cv_func_connect" >&6; }
- if test "x$ac_cv_func_connect" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_connect" >&5
+printf "%s\n" "$ac_cv_func_connect" >&6; }
+ if test "x$ac_cv_func_connect" = xyes
+then :
-$as_echo "#define HAVE_CONNECT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_CONNECT 1" >>confdefs.h
fi
@@ -18456,11 +21066,12 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for listen" >&5
-$as_echo_n "checking for listen... " >&6; }
-if ${ac_cv_func_listen+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for listen" >&5
+printf %s "checking for listen... " >&6; }
+if test ${ac_cv_func_listen+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18470,26 +21081,28 @@ else
#include
int
-main ()
+main (void)
{
void *x=listen
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_listen=yes
-else
+else $as_nop
ac_cv_func_listen=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_listen" >&5
-$as_echo "$ac_cv_func_listen" >&6; }
- if test "x$ac_cv_func_listen" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_listen" >&5
+printf "%s\n" "$ac_cv_func_listen" >&6; }
+ if test "x$ac_cv_func_listen" = xyes
+then :
-$as_echo "#define HAVE_LISTEN 1" >>confdefs.h
+printf "%s\n" "#define HAVE_LISTEN 1" >>confdefs.h
fi
@@ -18497,11 +21110,12 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for recvfrom" >&5
-$as_echo_n "checking for recvfrom... " >&6; }
-if ${ac_cv_func_recvfrom+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for recvfrom" >&5
+printf %s "checking for recvfrom... " >&6; }
+if test ${ac_cv_func_recvfrom+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18511,26 +21125,28 @@ else
#include
int
-main ()
+main (void)
{
void *x=recvfrom
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_recvfrom=yes
-else
+else $as_nop
ac_cv_func_recvfrom=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_recvfrom" >&5
-$as_echo "$ac_cv_func_recvfrom" >&6; }
- if test "x$ac_cv_func_recvfrom" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_recvfrom" >&5
+printf "%s\n" "$ac_cv_func_recvfrom" >&6; }
+ if test "x$ac_cv_func_recvfrom" = xyes
+then :
-$as_echo "#define HAVE_RECVFROM 1" >>confdefs.h
+printf "%s\n" "#define HAVE_RECVFROM 1" >>confdefs.h
fi
@@ -18538,11 +21154,12 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sendto" >&5
-$as_echo_n "checking for sendto... " >&6; }
-if ${ac_cv_func_sendto+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sendto" >&5
+printf %s "checking for sendto... " >&6; }
+if test ${ac_cv_func_sendto+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18552,26 +21169,28 @@ else
#include
int
-main ()
+main (void)
{
void *x=sendto
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_sendto=yes
-else
+else $as_nop
ac_cv_func_sendto=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_sendto" >&5
-$as_echo "$ac_cv_func_sendto" >&6; }
- if test "x$ac_cv_func_sendto" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_sendto" >&5
+printf "%s\n" "$ac_cv_func_sendto" >&6; }
+ if test "x$ac_cv_func_sendto" = xyes
+then :
-$as_echo "#define HAVE_SENDTO 1" >>confdefs.h
+printf "%s\n" "#define HAVE_SENDTO 1" >>confdefs.h
fi
@@ -18579,11 +21198,12 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for setsockopt" >&5
-$as_echo_n "checking for setsockopt... " >&6; }
-if ${ac_cv_func_setsockopt+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for setsockopt" >&5
+printf %s "checking for setsockopt... " >&6; }
+if test ${ac_cv_func_setsockopt+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18593,26 +21213,28 @@ else
#include
int
-main ()
+main (void)
{
void *x=setsockopt
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_setsockopt=yes
-else
+else $as_nop
ac_cv_func_setsockopt=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_setsockopt" >&5
-$as_echo "$ac_cv_func_setsockopt" >&6; }
- if test "x$ac_cv_func_setsockopt" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_setsockopt" >&5
+printf "%s\n" "$ac_cv_func_setsockopt" >&6; }
+ if test "x$ac_cv_func_setsockopt" = xyes
+then :
-$as_echo "#define HAVE_SETSOCKOPT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_SETSOCKOPT 1" >>confdefs.h
fi
@@ -18620,11 +21242,12 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket" >&5
-$as_echo_n "checking for socket... " >&6; }
-if ${ac_cv_func_socket+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for socket" >&5
+printf %s "checking for socket... " >&6; }
+if test ${ac_cv_func_socket+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18634,26 +21257,28 @@ else
#include
int
-main ()
+main (void)
{
void *x=socket
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_socket=yes
-else
+else $as_nop
ac_cv_func_socket=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_socket" >&5
-$as_echo "$ac_cv_func_socket" >&6; }
- if test "x$ac_cv_func_socket" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_socket" >&5
+printf "%s\n" "$ac_cv_func_socket" >&6; }
+ if test "x$ac_cv_func_socket" = xyes
+then :
-$as_echo "#define HAVE_SOCKET 1" >>confdefs.h
+printf "%s\n" "#define HAVE_SOCKET 1" >>confdefs.h
fi
@@ -18663,11 +21288,12 @@ fi
# On some systems, setgroups is in unistd.h, on others, in grp.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for setgroups" >&5
-$as_echo_n "checking for setgroups... " >&6; }
-if ${ac_cv_func_setgroups+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for setgroups" >&5
+printf %s "checking for setgroups... " >&6; }
+if test ${ac_cv_func_setgroups+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18677,26 +21303,28 @@ else
#endif
int
-main ()
+main (void)
{
void *x=setgroups
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_setgroups=yes
-else
+else $as_nop
ac_cv_func_setgroups=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_setgroups" >&5
-$as_echo "$ac_cv_func_setgroups" >&6; }
- if test "x$ac_cv_func_setgroups" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_setgroups" >&5
+printf "%s\n" "$ac_cv_func_setgroups" >&6; }
+ if test "x$ac_cv_func_setgroups" = xyes
+then :
-$as_echo "#define HAVE_SETGROUPS 1" >>confdefs.h
+printf "%s\n" "#define HAVE_SETGROUPS 1" >>confdefs.h
fi
@@ -18705,20 +21333,21 @@ fi
# check for openpty, login_tty, and forkpty
-for ac_func in openpty
+
+ for ac_func in openpty
do :
ac_fn_c_check_func "$LINENO" "openpty" "ac_cv_func_openpty"
-if test "x$ac_cv_func_openpty" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_OPENPTY 1
-_ACEOF
-
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for openpty in -lutil" >&5
-$as_echo_n "checking for openpty in -lutil... " >&6; }
-if ${ac_cv_lib_util_openpty+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+if test "x$ac_cv_func_openpty" = xyes
+then :
+ printf "%s\n" "#define HAVE_OPENPTY 1" >>confdefs.h
+
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for openpty in -lutil" >&5
+printf %s "checking for openpty in -lutil... " >&6; }
+if test ${ac_cv_lib_util_openpty+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lutil $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -18727,38 +21356,38 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char openpty ();
int
-main ()
+main (void)
{
return openpty ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_util_openpty=yes
-else
+else $as_nop
ac_cv_lib_util_openpty=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_openpty" >&5
-$as_echo "$ac_cv_lib_util_openpty" >&6; }
-if test "x$ac_cv_lib_util_openpty" = xyes; then :
- $as_echo "#define HAVE_OPENPTY 1" >>confdefs.h
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_openpty" >&5
+printf "%s\n" "$ac_cv_lib_util_openpty" >&6; }
+if test "x$ac_cv_lib_util_openpty" = xyes
+then :
+ printf "%s\n" "#define HAVE_OPENPTY 1" >>confdefs.h
LIBS="$LIBS -lutil"
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for openpty in -lbsd" >&5
-$as_echo_n "checking for openpty in -lbsd... " >&6; }
-if ${ac_cv_lib_bsd_openpty+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for openpty in -lbsd" >&5
+printf %s "checking for openpty in -lbsd... " >&6; }
+if test ${ac_cv_lib_bsd_openpty+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lbsd $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -18767,46 +21396,44 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char openpty ();
int
-main ()
+main (void)
{
return openpty ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_bsd_openpty=yes
-else
+else $as_nop
ac_cv_lib_bsd_openpty=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_openpty" >&5
-$as_echo "$ac_cv_lib_bsd_openpty" >&6; }
-if test "x$ac_cv_lib_bsd_openpty" = xyes; then :
- $as_echo "#define HAVE_OPENPTY 1" >>confdefs.h
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_openpty" >&5
+printf "%s\n" "$ac_cv_lib_bsd_openpty" >&6; }
+if test "x$ac_cv_lib_bsd_openpty" = xyes
+then :
+ printf "%s\n" "#define HAVE_OPENPTY 1" >>confdefs.h
LIBS="$LIBS -lbsd"
fi
-
fi
-
fi
-done
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing login_tty" >&5
-$as_echo_n "checking for library containing login_tty... " >&6; }
-if ${ac_cv_search_login_tty+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+done
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing login_tty" >&5
+printf %s "checking for library containing login_tty... " >&6; }
+if test ${ac_cv_search_login_tty+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18814,67 +21441,70 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char login_tty ();
int
-main ()
+main (void)
{
return login_tty ();
;
return 0;
}
_ACEOF
-for ac_lib in '' util; do
+for ac_lib in '' util
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_login_tty=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_login_tty+:} false; then :
+ if test ${ac_cv_search_login_tty+y}
+then :
break
fi
done
-if ${ac_cv_search_login_tty+:} false; then :
+if test ${ac_cv_search_login_tty+y}
+then :
-else
+else $as_nop
ac_cv_search_login_tty=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_login_tty" >&5
-$as_echo "$ac_cv_search_login_tty" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_login_tty" >&5
+printf "%s\n" "$ac_cv_search_login_tty" >&6; }
ac_res=$ac_cv_search_login_tty
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-$as_echo "#define HAVE_LOGIN_TTY 1" >>confdefs.h
+printf "%s\n" "#define HAVE_LOGIN_TTY 1" >>confdefs.h
fi
-for ac_func in forkpty
+
+ for ac_func in forkpty
do :
ac_fn_c_check_func "$LINENO" "forkpty" "ac_cv_func_forkpty"
-if test "x$ac_cv_func_forkpty" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_FORKPTY 1
-_ACEOF
-
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for forkpty in -lutil" >&5
-$as_echo_n "checking for forkpty in -lutil... " >&6; }
-if ${ac_cv_lib_util_forkpty+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+if test "x$ac_cv_func_forkpty" = xyes
+then :
+ printf "%s\n" "#define HAVE_FORKPTY 1" >>confdefs.h
+
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for forkpty in -lutil" >&5
+printf %s "checking for forkpty in -lutil... " >&6; }
+if test ${ac_cv_lib_util_forkpty+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lutil $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -18883,38 +21513,38 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char forkpty ();
int
-main ()
+main (void)
{
return forkpty ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_util_forkpty=yes
-else
+else $as_nop
ac_cv_lib_util_forkpty=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_forkpty" >&5
-$as_echo "$ac_cv_lib_util_forkpty" >&6; }
-if test "x$ac_cv_lib_util_forkpty" = xyes; then :
- $as_echo "#define HAVE_FORKPTY 1" >>confdefs.h
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_forkpty" >&5
+printf "%s\n" "$ac_cv_lib_util_forkpty" >&6; }
+if test "x$ac_cv_lib_util_forkpty" = xyes
+then :
+ printf "%s\n" "#define HAVE_FORKPTY 1" >>confdefs.h
LIBS="$LIBS -lutil"
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for forkpty in -lbsd" >&5
-$as_echo_n "checking for forkpty in -lbsd... " >&6; }
-if ${ac_cv_lib_bsd_forkpty+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for forkpty in -lbsd" >&5
+printf %s "checking for forkpty in -lbsd... " >&6; }
+if test ${ac_cv_lib_bsd_forkpty+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lbsd $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -18923,61 +21553,84 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char forkpty ();
int
-main ()
+main (void)
{
return forkpty ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_bsd_forkpty=yes
-else
+else $as_nop
ac_cv_lib_bsd_forkpty=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_forkpty" >&5
-$as_echo "$ac_cv_lib_bsd_forkpty" >&6; }
-if test "x$ac_cv_lib_bsd_forkpty" = xyes; then :
- $as_echo "#define HAVE_FORKPTY 1" >>confdefs.h
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_forkpty" >&5
+printf "%s\n" "$ac_cv_lib_bsd_forkpty" >&6; }
+if test "x$ac_cv_lib_bsd_forkpty" = xyes
+then :
+ printf "%s\n" "#define HAVE_FORKPTY 1" >>confdefs.h
LIBS="$LIBS -lbsd"
fi
+fi
+
+fi
+
+done
+
+# check for long file support functions
+ac_fn_c_check_func "$LINENO" "fseek64" "ac_cv_func_fseek64"
+if test "x$ac_cv_func_fseek64" = xyes
+then :
+ printf "%s\n" "#define HAVE_FSEEK64 1" >>confdefs.h
fi
+ac_fn_c_check_func "$LINENO" "fseeko" "ac_cv_func_fseeko"
+if test "x$ac_cv_func_fseeko" = xyes
+then :
+ printf "%s\n" "#define HAVE_FSEEKO 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "fstatvfs" "ac_cv_func_fstatvfs"
+if test "x$ac_cv_func_fstatvfs" = xyes
+then :
+ printf "%s\n" "#define HAVE_FSTATVFS 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "ftell64" "ac_cv_func_ftell64"
+if test "x$ac_cv_func_ftell64" = xyes
+then :
+ printf "%s\n" "#define HAVE_FTELL64 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "ftello" "ac_cv_func_ftello"
+if test "x$ac_cv_func_ftello" = xyes
+then :
+ printf "%s\n" "#define HAVE_FTELLO 1" >>confdefs.h
-# check for long file support functions
-for ac_func in fseek64 fseeko fstatvfs ftell64 ftello statvfs
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_func "$LINENO" "statvfs" "ac_cv_func_statvfs"
+if test "x$ac_cv_func_statvfs" = xyes
+then :
+ printf "%s\n" "#define HAVE_STATVFS 1" >>confdefs.h
fi
-done
ac_fn_c_check_func "$LINENO" "dup2" "ac_cv_func_dup2"
-if test "x$ac_cv_func_dup2" = xyes; then :
- $as_echo "#define HAVE_DUP2 1" >>confdefs.h
+if test "x$ac_cv_func_dup2" = xyes
+then :
+ printf "%s\n" "#define HAVE_DUP2 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" dup2.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS dup2.$ac_objext"
@@ -18987,92 +21640,92 @@ esac
fi
-for ac_func in getpgrp
+ for ac_func in getpgrp
do :
ac_fn_c_check_func "$LINENO" "getpgrp" "ac_cv_func_getpgrp"
-if test "x$ac_cv_func_getpgrp" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GETPGRP 1
-_ACEOF
+if test "x$ac_cv_func_getpgrp" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETPGRP 1" >>confdefs.h
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
int
-main ()
+main (void)
{
getpgrp(0);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
-$as_echo "#define GETPGRP_HAVE_ARG 1" >>confdefs.h
+printf "%s\n" "#define GETPGRP_HAVE_ARG 1" >>confdefs.h
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
+
done
-for ac_func in setpgrp
+ for ac_func in setpgrp
do :
ac_fn_c_check_func "$LINENO" "setpgrp" "ac_cv_func_setpgrp"
-if test "x$ac_cv_func_setpgrp" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SETPGRP 1
-_ACEOF
+if test "x$ac_cv_func_setpgrp" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETPGRP 1" >>confdefs.h
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
int
-main ()
+main (void)
{
setpgrp(0,0);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
-$as_echo "#define SETPGRP_HAVE_ARG 1" >>confdefs.h
+printf "%s\n" "#define SETPGRP_HAVE_ARG 1" >>confdefs.h
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-done
+done
# check for namespace functions
-for ac_func in setns unshare
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ac_fn_c_check_func "$LINENO" "setns" "ac_cv_func_setns"
+if test "x$ac_cv_func_setns" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETNS 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "unshare" "ac_cv_func_unshare"
+if test "x$ac_cv_func_unshare" = xyes
+then :
+ printf "%s\n" "#define HAVE_UNSHARE 1" >>confdefs.h
fi
-done
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBCRYPT" >&5
-$as_echo_n "checking for LIBCRYPT... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LIBCRYPT" >&5
+printf %s "checking for LIBCRYPT... " >&6; }
if test -n "$LIBCRYPT_CFLAGS"; then
pkg_cv_LIBCRYPT_CFLAGS="$LIBCRYPT_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxcrypt >= 3.1.1\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxcrypt >= 3.1.1\""; } >&5
($PKG_CONFIG --exists --print-errors "libxcrypt >= 3.1.1") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_LIBCRYPT_CFLAGS=`$PKG_CONFIG --cflags "libxcrypt >= 3.1.1" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
@@ -19086,10 +21739,10 @@ if test -n "$LIBCRYPT_LIBS"; then
pkg_cv_LIBCRYPT_LIBS="$LIBCRYPT_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxcrypt >= 3.1.1\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxcrypt >= 3.1.1\""; } >&5
($PKG_CONFIG --exists --print-errors "libxcrypt >= 3.1.1") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_LIBCRYPT_LIBS=`$PKG_CONFIG --libs "libxcrypt >= 3.1.1" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
@@ -19103,8 +21756,8 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
_pkg_short_errors_supported=yes
@@ -19126,11 +21779,12 @@ save_LDFLAGS=$LDFLAGS
save_LIBS=$LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt_r" >&5
-$as_echo_n "checking for library containing crypt_r... " >&6; }
-if ${ac_cv_search_crypt_r+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing crypt_r" >&5
+printf %s "checking for library containing crypt_r... " >&6; }
+if test ${ac_cv_search_crypt_r+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -19138,49 +21792,51 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char crypt_r ();
int
-main ()
+main (void)
{
return crypt_r ();
;
return 0;
}
_ACEOF
-for ac_lib in '' crypt; do
+for ac_lib in '' crypt
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_crypt_r=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_crypt_r+:} false; then :
+ if test ${ac_cv_search_crypt_r+y}
+then :
break
fi
done
-if ${ac_cv_search_crypt_r+:} false; then :
+if test ${ac_cv_search_crypt_r+y}
+then :
-else
+else $as_nop
ac_cv_search_crypt_r=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_crypt_r" >&5
-$as_echo "$ac_cv_search_crypt_r" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_crypt_r" >&5
+printf "%s\n" "$ac_cv_search_crypt_r" >&6; }
ac_res=$ac_cv_search_crypt_r
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
- $as_echo "#define HAVE_CRYPT_R 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_CRYPT_R 1" >>confdefs.h
if test "$ac_cv_search_crypt_r" = "none required"; then
libcrypt=
@@ -19200,8 +21856,8 @@ LIBS=$save_LIBS
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
save_CFLAGS=$CFLAGS
save_CPPFLAGS=$CPPFLAGS
@@ -19209,11 +21865,12 @@ save_LDFLAGS=$LDFLAGS
save_LIBS=$LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt_r" >&5
-$as_echo_n "checking for library containing crypt_r... " >&6; }
-if ${ac_cv_search_crypt_r+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing crypt_r" >&5
+printf %s "checking for library containing crypt_r... " >&6; }
+if test ${ac_cv_search_crypt_r+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -19221,49 +21878,51 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char crypt_r ();
int
-main ()
+main (void)
{
return crypt_r ();
;
return 0;
}
_ACEOF
-for ac_lib in '' crypt; do
+for ac_lib in '' crypt
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_crypt_r=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_crypt_r+:} false; then :
+ if test ${ac_cv_search_crypt_r+y}
+then :
break
fi
done
-if ${ac_cv_search_crypt_r+:} false; then :
+if test ${ac_cv_search_crypt_r+y}
+then :
-else
+else $as_nop
ac_cv_search_crypt_r=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_crypt_r" >&5
-$as_echo "$ac_cv_search_crypt_r" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_crypt_r" >&5
+printf "%s\n" "$ac_cv_search_crypt_r" >&6; }
ac_res=$ac_cv_search_crypt_r
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
- $as_echo "#define HAVE_CRYPT_R 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_CRYPT_R 1" >>confdefs.h
if test "$ac_cv_search_crypt_r" = "none required"; then
libcrypt=
@@ -19285,10 +21944,10 @@ LIBS=$save_LIBS
else
LIBCRYPT_CFLAGS=$pkg_cv_LIBCRYPT_CFLAGS
LIBCRYPT_LIBS=$pkg_cv_LIBCRYPT_LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
- $as_echo "#define HAVE_CRYPT_R 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_CRYPT_R 1" >>confdefs.h
fi
@@ -19301,11 +21960,12 @@ save_LIBS=$LIBS
CPPFLAGS="$CPPFLAGS $LIBCRYPT_CFLAGS"
LIBS="$LIBCRYPT_LIBS $LIBS"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for crypt or crypt_r" >&5
-$as_echo_n "checking for crypt or crypt_r... " >&6; }
-if ${ac_cv_crypt_crypt+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for crypt or crypt_r" >&5
+printf %s "checking for crypt or crypt_r... " >&6; }
+if test ${ac_cv_crypt_crypt+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -19316,7 +21976,7 @@ else
#include
int
-main ()
+main (void)
{
#ifdef HAVE_CRYPT_R
@@ -19330,17 +21990,18 @@ main ()
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_crypt_crypt=yes
-else
+else $as_nop
ac_cv_crypt_crypt=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_crypt_crypt" >&5
-$as_echo "$ac_cv_crypt_crypt" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_crypt_crypt" >&5
+printf "%s\n" "$ac_cv_crypt_crypt" >&6; }
CFLAGS=$save_CFLAGS
CPPFLAGS=$save_CPPFLAGS
@@ -19349,21 +22010,22 @@ LIBS=$save_LIBS
-for ac_func in clock_gettime
+
+ for ac_func in clock_gettime
do :
ac_fn_c_check_func "$LINENO" "clock_gettime" "ac_cv_func_clock_gettime"
-if test "x$ac_cv_func_clock_gettime" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_CLOCK_GETTIME 1
-_ACEOF
-
-else
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5
-$as_echo_n "checking for clock_gettime in -lrt... " >&6; }
-if ${ac_cv_lib_rt_clock_gettime+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+if test "x$ac_cv_func_clock_gettime" = xyes
+then :
+ printf "%s\n" "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h
+
+else $as_nop
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5
+printf %s "checking for clock_gettime in -lrt... " >&6; }
+if test ${ac_cv_lib_rt_clock_gettime+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lrt $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -19372,60 +22034,60 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char clock_gettime ();
int
-main ()
+main (void)
{
return clock_gettime ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_rt_clock_gettime=yes
-else
+else $as_nop
ac_cv_lib_rt_clock_gettime=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_gettime" >&5
-$as_echo "$ac_cv_lib_rt_clock_gettime" >&6; }
-if test "x$ac_cv_lib_rt_clock_gettime" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_gettime" >&5
+printf "%s\n" "$ac_cv_lib_rt_clock_gettime" >&6; }
+if test "x$ac_cv_lib_rt_clock_gettime" = xyes
+then :
LIBS="$LIBS -lrt"
- $as_echo "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h
-$as_echo "#define TIMEMODULE_LIB rt" >>confdefs.h
+printf "%s\n" "#define TIMEMODULE_LIB rt" >>confdefs.h
fi
fi
+
done
-for ac_func in clock_getres
+ for ac_func in clock_getres
do :
ac_fn_c_check_func "$LINENO" "clock_getres" "ac_cv_func_clock_getres"
-if test "x$ac_cv_func_clock_getres" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_CLOCK_GETRES 1
-_ACEOF
-
-else
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_getres in -lrt" >&5
-$as_echo_n "checking for clock_getres in -lrt... " >&6; }
-if ${ac_cv_lib_rt_clock_getres+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+if test "x$ac_cv_func_clock_getres" = xyes
+then :
+ printf "%s\n" "#define HAVE_CLOCK_GETRES 1" >>confdefs.h
+
+else $as_nop
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for clock_getres in -lrt" >&5
+printf %s "checking for clock_getres in -lrt... " >&6; }
+if test ${ac_cv_lib_rt_clock_getres+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lrt $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -19434,56 +22096,56 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char clock_getres ();
int
-main ()
+main (void)
{
return clock_getres ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_rt_clock_getres=yes
-else
+else $as_nop
ac_cv_lib_rt_clock_getres=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_getres" >&5
-$as_echo "$ac_cv_lib_rt_clock_getres" >&6; }
-if test "x$ac_cv_lib_rt_clock_getres" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_getres" >&5
+printf "%s\n" "$ac_cv_lib_rt_clock_getres" >&6; }
+if test "x$ac_cv_lib_rt_clock_getres" = xyes
+then :
- $as_echo "#define HAVE_CLOCK_GETRES 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_CLOCK_GETRES 1" >>confdefs.h
fi
fi
+
done
-for ac_func in clock_settime
+ for ac_func in clock_settime
do :
ac_fn_c_check_func "$LINENO" "clock_settime" "ac_cv_func_clock_settime"
-if test "x$ac_cv_func_clock_settime" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_CLOCK_SETTIME 1
-_ACEOF
-
-else
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_settime in -lrt" >&5
-$as_echo_n "checking for clock_settime in -lrt... " >&6; }
-if ${ac_cv_lib_rt_clock_settime+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+if test "x$ac_cv_func_clock_settime" = xyes
+then :
+ printf "%s\n" "#define HAVE_CLOCK_SETTIME 1" >>confdefs.h
+
+else $as_nop
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for clock_settime in -lrt" >&5
+printf %s "checking for clock_settime in -lrt... " >&6; }
+if test ${ac_cv_lib_rt_clock_settime+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lrt $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -19492,56 +22154,56 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char clock_settime ();
int
-main ()
+main (void)
{
return clock_settime ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_rt_clock_settime=yes
-else
+else $as_nop
ac_cv_lib_rt_clock_settime=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_settime" >&5
-$as_echo "$ac_cv_lib_rt_clock_settime" >&6; }
-if test "x$ac_cv_lib_rt_clock_settime" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_settime" >&5
+printf "%s\n" "$ac_cv_lib_rt_clock_settime" >&6; }
+if test "x$ac_cv_lib_rt_clock_settime" = xyes
+then :
- $as_echo "#define HAVE_CLOCK_SETTIME 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_CLOCK_SETTIME 1" >>confdefs.h
fi
fi
+
done
-for ac_func in clock_nanosleep
+ for ac_func in clock_nanosleep
do :
ac_fn_c_check_func "$LINENO" "clock_nanosleep" "ac_cv_func_clock_nanosleep"
-if test "x$ac_cv_func_clock_nanosleep" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_CLOCK_NANOSLEEP 1
-_ACEOF
-
-else
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_nanosleep in -lrt" >&5
-$as_echo_n "checking for clock_nanosleep in -lrt... " >&6; }
-if ${ac_cv_lib_rt_clock_nanosleep+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+if test "x$ac_cv_func_clock_nanosleep" = xyes
+then :
+ printf "%s\n" "#define HAVE_CLOCK_NANOSLEEP 1" >>confdefs.h
+
+else $as_nop
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for clock_nanosleep in -lrt" >&5
+printf %s "checking for clock_nanosleep in -lrt... " >&6; }
+if test ${ac_cv_lib_rt_clock_nanosleep+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lrt $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -19550,56 +22212,56 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char clock_nanosleep ();
int
-main ()
+main (void)
{
return clock_nanosleep ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_rt_clock_nanosleep=yes
-else
+else $as_nop
ac_cv_lib_rt_clock_nanosleep=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_nanosleep" >&5
-$as_echo "$ac_cv_lib_rt_clock_nanosleep" >&6; }
-if test "x$ac_cv_lib_rt_clock_nanosleep" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_nanosleep" >&5
+printf "%s\n" "$ac_cv_lib_rt_clock_nanosleep" >&6; }
+if test "x$ac_cv_lib_rt_clock_nanosleep" = xyes
+then :
- $as_echo "#define HAVE_CLOCK_NANOSLEEP 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_CLOCK_NANOSLEEP 1" >>confdefs.h
fi
fi
-done
-
-for ac_func in nanosleep
-do :
- ac_fn_c_check_func "$LINENO" "nanosleep" "ac_cv_func_nanosleep"
-if test "x$ac_cv_func_nanosleep" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_NANOSLEEP 1
-_ACEOF
+done
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nanosleep in -lrt" >&5
-$as_echo_n "checking for nanosleep in -lrt... " >&6; }
-if ${ac_cv_lib_rt_nanosleep+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ for ac_func in nanosleep
+do :
+ ac_fn_c_check_func "$LINENO" "nanosleep" "ac_cv_func_nanosleep"
+if test "x$ac_cv_func_nanosleep" = xyes
+then :
+ printf "%s\n" "#define HAVE_NANOSLEEP 1" >>confdefs.h
+
+else $as_nop
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nanosleep in -lrt" >&5
+printf %s "checking for nanosleep in -lrt... " >&6; }
+if test ${ac_cv_lib_rt_nanosleep+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lrt $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -19608,46 +22270,46 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char nanosleep ();
int
-main ()
+main (void)
{
return nanosleep ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_rt_nanosleep=yes
-else
+else $as_nop
ac_cv_lib_rt_nanosleep=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_nanosleep" >&5
-$as_echo "$ac_cv_lib_rt_nanosleep" >&6; }
-if test "x$ac_cv_lib_rt_nanosleep" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_nanosleep" >&5
+printf "%s\n" "$ac_cv_lib_rt_nanosleep" >&6; }
+if test "x$ac_cv_lib_rt_nanosleep" = xyes
+then :
- $as_echo "#define HAVE_NANOSLEEP 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_NANOSLEEP 1" >>confdefs.h
fi
fi
-done
+done
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for major, minor, and makedev" >&5
-$as_echo_n "checking for major, minor, and makedev... " >&6; }
-if ${ac_cv_device_macros+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for major, minor, and makedev" >&5
+printf %s "checking for major, minor, and makedev... " >&6; }
+if test ${ac_cv_device_macros+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -19661,7 +22323,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
#endif
int
-main ()
+main (void)
{
makedev(major(0),minor(0));
@@ -19670,36 +22332,39 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_device_macros=yes
-else
+else $as_nop
ac_cv_device_macros=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_device_macros" >&5
-$as_echo "$ac_cv_device_macros" >&6; }
-if test "x$ac_cv_device_macros" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_device_macros" >&5
+printf "%s\n" "$ac_cv_device_macros" >&6; }
+if test "x$ac_cv_device_macros" = xyes
+then :
-$as_echo "#define HAVE_DEVICE_MACROS 1" >>confdefs.h
+printf "%s\n" "#define HAVE_DEVICE_MACROS 1" >>confdefs.h
fi
-$as_echo "#define SYS_SELECT_WITH_SYS_TIME 1" >>confdefs.h
+printf "%s\n" "#define SYS_SELECT_WITH_SYS_TIME 1" >>confdefs.h
# On OSF/1 V5.1, getaddrinfo is available, but a define
# for [no]getaddrinfo in netdb.h.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for getaddrinfo" >&5
-$as_echo_n "checking for getaddrinfo... " >&6; }
-if ${ac_cv_func_getaddrinfo+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getaddrinfo" >&5
+printf %s "checking for getaddrinfo... " >&6; }
+if test ${ac_cv_func_getaddrinfo+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -19710,40 +22375,44 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
#include
int
-main ()
+main (void)
{
getaddrinfo(NULL, NULL, NULL, NULL);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_func_getaddrinfo=yes
-else
+else $as_nop
ac_cv_func_getaddrinfo=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getaddrinfo" >&5
-$as_echo "$ac_cv_func_getaddrinfo" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getaddrinfo" >&5
+printf "%s\n" "$ac_cv_func_getaddrinfo" >&6; }
-if test "x$ac_cv_func_getaddrinfo" = xyes; then :
+if test "x$ac_cv_func_getaddrinfo" = xyes
+then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking getaddrinfo bug" >&5
-$as_echo_n "checking getaddrinfo bug... " >&6; }
-if ${ac_cv_buggy_getaddrinfo+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking getaddrinfo bug" >&5
+printf %s "checking getaddrinfo bug... " >&6; }
+if test ${ac_cv_buggy_getaddrinfo+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
if test "${enable_ipv6+set}" = set; then
ac_cv_buggy_getaddrinfo="no -- configured with --(en|dis)able-ipv6"
else
ac_cv_buggy_getaddrinfo=yes
fi
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -19837,9 +22506,10 @@ int main(void)
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ac_cv_buggy_getaddrinfo=no
-else
+else $as_nop
ac_cv_buggy_getaddrinfo=yes
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -19847,58 +22517,48 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_buggy_getaddrinfo" >&5
-$as_echo "$ac_cv_buggy_getaddrinfo" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_buggy_getaddrinfo" >&5
+printf "%s\n" "$ac_cv_buggy_getaddrinfo" >&6; }
fi
if test "$ac_cv_func_getaddrinfo" = no -o "$ac_cv_buggy_getaddrinfo" = yes
then
- if test "x$ipv6" = xyes; then :
+ if test "x$ipv6" = xyes
+then :
as_fn_error $? "You must get working getaddrinfo() function or pass the \"--disable-ipv6\" option to configure." "$LINENO" 5
fi
else
-$as_echo "#define HAVE_GETADDRINFO 1" >>confdefs.h
+printf "%s\n" "#define HAVE_GETADDRINFO 1" >>confdefs.h
fi
-for ac_func in getnameinfo
-do :
- ac_fn_c_check_func "$LINENO" "getnameinfo" "ac_cv_func_getnameinfo"
-if test "x$ac_cv_func_getnameinfo" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GETNAMEINFO 1
-_ACEOF
+ac_fn_c_check_func "$LINENO" "getnameinfo" "ac_cv_func_getnameinfo"
+if test "x$ac_cv_func_getnameinfo" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETNAMEINFO 1" >>confdefs.h
fi
-done
-
-
-if test "x$ac_cv_header_sys_time_h" = xyes; then :
-
-
-$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h
-fi
-
# checks for structures
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5
-$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; }
-if ${ac_cv_struct_tm+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5
+printf %s "checking whether struct tm is in sys/time.h or time.h... " >&6; }
+if test ${ac_cv_struct_tm+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
#include