Hear the #error: change the default value of the mutable_arg argument

to ioctl() and remove the warning when it is not supplied.
This commit is contained in:
Michael W. Hudson 2004-11-30 14:31:54 +00:00
parent a3bc546d2a
commit 02d74f68c6
2 changed files with 4 additions and 16 deletions

View File

@ -78,11 +78,9 @@ The module defines the following functions:
long which is then passed to \function{ioctl()} and copied back into
the supplied buffer.
If \var{mutate_flag} is not supplied, then in 2.3 it defaults to
false. This is planned to change over the next few Python versions:
in 2.4 failing to supply \var{mutate_flag} will get a warning but
the same behavior and in versions later than 2.5 it will default to
true.
If \var{mutate_flag} is not supplied, then from Python 2.5 it
defaults to true, which is a change from versions 2.3 and 2.4.
Supply the argument explicitly if version portability is a priority.
An example:

View File

@ -99,7 +99,7 @@ fcntl_ioctl(PyObject *self, PyObject *args)
int ret;
char *str;
int len;
int mutate_arg = 0;
int mutate_arg = 1;
char buf[1024];
if (PyArg_ParseTuple(args, "O&iw#|i:ioctl",
@ -107,16 +107,6 @@ fcntl_ioctl(PyObject *self, PyObject *args)
&str, &len, &mutate_arg)) {
char *arg;
if (PyTuple_Size(args) == 3) {
#if (PY_MAJOR_VERSION>2) || (PY_MINOR_VERSION>=5)
#error Remove the warning, change mutate_arg to 1
#endif
if (PyErr_Warn(PyExc_FutureWarning,
"ioctl with mutable buffer will mutate the buffer by default in 2.5"
) < 0)
return NULL;
mutate_arg = 0;
}
if (mutate_arg) {
if (len <= sizeof buf) {
memcpy(buf, str, len);