\chapter{Macintosh Specific Services}
\label{macintosh}

The modules in this chapter 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-char 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.
