]> granicus.if.org Git - python/log
python
13 years agoMerge with 3.2 whitespace
Terry Jan Reedy [Tue, 31 Jan 2012 07:58:39 +0000 (02:58 -0500)]
Merge with 3.2 whitespace

13 years agowhitespace
Terry Jan Reedy [Tue, 31 Jan 2012 07:57:29 +0000 (02:57 -0500)]
whitespace

13 years agoMerge 3.2
Terry Jan Reedy [Tue, 31 Jan 2012 07:42:19 +0000 (02:42 -0500)]
Merge 3.2
- Issue #13506: Add '' to path for IDLE Shell when started and restarted with Restart Shell.
  Original patches by Marco Scataglini and Roger Serwy.
Merge 3.2 #13506 Add '' to path for interactive interpreter by adding with_cwd
parameter to PyShell.PyShell.transfer_path() and changing elsewhere as needed.
Original patches by Marco Scataglini and Roger Serwy.

13 years ago#13506 Add '' to path for interactive interpreter by adding with_cwd parameter
Terry Jan Reedy [Tue, 31 Jan 2012 07:26:32 +0000 (02:26 -0500)]
#13506 Add '' to path for interactive interpreter by adding with_cwd parameter
to PyShell.PyShell.transfer_path() and changing elsewhere as needed.
Original patches by Marco Scataglini and Roger Serwy.

13 years agoFix zipimport.c's read_directory() to use appropriate types for the values
Gregory P. Smith [Mon, 30 Jan 2012 23:55:29 +0000 (15:55 -0800)]
Fix zipimport.c's read_directory() to use appropriate types for the values
being read from the header vs the values being used by fseek and ftell
(Py_ssize_t for those).  Updates the Py_BuildValue format string to match
(including several existing wrong 'i's that should have been 'l's).

13 years agoFix zip_import.c's read_directory() to use appropriate types for the values
Gregory P. Smith [Mon, 30 Jan 2012 23:17:33 +0000 (15:17 -0800)]
Fix zip_import.c's read_directory() to use appropriate types for the values
being read from the header vs the values being used by fseek and ftell
(Py_ssize_t for those) and how they are computed.  Py_ssize_t is used for
actual file offsets so that files greater than 2gigs could be supported.
Updates the Py_BuildValue format string to match (including several existing
wrong 'i's that should have been 'l's).

13 years agoIssue #8828: Add new function os.replace(), for cross-platform renaming with overwriting.
Antoine Pitrou [Mon, 30 Jan 2012 21:08:52 +0000 (22:08 +0100)]
Issue #8828: Add new function os.replace(), for cross-platform renaming with overwriting.

13 years agoIssue #13890: Also fix for extension module tests for case-insensitivity.
Brett Cannon [Mon, 30 Jan 2012 17:51:49 +0000 (12:51 -0500)]
Issue #13890: Also fix for extension module tests for case-insensitivity.

13 years agoIssue #13890: Fix importlib case-sensitivity tests to not run on Windows.
Brett Cannon [Mon, 30 Jan 2012 17:48:16 +0000 (12:48 -0500)]
Issue #13890: Fix importlib case-sensitivity tests to not run on Windows.
Thanks to os.environ under Windows only updating the dict and not the
environment itself (as exposed by nt.environ), tests using
PYTHONCASEOK always fail. Now the tests are skipped when os.environ
does not do what is expected.

