Merged revisions 60124-60142 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r60131 | georg.brandl | 2008-01-20 12:13:29 +0100 (Sun, 20 Jan 2008) | 3 lines

  #1351692: in pprint, always call format() for dict and list items to enable
  custom formatting of contents via subclassing PrettyPrinter.
........
  r60133 | georg.brandl | 2008-01-20 12:43:03 +0100 (Sun, 20 Jan 2008) | 2 lines

  #1178141: add addinfourl.code to get http status code from urllib.
........
  r60134 | georg.brandl | 2008-01-20 13:05:43 +0100 (Sun, 20 Jan 2008) | 4 lines

  #856047: respect the ``no_proxy`` env var when checking for proxies
  in urllib and using the other ``_proxy`` env vars.
  Original patch by Donovan Baarda.
........
  r60135 | georg.brandl | 2008-01-20 13:18:17 +0100 (Sun, 20 Jan 2008) | 4 lines

  #1664522: in urllib, don't read non-existing directories in ftp mode,
  returning a 0-byte file -- raise an IOError instead.
  Original patch from Phil Knirsch.
........
  r60136 | georg.brandl | 2008-01-20 13:57:47 +0100 (Sun, 20 Jan 2008) | 2 lines

  #799369: document possible sys.platform values.
........
  r60137 | georg.brandl | 2008-01-20 14:08:37 +0100 (Sun, 20 Jan 2008) | 2 lines

  #652749: document the constants added to the builtins by site.py.
........
  r60138 | georg.brandl | 2008-01-20 14:59:46 +0100 (Sun, 20 Jan 2008) | 2 lines

  #1648: add sys.gettrace() and sys.getprofile().
........
  r60139 | georg.brandl | 2008-01-20 15:17:42 +0100 (Sun, 20 Jan 2008) | 2 lines

  #1669: don't allow shutil.rmtree() to be called on a symlink.
........
  r60140 | georg.brandl | 2008-01-20 15:20:02 +0100 (Sun, 20 Jan 2008) | 2 lines

  Fix test_pyclbr after urllib change.
........
  r60141 | christian.heimes | 2008-01-20 15:28:28 +0100 (Sun, 20 Jan 2008) | 1 line

  Fixed a wrong assumption in configure.in and Include/pyport.h. The is finite function is not called isfinite() but finite(). Sorry, my fault. :)
........
  r60142 | georg.brandl | 2008-01-20 15:31:27 +0100 (Sun, 20 Jan 2008) | 2 lines

  #1876: fix typos in test_operator.
........
This commit is contained in:
Christian Heimes 2008-01-20 15:14:11 +00:00
parent 78b11870a4
commit 9bd667ad03
20 changed files with 317 additions and 48 deletions

View File

@ -1,4 +1,3 @@
Built-in Constants
==================
@ -52,3 +51,28 @@ A small number of constants live in the built-in namespace. They are:
This constant is true if Python was not started with an :option:`-O` option.
Assignments to :const:`__debug__` are illegal and raise a :exc:`SyntaxError`.
See also the :keyword:`assert` statement.
Constants added by the :mod:`site` module
-----------------------------------------
The :mod:`site` module (which is imported automatically during startup, except
if the :option:`-S` command-line option is given) adds several constants to the
built-in namespace. They are useful for the interactive interpreter shell and
should not be used in programs.
.. data:: quit([code=None])
exit([code=None])
Objects that when printed, print a message like "Use quit() or Ctrl-D
(i.e. EOF) to exit", and when called, raise :exc:`SystemExit` with the
specified exit code, and when .
.. data:: copyright
license
credits
Objects that when printed, print a message like "Type license() to see the
full license text", and when called, display the corresponding text in a
pager-like fashion (one screen at a time).

View File

@ -526,6 +526,8 @@ available. They are listed here in alphabetical order.
topic, and a help page is printed on the console. If the argument is any other
kind of object, a help page on the object is generated.
This function is added to the built-in namespace by the :mod:`site` module.
.. function:: hex(x)

View File

