diff --git a/Doc/distutils/apiref.rst b/Doc/distutils/apiref.rst
index f5b49b8..a8f7461 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 d2be083..1e540ed 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 95a30fe..b89e224 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 0b8db59..2747f81 100644
--- a/Doc/howto/sockets.rst
+++ b/Doc/howto/sockets.rst
@@ -390,8 +390,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 6488144..21ae111 100644
--- a/Doc/howto/unicode.rst
+++ b/Doc/howto/unicode.rst
@@ -568,7 +568,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 0049c70..b24e00a 100644
--- a/Doc/library/binhex.rst
+++ b/Doc/library/binhex.rst
@@ -58,7 +58,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/carbon.rst b/Doc/library/carbon.rst
index 94e0c9a..e1c7fa5 100644
--- a/Doc/library/carbon.rst
+++ b/Doc/library/carbon.rst
@@ -1,11 +1,11 @@
 
 .. _toolbox:
 
-*********************
-MacOS Toolbox Modules
-*********************
+**********************
+Mac OS Toolbox Modules
+**********************
 
-There are a set of modules that provide interfaces to various MacOS toolboxes.
+There are a set of modules that provide interfaces to various Mac OS toolboxes.
 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
@@ -240,7 +240,7 @@
    :deprecated:
 
 
-This module is only fully available on MacOS9 and earlier under classic PPC
+This module is only fully available on Mac OS 9 and earlier under classic PPC
 MacPython.  Very limited functionality is available under Carbon MacPython.
 
 .. index:: single: Scrap Manager
diff --git a/Doc/library/cgihttpserver.rst b/Doc/library/cgihttpserver.rst
index 6abfde5..390b2a6 100644
--- a/Doc/library/cgihttpserver.rst
+++ b/Doc/library/cgihttpserver.rst
@@ -19,8 +19,7 @@
 
 .. note::
 
-   This module can run CGI scripts on Unix and Windows systems; on Mac OS it will
-   only be able to run Python scripts within the same process as itself.
+   This module can run CGI scripts on Unix and Windows systems.
 
 .. note::
 
diff --git a/Doc/library/framework.rst b/Doc/library/framework.rst
index 71a07c1..ea58c05 100644
--- a/Doc/library/framework.rst
+++ b/Doc/library/framework.rst
@@ -206,7 +206,7 @@
 
 .. method:: Window.open()
 
-   Override this method to open a window. Store the MacOS window-id in
+   Override this method to open a window. Store the Mac OS window-id in
    :attr:`self.wid` and call the :meth:`do_postopen` method to register the window
    with the parent application.
 
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 a40c5e5..1d3c2f6 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)``:
@@ -153,12 +153,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 657011a..717bfb8 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/mac.rst b/Doc/library/mac.rst
index 6d81d74..f5fa969 100644
--- a/Doc/library/mac.rst
+++ b/Doc/library/mac.rst
@@ -1,8 +1,8 @@
 .. _mac-specific-services:
 
-*************************
-MacOS X specific services
-*************************
+**************************
+Mac OS X specific services
+**************************
 
 This chapter describes modules that are only available on the Mac OS X platform.
 
@@ -12,7 +12,7 @@
 
 .. warning::
 
-   These modules are deprecated and are removed in 3.0
+   These modules are deprecated and are removed in 3.0.
 
 
 .. toctree::
diff --git a/Doc/library/macos.rst b/Doc/library/macos.rst
index 12ed581..7376de1 100644
--- a/Doc/library/macos.rst
+++ b/Doc/library/macos.rst
@@ -1,4 +1,3 @@
-
 :mod:`MacOS` --- Access to Mac OS interpreter features
 ======================================================
 
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 bb6e846..42d76a3 100644
--- a/Doc/library/multiprocessing.rst
+++ b/Doc/library/multiprocessing.rst
@@ -480,7 +480,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()
 
