diff --git a/Doc/distutils/apiref.rst b/Doc/distutils/apiref.rst
index be1eb0f..f2d863c 100644
--- a/Doc/distutils/apiref.rst
+++ b/Doc/distutils/apiref.rst
@@ -326,7 +326,7 @@
    ``'posix'``, ``'nt'``), and *compiler*  defaults to the default compiler for
    that platform. Currently only ``'posix'`` and ``'nt'`` are supported, and the
    default compilers are "traditional Unix interface" (:class:`UnixCCompiler`
-   class) and Visual C++(:class:`MSVCCompiler` class).  Note that it's perfectly
+   class) and Visual C++ (:class:`MSVCCompiler` class).  Note that it's perfectly
    possible to ask for a Unix compiler object under Windows, and a Microsoft
    compiler object under Unix---if you supply a value for *compiler*, *plat* is
    ignored.
diff --git a/Doc/distutils/builtdist.rst b/Doc/distutils/builtdist.rst
index c4b8dbf..58b62f8 100644
--- a/Doc/distutils/builtdist.rst
+++ b/Doc/distutils/builtdist.rst
@@ -302,8 +302,8 @@
 
 If you have a pure module distribution (only containing pure Python modules and
 packages), the resulting installer will be version independent and have a name
-like :file:`foo-1.0.win32.exe`.  These installers can even be created on Unix or
-Mac OS platforms.
+like :file:`foo-1.0.win32.exe`.  These installers can even be created on Unix
+platforms or Mac OS X.
 
 If you have a non-pure distribution, the extensions can only be created on a
 Windows platform, and will be Python version dependent. The installer filename
diff --git a/Doc/distutils/commandref.rst b/Doc/distutils/commandref.rst
index f5f0220..fbe40de 100644
--- a/Doc/distutils/commandref.rst
+++ b/Doc/distutils/commandref.rst
@@ -88,7 +88,7 @@
 character, and ``[range]`` matches any of the characters in *range* (e.g.,
 ``a-z``, ``a-zA-Z``, ``a-f0-9_.``).  The definition of "regular filename
 character" is platform-specific: on Unix it is anything except slash; on Windows
-anything except backslash or colon; on Mac OS 9 anything except colon.
+anything except backslash or colon.
 
 **\*\*** Windows support not there yet **\*\***
 
diff --git a/Doc/distutils/setupscript.rst b/Doc/distutils/setupscript.rst
index 616b99c..8bbcb29 100644
--- a/Doc/distutils/setupscript.rst
+++ b/Doc/distutils/setupscript.rst
@@ -46,9 +46,7 @@
 whatever is appropriate on your current platform before actually using the
 pathname.  This makes your setup script portable across operating systems, which
 of course is one of the major goals of the Distutils.  In this spirit, all
-pathnames in this document are slash-separated.  (Mac OS 9 programmers should
-keep in mind that the *absence* of a leading slash indicates a relative path,
-the opposite of the Mac OS convention with colons.)
+pathnames in this document are slash-separated.
 
 This, of course, only applies to pathnames given to Distutils functions.  If
 you, for example, use standard Python functions such as :func:`glob.glob` or
diff --git a/Doc/extending/embedding.rst b/Doc/extending/embedding.rst
index 6ba2c67..c86ae8a 100644
--- a/Doc/extending/embedding.rst
+++ b/Doc/extending/embedding.rst
@@ -25,10 +25,9 @@
 
 So if you are embedding Python, you are providing your own main program.  One of
 the things this main program has to do is initialize the Python interpreter.  At
-the very least, you have to call the function :cfunc:`Py_Initialize` (on Mac OS,
-call :cfunc:`PyMac_Initialize` instead).  There are optional calls to pass
-command line arguments to Python.  Then later you can call the interpreter from
-any part of the application.
+the very least, you have to call the function :cfunc:`Py_Initialize`.  There are
+optional calls to pass command line arguments to Python.  Then later you can
+call the interpreter from any part of the application.
 
 There are several different ways to call the interpreter: you can pass a string
 containing Python statements to :cfunc:`PyRun_SimpleString`, or you can pass a
diff --git a/Doc/howto/sockets.rst b/Doc/howto/sockets.rst
index c4d0961..2629d44 100644
--- a/Doc/howto/sockets.rst
+++ b/Doc/howto/sockets.rst
@@ -387,8 +387,7 @@
 only. Also note that in C, many of the more advanced socket options are done
 differently on Windows. In fact, on Windows I usually use threads (which work
 very, very well) with my sockets. Face it, if you want any kind of performance,
-your code will look very different on Windows than on Unix. (I haven't the
-foggiest how you do this stuff on a Mac.)
+your code will look very different on Windows than on Unix.
 
 
 Performance
diff --git a/Doc/howto/unicode.rst b/Doc/howto/unicode.rst
index 454d25e..f86bd49 100644
--- a/Doc/howto/unicode.rst
+++ b/Doc/howto/unicode.rst
@@ -507,7 +507,7 @@
 Most of the operating systems in common use today support filenames that contain
 arbitrary Unicode characters.  Usually this is implemented by converting the
 Unicode string into some encoding that varies depending on the system.  For
-example, MacOS X uses UTF-8 while Windows uses a configurable encoding; on
+example, Mac OS X uses UTF-8 while Windows uses a configurable encoding; on
 Windows, Python uses the name "mbcs" to refer to whatever the currently
 configured encoding is.  On Unix systems, there will only be a filesystem
 encoding if you've set the ``LANG`` or ``LC_CTYPE`` environment variables; if
diff --git a/Doc/library/binhex.rst b/Doc/library/binhex.rst
index 9e5a8f3..7f3fe81 100644
--- a/Doc/library/binhex.rst
+++ b/Doc/library/binhex.rst
@@ -51,7 +51,7 @@
 the source for details.
 
 If you code or decode textfiles on non-Macintosh platforms they will still use
-the Macintosh newline convention (carriage-return as end of line).
+the old Macintosh newline convention (carriage-return as end of line).
 
 As of this writing, :func:`hexbin` appears to not work in all cases.
 
diff --git a/Doc/library/idle.rst b/Doc/library/idle.rst
index 7a5bebd..65101fc 100644
--- a/Doc/library/idle.rst
+++ b/Doc/library/idle.rst
@@ -16,8 +16,7 @@
 
 * coded in 100% pure Python, using the :mod:`tkinter` GUI toolkit
 
-* cross-platform: works on Windows and Unix (on Mac OS, there are currently
-  problems with Tcl/Tk)
+* cross-platform: works on Windows and Unix
 
 * multi-window text editor with multiple undo, Python colorizing and many other
   features, e.g. smart indent and call tips