@ -93,18 +93,24 @@ copying and removal. For operations on individual files, see also the
.. index:: single: directory; deleting
Delete an entire directory tree (*path* must point to a directory). If
*ignore_errors* is true, errors resulting from failed removals will be ignored;
if false or omitted, such errors are handled by calling a handler specified by
*onerror* or, if that is omitted, they raise an exception.
Delete an entire directory tree; *path* must point to a directory (but not a
symbolic link to a directory). If *ignore_errors* is true, errors resulting
from failed removals will be ignored; if false or omitted, such errors are
handled by calling a handler specified by *onerror* or, if that is omitted,
they raise an exception.
If *onerror* is provided, it must be a callable that accepts three parameters:
*function*, *path*, and *excinfo*. The first parameter, *function*, is the
function which raised the exception; it will be :func:`os.listdir`,
:func:`os.remove` or :func:`os.rmdir`. The second parameter, *path*, will be
the path name passed to *function*. The third parameter, *excinfo*, will be the
exception information return by :func:`sys.exc_info`. Exceptions raised by
*onerror* will not be caught.
If *onerror* is provided, it must be a callable that accepts three
parameters: *function*, *path*, and *excinfo*. The first parameter,
*function*, is the function which raised the exception; it will be
:func:`os.path.islink`, :func:`os.listdir`, :func:`os.remove` or
:func:`os.rmdir`. The second parameter, *path*, will be the path name passed
to *function*. The third parameter, *excinfo*, will be the exception
information return by :func:`sys.exc_info`. Exceptions raised by *onerror*
will not be caught.
.. versionchanged:: 2.6
Explicitly check for *path* being a symbolic link and raise :exc:`OSError`
in that case.
.. function:: move(src, dst)

View File

@ -326,6 +326,35 @@ always available.
This function should be used for internal and specialized purposes only.
.. function:: getprofile()
.. index::
single: profile function
single: profiler
Get the profiler function as set by :func:`setprofile`.
.. versionadded:: 2.6
.. function:: gettrace()
.. index::
single: trace function
single: debugger
Get the trace function as set by :func:`settrace`.
.. note::
The :func:`gettrace` function is intended only for implementing debuggers,
profilers, coverage tools and the like. Its behavior is part of the
implementation platform, rather than part of the language definition,
and thus may not be available in all Python implementations.
.. versionadded:: 2.6
.. function:: getwindowsversion()
Return a tuple containing five components, describing the Windows version
@ -444,9 +473,26 @@ always available.
.. data:: platform
This string contains a platform identifier, e.g. ``'sunos5'`` or ``'linux1'``.
This can be used to append platform-specific components to ``path``, for
instance.
This string contains a platform identifier that can be used to append
platform-specific components to :data:`sys.path`, for instance.
For Unix systems, this is the lowercased OS name as returned by ``uname -s``
with the first part of the version as returned by ``uname -r`` appended,
e.g. ``'sunos5'`` or ``'linux2'``, *at the time when Python was built*.
For other systems, the values are:
================ ===========================
System :data:`platform` value
================ ===========================
Windows ``'win32'``
Windows/Cygwin ``'cygwin'``
MacOS X ``'darwin'``
MacOS 9 ``'mac'``
OS/2 ``'os2'``
OS/2 EMX ``'os2emx'``
RiscOS ``'riscos'``
AtheOS ``'atheos'``
================ ===========================
.. data:: prefix

View File

@ -27,16 +27,17 @@ High-level interface
a server somewhere on the network. If the connection cannot be made the
:exc:`IOError` exception is raised. If all went well, a file-like object is
returned. This supports the following methods: :meth:`read`, :meth:`readline`,
:meth:`readlines`, :meth:`fileno`, :meth:`close`, :meth:`info` and
:meth:`readlines`, :meth:`fileno`, :meth:`close`, :meth:`info`, :meth:`getcode` and
:meth:`geturl`. It also has proper support for the :term:`iterator` protocol. One
caveat: the :meth:`read` method, if the size argument is omitted or negative,
may not read until the end of the data stream; there is no good way to determine
that the entire stream from a socket has been read in the general case.
Except for the :meth:`info` and :meth:`geturl` methods, these methods have the
same interface as for file objects --- see section :ref:`bltin-file-objects` in
this manual. (It is not a built-in file object, however, so it can't be used at
those few places where a true built-in file object is required.)
Except for the :meth:`info`, :meth:`getcode` and :meth:`geturl` methods,
these methods have the same interface as for file objects --- see section
:ref:`bltin-file-objects` in this manual. (It is not a built-in file object,
however, so it can't be used at those few places where a true built-in file
object is required.)
.. index:: module: mimetools
@ -58,6 +59,9 @@ High-level interface
the client was redirected to. The :meth:`geturl` method can be used to get at
this redirected URL.
The :meth:`getcode` method returns the HTTP status code that was sent with the
response, or ``None`` if the URL is no HTTP URL.
If the *url* uses the :file:`http:` scheme identifier, the optional *data*
argument may be given to specify a ``POST`` request (normally the request type
is ``GET``). The *data* argument must be in standard
@ -75,6 +79,11 @@ High-level interface
% python
...
The :envvar:`no_proxy` environment variable can be used to specify hosts which
shouldn't be reached via proxy; if set, it should be a comma-separated list
of hostname suffixes, optionally with ``:port`` appended, for example
``cern.ch,ncsa.uiuc.edu,some.host:8080``.
In a Windows environment, if no proxy environment variables are set, proxy
settings are obtained from the registry's Internet Settings section.

