diff --git a/Doc/library/ast.rst b/Doc/library/ast.rst
index 3c2f8d2..b10b9cb 100644
--- a/Doc/library/ast.rst
+++ b/Doc/library/ast.rst
@@ -253,5 +253,5 @@
    debugging purposes.  The returned string will show the names and the values
    for fields.  This makes the code impossible to evaluate, so if evaluation is
    wanted *annotate_fields* must be set to False.  Attributes such as line
-   numbers and column offsets are dumped by default.  If this is wanted,
+   numbers and column offsets are not dumped by default.  If this is wanted,
    *include_attributes* can be set to ``True``.
diff --git a/Doc/library/cgi.rst b/Doc/library/cgi.rst
index a69e98d..4286703 100644
--- a/Doc/library/cgi.rst
+++ b/Doc/library/cgi.rst
@@ -162,6 +162,8 @@
 actually be instances of the class :class:`MiniFieldStorage`.  In this case, the
 :attr:`list`, :attr:`file`, and :attr:`filename` attributes are always ``None``.
 
+A form submitted via POST that also has a query string will contain both
+:class:`FieldStorage` and :class:`MiniFieldStorage` items.
 
 Higher Level Interface
 ----------------------
diff --git a/Doc/library/cmath.rst b/Doc/library/cmath.rst
index 83a220c..2d804c9 100644
--- a/Doc/library/cmath.rst
+++ b/Doc/library/cmath.rst
@@ -40,9 +40,9 @@
 
 In engineering the polar coordinate system is popular for complex numbers. In
 polar coordinates a complex number is defined by the radius *r* and the phase
-angle *φ*. The radius *r* is the absolute value of the complex, which can be
+angle *phi*. The radius *r* is the absolute value of the complex, which can be
 viewed as distance from (0, 0). The radius *r* is always 0 or a positive float.
-The phase angle *φ* is the counter clockwise angle from the positive x axis,
+The phase angle *phi* is the counter clockwise angle from the positive x axis,
 e.g. *1* has the angle *0*, *1j* has the angle *π/2* and *-1* the angle *-π*.
 
 .. note::
@@ -53,12 +53,12 @@
 
 Definition::
 
-   z = r * exp(1j * φ)
-   z = r * cis(φ)
+   z = r * exp(1j * phi)
+   z = r * cis(phi)
 
    r := abs(z) := sqrt(real(z)**2 + imag(z)**2)
    phi := phase(z) := atan2(imag(z), real(z))
-   cis(φ) := cos(φ) + 1j * sin(φ)
+   cis(phi) := cos(phi) + 1j * sin(phi)
 
 
 .. function:: phase(x)
diff --git a/Doc/library/decimal.rst b/Doc/library/decimal.rst
index aea1c01..d24cddf 100644
--- a/Doc/library/decimal.rst
+++ b/Doc/library/decimal.rst
@@ -418,7 +418,7 @@
 
    .. method:: conjugate()
 
-      Just returns itself, this method is only to comply with the Decimal
+      Just returns self, this method is only to comply with the Decimal
       Specification.
 
    .. method:: copy_abs()
@@ -1192,9 +1192,10 @@
       The sign of the result, if non-zero, is the same as that of the original
       dividend.
 
+
    .. method:: remainder_near(x, y)
 
-      Returns `x - y * n`, where *n* is the integer nearest the exact value 
+      Returns `x - y * n`, where *n* is the integer nearest the exact value
       of `x / y` (if the result is `0` then its sign will be the sign of *x*).
 
 
diff --git a/Doc/library/os.rst b/Doc/library/os.rst
index 33d42da..86d9a89 100644
--- a/Doc/library/os.rst
+++ b/Doc/library/os.rst
@@ -337,21 +337,6 @@
    does on most platforms).
 
 
-.. function:: popen(command[, mode[, bufsize]])
-
-   Open a pipe to or from *command*.  The return value is an open file object
-   connected to the pipe, which can be read or written depending on whether *mode*
-   is ``'r'`` (default) or ``'w'``. The *bufsize* argument has the same meaning as
-   the corresponding argument to the built-in :func:`open` function.  The exit
-   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.
-
-   .. deprecated:: 2.6
-      This function is obsolete.  Use the :mod:`subprocess` module.
-
-
 .. _os-fd-ops:
 
 File Descriptor Operations
@@ -1449,7 +1434,8 @@
 
    (Note that the :mod:`subprocess` module provides more powerful facilities for
    spawning new processes and retrieving their results; using that module is
-   preferable to using these functions.)
+   preferable to using these functions.  Check specially the *Replacing Older 
+   Functions with the subprocess Module* section in that documentation page.)
 
    If *mode* is :const:`P_NOWAIT`, this function returns the process id of the new
    process; if *mode* is :const:`P_WAIT`, returns the process's exit code if it
@@ -1571,7 +1557,8 @@
 
    The :mod:`subprocess` module provides more powerful facilities for spawning new
    processes and retrieving their results; using that module is preferable to using
-   this function.
+   this function.  Use the :mod:`subprocess` module.  Check especially the
+   :ref:`subprocess-replacements` section.
 
 
 .. function:: times()
diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst
index 101f737..9107d03 100644
--- a/Doc/library/stdtypes.rst
+++ b/Doc/library/stdtypes.rst
@@ -2145,6 +2145,11 @@
    the system default encoding for converting strings.
 
 
+.. attribute:: file.errors
+
+   The Unicode error handler used along with the encoding.
+
+
 .. attribute:: file.mode
 
    The I/O mode for the file.  If the file was created using the :func:`open`
diff --git a/Doc/library/subprocess.rst b/Doc/library/subprocess.rst
index d85f5dc..ba2a5a1 100644
--- a/Doc/library/subprocess.rst
+++ b/Doc/library/subprocess.rst
@@ -289,6 +289,8 @@
    ``N`` (Unix only).
 
 
+.. _subprocess-replacements:
+
 Replacing Older Functions with the subprocess Module
 ----------------------------------------------------
 
@@ -386,13 +388,13 @@
 
 ::
 
-   pipe = os.popen(cmd, mode='r', bufsize)
+   pipe = os.popen(cmd, 'r', bufsize)
    ==>
    pipe = Popen(cmd, shell=True, bufsize=bufsize, stdout=PIPE).stdout
 
 ::
 
-   pipe = os.popen(cmd, mode='w', bufsize)
+   pipe = os.popen(cmd, 'w', bufsize)
    ==>
    pipe = Popen(cmd, shell=True, bufsize=bufsize, stdin=PIPE).stdin
 