diff --git a/Doc/library/imp.rst b/Doc/library/imp.rst
index e245a0c..eacb4bb 100644
--- a/Doc/library/imp.rst
+++ b/Doc/library/imp.rst
@@ -42,8 +42,8 @@
    searched, but first it searches a few special places: it tries to find a
    built-in module with the given name (:const:`C_BUILTIN`), then a frozen
    module (:const:`PY_FROZEN`), and on some systems some other places are looked
-   in as well (on the Mac, it looks for a resource (:const:`PY_RESOURCE`); on
-   Windows, it looks in the registry which may point to a specific file).
+   in as well (on Windows, it looks in the registry which may point to a
+   specific file).
 
    If search is successful, the return value is a 3-element tuple ``(file,
    pathname, description)``:
@@ -223,12 +223,6 @@
    The module was found as dynamically loadable shared library.
 
 
-.. data:: PY_RESOURCE
-
-   The module was found as a Mac OS 9 resource.  This value can only be returned on
-   a Mac OS 9 or earlier Macintosh.
-
-
 .. data:: PKG_DIRECTORY
 
    The module was found as a package directory.
diff --git a/Doc/library/index.rst b/Doc/library/index.rst
index 3170b81..236b6e7 100644
--- a/Doc/library/index.rst
+++ b/Doc/library/index.rst
@@ -23,7 +23,7 @@
 encourage and enhance the portability of Python programs by abstracting
 away platform-specifics into platform-neutral APIs.
 
-The Python installers for the Windows and Mac platforms usually include
+The Python installers for the Windows platform usually includes
 the entire standard library and often also include many additional
 components. For Unix-like operating systems Python is normally provided
 as a collection of packages, so it may be necessary to use the packaging
diff --git a/Doc/library/macpath.rst b/Doc/library/macpath.rst
index 66c54e5..a7d82d0 100644
--- a/Doc/library/macpath.rst
+++ b/Doc/library/macpath.rst
@@ -1,9 +1,9 @@
 
-:mod:`macpath` --- MacOS 9 path manipulation functions
-======================================================
+:mod:`macpath` --- Mac OS 9 path manipulation functions
+=======================================================
 
 .. module:: macpath
-   :synopsis: MacOS 9 path manipulation functions.
+   :synopsis: Mac OS 9 path manipulation functions.
 
 
 This module is the Mac OS 9 (and earlier) implementation of the :mod:`os.path`
diff --git a/Doc/library/multiprocessing.rst b/Doc/library/multiprocessing.rst
index 3621412..dd816a0 100644
--- a/Doc/library/multiprocessing.rst
+++ b/Doc/library/multiprocessing.rst
@@ -478,7 +478,7 @@
       multithreading/multiprocessing semantics, this number is not reliable.
 
       Note that this may raise :exc:`NotImplementedError` on Unix platforms like
-      MacOS X where ``sem_getvalue()`` is not implemented.
+      Mac OS X where ``sem_getvalue()`` is not implemented.
 
    .. method:: empty()
 
@@ -772,7 +772,7 @@
 
    A bounded semaphore object: a clone of :class:`threading.BoundedSemaphore`.
 