@@ -774,7 +774,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 6d3464b..dd67a7c 100644
--- a/Doc/library/os.path.rst
+++ b/Doc/library/os.path.rst
@@ -226,13 +226,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)
@@ -240,7 +240,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 22b9a79..0aa115d 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.
@@ -44,7 +49,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`.
@@ -81,8 +86,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
@@ -202,8 +208,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,
@@ -338,7 +344,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.
 
    .. versionchanged:: 2.3
       When specified, the *mode* argument must now start with one of the letters
@@ -359,7 +365,7 @@
    status of the command (encoded in the format specified for :func:`wait`) is
    available as the return value of the :meth:`close` method of the file object,
    except that when the exit status is zero (termination without errors), ``None``
-   is returned. Availability: Macintosh, Unix, Windows.
+   is returned. Availability: Unix, Windows.
 
    .. deprecated:: 2.6
       This function is obsolete.  Use the :mod:`subprocess` module.  Check 
@@ -376,7 +382,7 @@
 
    Return a new file object opened in update mode (``w+b``).  The file has no
    directory entries associated with it and will be automatically deleted once
-   there are no file descriptors for the file. Availability: Macintosh, Unix,
+   there are no file descriptors for the file. Availability: Unix,
    Windows.
 
 There are a number of different :func:`popen\*` functions that provide slightly
@@ -415,7 +421,7 @@
       This function is obsolete.  Use the :mod:`subprocess` module.  Check 
       especially the :ref:`subprocess-replacements` section.
 
-   Availability: Macintosh, Unix, Windows.
+   Availability: Unix, Windows.
 
    .. versionadded:: 2.0
 
@@ -429,7 +435,7 @@
       This function is obsolete.  Use the :mod:`subprocess` module.  Check 
       especially the :ref:`subprocess-replacements` section.
 
-   Availability: Macintosh, Unix, Windows.
+   Availability: Unix, Windows.
 
    .. versionadded:: 2.0
 
@@ -443,7 +449,7 @@
       This function is obsolete.  Use the :mod:`subprocess` module.  Check 
       especially the :ref:`subprocess-replacements` section.
 
-   Availability: Macintosh, Unix, Windows.
+   Availability: Unix, Windows.
 
    .. versionadded:: 2.0
 
@@ -473,7 +479,7 @@
 
 .. function:: close(fd)
 
-   Close file descriptor *fd*. Availability: Macintosh, Unix, Windows.
+   Close file descriptor *fd*. Availability: Unix, Windows.
 
    .. note::
 
@@ -486,7 +492,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:
@@ -499,14 +505,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)
@@ -541,7 +547,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
@@ -552,7 +558,7 @@
 .. function:: fstat(fd)
 
    Return status for file descriptor *fd*, like :func:`stat`. Availability:
-   Macintosh, Unix, Windows.
+   Unix, Windows.
 
 
 .. function:: fstatvfs(fd)
@@ -568,20 +574,20 @@
 
    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, and Windows
    starting in 2.2.3.
 
 
 .. 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)
@@ -590,7 +596,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])
@@ -598,7 +604,7 @@
    Open the file *file* and set various flags according to *flags* and possibly its
    mode according to *mode*. The default *mode* is ``0777`` (octal), and the
    current umask value is first masked out.  Return the file descriptor for the
-   newly opened file. Availability: Macintosh, Unix, Windows.
+   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
@@ -618,21 +624,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::
 
@@ -646,26 +652,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::
 
@@ -690,7 +696,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
@@ -703,7 +709,7 @@
           O_EXLOCK
 
    More options for the *flag* argument to the :func:`open` function. Availability:
-   Macintosh, Unix.
+   Unix.
 
 
 .. data:: O_BINARY
@@ -733,7 +739,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.
 
    .. versionadded:: 2.5
 
@@ -752,7 +758,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::
 
@@ -796,7 +802,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.
 
 
@@ -812,13 +818,13 @@
 .. function:: getcwd()
 
    Return a string representing the current working directory. Availability:
-   Macintosh, Unix, Windows.
+   Unix, Windows.
 
 
 .. function:: getcwdu()
 
    Return a Unicode object representing the current working directory.
-   Availability: Macintosh, Unix, Windows.
+   Availability: Unix, Windows.
 
    .. versionadded:: 2.3
 
@@ -839,7 +845,7 @@
    * ``SF_NOUNLINK``
    * ``SF_SNAPSHOT``
 
-   Availability: Macintosh, Unix.
+   Availability: Unix.
 
    .. versionadded:: 2.6
 
@@ -847,7 +853,7 @@
 .. function:: chroot(path)
 
    Change the root directory of the current process to *path*. Availability:
-   Macintosh, Unix.
+   Unix.
 
    .. versionadded:: 2.2
 
@@ -879,7 +885,7 @@
    * ``stat.S_IWOTH``
    * ``stat.S_IXOTH``
 
-   Availability: Macintosh, Unix, Windows.
+   Availability: Unix, Windows.
 
    .. note::
 
@@ -892,7 +898,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)
@@ -915,21 +921,21 @@
 .. 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.
 
    .. versionadded:: 2.3
 
 
 .. 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.
 
    .. versionchanged:: 2.3
@@ -948,7 +954,7 @@
 
    Create a FIFO (a named pipe) named *path* with numeric mode *mode*.  The default
    *mode* is ``0666`` (octal).  The current umask value is first masked out from
-   the mode. Availability: Macintosh, Unix.
+   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
@@ -998,7 +1004,7 @@
 
    Create a directory named *path* with numeric mode *mode*. The default *mode* is
    ``0777`` (octal).  On some systems, *mode* is ignored.  Where it is used, the
-   current umask value is first masked out. Availability: Macintosh, Unix, Windows.
+   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.
@@ -1036,7 +1042,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
@@ -1049,7 +1055,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)
@@ -1062,7 +1068,7 @@
    .. versionchanged:: 2.6
       If the *path* is a Unicode object the result will also be a Unicode object.
 
-   Availability: Macintosh, Unix.
+   Availability: Unix.
 
 
 .. function:: remove(path)
@@ -1072,7 +1078,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.
 
 
@@ -1101,7 +1107,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)
@@ -1121,7 +1127,7 @@
 
 .. function:: rmdir(path)
 
-   Remove the directory *path*. Availability: Macintosh, Unix, Windows.
+   Remove the directory *path*. Availability: Unix, Windows.
 
 
 .. function:: stat(path)
@@ -1185,7 +1191,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.
 
    .. versionchanged:: 2.2
       Added access to values as attributes of the returned object.
@@ -1265,7 +1271,7 @@
       Use of :func:`tempnam` is vulnerable to symlink attacks; consider using
       :func:`tmpfile` (section :ref:`os-newstreams`) instead.
 
-   Availability: Macintosh, Unix, Windows.
+   Availability: Unix, Windows.
 
 
 .. function:: tmpnam()
@@ -1297,7 +1303,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.
 
 
@@ -1317,7 +1323,7 @@
    .. versionchanged:: 2.0
       Added support for ``None`` for *times*.
 
-   Availability: Macintosh, Unix, Windows.
+   Availability: Unix, Windows.
 
 
 .. function:: walk(top[, topdown=True [, onerror=None[, followlinks=False]]])
@@ -1430,7 +1436,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, ...)
@@ -1471,14 +1477,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::
 
@@ -1498,7 +1504,7 @@
 
 .. data:: EX_OK
 
-   Exit code that means no error occurred. Availability: Macintosh, Unix.
+   Exit code that means no error occurred. Availability: Unix.
 
    .. versionadded:: 2.3
 
@@ -1506,15 +1512,14 @@
 .. 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.
 
    .. versionadded:: 2.3
 
 
 .. 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.
 
    .. versionadded:: 2.3
 
@@ -1522,23 +1527,21 @@
 .. data:: EX_NOINPUT
 
    Exit code that means an input file did not exist or was not readable.
-   Availability: Macintosh, Unix.
+   Availability: Unix.
 
    .. versionadded:: 2.3
 
 
 .. 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.
 
    .. versionadded:: 2.3
 
 
 .. 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.
 
    .. versionadded:: 2.3
 
@@ -1546,7 +1549,7 @@
 .. data:: EX_UNAVAILABLE
 
    Exit code that means that a required service is unavailable. Availability:
-   Macintosh, Unix.
+   Unix.
 
    .. versionadded:: 2.3
 
@@ -1554,7 +1557,7 @@
 .. data:: EX_SOFTWARE
 
    Exit code that means an internal software error was detected. Availability:
-   Macintosh, Unix.
+   Unix.
 
    .. versionadded:: 2.3
 
@@ -1562,7 +1565,7 @@
 .. 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.
 
    .. versionadded:: 2.3
 
@@ -1570,7 +1573,7 @@
 .. 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.
 
    .. versionadded:: 2.3
 
@@ -1578,7 +1581,7 @@
 .. data:: EX_CANTCREAT
 
    Exit code that means a user specified output file could not be created.
-   Availability: Macintosh, Unix.
+   Availability: Unix.
 
    .. versionadded:: 2.3
 
@@ -1586,7 +1589,7 @@
 .. data:: EX_IOERR
 
    Exit code that means that an error occurred while doing I/O on some file.
-   Availability: Macintosh, Unix.
+   Availability: Unix.
 
    .. versionadded:: 2.3
 
@@ -1595,7 +1598,7 @@
 
    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.
 
    .. versionadded:: 2.3
 
@@ -1603,7 +1606,7 @@
 .. data:: EX_PROTOCOL
 
    Exit code that means that a protocol exchange was illegal, invalid, or not
-   understood. Availability: Macintosh, Unix.
+   understood. Availability: Unix.
 
    .. versionadded:: 2.3
 
@@ -1611,8 +1614,7 @@
 .. 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.
 
    .. versionadded:: 2.3
 
@@ -1620,7 +1622,7 @@
 .. data:: EX_CONFIG
 
    Exit code that means that some kind of configuration error occurred.
-   Availability: Macintosh, Unix.
+   Availability: Unix.
 
    .. versionadded:: 2.3
 
@@ -1628,7 +1630,7 @@
 .. data:: EX_NOTFOUND
 
    Exit code that means something like "an entry was not found". Availability:
-   Macintosh, Unix.
+   Unix.
 
    .. versionadded:: 2.3
 
@@ -1637,7 +1639,7 @@
 
    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()
@@ -1647,7 +1649,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)
@@ -1658,7 +1660,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)
@@ -1667,8 +1669,7 @@
       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.
 
    .. versionadded:: 2.3
 
@@ -1676,14 +1677,13 @@
 .. 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(...)
@@ -1765,7 +1765,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.
 
    .. versionadded:: 1.6
 
@@ -1776,7 +1776,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.
 
    .. versionadded:: 1.6
 
@@ -1841,7 +1841,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
@@ -1855,7 +1855,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.
 
 
@@ -1865,7 +1865,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)
@@ -1923,7 +1923,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
@@ -1939,7 +1939,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.
 
    .. versionadded:: 2.3
 
@@ -1951,7 +1951,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.
 
    .. versionadded:: 2.3
 
@@ -1973,32 +1973,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:
@@ -2016,7 +2014,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.
@@ -2031,7 +2029,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()
@@ -2049,14 +2047,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.
@@ -2067,22 +2065,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`.
 