View File

@ -388,8 +388,8 @@ extern "C" {
* macro for this particular test is useful
*/
#ifndef Py_IS_FINITE
#ifdef HAVE_ISFINITE
#define Py_IS_FINITE(X) isfinite
#ifdef HAVE_FINITE
#define Py_IS_FINITE(X) finite
#else
#define Py_IS_FINITE(X) (!Py_IS_INFINITY(X) && !Py_IS_NAN(X))
#endif

View File

@ -156,6 +156,14 @@ def rmtree(path, ignore_errors=False, onerror=None):
elif onerror is None:
def onerror(*args):
raise
try:
if os.path.islink(path):
# symlinks to directories are forbidden, see bug #1669
raise OSError("Cannot call rmtree on a symbolic link")
except OSError:
onerror(os.path.islink, path, sys.exc_info())
# can't continue even if onerror hook returns
return
names = []
try:
names = os.listdir(path)

View File

@ -364,9 +364,9 @@ class OperatorTestCase(unittest.TestCase):
self.assertRaises(TypeError, operator.attrgetter('x', (), 'y'), record)
class C(object):
def __getattr(self, name):
def __getattr__(self, name):
raise SyntaxError
self.failUnlessRaises(AttributeError, operator.attrgetter('foo'), C())
self.failUnlessRaises(SyntaxError, operator.attrgetter('foo'), C())
def test_itemgetter(self):
a = 'ABCDE'
@ -376,9 +376,9 @@ class OperatorTestCase(unittest.TestCase):
self.assertRaises(IndexError, f, a)
class C(object):
def __getitem(self, name):
def __getitem__(self, name):
raise SyntaxError
self.failUnlessRaises(TypeError, operator.itemgetter(42), C())
self.failUnlessRaises(SyntaxError, operator.itemgetter(42), C())
f = operator.itemgetter('name')
self.assertRaises(TypeError, f, a)

View File

@ -4,6 +4,22 @@ import unittest
from test import test_support
class TestGetProfile(unittest.TestCase):
def setUp(self):
sys.setprofile(None)
def tearDown(self):
sys.setprofile(None)
def test_empty(self):
assert sys.getprofile() == None
def test_setget(self):
def fn(*args):
pass
sys.setprofile(fn)
assert sys.getprofile() == fn
class HookWatcher:
def __init__(self):
@ -359,6 +375,7 @@ def show_events(callable):
def test_main():
test_support.run_unittest(
TestGetProfile,
ProfileHookTestCase,
ProfileSimulatorTestCase
)

View File

@ -158,6 +158,7 @@ class PyclbrTest(TestCase):
cm('cgi', ignore=('log',)) # set with = in module
cm('mhlib')
cm('urllib', ignore=('getproxies_registry',
'proxy_bypass_registry',
'open_https',
'_https_connection',
'getproxies_internetconfig',)) # not on all platforms

View File

@ -149,6 +149,20 @@ class TestShutil(unittest.TestCase):
except OSError:
pass
def test_rmtree_on_symlink(self):
# bug 1669.
os.mkdir(TESTFN)
try:
src = os.path.join(TESTFN, 'cheese')
dst = os.path.join(TESTFN, 'shop')
os.mkdir(src)
os.symlink(src, dst)
self.assertRaises(OSError, shutil.rmtree, dst)
finally:
shutil.rmtree(TESTFN, ignore_errors=True)
def test_main():
test_support.run_unittest(TestShutil)

View File

@ -268,6 +268,20 @@ class TraceTestCase(unittest.TestCase):
self.compare_events(func.__code__.co_firstlineno,
tracer.events, func.events)
def set_and_retrieve_none(self):
sys.settrace(None)
assert sys.gettrace() is None
def set_and_retrieve_func(self):
def fn(*args):
pass
sys.settrace(fn)
try:
assert sys.gettrace() is fn
finally:
sys.settrace(None)
def test_01_basic(self):
self.run_test(basic)
def test_02_arigo(self):

View File

@ -47,7 +47,7 @@ class urlopen_FileTests(unittest.TestCase):
def test_interface(self):
# Make sure object returned by urlopen() has the specified methods
for attr in ("read", "readline", "readlines", "fileno",
"close", "info", "geturl", "__iter__"):
"close", "info", "geturl", "getcode", "__iter__"):
self.assert_(hasattr(self.returned_obj, attr),
"object returned by urlopen() lacks %s attribute" %
attr)
@ -87,6 +87,9 @@ class urlopen_FileTests(unittest.TestCase):
def test_geturl(self):
self.assertEqual(self.returned_obj.geturl(), self.pathname)
def test_getcode(self):
self.assertEqual(self.returned_obj.getcode(), None)
def test_iter(self):
# Test iterator
# Don't need to count number of iterations since test would fail the
@ -123,6 +126,8 @@ class urlopen_HttpTests(unittest.TestCase):
fp = urllib.urlopen("http://python.org/")
self.assertEqual(fp.readline(), b"Hello!")
self.assertEqual(fp.readline(), b"")
self.assertEqual(fp.geturl(), 'http://python.org/')
self.assertEqual(fp.getcode(), 200)
finally:
self.unfakehttp()

