Merged revisions 76847,76851,76869,76882,76891-76892,76924,77007,77070,77092,77096,77120,77126,77155 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r76847 | benjamin.peterson | 2009-12-14 21:25:27 -0600 (Mon, 14 Dec 2009) | 1 line

  adverb
........
  r76851 | benjamin.peterson | 2009-12-15 21:28:52 -0600 (Tue, 15 Dec 2009) | 1 line

  remove lib2to3 resource
........
  r76869 | vinay.sajip | 2009-12-17 08:52:00 -0600 (Thu, 17 Dec 2009) | 1 line

  Issue #7529: logging: Minor correction to documentation.
........
  r76882 | georg.brandl | 2009-12-19 11:30:28 -0600 (Sat, 19 Dec 2009) | 1 line

  #7527: use standard versionadded tags.
........
  r76891 | georg.brandl | 2009-12-19 12:16:31 -0600 (Sat, 19 Dec 2009) | 1 line

  #7479: add note about function availability on Unices.
........
  r76892 | georg.brandl | 2009-12-19 12:20:18 -0600 (Sat, 19 Dec 2009) | 1 line

  #7480: remove tautology.
........
  r76924 | georg.brandl | 2009-12-20 08:28:05 -0600 (Sun, 20 Dec 2009) | 1 line

  Small indentation fix.
........
  r77007 | gregory.p.smith | 2009-12-23 03:31:11 -0600 (Wed, 23 Dec 2009) | 3 lines

  Fix possible integer overflow in lchown and fchown functions.  For issue1747858.
........
  r77070 | amaury.forgeotdarc | 2009-12-27 14:06:44 -0600 (Sun, 27 Dec 2009) | 2 lines

  Fix a typo in comment
........
  r77092 | georg.brandl | 2009-12-28 02:48:24 -0600 (Mon, 28 Dec 2009) | 1 line

  #7404: remove reference to non-existing example files.
........
  r77096 | benjamin.peterson | 2009-12-28 14:51:17 -0600 (Mon, 28 Dec 2009) | 1 line

  document new fix_callable behavior
........
  r77120 | georg.brandl | 2009-12-29 15:09:17 -0600 (Tue, 29 Dec 2009) | 1 line

  #7595: fix typo in argument default constant.
........
  r77126 | amaury.forgeotdarc | 2009-12-29 17:06:17 -0600 (Tue, 29 Dec 2009) | 2 lines

  #7579: Add docstrings to the msvcrt module
........
  r77155 | georg.brandl | 2009-12-30 13:03:00 -0600 (Wed, 30 Dec 2009) | 1 line

  We only support Windows NT derivatives now.
........
diff --git a/PC/msvcrtmodule.c b/PC/msvcrtmodule.c
index 3ef1b7c..48e739f 100755
--- a/PC/msvcrtmodule.c
+++ b/PC/msvcrtmodule.c
@@ -45,6 +45,12 @@
 	return Py_None;
 }
 
+PyDoc_STRVAR(heapmin_doc,
+"heapmin() -> None\n\
+\n\
+Force the malloc() heap to clean itself up and return unused blocks\n\
+to the operating system. On failure, this raises IOError.");
+
 // Perform locking operations on a C runtime file descriptor.
 static PyObject *
 msvcrt_locking(PyObject *self, PyObject *args)
@@ -67,6 +73,17 @@
 	return Py_None;
 }
 
+PyDoc_STRVAR(locking_doc,
+"locking(fd, mode, nbytes) -> None\n\
+\n\
+Lock part of a file based on file descriptor fd from the C runtime.\n\
+Raises IOError on failure. The locked region of the file extends from\n\
+the current file position for nbytes bytes, and may continue beyond\n\
+the end of the file. mode must be one of the LK_* constants listed\n\
+below. Multiple regions in a file may be locked at the same time, but\n\
+may not overlap. Adjacent regions are not merged; they must be unlocked\n\
+individually.");
+
 // Set the file translation mode for a C runtime file descriptor.
 static PyObject *
 msvcrt_setmode(PyObject *self, PyObject *args)