-   (On Mac OSX this is indistinguishable from :class:`Semaphore` because
+   (On Mac OS X this is indistinguishable from :class:`Semaphore` because
    ``sem_getvalue()`` is not implemented on that platform).
 
 .. class:: Condition([lock])
diff --git a/Doc/library/os.path.rst b/Doc/library/os.path.rst
index e932b65..9bf5ae7 100644
--- a/Doc/library/os.path.rst
+++ b/Doc/library/os.path.rst
@@ -208,13 +208,13 @@
 
    Return ``True`` if both pathname arguments refer to the same file or directory
    (as indicated by device number and i-node number). Raise an exception if a
-   :func:`os.stat` call on either pathname fails. Availability:  Macintosh, Unix.
+   :func:`os.stat` call on either pathname fails. Availability: Unix.
 
 
 .. function:: sameopenfile(fp1, fp2)
 
    Return ``True`` if the file descriptors *fp1* and *fp2* refer to the same file.
-   Availability:  Macintosh, Unix.
+   Availability: Unix.
 
 
 .. function:: samestat(stat1, stat2)
@@ -222,7 +222,7 @@
    Return ``True`` if the stat tuples *stat1* and *stat2* refer to the same file.
    These structures may have been returned by :func:`fstat`, :func:`lstat`, or
    :func:`stat`.  This function implements the underlying comparison used by
-   :func:`samefile` and :func:`sameopenfile`. Availability:  Macintosh, Unix.
+   :func:`samefile` and :func:`sameopenfile`. Availability: Unix.
 
 
 .. function:: split(path)
diff --git a/Doc/library/os.rst b/Doc/library/os.rst
index b95833c..221596c 100644
--- a/Doc/library/os.rst
+++ b/Doc/library/os.rst
@@ -24,6 +24,11 @@
 
 .. note::
 
+   If not separately noted, all functions that claim "Availability: Unix" are
+   supported on Mac OS X, which builds on a Unix core.
+
+.. note::
+
    All functions in this module raise :exc:`OSError` in the case of invalid or
    inaccessible file names and paths, or other arguments that have the correct
    type, but are not accepted by the operating system.
@@ -43,7 +48,7 @@
 .. data:: path
 
    The corresponding operating system dependent standard module for pathname
-   operations, such as :mod:`posixpath` or :mod:`macpath`.  Thus, given the proper
+   operations, such as :mod:`posixpath` or :mod:`ntpath`.  Thus, given the proper
    imports, ``os.path.split(file)`` is equivalent to but more portable than
    ``posixpath.split(file)``.  Note that this is also an importable module: it may
    be imported directly as :mod:`os.path`.
@@ -80,8 +85,9 @@
 
    .. note::
 
-      On some platforms, including FreeBSD and Mac OS X, setting ``environ`` may cause
-      memory leaks.  Refer to the system documentation for :cfunc:`putenv`.
+      On some platforms, including FreeBSD and Mac OS X, setting ``environ`` may
+      cause memory leaks.  Refer to the system documentation for
+      :cfunc:`putenv`.
 
    If :func:`putenv` is not provided, a modified copy of this mapping  may be
    passed to the appropriate process-creation functions to cause  child processes
@@ -195,8 +201,8 @@
 
    .. note::
 
-      On some platforms, including FreeBSD and Mac OS X, setting ``environ`` may cause
-      memory leaks. Refer to the system documentation for putenv.
+      On some platforms, including FreeBSD and Mac OS X, setting ``environ`` may
+      cause memory leaks. Refer to the system documentation for putenv.
 
    When :func:`putenv` is supported, assignments to items in ``os.environ`` are
    automatically translated into corresponding calls to :func:`putenv`; however,
@@ -327,7 +333,7 @@
 
    Return an open file object connected to the file descriptor *fd*.  The *mode*
    and *bufsize* arguments have the same meaning as the corresponding arguments to
-   the built-in :func:`open` function. Availability: Macintosh, Unix, Windows.
+   the built-in :func:`open` function. Availability: Unix, Windows.
 
    When specified, the *mode* argument must start with one of the letters
    ``'r'``, ``'w'``, or ``'a'``, otherwise a :exc:`ValueError` is raised.
@@ -354,7 +360,7 @@
 
 .. function:: close(fd)
 
-   Close file descriptor *fd*. Availability: Macintosh, Unix, Windows.
+   Close file descriptor *fd*. Availability: Unix, Windows.
 
    .. note::
 
@@ -367,7 +373,7 @@
 .. function:: closerange(fd_low, fd_high)
 
    Close all file descriptors from *fd_low* (inclusive) to *fd_high* (exclusive),
-   ignoring errors. Availability: Macintosh, Unix, Windows. Equivalent to::
+   ignoring errors. Availability: Unix, Windows. Equivalent to::
 
       for fd in xrange(fd_low, fd_high):
           try:
@@ -384,14 +390,14 @@
 
 .. function:: dup(fd)
 
-   Return a duplicate of file descriptor *fd*. Availability: Macintosh, Unix,
+   Return a duplicate of file descriptor *fd*. Availability: Unix,
    Windows.
 
 
 .. function:: dup2(fd, fd2)
 
    Duplicate file descriptor *fd* to *fd2*, closing the latter first if necessary.
-   Availability: Macintosh, Unix, Windows.
+   Availability: Unix, Windows.
 
 
 .. function:: fchmod(fd, mode)
@@ -422,7 +428,7 @@
    additional names as well.  The names known to the host operating system are
    given in the ``pathconf_names`` dictionary.  For configuration variables not
    included in that mapping, passing an integer for *name* is also accepted.
-   Availability: Macintosh, Unix.
+   Availability: Unix.
 
    If *name* is a string and is not known, :exc:`ValueError` is raised.  If a
    specific value for *name* is not supported by the host system, even if it is
@@ -433,7 +439,7 @@
 .. function:: fstat(fd)
 
    Return status for file descriptor *fd*, like :func:`stat`. Availability:
-   Macintosh, Unix, Windows.
+   Unix, Windows.
 
 
 .. function:: fstatvfs(fd)
@@ -449,19 +455,19 @@
 
    If you're starting with a Python file object *f*, first do ``f.flush()``, and
    then do ``os.fsync(f.fileno())``, to ensure that all internal buffers associated
-   with *f* are written to disk.  Availability: Macintosh, Unix, and Windows.
+   with *f* are written to disk.  Availability: Unix, Windows.
 
 
 .. function:: ftruncate(fd, length)
 
    Truncate the file corresponding to file descriptor *fd*, so that it is at most
-   *length* bytes in size. Availability: Macintosh, Unix.
+   *length* bytes in size. Availability: Unix.
 
 
 .. function:: isatty(fd)
 
    Return ``True`` if the file descriptor *fd* is open and connected to a
-   tty(-like) device, else ``False``. Availability: Macintosh, Unix.
+   tty(-like) device, else ``False``. Availability: Unix.
 
 
 .. function:: lseek(fd, pos, how)
@@ -470,7 +476,7 @@
    by *how*: :const:`SEEK_SET` or ``0`` to set the position relative to the
    beginning of the file; :const:`SEEK_CUR` or ``1`` to set it relative to the
    current position; :const:`os.SEEK_END` or ``2`` to set it relative to the end of
-   the file. Availability: Macintosh, Unix, Windows.
+   the file. Availability: Unix, Windows.
 
 
 .. function:: open(file, flags[, mode])
@@ -478,7 +484,7 @@
    Open the file *file* and set various flags according to *flags* and possibly
    its mode according to *mode*.  The default *mode* is ``0o777`` (octal), and
    the current umask value is first masked out.  Return the file descriptor for
-   the newly opened file.  Availability: Macintosh, Unix, Windows.
+   the newly opened file.  Availability: Unix, Windows.
 
    For a description of the flag and mode values, see the C run-time documentation;
    flag constants (like :const:`O_RDONLY` and :const:`O_WRONLY`) are defined in
@@ -498,21 +504,21 @@
 
    Open a new pseudo-terminal pair. Return a pair of file descriptors ``(master,
    slave)`` for the pty and the tty, respectively. For a (slightly) more portable
-   approach, use the :mod:`pty` module. Availability: Macintosh, some flavors of
+   approach, use the :mod:`pty` module. Availability: some flavors of
    Unix.
 
 
 .. function:: pipe()
 
    Create a pipe.  Return a pair of file descriptors ``(r, w)`` usable for reading
-   and writing, respectively. Availability: Macintosh, Unix, Windows.
+   and writing, respectively. Availability: Unix, Windows.
 
 
 .. function:: read(fd, n)
 
    Read at most *n* bytes from file descriptor *fd*. Return a string containing the
    bytes read.  If the end of the file referred to by *fd* has been reached, an
-   empty string is returned. Availability: Macintosh, Unix, Windows.
+   empty string is returned. Availability: Unix, Windows.
 
    .. note::
 
@@ -526,26 +532,26 @@
 .. function:: tcgetpgrp(fd)
 
    Return the process group associated with the terminal given by *fd* (an open
-   file descriptor as returned by :func:`open`). Availability: Macintosh, Unix.
+   file descriptor as returned by :func:`open`). Availability: Unix.
 
 
 .. function:: tcsetpgrp(fd, pg)
 
    Set the process group associated with the terminal given by *fd* (an open file
-   descriptor as returned by :func:`open`) to *pg*. Availability: Macintosh, Unix.
+   descriptor as returned by :func:`open`) to *pg*. Availability: Unix.
 
 
 .. function:: ttyname(fd)
 
    Return a string which specifies the terminal device associated with
    file descriptor *fd*.  If *fd* is not associated with a terminal device, an
-   exception is raised. Availability:Macintosh, Unix.
+   exception is raised. Availability: Unix.
 
 
 .. function:: write(fd, str)
 
    Write the string *str* to file descriptor *fd*. Return the number of bytes
-   actually written. Availability: Macintosh, Unix, Windows.
+   actually written. Availability: Unix, Windows.
 
    .. note::
 
@@ -570,7 +576,7 @@
           O_TRUNC
 
    Options for the *flag* argument to the :func:`open` function. These can be