View File

@ -83,6 +83,16 @@ class urlopenNetworkTests(unittest.TestCase):
open_url.close()
self.assertEqual(gotten_url, URL)
def test_getcode(self):
# test getcode() with the fancy opener to get 404 error codes
URL = "http://www.python.org/XXXinvalidXXX"
open_url = urllib.FancyURLopener().open(URL)
try:
code = open_url.getcode()
finally:
open_url.close()
self.assertEqual(code, 404)
def test_fileno(self):
if (sys.platform in ('win32',) or
not hasattr(os, 'fdopen')):

View File

@ -557,7 +557,7 @@ class FancyURLopener(URLopener):
def http_error_default(self, url, fp, errcode, errmsg, headers):
"""Default error handling -- don't raise an exception."""
return addinfourl(fp, headers, "http:" + url)
return addinfourl(fp, headers, "http:" + url, errcode)
def http_error_302(self, url, fp, errcode, errmsg, headers, data=None):
"""Error 302 -- relocated (temporarily)."""
@ -815,9 +815,19 @@ class ftpwrapper:
if not conn:
# Set transfer mode to ASCII!
self.ftp.voidcmd('TYPE A')
# Try a directory listing
if file: cmd = 'LIST ' + file
else: cmd = 'LIST'
# Try a directory listing. Verify that directory exists.
if file:
pwd = self.ftp.pwd()
try:
try:
self.ftp.cwd(file)
except ftplib.error_perm as reason:
raise IOError('ftp error', reason) from reason
finally:
self.ftp.cwd(pwd)
cmd = 'LIST ' + file
else:
cmd = 'LIST'
conn = self.ftp.ntransfercmd(cmd)
self.busy = 1
# Pass back both a suitably decorated object and a retrieval length
@ -898,14 +908,18 @@ class addinfo(addbase):
class addinfourl(addbase):
"""class to add info() and geturl() methods to an open file."""
def __init__(self, fp, headers, url):
def __init__(self, fp, headers, url, code=None):
addbase.__init__(self, fp)
self.headers = headers
self.url = url
self.code = code
def info(self):
return self.headers
def getcode(self):
return self.code
def geturl(self):
return self.url
@ -1228,10 +1242,33 @@ def getproxies_environment():
proxies = {}
for name, value in os.environ.items():
name = name.lower()
if name == 'no_proxy':
# handled in proxy_bypass_environment
continue
if value and name[-6:] == '_proxy':
proxies[name[:-6]] = value
return proxies
def proxy_bypass_environment(host):
"""Test if proxies should not be used for a particular host.
Checks the environment for a variable named no_proxy, which should
be a list of DNS suffixes separated by commas, or '*' for all hosts.
"""
no_proxy = os.environ.get('no_proxy', '') or os.environ.get('NO_PROXY', '')
# '*' is special case for always bypass
if no_proxy == '*':
return 1
# strip port off host
hostonly, port = splitport(host)
# check if the host ends with any of the DNS suffixes
for name in no_proxy.split(','):
if name and (hostonly.endswith(name) or host.endswith(name)):
return 1
# otherwise, don't bypass
return 0
if sys.platform == 'darwin':
def getproxies_internetconfig():
"""Return a dictionary of scheme -> proxy server URL mappings.
@ -1259,12 +1296,15 @@ if sys.platform == 'darwin':
pass
else:
proxies['http'] = 'http://%s' % value
# FTP: XXXX To be done.
# Gopher: XXXX To be done.
# FTP: XXX To be done.
# Gopher: XXX To be done.
return proxies
def proxy_bypass(x):
return 0
def proxy_bypass(host):
if getproxies_environment():
return proxy_bypass_environment(host)
else:
return 0
def getproxies():
return getproxies_environment() or getproxies_internetconfig()
@ -1324,7 +1364,7 @@ elif os.name == 'nt':
"""
return getproxies_environment() or getproxies_registry()
def proxy_bypass(host):
def proxy_bypass_registry(host):
try:
import _winreg
import re
@ -1383,12 +1423,22 @@ elif os.name == 'nt':
return 1
return 0
def proxy_bypass(host):
"""Return a dictionary of scheme -> proxy server URL mappings.
Returns settings gathered from the environment, if specified,
or the registry.
"""
if getproxies_environment():
return proxy_bypass_environment(host)
else:
return proxy_bypass_registry(host)
else:
# By default use environment variables
getproxies = getproxies_environment
def proxy_bypass(host):
return 0
proxy_bypass = proxy_bypass_environment
# Test and time quote() and unquote()
def test1():

