\section{Introduction}
\label{intro}

The modules in this manual are available on the Apple Macintosh only.

Aside from the modules described here there are also interfaces to
various MacOS toolboxes, which are currently not extensively
described. The toolboxes for which modules exist are:
\module{AE} (Apple Events),
\module{Cm} (Component Manager),
\module{Ctl} (Control Manager),
\module{Dlg} (Dialog Manager),
\module{Evt} (Event Manager),
\module{Fm} (Font Manager),
\module{List} (List Manager),
\module{Menu} (Moenu Manager),
\module{Qd} (QuickDraw),
\module{Qt} (QuickTime),
\module{Res} (Resource Manager and Handles),
\module{Scrap} (Scrap Manager),
\module{Snd} (Sound Manager),
\module{TE} (TextEdit),
\module{Waste} (non-Apple \program{TextEdit} replacement) and
\module{Win} (Window Manager).

If applicable the module will define a number of Python objects for
the various structures declared by the toolbox, and operations will be
implemented as methods of the object. Other operations will be
implemented as functions in the module. Not all operations possible in
\C{} will also be possible in Python (callbacks are often a problem), and
parameters will occasionally be different in Python (input and output
buffers, especially). All methods and functions have a \code{__doc__}
string describing their arguments and return values, and for
additional description you are referred to \emph{Inside Macintosh} or
similar works.

The following modules are documented here:

\begin{description}

\item[mac]
--- Similar interfaces to the \module{posix} module.

\item[macpath]
--- Path manipulation functions; use via \code{os.path}.

\item[ctb]
--- Interfaces to the Communications Tool Box.  Only the Connection
Manager is currently supported.

\item[macconsole]
--- Think C's console package is available using this module.

\item[macdnr]
--- Interfaces to the Macintosh Domain Name Resolver.

\item[macfs]
--- Support for FSSpec, the Alias Manager, \program{finder} aliases,
and the Standard File package.

\item[macic]
--- Internet Config.

\item[MacOS]
--- Access to MacOS specific interpreter features.

\item[macostools]
--- Convenience routines for file manipulation.

\item[findertools]
--- Wrappers around the \program{finder}'s Apple Events interface.

\item[mactcp]
--- The MacTCP interfaces.

\item[macspeech]
--- Interface to the Macintosh Speech Manager.

\item[EasyDialogs]
--- Basic Macintosh dialogs.

\item[FrameWork]
--- Interactive application framework.

\item[MiniAEFrame]
--- Support to act as an Open Scripting Architecture (OSA) server
(``Apple Events'').

\end{description}


\section{Built-in Module \module{mac}}
\label{module-mac}
\bimodindex{mac}

This module provides a subset of the operating system dependent
functionality provided by the optional built-in module \module{posix}.
It is best accessed through the more portable standard module
\module{os}.
\refbimodindex{posix}
\refstmodindex{os}

The following functions are available in this module:
\function{chdir()},
\function{close()},
\function{dup()},
\function{fdopen()},
\function{getcwd()},
\function{lseek()},
\function{listdir()},
\function{mkdir()},
\function{open()},
\function{read()},
\function{rename()},
\function{rmdir()},
\function{stat()},
\function{sync()},
\function{unlink()},
\function{write()},
as well as the exception \exception{error}. Note that the times
returned by \function{stat()} are floating-point values, like all time
values in MacPython.

One additional function is available: \function{xstat()}. This function
returns the same information as \function{stat()}, but with three extra
values appended: the size of the resource fork of the file and its
4-character creator and type.

\section{Standard Module \module{macpath}}
\label{module-macpath}
\stmodindex{macpath}

This module provides a subset of the pathname manipulation functions
available from the optional standard module \module{posixpath}.  It is
best accessed through the more portable standard module \module{os}, as
\code{os.path}.
\refstmodindex{posixpath}
\refstmodindex{os}

The following functions are available in this module:
\function{normcase()},
\function{normpath()},
\function{isabs()},
\function{join()},
\function{split()},
\function{isdir()},
\function{isfile()},
\function{walk()},
\function{exists()}.
For other functions available in \module{posixpath} dummy counterparts
are available.