-   combined using the bitwise OR operator ``|``. Availability: Macintosh, Unix, Windows.
+   combined using the bitwise OR operator ``|``. Availability: Unix, Windows.
 
 
 .. data:: O_DSYNC
@@ -583,7 +589,7 @@
           O_EXLOCK
 
    More options for the *flag* argument to the :func:`open` function. Availability:
-   Macintosh, Unix.
+   Unix.
 
 
 .. data:: O_BINARY
@@ -613,7 +619,7 @@
           SEEK_END
 
    Parameters to the :func:`lseek` function. Their values are 0, 1, and 2,
-   respectively. Availability: Windows, Macintosh, Unix.
+   respectively. Availability: Windows, Unix.
 
 
 .. _os-file-dir:
@@ -630,7 +636,7 @@
    can be the inclusive OR of one or more of :const:`R_OK`, :const:`W_OK`, and
    :const:`X_OK` to test permissions.  Return :const:`True` if access is allowed,
    :const:`False` if not. See the Unix man page :manpage:`access(2)` for more
-   information. Availability: Macintosh, Unix, Windows.
+   information. Availability: Unix, Windows.
 
    .. note::
 
@@ -674,7 +680,7 @@
 
    .. index:: single: directory; changing
 
-   Change the current working directory to *path*. Availability: Macintosh, Unix,
+   Change the current working directory to *path*. Availability: Unix,
    Windows.
 
 
@@ -688,13 +694,13 @@
 .. function:: getcwd()
 
    Return a bytestring representing the current working directory.
-   Availability: Macintosh, Unix, Windows.
+   Availability: Unix, Windows.
 
 
 .. function:: getcwdu()
 
    Return a string representing the current working directory.
-   Availability: Macintosh, Unix, Windows.
+   Availability: Unix, Windows.
 
 
 .. function:: chflags(path, flags)
@@ -713,13 +719,13 @@
    * ``SF_NOUNLINK``
    * ``SF_SNAPSHOT``
 
-   Availability: Macintosh, Unix.
+   Availability: Unix.
 
 
 .. function:: chroot(path)
 
    Change the root directory of the current process to *path*. Availability:
-   Macintosh, Unix.
+   Unix.
 
 
 .. function:: chmod(path, mode)
@@ -748,7 +754,7 @@
    * ``stat.S_IWOTH``
    * ``stat.S_IXOTH``
 
-   Availability: Macintosh, Unix, Windows.
+   Availability: Unix, Windows.
 
    .. note::
 
@@ -761,7 +767,7 @@
 .. function:: chown(path, uid, gid)
 
    Change the owner and group id of *path* to the numeric *uid* and *gid*. To leave
-   one of the ids unchanged, set it to -1. Availability: Macintosh, Unix.
+   one of the ids unchanged, set it to -1. Availability: Unix.
 
 
 .. function:: lchflags(path, flags)
@@ -780,19 +786,19 @@
 .. function:: lchown(path, uid, gid)
 
    Change the owner and group id of *path* to the numeric *uid* and *gid*. This
-   function will not follow symbolic links. Availability: Macintosh, Unix.
+   function will not follow symbolic links. Availability: Unix.
 
 
 .. function:: link(src, dst)
 
-   Create a hard link pointing to *src* named *dst*. Availability: Macintosh, Unix.
+   Create a hard link pointing to *src* named *dst*. Availability: Unix.
 
 
 .. function:: listdir(path)
 
    Return a list containing the names of the entries in the directory. The list is
    in arbitrary order.  It does not include the special entries ``'.'`` and
-   ``'..'`` even if they are present in the directory. Availability: Macintosh,
+   ``'..'`` even if they are present in the directory. Availability:
    Unix, Windows.
 
    On Windows NT/2k/XP and Unix, if *path* is a Unicode object, the result will be
@@ -810,7 +816,7 @@
 
    Create a FIFO (a named pipe) named *path* with numeric mode *mode*.  The
    default *mode* is ``0o666`` (octal).  The current umask value is first masked
-   out from the mode. Availability: Macintosh, Unix.
+   out from the mode. Availability: Unix.
 
    FIFOs are pipes that can be accessed like regular files.  FIFOs exist until they
    are deleted (for example with :func:`os.unlink`). Generally, FIFOs are used as
@@ -852,8 +858,7 @@
 
    Create a directory named *path* with numeric mode *mode*. The default *mode*
    is ``0o777`` (octal).  On some systems, *mode* is ignored.  Where it is used,
-   the current umask value is first masked out. Availability: Macintosh, Unix,
-   Windows.
+   the current umask value is first masked out. Availability: Unix, Windows.
 
    It is also possible to create temporary directories; see the
    :mod:`tempfile` module's :func:`tempfile.mkdtemp` function.
@@ -888,7 +893,7 @@
    additional names as well.  The names known to the host operating system are
    given in the ``pathconf_names`` dictionary.  For configuration variables not
    included in that mapping, passing an integer for *name* is also accepted.
-   Availability: Macintosh, Unix.
+   Availability: Unix.
 
    If *name* is a string and is not known, :exc:`ValueError` is raised.  If a
    specific value for *name* is not supported by the host system, even if it is
@@ -901,7 +906,7 @@
    Dictionary mapping names accepted by :func:`pathconf` and :func:`fpathconf` to
    the integer values defined for those names by the host operating system.  This
    can be used to determine the set of names known to the system. Availability:
-   Macintosh, Unix.
+   Unix.
 
 
 .. function:: readlink(path)
@@ -913,7 +918,7 @@
 
    If the *path* is a Unicode object, the result will also be a Unicode object.
 
-   Availability: Macintosh, Unix.
+   Availability: Unix.
 
 
 .. function:: remove(path)
@@ -923,7 +928,7 @@
    :func:`unlink` function documented below.  On Windows, attempting to remove a
    file that is in use causes an exception to be raised; on Unix, the directory
    entry is removed but the storage allocated to the file is not made available
-   until the original file is no longer in use. Availability: Macintosh, Unix,
+   until the original file is no longer in use. Availability: Unix,
    Windows.
 
 
@@ -950,7 +955,7 @@
    the renaming will be an atomic operation (this is a POSIX requirement).  On
    Windows, if *dst* already exists, :exc:`OSError` will be raised even if it is a
    file; there may be no way to implement an atomic rename when *dst* names an
-   existing file. Availability: Macintosh, Unix, Windows.
+   existing file. Availability: Unix, Windows.
 
 
 .. function:: renames(old, new)
@@ -968,7 +973,7 @@
 
 .. function:: rmdir(path)
 