View File

@ -2,6 +2,7 @@
#include "Python.h"
#ifndef HAVE_HYPOT
double hypot(double x, double y)
{
double yx;
@ -20,3 +21,5 @@ double hypot(double x, double y)
return x*sqrt(1.+yx*yx);
}
}
#endif /* HAVE_HYPOT */

View File

@ -373,6 +373,25 @@ Set the global debug tracing function. It will be called on each\n\
function call. See the debugger chapter in the library manual."
);
static PyObject *
sys_gettrace(PyObject *self, PyObject *args)
{
PyThreadState *tstate = PyThreadState_GET();
PyObject *temp = tstate->c_traceobj;
if (temp == NULL)
temp = Py_None;
Py_INCREF(temp);
return temp;
}
PyDoc_STRVAR(gettrace_doc,
"gettrace()\n\
\n\
Return the global debug tracing function set with sys.settrace.\n\
See the debugger chapter in the library manual."
);
static PyObject *
sys_setprofile(PyObject *self, PyObject *args)
{
@ -393,6 +412,25 @@ Set the profiling function. It will be called on each function call\n\
and return. See the profiler chapter in the library manual."
);
static PyObject *
sys_getprofile(PyObject *self, PyObject *args)
{
PyThreadState *tstate = PyThreadState_GET();
PyObject *temp = tstate->c_profileobj;
if (temp == NULL)
temp = Py_None;
Py_INCREF(temp);
return temp;
}
PyDoc_STRVAR(getprofile_doc,
"getprofile()\n\
\n\
Return the profiling function set with sys.setprofile.\n\
See the profiler chapter in the library manual."
);
static PyObject *
sys_setcheckinterval(PyObject *self, PyObject *args)
{
@ -763,12 +801,14 @@ static PyMethodDef sys_methods[] = {
setdlopenflags_doc},
#endif
{"setprofile", sys_setprofile, METH_O, setprofile_doc},
{"getprofile", sys_getprofile, METH_NOARGS, getprofile_doc},
{"setrecursionlimit", sys_setrecursionlimit, METH_VARARGS,
setrecursionlimit_doc},
#ifdef WITH_TSC
{"settscdump", sys_settscdump, METH_VARARGS, settscdump_doc},
#endif
{"settrace", sys_settrace, METH_O, settrace_doc},
{"gettrace", sys_gettrace, METH_NOARGS, gettrace_doc},
{"call_tracing", sys_call_tracing, METH_VARARGS, call_tracing_doc},
{NULL, NULL} /* sentinel */
};
@ -903,8 +943,10 @@ excepthook() -- print an exception and its traceback to sys.stderr\n\
exc_info() -- return thread-safe information about the current exception\n\
exit() -- exit the interpreter by raising SystemExit\n\
getdlopenflags() -- returns flags to be used for dlopen() calls\n\
getprofile() -- get the global profiling function\n\
getrefcount() -- return the reference count for an object (plus one :-)\n\
getrecursionlimit() -- return the max recursion depth for the interpreter\n\
gettrace() -- get the global debug tracing function\n\
setcheckinterval() -- control how often the interpreter checks for events\n\
setdlopenflags() -- set the flags to be used for dlopen() calls\n\
setprofile() -- set the global profiling function\n\