@@ -83,6 +100,13 @@
 	return PyLong_FromLong(flags);
 }
 
+PyDoc_STRVAR(setmode_doc,
+"setmode(fd, mode) -> Previous mode\n\
+\n\
+Set the line-end translation mode for the file descriptor fd. To set\n\
+it to text mode, flags should be os.O_TEXT; for binary, it should be\n\
+os.O_BINARY.");
+
 // Convert an OS file handle to a C runtime file descriptor.
 static PyObject *
 msvcrt_open_osfhandle(PyObject *self, PyObject *args)
@@ -101,6 +125,14 @@
 	return PyLong_FromLong(fd);
 }
 
+PyDoc_STRVAR(open_osfhandle_doc,
+"open_osfhandle(handle, flags) -> file descriptor\n\
+\n\
+Create a C runtime file descriptor from the file handle handle. The\n\
+flags parameter should be a bitwise OR of os.O_APPEND, os.O_RDONLY,\n\
+and os.O_TEXT. The returned file descriptor may be used as a parameter\n\
+to os.fdopen() to create a file object.");
+
 // Convert a C runtime file descriptor to an OS file handle.
 static PyObject *
 msvcrt_get_osfhandle(PyObject *self, PyObject *args)
@@ -121,6 +153,12 @@
 	return PyLong_FromVoidPtr((void*)handle);
 }
 
+PyDoc_STRVAR(get_osfhandle_doc,
+"get_osfhandle(fd) -> file handle\n\
+\n\
+Return the file handle for the file descriptor fd. Raises IOError\n\
+if fd is not recognized.");
+
 /* Console I/O */
 
 static PyObject *
@@ -135,6 +173,11 @@
 	return PyLong_FromLong(ok);
 }
 
+PyDoc_STRVAR(kbhit_doc,
+"kbhit() -> bool\n\
+\n\
+Return true if a keypress is waiting to be read.");
+
 static PyObject *
 msvcrt_getch(PyObject *self, PyObject *args)
 {
@@ -151,6 +194,16 @@
 	return PyBytes_FromStringAndSize(s, 1);
 }
 
+PyDoc_STRVAR(getch_doc,
+"getch() -> key character\n\
+\n\
+Read a keypress and return the resulting character. Nothing is echoed to\n\
+the console. This call will block if a keypress is not already\n\
+available, but will not wait for Enter to be pressed. If the pressed key\n\
+was a special function key, this will return '\\000' or '\\xe0'; the next\n\
+call will return the keycode. The Control-C keypress cannot be read with\n\
+this function.");
+
 #ifdef _WCONIO_DEFINED
 static PyObject *
 msvcrt_getwch(PyObject *self, PyObject *args)
@@ -167,6 +220,11 @@
 	u[0] = ch;
 	return PyUnicode_FromUnicode(u, 1);
 }
+
+PyDoc_STRVAR(getwch_doc,
+"getwch() -> Unicode key character\n\
+\n\
+Wide char variant of getch(), returning a Unicode value.");
 #endif
 
 static PyObject *
@@ -185,6 +243,12 @@
 	return PyBytes_FromStringAndSize(s, 1);
 }
 
+PyDoc_STRVAR(getche_doc,
+"getche() -> key character\n\
+\n\
+Similar to getch(), but the keypress will be echoed if it represents\n\
+a printable character.");
+
 #ifdef _WCONIO_DEFINED
 static PyObject *
 msvcrt_getwche(PyObject *self, PyObject *args)
@@ -201,6 +265,11 @@
 	s[0] = ch;
 	return PyUnicode_FromUnicode(s, 1);
 }
+
+PyDoc_STRVAR(getwche_doc,
+"getwche() -> Unicode key character\n\
+\n\
+Wide char variant of getche(), returning a Unicode value.");
 #endif
 
 static PyObject *
@@ -216,6 +285,11 @@
 	return Py_None;
 }
 
+PyDoc_STRVAR(putch_doc,
+"putch(char) -> None\n\
+\n\
+Print the character char to the console without buffering.");
+
 #ifdef _WCONIO_DEFINED
 static PyObject *
 msvcrt_putwch(PyObject *self, PyObject *args)