-   Remove the directory *path*. Availability: Macintosh, Unix, Windows.
+   Remove the directory *path*. Availability: Unix, Windows.
 
 
 .. function:: stat(path)
@@ -1024,7 +1029,7 @@
       :attr:`st_mtime` has 2-second resolution, and :attr:`st_atime` has only 1-day
       resolution.  See your operating system documentation for details.
 
-   Availability: Macintosh, Unix, Windows.
+   Availability: Unix, Windows.
 
 
 .. function:: stat_float_times([newvalue])
@@ -1070,7 +1075,7 @@
 .. function:: unlink(path)
 
    Remove the file *path*.  This is the same function as :func:`remove`; the
-   :func:`unlink` name is its traditional Unix name. Availability: Macintosh, Unix,
+   :func:`unlink` name is its traditional Unix name. Availability: Unix,
    Windows.
 
 
@@ -1087,7 +1092,7 @@
    subsequent :func:`stat` call, depending on the resolution with which your
    operating system records access and modification times; see :func:`stat`.
 
-   Availability: Macintosh, Unix, Windows.
+   Availability: Unix, Windows.
 
 
 .. function:: walk(top[, topdown=True [, onerror=None[, followlinks=False]]])
@@ -1195,7 +1200,7 @@
    behavior is to produce a core dump; on Windows, the process immediately returns
    an exit code of ``3``.  Be aware that programs which use :func:`signal.signal`
    to register a handler for :const:`SIGABRT` will behave differently.
-   Availability: Macintosh, Unix, Windows.
+   Availability: Unix, Windows.
 
 
 .. function:: execl(path, arg0, arg1, ...)
@@ -1236,14 +1241,14 @@
    used to define the environment variables for the new process (these are used
    instead of the current process' environment); the functions :func:`execl`,
    :func:`execlp`, :func:`execv`, and :func:`execvp` all cause the new process to
-   inherit the environment of the current process. Availability: Macintosh, Unix,
+   inherit the environment of the current process. Availability: Unix,
    Windows.
 
 
 .. function:: _exit(n)
 
    Exit to the system with status *n*, without calling cleanup handlers, flushing
-   stdio buffers, etc. Availability: Macintosh, Unix, Windows.
+   stdio buffers, etc. Availability: Unix, Windows.
 
    .. note::
 
@@ -1263,112 +1268,108 @@
 
 .. data:: EX_OK
 
-   Exit code that means no error occurred. Availability: Macintosh, Unix.
+   Exit code that means no error occurred. Availability: Unix.
 
 
 .. data:: EX_USAGE
 
    Exit code that means the command was used incorrectly, such as when the wrong
-   number of arguments are given. Availability: Macintosh, Unix.
+   number of arguments are given. Availability: Unix.
 
 
 .. data:: EX_DATAERR
 
-   Exit code that means the input data was incorrect. Availability: Macintosh,
-   Unix.
+   Exit code that means the input data was incorrect. Availability: Unix.
 
 
 .. data:: EX_NOINPUT
 
    Exit code that means an input file did not exist or was not readable.
-   Availability: Macintosh, Unix.
+   Availability: Unix.
 
 
 .. data:: EX_NOUSER
 
-   Exit code that means a specified user did not exist. Availability: Macintosh,
-   Unix.
+   Exit code that means a specified user did not exist. Availability: Unix.
 
 
 .. data:: EX_NOHOST
 
-   Exit code that means a specified host did not exist. Availability: Macintosh,
-   Unix.
+   Exit code that means a specified host did not exist. Availability: Unix.
 
 
 .. data:: EX_UNAVAILABLE
 
    Exit code that means that a required service is unavailable. Availability:
-   Macintosh, Unix.
+   Unix.
 
 
 .. data:: EX_SOFTWARE
 
    Exit code that means an internal software error was detected. Availability:
-   Macintosh, Unix.
+   Unix.
 
 
 .. data:: EX_OSERR
 
    Exit code that means an operating system error was detected, such as the
-   inability to fork or create a pipe. Availability: Macintosh, Unix.
+   inability to fork or create a pipe. Availability: Unix.
 
 
 .. data:: EX_OSFILE
 
    Exit code that means some system file did not exist, could not be opened, or had
-   some other kind of error. Availability: Macintosh, Unix.
+   some other kind of error. Availability: Unix.
 
 
 .. data:: EX_CANTCREAT
 
    Exit code that means a user specified output file could not be created.
-   Availability: Macintosh, Unix.
+   Availability: Unix.
 
 
 .. data:: EX_IOERR
 
    Exit code that means that an error occurred while doing I/O on some file.
-   Availability: Macintosh, Unix.
+   Availability: Unix.
 
 
 .. data:: EX_TEMPFAIL
 
    Exit code that means a temporary failure occurred.  This indicates something
    that may not really be an error, such as a network connection that couldn't be
-   made during a retryable operation. Availability: Macintosh, Unix.
+   made during a retryable operation. Availability: Unix.
 
 
 .. data:: EX_PROTOCOL
 
    Exit code that means that a protocol exchange was illegal, invalid, or not
-   understood. Availability: Macintosh, Unix.
+   understood. Availability: Unix.
 
 
 .. data:: EX_NOPERM
 
    Exit code that means that there were insufficient permissions to perform the
-   operation (but not intended for file system problems). Availability: Macintosh,
-   Unix.
+   operation (but not intended for file system problems). Availability: Unix.
 
 
 .. data:: EX_CONFIG
 
    Exit code that means that some kind of configuration error occurred.
-   Availability: Macintosh, Unix.
+   Availability: Unix.
 
 
 .. data:: EX_NOTFOUND
 
    Exit code that means something like "an entry was not found". Availability:
-   Macintosh, Unix.
+   Unix.
 
 
 .. function:: fork()
 
    Fork a child process.  Return ``0`` in the child and the child's process id in the
    parent.  If an error occurs :exc:`OSError` is raised.
-   Availability: Macintosh, Unix.
+   Availability: Unix.
 
 
 .. function:: forkpty()
@@ -1378,7 +1379,7 @@
    new child's process id in the parent, and *fd* is the file descriptor of the
    master end of the pseudo-terminal.  For a more portable approach, use the
    :mod:`pty` module.  If an error occurs :exc:`OSError` is raised.
-   Availability: Macintosh, some flavors of Unix.
+   Availability: some flavors of Unix.
 
 
 .. function:: kill(pid, sig)
@@ -1389,7 +1390,7 @@
 
    Send signal *sig* to the process *pid*.  Constants for the specific signals
    available on the host platform are defined in the :mod:`signal` module.
-   Availability: Macintosh, Unix.
+   Availability: Unix.
 
 
 .. function:: killpg(pgid, sig)
@@ -1398,21 +1399,19 @@
       single: process; killing
       single: process; signalling
 
-   Send the signal *sig* to the process group *pgid*. Availability: Macintosh,
-   Unix.
+   Send the signal *sig* to the process group *pgid*. Availability: Unix.
 
 
 .. function:: nice(increment)
 
    Add *increment* to the process's "niceness".  Return the new niceness.
-   Availability: Macintosh, Unix.
+   Availability: Unix.
 
 
 .. function:: plock(op)
 
    Lock program segments into memory.  The value of *op* (defined in
-   ``<sys/lock.h>``) determines which segments are locked. Availability: Macintosh,
-   Unix.
+   ``<sys/lock.h>``) determines which segments are locked. Availability: Unix.
 
 
 .. function:: popen(...)
