| \section{\module{msvcrt} -- |
| Useful routines from the MS V\Cpp{} runtime} |
| |
| \declaremodule{builtin}{msvcrt} |
| \platform{Windows} |
| \modulesynopsis{Miscellaneous useful routines from the MS V\Cpp{} runtime.} |
| \sectionauthor{Fred L. Drake, Jr.}{fdrake@acm.org} |
| |
| |
| These functions provide access to some useful capabilities on Windows |
| platforms. Some higher-level modules use these functions to build the |
| Windows implementations of their services. For example, the |
| \refmodule{getpass} module uses this in the implementation of the |
| \function{getpass()} function. |
| |
| Further documentation on these functions can be found in the Platform |
| API documentation. |
| |
| |
| \subsection{File Operations \label{msvcrt-files}} |
| |
| \begin{funcdesc}{locking}{fd, mode, nbytes} |
| Lock part of a file based on file descriptor \var{fd} from the C |
| runtime. Raises \exception{IOError} on failure. The locked region |
| of the file extends from the current file position for \var{nbytes} |
| bytes, and may continue beyond the end of the file. \var{mode} must |
| be one of the \constant{LK_\var{*}} constants listed below. |
| Multiple regions in a file may be locked at the same time, but may |
| not overlap. Adjacent regions are not merged; they must be unlocked |
| individually. |
| \end{funcdesc} |
| |
| \begin{datadesc}{LK_LOCK} |
| \dataline{LK_RLCK} |
| Locks the specified bytes. If the bytes cannot be locked, the |
| program immediately tries again after 1 second. If, after 10 |
| attempts, the bytes cannot be locked, \exception{IOError} is |
| raised. |
| \end{datadesc} |
| |
| \begin{datadesc}{LK_NBLCK} |
| \dataline{LK_NBRLCK} |
| Locks the specified bytes. If the bytes cannot be locked, |
| \exception{IOError} is raised. |
| \end{datadesc} |
| |
| \begin{datadesc}{LK_UNLCK} |
| Unlocks the specified bytes, which must have been previously locked. |
| \end{datadesc} |
| |
| \begin{funcdesc}{setmode}{fd, flags} |
| Set the line-end translation mode for the file descriptor \var{fd}. |
| To set it to text mode, \var{flags} should be \constant{os.O_TEXT}; |
| for binary, it should be \constant{os.O_BINARY}. |
| \end{funcdesc} |
| |
| \begin{funcdesc}{open_osfhandle}{handle, flags} |
| Create a C runtime file descriptor from the file handle |
| \var{handle}. The \var{flags} parameter should be a bit-wise OR of |
| \constant{os.O_APPEND}, \constant{os.O_RDONLY}, and |
| \constant{os.O_TEXT}. The returned file descriptor may be used as a |
| parameter to \function{os.fdopen()} to create a file object. |
| \end{funcdesc} |
| |
| \begin{funcdesc}{get_osfhandle}{fd} |
| Return the file handle for the file descriptor \var{fd}. Raises |
| \exception{IOError} if \var{fd} is not recognized. |
| \end{funcdesc} |
| |
| |
| \subsection{Console I/O \label{msvcrt-console}} |
| |
| \begin{funcdesc}{kbhit}{} |
| Return true if a keypress is waiting to be read. |
| \end{funcdesc} |
| |
| \begin{funcdesc}{getch}{} |
| Read a keypress and return the resulting character. Nothing is |
| echoed to the console. This call will block if a keypress is not |
| already available, but will not wait for \kbd{Enter} to be pressed. |
| If the pressed key was a special function key, this will return |
| \code{'\e000'} or \code{'\e xe0'}; the next call will return the |
| keycode. The \kbd{Control-C} keypress cannot be read with this |
| function. |
| \end{funcdesc} |
| |
| \begin{funcdesc}{getche}{} |
| Similar to \function{getch()}, but the keypress will be echoed if it |
| represents a printable character. |
| \end{funcdesc} |
| |
| \begin{funcdesc}{putch}{char} |
| Print the character \var{char} to the console without buffering. |
| \end{funcdesc} |
| |
| \begin{funcdesc}{ungetch}{char} |
| Cause the character \var{char} to be ``pushed back'' into the |
| console buffer; it will be the next character read by |
| \function{getch()} or \function{getche()}. |
| \end{funcdesc} |
| |
| |
| \subsection{Other Functions \label{msvcrt-other}} |
| |
| \begin{funcdesc}{heapmin}{} |
| Force the \cfunction{malloc()} heap to clean itself up and return |
| unused blocks to the operating system. This only works on Windows |
| NT. On failure, this raises \exception{IOError}. |
| \end{funcdesc} |