Branch merge
diff --git a/Doc/library/functions.rst b/Doc/library/functions.rst
index 0fb48f4..5df7b67 100644
--- a/Doc/library/functions.rst
+++ b/Doc/library/functions.rst
@@ -935,6 +935,36 @@
    :mod:`os.open` as *opener* results in functionality similar to passing
    ``None``).
 
+   The following example is an alternative implementation for opening files
+   for exclusive writing.  If we did not have support for the ``'x'`` mode,
+   we could implement it with this opener::
+
+      >>> import os
+      >>> def open_exclusive(path, mode):
+      ...     return os.open(path, mode | os.O_CREAT | os.O_EXCL)
+      ...
+      >>> filename = 'spam.txt'
+      >>> fp = open(filename, 'w', opener=open_exclusive)
+      >>> fp2 = open(filename, 'w', opener=open_exclusive)
+      Traceback (most recent call last):
+        ...
+      FileExistsError: [Errno 17] File exists: 'spam.txt'
+
+   This other example uses the :ref:`dir_fd` parameter of the
+   :func:`os.open` function to open a file relative to a given directory::
+
+      >>> import os
+      >>> def open_relative(dirname):
+      ...     dir_fd = os.open(dirname, os.O_RDONLY)
+      ...     def opener(path, flags):
+      ...         return os.open(path, flags, dir_fd=dir_fd)
+      ...     return opener
+      ...
+      >>> opener = open_relative('somedir')
+      >>> with open('spamspam.txt', 'w', opener=opener) as f:
+      ...     print('This will be written to somedir/spamspam.txt', file=f)
+      ...
+
    .. versionchanged:: 3.3
       The *opener* parameter was added.
       The ``'x'`` mode was added.
diff --git a/Doc/library/io.rst b/Doc/library/io.rst
index e83e55c..44e663d 100644
--- a/Doc/library/io.rst
+++ b/Doc/library/io.rst
@@ -498,6 +498,9 @@
    :mod:`os.open` as *opener* results in functionality similar to passing
    ``None``).
 
+   See the :func:`open` built-in function for examples on using the *opener*
+   parameter.
+
    .. versionchanged:: 3.3
       The *opener* parameter was added.
       The ``'x'`` mode was added.
diff --git a/Misc/ACKS b/Misc/ACKS
index ee1ce67..81ed27c 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -929,6 +929,7 @@
 Iustin Pop
 Claudiu Popa
 John Popplewell
+Guillaume Pratte
 Amrit Prem
 Paul Prescod
 Donovan Preston