@@ -1489,7 +1488,7 @@
    Possible values for the *mode* parameter to the :func:`spawn\*` family of
    functions.  If either of these values is given, the :func:`spawn\*` functions
    will return as soon as the new process has been created, with the process id as
-   the return value. Availability: Macintosh, Unix, Windows.
+   the return value. Availability: Unix, Windows.
 
 
 .. data:: P_WAIT
@@ -1498,7 +1497,7 @@
    functions.  If this is given as *mode*, the :func:`spawn\*` functions will not
    return until the new process has run to completion and will return the exit code
    of the process the run is successful, or ``-signal`` if a signal kills the
-   process. Availability: Macintosh, Unix, Windows.
+   process. Availability: Unix, Windows.
 
 
 .. data:: P_DETACH
@@ -1554,7 +1553,7 @@
    the command run; on systems using a non-native shell, consult your shell
    documentation.
 
-   Availability: Macintosh, Unix, Windows.
+   Availability: Unix, Windows.
 
    The :mod:`subprocess` module provides more powerful facilities for spawning new
    processes and retrieving their results; using that module is preferable to using
@@ -1568,7 +1567,7 @@
    other) times, in seconds.  The items are: user time, system time, children's
    user time, children's system time, and elapsed real time since a fixed point in
    the past, in that order.  See the Unix manual page :manpage:`times(2)` or the
-   corresponding Windows Platform API documentation. Availability: Macintosh, Unix,
+   corresponding Windows Platform API documentation. Availability: Unix,
    Windows.  On Windows, only the first two items are filled, the others are zero.
 
 
@@ -1578,7 +1577,7 @@
    and exit status indication: a 16-bit number, whose low byte is the signal number
    that killed the process, and whose high byte is the exit status (if the signal
    number is zero); the high bit of the low byte is set if a core file was
-   produced. Availability: Macintosh, Unix.
+   produced. Availability: Unix.
 
 
 .. function:: waitpid(pid, options)
@@ -1632,7 +1631,7 @@
 
    The option for :func:`waitpid` to return immediately if no child process status
    is available immediately. The function returns ``(0, 0)`` in this case.
-   Availability: Macintosh, Unix.
+   Availability: Unix.
 
 
 .. data:: WCONTINUED
@@ -1646,7 +1645,7 @@
 
    This option causes child processes to be reported if they have been stopped but
    their current state has not been reported since they were stopped. Availability:
-   Macintosh, Unix.
+   Unix.
 
 
 The following functions take a process status code as returned by
@@ -1656,7 +1655,7 @@
 .. function:: WCOREDUMP(status)
 
    Return ``True`` if a core dump was generated for the process, otherwise
-   return ``False``. Availability: Macintosh, Unix.
+   return ``False``. Availability: Unix.
 
 
 .. function:: WIFCONTINUED(status)
@@ -1674,32 +1673,30 @@
 .. function:: WIFSIGNALED(status)
 
    Return ``True`` if the process exited due to a signal, otherwise return
-   ``False``. Availability: Macintosh, Unix.
+   ``False``. Availability: Unix.
 
 
 .. function:: WIFEXITED(status)
 
    Return ``True`` if the process exited using the :manpage:`exit(2)` system call,
-   otherwise return ``False``. Availability: Macintosh, Unix.
+   otherwise return ``False``. Availability: Unix.
 
 
 .. function:: WEXITSTATUS(status)
 
    If ``WIFEXITED(status)`` is true, return the integer parameter to the
    :manpage:`exit(2)` system call.  Otherwise, the return value is meaningless.
-   Availability: Macintosh, Unix.
+   Availability: Unix.
 
 
 .. function:: WSTOPSIG(status)
 
-   Return the signal which caused the process to stop. Availability: Macintosh,
-   Unix.
+   Return the signal which caused the process to stop. Availability: Unix.
 
 
 .. function:: WTERMSIG(status)
 
-   Return the signal which caused the process to exit. Availability: Macintosh,
-   Unix.
+   Return the signal which caused the process to exit. Availability: Unix.
 
 
 .. _os-path:
@@ -1717,7 +1714,7 @@
    The names known to the host operating system are given as the keys of the
    ``confstr_names`` dictionary.  For configuration variables not included in that
    mapping, passing an integer for *name* is also accepted. Availability:
-   Macintosh, Unix.
+   Unix.
 
    If the configuration value specified by *name* isn't defined, ``None`` is
    returned.
@@ -1732,7 +1729,7 @@
 
    Dictionary mapping names accepted by :func:`confstr` to the integer values
    defined for those names by the host operating system. This can be used to
-   determine the set of names known to the system. Availability: Macintosh, Unix.
+   determine the set of names known to the system. Availability: Unix.
 
 
 .. function:: getloadavg()
@@ -1748,14 +1745,14 @@
    specified by *name* isn't defined, ``-1`` is returned.  The comments regarding
    the *name* parameter for :func:`confstr` apply here as well; the dictionary that
    provides information on the known names is given by ``sysconf_names``.
-   Availability: Macintosh, Unix.
+   Availability: Unix.
 
 
 .. data:: sysconf_names
 
    Dictionary mapping names accepted by :func:`sysconf` to the integer values
    defined for those names by the host operating system. This can be used to
-   determine the set of names known to the system. Availability: Macintosh, Unix.
+   determine the set of names known to the system. Availability: Unix.
 
 The following data values are used to support path manipulation operations.  These
 are defined for all platforms.
@@ -1766,22 +1763,22 @@
 .. data:: curdir
 
    The constant string used by the operating system to refer to the current
-   directory. For example: ``'.'`` for POSIX or ``':'`` for Mac OS 9. Also
-   available via :mod:`os.path`.
+   directory. This is ``'.'`` for Windows and POSIX. Also available via
+   :mod:`os.path`.
 
 
 .. data:: pardir
 
    The constant string used by the operating system to refer to the parent