@@ -2119,16 +2117,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`.
 
    .. versionadded:: 2.4
 
diff --git a/Doc/library/plistlib.rst b/Doc/library/plistlib.rst
index b987a5f..d8694e8 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)
@@ -16,7 +16,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
@@ -73,7 +73,7 @@
 .. function:: readPlistFromResource(path[, restype='plst'[, resid=0]])
 
     Read a plist from the resource with type *restype* from the resource fork of
-    *path*.  Availability: MacOS X.
+    *path*.  Availability: Mac OS X.
 
     .. warning::
 
@@ -84,7 +84,7 @@
 .. function:: writePlistToResource(rootObject, path[, restype='plst'[, resid=0]])
 
     Write *rootObject* as a resource with type *restype* to the resource fork of
-    *path*.  Availability: MacOS X.
+    *path*.  Availability: Mac OS X.
 
     .. warning::
 
diff --git a/Doc/library/shutil.rst b/Doc/library/shutil.rst
index b1a392e..944b9f1 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 9843ff6..74d5ee7 100644
--- a/Doc/library/signal.rst
+++ b/Doc/library/signal.rst
@@ -188,7 +188,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 67ebd8e..b147734 100644
--- a/Doc/library/subprocess.rst
+++ b/Doc/library/subprocess.rst
@@ -104,7 +104,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 871cec7..1117550 100644
--- a/Doc/library/sys.rst
+++ b/Doc/library/sys.rst
@@ -582,8 +582,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 4d9d483..c9b7355 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 2b1ab84..7695403 100644
--- a/Doc/library/tkinter.rst
+++ b/Doc/library/tkinter.rst
@@ -8,8 +8,8 @@
 
 The :mod:`Tkinter` module ("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.)
 
 .. note::
 
diff --git a/Doc/library/webbrowser.rst b/Doc/library/webbrowser.rst
index c243f7c..13cd8c7 100644
--- a/Doc/library/webbrowser.rst
+++ b/Doc/library/webbrowser.rst
@@ -151,10 +151,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 9da27b5..b548722 100644
--- a/Doc/reference/lexical_analysis.rst
+++ b/Doc/reference/lexical_analysis.rst
@@ -75,7 +75,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/inputoutput.rst b/Doc/tutorial/inputoutput.rst
index 559ce31..7287e3e 100644
--- a/Doc/tutorial/inputoutput.rst
+++ b/Doc/tutorial/inputoutput.rst
@@ -237,15 +237,15 @@
 writing. The *mode* argument is optional; ``'r'`` will be assumed if it's
 omitted.
 
-On Windows and the Macintosh, ``'b'`` appended to the mode opens the file in
-binary mode, so there are also modes like ``'rb'``, ``'wb'``, and ``'r+b'``.
-Windows makes a distinction between text and binary files; the end-of-line
-characters in text files are automatically altered slightly when data is read or
-written.  This behind-the-scenes modification to file data is fine for ASCII
-text files, but it'll corrupt binary data like that in :file:`JPEG` or
-:file:`EXE` files.  Be very careful to use binary mode when reading and writing
-such files.  On Unix, it doesn't hurt to append a ``'b'`` to the mode, so
-you can use it platform-independently for all binary files.
+On Windows, ``'b'`` appended to the mode opens the file in binary mode, so there
+are also modes like ``'rb'``, ``'wb'``, and ``'r+b'``.  Windows makes a
+distinction between text and binary files; the end-of-line characters in text
+files are automatically altered slightly when data is read or written.  This
+behind-the-scenes modification to file data is fine for ASCII text files, but
+it'll corrupt binary data like that in :file:`JPEG` or :file:`EXE` files.  Be
+very careful to use binary mode when reading and writing such files.  On Unix,
+it doesn't hurt to append a ``'b'`` to the mode, so you can use it
+platform-independently for all binary files.
 
 
 .. _tut-filemethods:
diff --git a/Doc/tutorial/interpreter.rst b/Doc/tutorial/interpreter.rst
index c9ceaf6..0ac7ee1 100644
--- a/Doc/tutorial/interpreter.rst
+++ b/Doc/tutorial/interpreter.rst
@@ -157,9 +157,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 94fbed7..4ceee84 100644
--- a/Doc/using/cmdline.rst
+++ b/Doc/using/cmdline.rst
@@ -516,7 +516,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`,