10
configure vendored
View File

@ -1,5 +1,5 @@
#! /bin/sh
# From configure.in Revision: 59826 .
# From configure.in Revision: 59829 .
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.61 for python 3.0.
#
@ -20584,7 +20584,6 @@ fi
# ************************************
# * Check for mathematical functions *
# ************************************
# check for hypot() in math library
LIBS_SAVE=$LIBS
LIBS="$LIBS $LIBM"
@ -20694,7 +20693,12 @@ done
for ac_func in copysign isfinite isnan isinf
for ac_func in acosh asinh atanh copysign expm1 finite isinf isnan log1p
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
{ echo "$as_me:$LINENO: checking for $ac_func" >&5

View File

@ -2948,12 +2948,11 @@ fi],
# ************************************
# * Check for mathematical functions *
# ************************************
# check for hypot() in math library
LIBS_SAVE=$LIBS
LIBS="$LIBS $LIBM"
AC_REPLACE_FUNCS(hypot)
AC_CHECK_FUNCS(copysign isfinite isnan isinf)
AC_CHECK_FUNCS(acosh asinh atanh copysign expm1 finite isinf isnan log1p)
LIBS=$LIBS_SAVE

View File

@ -25,6 +25,9 @@
the case on Motorola V4 (R40V4.2) */
#undef GETTIMEOFDAY_NO_TZ
/* Define to 1 if you have the `acosh' function. */
#undef HAVE_ACOSH
/* struct addrinfo (netdb.h) */
#undef HAVE_ADDRINFO
@ -34,9 +37,15 @@
/* Define this if your time.h defines altzone. */
#undef HAVE_ALTZONE
/* Define to 1 if you have the `asinh' function. */
#undef HAVE_ASINH
/* Define to 1 if you have the <asm/types.h> header file. */
#undef HAVE_ASM_TYPES_H
/* Define to 1 if you have the `atanh' function. */
#undef HAVE_ATANH
/* Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3))) */
#undef HAVE_ATTRIBUTE_FORMAT_PARSETUPLE
@ -141,6 +150,9 @@
/* Define to 1 if you have the `execv' function. */
#undef HAVE_EXECV
/* Define to 1 if you have the `expm1' function. */
#undef HAVE_EXPM1
/* Define if you have the 'fchdir' function. */
#undef HAVE_FCHDIR
@ -156,6 +168,9 @@
/* Define if you have the 'fdatasync' function. */
#undef HAVE_FDATASYNC
/* Define to 1 if you have the `finite' function. */
#undef HAVE_FINITE
/* Define if you have the 'flock' function. */
#undef HAVE_FLOCK
@ -288,9 +303,6 @@
/* Define to 1 if you have the <io.h> header file. */
#undef HAVE_IO_H
/* Define to 1 if you have the `isfinite' function. */
#undef HAVE_ISFINITE
/* Define to 1 if you have the `isinf' function. */
#undef HAVE_ISINF
@ -354,6 +366,9 @@
/* Define to 1 if you have the <linux/tipc.h> header file. */
#undef HAVE_LINUX_TIPC_H
/* Define to 1 if you have the `log1p' function. */
#undef HAVE_LOG1P
/* Define this if you have the type long double. */
#undef HAVE_LONG_DOUBLE