-   directory. For example: ``'..'`` for POSIX or ``'::'`` for Mac OS 9. Also
-   available via :mod:`os.path`.
+   directory. This is ``'..'`` for Windows and POSIX. Also available via
+   :mod:`os.path`.
 
 
 .. data:: sep
 
-   The character used by the operating system to separate pathname components, for
-   example, ``'/'`` for POSIX or ``':'`` for Mac OS 9.  Note that knowing this is
-   not sufficient to be able to parse or concatenate pathnames --- use
+   The character used by the operating system to separate pathname components.
+   This is ``'/'`` for POSIX and ``'\\'`` for Windows.  Note that knowing this
+   is not sufficient to be able to parse or concatenate pathnames --- use
    :func:`os.path.split` and :func:`os.path.join` --- but it is occasionally
    useful. Also available via :mod:`os.path`.
 
@@ -1816,16 +1813,16 @@
 .. data:: linesep
 
    The string used to separate (or, rather, terminate) lines on the current
-   platform.  This may be a single character, such as  ``'\n'`` for POSIX or
-   ``'\r'`` for Mac OS, or multiple  characters, for example, ``'\r\n'`` for
-   Windows. Do not use *os.linesep* as a line terminator when writing files  opened
-   in text mode (the default); use a single ``'\n'`` instead,  on all platforms.
+   platform.  This may be a single character, such as ``'\n'`` for POSIX, or
+   multiple characters, for example, ``'\r\n'`` for Windows. Do not use
+   *os.linesep* as a line terminator when writing files opened in text mode (the
+   default); use a single ``'\n'`` instead, on all platforms.
 
 
 .. data:: devnull
 
-   The file path of the null device. For example: ``'/dev/null'`` for POSIX or
-   ``'Dev:Nul'`` for Mac OS 9. Also available via :mod:`os.path`.
+   The file path of the null device. For example: ``'/dev/null'`` for POSIX.
+   Also available via :mod:`os.path`.
 
 
 .. _os-miscfunc:
diff --git a/Doc/library/plistlib.rst b/Doc/library/plistlib.rst
index a71376e..cf3dd82 100644
--- a/Doc/library/plistlib.rst
+++ b/Doc/library/plistlib.rst
@@ -1,8 +1,8 @@
-:mod:`plistlib` --- Generate and parse MacOS X ``.plist`` files
-===============================================================
+:mod:`plistlib` --- Generate and parse Mac OS X ``.plist`` files
+================================================================
 
 .. module:: plistlib
-   :synopsis: Generate and parse MacOS X plist files.
+   :synopsis: Generate and parse Mac OS X plist files.
 .. moduleauthor:: Jack Jansen
 .. sectionauthor:: Georg Brandl <georg@python.org>
 .. (harvested from docstrings in the original file)
@@ -12,7 +12,7 @@
    single: property list
 
 This module provides an interface for reading and writing the "property list"
-XML files used mainly by MacOS X.
+XML files used mainly by Mac OS X.
 
 The property list (``.plist``) file format is a simple XML pickle supporting
 basic object types, like dictionaries, lists, numbers and strings.  Usually the
diff --git a/Doc/library/shutil.rst b/Doc/library/shutil.rst
index c295f29..c4b97a0 100644
--- a/Doc/library/shutil.rst
+++ b/Doc/library/shutil.rst
@@ -22,7 +22,7 @@
    can't copy all file metadata.
    
    On POSIX platforms, this means that file owner and group are lost as well
-   as ACLs.  On MacOS, the resource fork and other metadata are not used.
+   as ACLs.  On Mac OS, the resource fork and other metadata are not used.
    This means that resources will be lost and file type and creator codes will
    not be correct. On Windows, file owners, ACLs and alternate data streams
    are not copied.
diff --git a/Doc/library/signal.rst b/Doc/library/signal.rst
index 4001522..9012291 100644
--- a/Doc/library/signal.rst
+++ b/Doc/library/signal.rst
@@ -184,7 +184,7 @@
 
    Change system call restart behaviour: if *flag* is :const:`False`, system calls
    will be restarted when interrupted by signal *signalnum*, otherwise system calls will