13 years agomerge 3.2 (closes #13908)
Benjamin Peterson [Mon, 30 Jan 2012 01:17:07 +0000 (20:17 -0500)]
merge 3.2 (closes #13908)

13 years agoready types returned from PyType_FromSpec
Benjamin Peterson [Mon, 30 Jan 2012 01:16:37 +0000 (20:16 -0500)]
ready types returned from PyType_FromSpec

13 years agoadjust declaration
Benjamin Peterson [Mon, 30 Jan 2012 01:13:18 +0000 (20:13 -0500)]
adjust declaration

13 years agoIssue #13847: Fix test_time, time.gmtime() doesn't use localtime()
Victor Stinner [Sun, 29 Jan 2012 23:23:32 +0000 (00:23 +0100)]
Issue #13847: Fix test_time, time.gmtime() doesn't use localtime()

On Windows, localtime(-1) fails, but not gmtime(1).

13 years agoIssue #13874: read_null() of faulthandler uses volatile to avoid optimisation
Victor Stinner [Sun, 29 Jan 2012 23:07:43 +0000 (00:07 +0100)]
Issue #13874: read_null() of faulthandler uses volatile to avoid optimisation

Clang 3.0 removes "y = *x;" instruction if the optimisation level is 3.

13 years agoIssue #13848: open() and the FileIO constructor now check for NUL characters in the...
Antoine Pitrou [Sun, 29 Jan 2012 17:43:36 +0000 (18:43 +0100)]
Issue #13848: open() and the FileIO constructor now check for NUL characters in the file name.
Patch by Hynek Schlawack.

13 years agoIssue #13848: open() and the FileIO constructor now check for NUL characters in the...
Antoine Pitrou [Sun, 29 Jan 2012 17:36:34 +0000 (18:36 +0100)]
Issue #13848: open() and the FileIO constructor now check for NUL characters in the file name.
Patch by Hynek Schlawack.

13 years agoIssue #6774: Back out c8b77efe8b56, which only brings confusion.
Charles-François Natali [Sun, 29 Jan 2012 15:42:54 +0000 (16:42 +0100)]
Issue #6774: Back out c8b77efe8b56, which only brings confusion.

13 years agomerge with 3.2
Georg Brandl [Sun, 29 Jan 2012 14:38:55 +0000 (15:38 +0100)]
merge with 3.2

13 years agoFix #13900: resolve self-referential description of a parameter.
Georg Brandl [Sun, 29 Jan 2012 14:38:47 +0000 (15:38 +0100)]
Fix #13900: resolve self-referential description of a parameter.

13 years agomerge 3.2
Benjamin Peterson [Sun, 29 Jan 2012 01:33:52 +0000 (20:33 -0500)]
merge 3.2

13 years agoremove tests from really old regex module
Benjamin Peterson [Sun, 29 Jan 2012 01:33:21 +0000 (20:33 -0500)]
remove tests from really old regex module

13 years agoIssue #13806: The size check in audioop decompression functions was too strict and...
Antoine Pitrou [Sat, 28 Jan 2012 21:02:47 +0000 (22:02 +0100)]
Issue #13806: The size check in audioop decompression functions was too strict and could reject valid compressed data.
Patch by Oleg Plakhotnyuk.

13 years agoIssue #13806: The size check in audioop decompression functions was too strict and...
Antoine Pitrou [Sat, 28 Jan 2012 21:01:59 +0000 (22:01 +0100)]
Issue #13806: The size check in audioop decompression functions was too strict and could reject valid compressed data.
Patch by Oleg Plakhotnyuk.

13 years agoIssue #13895: fix test_ssl hanging under Ubuntu
Antoine Pitrou [Sat, 28 Jan 2012 16:40:23 +0000 (17:40 +0100)]
Issue #13895: fix test_ssl hanging under Ubuntu

13 years agoIssue #13895: fix test_ssl hanging under Ubuntu
Antoine Pitrou [Sat, 28 Jan 2012 16:38:34 +0000 (17:38 +0100)]
Issue #13895: fix test_ssl hanging under Ubuntu

13 years agoFix typo in comment.
Nadeem Vawda [Sat, 28 Jan 2012 15:32:47 +0000 (17:32 +0200)]
Fix typo in comment.

13 years agoIssue #13894: Skip test_threading.CRLockTests if _CRLock isn't available. Patch
Charles-François Natali [Sat, 28 Jan 2012 10:37:42 +0000 (11:37 +0100)]
Issue #13894: Skip test_threading.CRLockTests if _CRLock isn't available. Patch
by Matt Joiner.

13 years agoIssue #13894: Skip test_threading.CRLockTests if _CRLock isn't available. Patch
Charles-François Natali [Sat, 28 Jan 2012 10:36:04 +0000 (11:36 +0100)]
Issue #13894: Skip test_threading.CRLockTests if _CRLock isn't available. Patch
by Matt Joiner.

13 years agoMerge 3.2 -> default (issue 13889)
Mark Dickinson [Fri, 27 Jan 2012 21:17:04 +0000 (21:17 +0000)]
Merge 3.2 -> default (issue 13889)

13 years agoIssue #13889: Add missing _Py_SET_53BIT_PRECISION_* calls around uses of dtoa.c funct...
Mark Dickinson [Fri, 27 Jan 2012 21:16:01 +0000 (21:16 +0000)]
Issue #13889: Add missing _Py_SET_53BIT_PRECISION_* calls around uses of dtoa.c functions in float round.

13 years agoFix intermittent test_ssl failure.
Antoine Pitrou [Fri, 27 Jan 2012 16:34:56 +0000 (17:34 +0100)]
Fix intermittent test_ssl failure.

13 years agoFix intermittent test_ssl failure.
Antoine Pitrou [Fri, 27 Jan 2012 16:33:01 +0000 (17:33 +0100)]
Fix intermittent test_ssl failure.

13 years agomerge heads (#13887)
Benjamin Peterson [Fri, 27 Jan 2012 14:14:29 +0000 (09:14 -0500)]
merge heads (#13887)

13 years agonote that get() is not affected by default_factory (closes #13887)
Benjamin Peterson [Fri, 27 Jan 2012 14:14:01 +0000 (09:14 -0500)]
note that get() is not affected by default_factory (closes #13887)

13 years agoFix error handling in examples of C API use.
Antoine Pitrou [Fri, 27 Jan 2012 13:08:04 +0000 (14:08 +0100)]
Fix error handling in examples of C API use.

13 years agoFix error handling in examples of C API use.
Antoine Pitrou [Fri, 27 Jan 2012 13:07:29 +0000 (14:07 +0100)]
Fix error handling in examples of C API use.

13 years agoIssue #13812: When a multiprocessing Process child raises an exception, flush stderr...
Antoine Pitrou [Fri, 27 Jan 2012 09:53:35 +0000 (10:53 +0100)]
Issue #13812: When a multiprocessing Process child raises an exception, flush stderr after printing the exception traceback.

13 years agoIssue #13812: When a multiprocessing Process child raises an exception, flush stderr...
Antoine Pitrou [Fri, 27 Jan 2012 09:52:37 +0000 (10:52 +0100)]
Issue #13812: When a multiprocessing Process child raises an exception, flush stderr after printing the exception traceback.

13 years agoClarify that ssl.OP_ALL can be different from OpenSSL's SSL_OP_ALL.
Antoine Pitrou [Fri, 27 Jan 2012 09:03:23 +0000 (10:03 +0100)]
Clarify that ssl.OP_ALL can be different from OpenSSL's SSL_OP_ALL.

13 years agoClarify that ssl.OP_ALL can be different from OpenSSL's SSL_OP_ALL.
Antoine Pitrou [Fri, 27 Jan 2012 09:02:55 +0000 (10:02 +0100)]
Clarify that ssl.OP_ALL can be different from OpenSSL's SSL_OP_ALL.

13 years agoIssue #13885: CVE-2011-3389: the _ssl module would always disable the CBC IV attack...
Antoine Pitrou [Fri, 27 Jan 2012 08:53:29 +0000 (09:53 +0100)]
Issue #13885: CVE-2011-3389: the _ssl module would always disable the CBC IV attack countermeasure.

13 years agoIssue #13885: CVE-2011-3389: the _ssl module would always disable the CBC IV attack...
Antoine Pitrou [Fri, 27 Jan 2012 08:50:45 +0000 (09:50 +0100)]
Issue #13885: CVE-2011-3389: the _ssl module would always disable the CBC IV attack countermeasure.

13 years agoIssue #13885: CVE-2011-3389: the _ssl module would always disable the CBC IV attack...
Antoine Pitrou [Fri, 27 Jan 2012 08:48:47 +0000 (09:48 +0100)]
Issue #13885: CVE-2011-3389: the _ssl module would always disable the CBC IV attack countermeasure.

13 years agoMerge
Brett Cannon [Fri, 27 Jan 2012 00:09:44 +0000 (19:09 -0500)]
Merge

13 years agoRelocate importlib._case_ok to importlib._bootstrap.
Brett Cannon [Fri, 27 Jan 2012 00:03:52 +0000 (19:03 -0500)]
Relocate importlib._case_ok to importlib._bootstrap.

This required updating the code to use posix instead of os. This is
all being done to make bootstrapping easier to removing dependencies
that are kept in importlib.__init__ and thus outside of the single
file to bootstrap from.

13 years agoIssue #13847: Make test_localtime_failure() more robust
Victor Stinner [Fri, 27 Jan 2012 00:03:25 +0000 (01:03 +0100)]
Issue #13847: Make test_localtime_failure() more robust

Skip the test if we are unable to find an invalid time_t value.

13 years agoIssue #13847: Fix test_mktime(), time.localtime() now raises OSError
Victor Stinner [Thu, 26 Jan 2012 23:50:33 +0000 (00:50 +0100)]
Issue #13847: Fix test_mktime(), time.localtime() now raises OSError

13 years agoIssue #13847: time.clock() now raises a RuntimeError if the processor time used
Victor Stinner [Thu, 26 Jan 2012 23:38:48 +0000 (00:38 +0100)]
Issue #13847: time.clock() now raises a RuntimeError if the processor time used
is not available or its value cannot be represented

13 years agomerge
Brett Cannon [Thu, 26 Jan 2012 23:36:08 +0000 (18:36 -0500)]
merge

13 years agoMerge
Brett Cannon [Thu, 26 Jan 2012 23:34:34 +0000 (18:34 -0500)]
Merge

13 years agoIssue #13883: PYTHONCASEOK also works with OS X.
Brett Cannon [Thu, 26 Jan 2012 23:30:52 +0000 (18:30 -0500)]
Issue #13883: PYTHONCASEOK also works with OS X.

13 years agoIssue #13883: Document all platforms PYTHONCASEOK works on.
Brett Cannon [Thu, 26 Jan 2012 23:29:06 +0000 (18:29 -0500)]
Issue #13883: Document all platforms PYTHONCASEOK works on.

13 years agoIssue #13847: time.localtime() and time.gmtime() now raise an OSError instead
Victor Stinner [Thu, 26 Jan 2012 23:08:48 +0000 (00:08 +0100)]
Issue #13847: time.localtime() and time.gmtime() now raise an OSError instead
of ValueError on failure. time.ctime() and time.asctime() now raises an
OSError if localtime() failed.

13 years ago- Issue #13840: Fix ctypes.create_string_buffer exception message and docs.
Meador Inge [Thu, 26 Jan 2012 14:47:27 +0000 (08:47 -0600)]
- Issue #13840: Fix ctypes.create_string_buffer exception message and docs.

13 years ago- Issue #13840: Fix ctypes.create_string_buffer exception message and docs.
Meador Inge [Thu, 26 Jan 2012 14:44:00 +0000 (08:44 -0600)]
- Issue #13840: Fix ctypes.create_string_buffer exception message and docs.

13 years agoMerge
Brett Cannon [Thu, 26 Jan 2012 13:58:19 +0000 (08:58 -0500)]
Merge

13 years agoMerge
Raymond Hettinger [Thu, 26 Jan 2012 08:15:07 +0000 (00:15 -0800)]
Merge

13 years agoIssue 13870: Fix out of date comment.
Raymond Hettinger [Thu, 26 Jan 2012 08:14:16 +0000 (00:14 -0800)]
Issue 13870: Fix out of date comment.

13 years agoMove some code from importlib.__init__ to importlib._bootstrap that
Brett Cannon [Wed, 25 Jan 2012 23:58:03 +0000 (18:58 -0500)]
Move some code from importlib.__init__ to importlib._bootstrap that
does not need to be exposed from C code for bootstrapping reasons.

13 years agoRemove now useless arbitrary limit of module name length
Victor Stinner [Wed, 25 Jan 2012 23:31:49 +0000 (00:31 +0100)]
Remove now useless arbitrary limit of module name length

13 years agomerge with 3.2
Georg Brandl [Wed, 25 Jan 2012 21:36:43 +0000 (22:36 +0100)]
merge with 3.2

13 years ago#13852: some small doc fixes.
Georg Brandl [Wed, 25 Jan 2012 21:36:25 +0000 (22:36 +0100)]
#13852: some small doc fixes.

13 years agomerge heads
Benjamin Peterson [Wed, 25 Jan 2012 21:32:36 +0000 (16:32 -0500)]
merge heads

13 years agomerge 3.2
Benjamin Peterson [Wed, 25 Jan 2012 21:31:56 +0000 (16:31 -0500)]
merge 3.2

13 years agokill extra word
Benjamin Peterson [Wed, 25 Jan 2012 21:30:18 +0000 (16:30 -0500)]
kill extra word

13 years agosay bitwise (because I have no idea what a bit-string is)
Benjamin Peterson [Wed, 25 Jan 2012 21:29:03 +0000 (16:29 -0500)]
say bitwise (because I have no idea what a bit-string is)

13 years agoIssue #13862: Relax zlib version test to avoid spurious failures.
Nadeem Vawda [Wed, 25 Jan 2012 21:16:50 +0000 (23:16 +0200)]
Issue #13862: Relax zlib version test to avoid spurious failures.

13 years agoCloses #13859: Merged fix from 3.2 - thanks to Matt Joiner for spotting this and...
Vinay Sajip [Wed, 25 Jan 2012 17:49:45 +0000 (17:49 +0000)]
Closes #13859: Merged fix from 3.2 - thanks to Matt Joiner for spotting this and the patch.

13 years agoCloses #13859: Replaced reference to StandardError with reference to Exception. Thank...
Vinay Sajip [Wed, 25 Jan 2012 17:41:13 +0000 (17:41 +0000)]
Closes #13859: Replaced reference to StandardError with reference to Exception. Thanks to Matt Joiner for spotting this and submitting a patch.

13 years agoPort import fixes from 2.7.
Antoine Pitrou [Wed, 25 Jan 2012 17:06:07 +0000 (18:06 +0100)]
Port import fixes from 2.7.

13 years agoPort import fixes from 2.7.
Antoine Pitrou [Wed, 25 Jan 2012 17:01:45 +0000 (18:01 +0100)]
Port import fixes from 2.7.

13 years agoIssue #12804: Fix test failures on systems without internet access.
Nadeem Vawda [Wed, 25 Jan 2012 06:02:05 +0000 (08:02 +0200)]
Issue #12804: Fix test failures on systems without internet access.

13 years agoRemove redundant resource check in test_socket.
Nadeem Vawda [Wed, 25 Jan 2012 04:48:47 +0000 (06:48 +0200)]
Remove redundant resource check in test_socket.

13 years agoPort remaining test fixes, and fix test_importlib too.
Antoine Pitrou [Wed, 25 Jan 2012 02:01:34 +0000 (03:01 +0100)]
Port remaining test fixes, and fix test_importlib too.

13 years agoPort remaining test fixes, and fix test_importlib too.
Antoine Pitrou [Wed, 25 Jan 2012 02:00:57 +0000 (03:00 +0100)]
Port remaining test fixes, and fix test_importlib too.

13 years agoMake test work under 32-bit systems, and when invoked through Lib/test/regrtest.py
Antoine Pitrou [Wed, 25 Jan 2012 00:35:26 +0000 (01:35 +0100)]
Make test work under 32-bit systems, and when invoked through Lib/test/regrtest.py
(rather than `-m test.regrtest`)

13 years agoIssue #11235: Fix OverflowError when trying to import a source file whose modificatio...
Antoine Pitrou [Tue, 24 Jan 2012 16:45:50 +0000 (17:45 +0100)]
Issue #11235: Fix OverflowError when trying to import a source file whose modification time doesn't fit in a 32-bit timestamp.

13 years agoIssue #11235: Fix OverflowError when trying to import a source file whose modificatio...
Antoine Pitrou [Tue, 24 Jan 2012 16:44:06 +0000 (17:44 +0100)]
Issue #11235: Fix OverflowError when trying to import a source file whose modification time doesn't fit in a 32-bit timestamp.

13 years agomerge 3.2
Benjamin Peterson [Tue, 24 Jan 2012 14:07:15 +0000 (09:07 -0500)]
merge 3.2

13 years agomerge heads
Benjamin Peterson [Tue, 24 Jan 2012 14:07:06 +0000 (09:07 -0500)]
merge heads

13 years agomerge heads
Benjamin Peterson [Tue, 24 Jan 2012 14:06:45 +0000 (09:06 -0500)]
merge heads

13 years agoIssue #13772: In os.symlink() under Windows, do not try to guess the link
Antoine Pitrou [Tue, 24 Jan 2012 08:05:18 +0000 (09:05 +0100)]
Issue #13772: In os.symlink() under Windows, do not try to guess the link
target's type (file or directory).  The detection was buggy and made the
call non-atomic (therefore prone to race conditions).

13 years agoIssue #13772: In os.symlink() under Windows, do not try to guess the link
Antoine Pitrou [Tue, 24 Jan 2012 07:59:28 +0000 (08:59 +0100)]
Issue #13772: In os.symlink() under Windows, do not try to guess the link
target's type (file or directory).  The detection was buggy and made the
call non-atomic (therefore prone to race conditions).

13 years agoSort functions in the doc of the time module
Victor Stinner [Tue, 24 Jan 2012 00:12:54 +0000 (01:12 +0100)]
Sort functions in the doc of the time module

Move wallclock() at the end.

13 years agoIssue #10278: wallclock() cannot go backward, but two consecutive calls
Victor Stinner [Mon, 23 Jan 2012 22:48:41 +0000 (23:48 +0100)]
Issue #10278: wallclock() cannot go backward, but two consecutive calls
may return the same time.

13 years agoSilence last compilation warning.
Amaury Forgeot d'Arc [Mon, 23 Jan 2012 22:20:43 +0000 (23:20 +0100)]
Silence last compilation warning.

13 years agoFix compilation warnings (seen on win32 buildbot)
Amaury Forgeot d'Arc [Mon, 23 Jan 2012 21:42:19 +0000 (22:42 +0100)]
Fix compilation warnings (seen on win32 buildbot)

13 years agomerge from 3.2
Georg Brandl [Mon, 23 Jan 2012 19:19:46 +0000 (20:19 +0100)]
merge from 3.2

13 years ago#13816: fix two minor style issues. Thanks to Justin Wehnes for the patch.
Georg Brandl [Mon, 23 Jan 2012 19:19:33 +0000 (20:19 +0100)]
#13816: fix two minor style issues. Thanks to Justin Wehnes for the patch.

13 years agomerge 3.2
Benjamin Peterson [Mon, 23 Jan 2012 01:04:58 +0000 (20:04 -0500)]
merge 3.2

13 years agofix declaration style
Benjamin Peterson [Mon, 23 Jan 2012 01:04:46 +0000 (20:04 -0500)]
fix declaration style

13 years agomerge with 3.2
Georg Brandl [Sun, 22 Jan 2012 20:31:39 +0000 (21:31 +0100)]
merge with 3.2

13 years agoFix #13834: strip() strips leading and trailing whitespace.
Georg Brandl [Sun, 22 Jan 2012 20:31:21 +0000 (21:31 +0100)]
Fix #13834: strip() strips leading and trailing whitespace.

13 years agouse the static identifier api for looking up special methods
Benjamin Peterson [Sun, 22 Jan 2012 16:24:29 +0000 (11:24 -0500)]
use the static identifier api for looking up special methods

I had to move the static identifier code from unicodeobject.h to object.h in
order for this to work.

13 years agoIssue #13835: fixes to What's new 3.3; patch by July Tikhonov
Sandro Tosi [Sun, 22 Jan 2012 11:16:04 +0000 (12:16 +0100)]
Issue #13835: fixes to What's new 3.3; patch by July Tikhonov

13 years agoFix a unittest error seen on NetBSD 5.
Gregory P. Smith [Sun, 22 Jan 2012 06:06:09 +0000 (22:06 -0800)]
Fix a unittest error seen on NetBSD 5.

13 years agoFix a unittest error seen on NetBSD 5.
Gregory P. Smith [Sun, 22 Jan 2012 06:05:10 +0000 (22:05 -0800)]
Fix a unittest error seen on NetBSD 5.

13 years agoFix FreeBSD, NetBSD and OpenBSD behavior of the issue #8052 fix.
Gregory P. Smith [Sun, 22 Jan 2012 05:06:22 +0000 (21:06 -0800)]
Fix FreeBSD, NetBSD and OpenBSD behavior of the issue #8052 fix.

13 years agoFix FreeBSD, NetBSD and OpenBSD behavior of the issue #8052 fix.
Gregory P. Smith [Sun, 22 Jan 2012 05:01:24 +0000 (21:01 -0800)]
Fix FreeBSD, NetBSD and OpenBSD behavior of the issue #8052 fix.

13 years agoImprove the test for dirfd(). Some systems #define it rather than
Gregory P. Smith [Sun, 22 Jan 2012 02:21:56 +0000 (18:21 -0800)]
Improve the test for dirfd().  Some systems #define it rather than
have it as a library function.