@@ -229,6 +303,11 @@
 	Py_RETURN_NONE;
 
 }
+
+PyDoc_STRVAR(putwch_doc,
+"putwch(unicode_char) -> None\n\
+\n\
+Wide char variant of putch(), accepting a Unicode value.");
 #endif
 
 static PyObject *
@@ -245,6 +324,12 @@
 	return Py_None;
 }
 
+PyDoc_STRVAR(ungetch_doc,
+"ungetch(char) -> None\n\
+\n\
+Cause the character char to be \"pushed back\" into the console buffer;\n\
+it will be the next character read by getch() or getche().");
+
 #ifdef _WCONIO_DEFINED
 static PyObject *
 msvcrt_ungetwch(PyObject *self, PyObject *args)
@@ -259,6 +344,11 @@
 	Py_INCREF(Py_None);
 	return Py_None;
 }
+
+PyDoc_STRVAR(ungetwch_doc,
+"ungetwch(unicode_char) -> None\n\
+\n\
+Wide char variant of ungetch(), accepting a Unicode value.");
 #endif
 
 static void
@@ -332,16 +422,16 @@
 
 /* List of functions exported by this module */
 static struct PyMethodDef msvcrt_functions[] = {
-	{"heapmin",		msvcrt_heapmin, METH_VARARGS},
-	{"locking",             msvcrt_locking, METH_VARARGS},
-	{"setmode",		msvcrt_setmode, METH_VARARGS},
-	{"open_osfhandle",	msvcrt_open_osfhandle, METH_VARARGS},
-	{"get_osfhandle",	msvcrt_get_osfhandle, METH_VARARGS},
-	{"kbhit",		msvcrt_kbhit, METH_VARARGS},
-	{"getch",		msvcrt_getch, METH_VARARGS},
-	{"getche",		msvcrt_getche, METH_VARARGS},
-	{"putch",		msvcrt_putch, METH_VARARGS},
-	{"ungetch",		msvcrt_ungetch, METH_VARARGS},
+	{"heapmin",		msvcrt_heapmin, METH_VARARGS, heapmin_doc},
+	{"locking",             msvcrt_locking, METH_VARARGS, locking_doc},
+	{"setmode",		msvcrt_setmode, METH_VARARGS, setmode_doc},
+	{"open_osfhandle",	msvcrt_open_osfhandle, METH_VARARGS, open_osfhandle_doc},
+	{"get_osfhandle",	msvcrt_get_osfhandle, METH_VARARGS, get_osfhandle_doc},
+	{"kbhit",		msvcrt_kbhit, METH_VARARGS, kbhit_doc},
+	{"getch",		msvcrt_getch, METH_VARARGS, getch_doc},
+	{"getche",		msvcrt_getche, METH_VARARGS, getche_doc},
+	{"putch",		msvcrt_putch, METH_VARARGS, putch_doc},
+	{"ungetch",		msvcrt_ungetch, METH_VARARGS, ungetch_doc},
 	{"SetErrorMode",	seterrormode, METH_VARARGS},
 #ifdef _DEBUG
 	{"CrtSetReportFile",	msvcrt_setreportfile, METH_VARARGS},
@@ -349,10 +439,10 @@
 	{"set_error_mode",	msvcrt_seterrormode, METH_VARARGS},
 #endif
 #ifdef _WCONIO_DEFINED
-	{"getwch",		msvcrt_getwch, METH_VARARGS},
-	{"getwche",		msvcrt_getwche, METH_VARARGS},
-	{"putwch",		msvcrt_putwch, METH_VARARGS},
-	{"ungetwch",		msvcrt_ungetwch, METH_VARARGS},
+	{"getwch",		msvcrt_getwch, METH_VARARGS, getwch_doc},
+	{"getwche",		msvcrt_getwche, METH_VARARGS, getwche_doc},
+	{"putwch",		msvcrt_putwch, METH_VARARGS, putwch_doc},
+	{"ungetwch",		msvcrt_ungetwch, METH_VARARGS, ungetwch_doc},
 #endif
 	{NULL,			NULL}
 };