-   be interrupted. Returns nothing. Availability: Unix, Mac (see the man page
+   be interrupted. Returns nothing. Availability: Unix (see the man page
    :manpage:`siginterrupt(3)` for further information).
    
    Note that installing a signal handler with :func:`signal` will reset the restart
diff --git a/Doc/library/subprocess.rst b/Doc/library/subprocess.rst
index 51cc577..66e3c83 100644
--- a/Doc/library/subprocess.rst
+++ b/Doc/library/subprocess.rst
@@ -99,7 +99,7 @@
 
    If *universal_newlines* is :const:`True`, the file objects stdout and stderr are
    opened as text files, but lines may be terminated by any of ``'\n'``, the Unix
-   end-of-line convention, ``'\r'``, the Macintosh convention or ``'\r\n'``, the
+   end-of-line convention, ``'\r'``, the old Macintosh convention or ``'\r\n'``, the
    Windows convention. All of these external representations are seen as ``'\n'``
    by the Python program.
 
diff --git a/Doc/library/sys.rst b/Doc/library/sys.rst
index c394f86..47217f4 100644
--- a/Doc/library/sys.rst
+++ b/Doc/library/sys.rst
@@ -499,8 +499,8 @@
    ================ ===========================
    Windows          ``'win32'``
    Windows/Cygwin   ``'cygwin'``
-   MacOS X          ``'darwin'``
-   MacOS 9          ``'mac'``
+   Mac OS X         ``'darwin'``
+   Mac OS 9         ``'mac'``
    OS/2             ``'os2'``
    OS/2 EMX         ``'os2emx'``
    RiscOS           ``'riscos'``
diff --git a/Doc/library/time.rst b/Doc/library/time.rst
index ea164d3..0e82b7d 100644
--- a/Doc/library/time.rst
+++ b/Doc/library/time.rst
@@ -67,8 +67,7 @@
 
 * The precision of the various real-time functions may be less than suggested by
   the units in which their value or argument is expressed. E.g. on most Unix
-  systems, the clock "ticks" only 50 or 100 times a second, and on the Mac, times
-  are only accurate to whole seconds.
+  systems, the clock "ticks" only 50 or 100 times a second.
 
 * On the other hand, the precision of :func:`time` and :func:`sleep` is better
   than their Unix equivalents: times are expressed as floating point numbers,
diff --git a/Doc/library/tkinter.rst b/Doc/library/tkinter.rst
index 97a63b8..62f6574 100644
--- a/Doc/library/tkinter.rst
+++ b/Doc/library/tkinter.rst
@@ -8,8 +8,8 @@
 
 The :mod:`tkinter` package ("Tk interface") is the standard Python interface to
 the Tk GUI toolkit.  Both Tk and :mod:`tkinter` are available on most Unix
-platforms, as well as on Windows and Macintosh systems.  (Tk itself is not part
-of Python; it is maintained at ActiveState.)
+platforms, as well as on Windows systems.  (Tk itself is not part of Python; it
+is maintained at ActiveState.)
 
 .. seealso::
 
diff --git a/Doc/library/webbrowser.rst b/Doc/library/webbrowser.rst
index 22580d8..95e21b1 100644
--- a/Doc/library/webbrowser.rst
+++ b/Doc/library/webbrowser.rst
@@ -146,10 +146,10 @@
    Only on Windows platforms.
 
 (3)
-   Only on MacOS platforms; requires the standard MacPython :mod:`ic` module.
+   Only on Mac OS platforms; requires the standard MacPython :mod:`ic` module.
 
 (4)
-   Only on MacOS X platform.
+   Only on Mac OS X platform.
 
 Here are some simple examples::
 
diff --git a/Doc/reference/lexical_analysis.rst b/Doc/reference/lexical_analysis.rst
index fdb5f99..3ec06db 100644
--- a/Doc/reference/lexical_analysis.rst
+++ b/Doc/reference/lexical_analysis.rst
@@ -49,7 +49,7 @@
 A physical line is a sequence of characters terminated by an end-of-line
 sequence.  In source files, any of the standard platform line termination
 sequences can be used - the Unix form using ASCII LF (linefeed), the Windows
-form using the ASCII sequence CR LF (return followed by linefeed), or the
+form using the ASCII sequence CR LF (return followed by linefeed), or the old
 Macintosh form using the ASCII CR (return) character.  All of these forms can be
 used equally, regardless of platform.
 
diff --git a/Doc/tutorial/appetite.rst b/Doc/tutorial/appetite.rst
index b5e1a16..26e5168 100644
--- a/Doc/tutorial/appetite.rst
+++ b/Doc/tutorial/appetite.rst
@@ -23,7 +23,7 @@
 tasks, but shell scripts are best at moving around files and changing text data,
 not well-suited for GUI applications or games. You could write a C/C++/Java
 program, but it can take a lot of development time to get even a first-draft
-program.  Python is simpler to use, available on Windows, MacOS X, and Unix
+program.  Python is simpler to use, available on Windows, Mac OS X, and Unix
 operating systems, and will help you get the job done more quickly.
 
 Python is simple to use, but it is a real programming language, offering much
diff --git a/Doc/tutorial/interpreter.rst b/Doc/tutorial/interpreter.rst
index 2601009..216b4f5 100644
--- a/Doc/tutorial/interpreter.rst
+++ b/Doc/tutorial/interpreter.rst
@@ -160,9 +160,9 @@
 (assuming that the interpreter is on the user's :envvar:`PATH`) at the beginning
 of the script and giving the file an executable mode.  The ``#!`` must be the
 first two characters of the file.  On some platforms, this first line must end
-with a Unix-style line ending (``'\n'``), not a Mac OS (``'\r'``) or Windows
-(``'\r\n'``) line ending.  Note that the hash, or pound, character, ``'#'``, is
-used to start a comment in Python.
+with a Unix-style line ending (``'\n'``), not a Windows (``'\r\n'``) line
+ending.  Note that the hash, or pound, character, ``'#'``, is used to start a
+comment in Python.
 
 The script can be given an executable mode, or permission, using the
 :program:`chmod` command::
diff --git a/Doc/using/cmdline.rst b/Doc/using/cmdline.rst
index 39f0e08..1236a3a 100644
--- a/Doc/using/cmdline.rst
+++ b/Doc/using/cmdline.rst
@@ -451,7 +451,7 @@
 
    If this environment variable is set, ``sys.argv[0]`` will be set to its
    value instead of the value got through the C runtime.  Only works on
-   MacOS X.
+   Mac OS X.
 
 
 Debug-mode variables
diff --git a/Doc/whatsnew/2.6.rst b/Doc/whatsnew/2.6.rst
index af7991d..023c757 100644
--- a/Doc/whatsnew/2.6.rst
+++ b/Doc/whatsnew/2.6.rst
@@ -528,11 +528,11 @@
 Python 2.6 introduces a convention for user-specific site directories.
 The directory varies depending on the platform:
 
-* Unix and MacOS: :file:`~/.local/`
+* Unix and Mac OS X: :file:`~/.local/`
 * Windows: :file:`%APPDATA%/Python`
 
 Within this directory, there will be version-specific subdirectories,
-such as :file:`lib/python2.6/site-packages` on Unix/MacOS and
+such as :file:`lib/python2.6/site-packages` on Unix/Mac OS and
 :file:`Python26/site-packages` on Windows.
 
 If you don't like the default directory, it can be overridden by an
@@ -2784,12 +2784,12 @@
 The :mod:`plistlib` module: A Property-List Parser
 --------------------------------------------------
 
-The ``.plist`` format is commonly used on MacOS X to
+The ``.plist`` format is commonly used on Mac OS X to
 store basic data types (numbers, strings, lists,
 and dictionaries) by serializing them into an XML-based format.
 It resembles the XML-RPC serialization of data types.
 
-Despite being primarily used on MacOS X, the format
+Despite being primarily used on Mac OS X, the format
 has nothing Mac-specific about it and the Python implementation works
 on any platform that Python supports, so the :mod:`plistlib` module
 has been promoted to the standard library.
@@ -2905,7 +2905,7 @@
   :file:`PCbuild` directory for the build files.  (Implemented by
   Christian Heimes.)
 
-* On MacOS X, Python 2.6 can be compiled as a 4-way universal build.
+* On Mac OS X, Python 2.6 can be compiled as a 4-way universal build.
   The :program:`configure` script
   can take a :option:`--with-universal-archs=[32-bit|64-bit|all]`
   switch, controlling whether the binaries are built for 32-bit
@@ -3057,7 +3057,7 @@
 
 .. ======================================================================
 
-Port-Specific Changes: MacOS X
+Port-Specific Changes: Mac OS X
 -----------------------------------
 
 * When compiling a framework build of Python, you can now specify the
@@ -3069,7 +3069,7 @@
   :func:`macostools.touched` function to be removed because it depended on the
   :mod:`macfs` module.  (:issue:`1490190`)
 
-* Many other MacOS modules have been deprecated and will removed in
+* Many other Mac OS modules have been deprecated and will removed in
   Python 3.0:
   :mod:`_builtinSuites`,
   :mod:`aepack`,
