diff --git a/documentation/README.documentation b/documentation/README.documentation
index 6a91dc6..a94d4b9 100644
--- a/documentation/README.documentation
+++ b/documentation/README.documentation
@@ -12,19 +12,23 @@
   Texinfo source for preliminary comprehensive documentation is in
 this directory.  Use 'make info' in this directory to generate the GNU
 info version, 'make dvi' to generate the DVI version (hit 'r' to
-ignore errors), or 'make all' for both. It is no longer installed by
+ignore errors), or 'make all' for both. It is not installed by
 default.
 
 Wine API documentation
 
   Do a 'make manpages' in the Wine toplevel directory to generate the
 API manpages from the Wine source, or 'make man' in any source
-subdirectory to generate manpages from only that directory. The
-manpages will be deposited in [documentation/man3w].  You will need
-c2man, available as source from http://www.debian.org/ and other
-places. Apply the patch included at the end of this file for improved
-terse description formatting.  The man pages are not installed
-automatically.
+subdirectory to generate manpages from only that directory. Only
+functions mentioned in Wine spec files will be documented; the
+specific .spec files checked are set by the MANSPECS variable in
+Make.rules. The manpages will be generated into
+[documentation/man3w]. For HTML formatted manpages, do 'make
+htmlpages' from the toplevel, or 'make html' from any
+subdirectory. HTML formatted pages are generated into
+[documentation/html]. You will need c2man as modified for Wine,
+available as source or binary from ftp://ftp.winehq.com/pub/wine/.
+The man pages are not installed by 'make install'.
 
 Other READMEs
 
@@ -43,80 +47,59 @@
 existing source. For example,
 
 /******************************************************************
- *         PlayMetaFile32 (GDI32.265) Render metafile to device
+ *         CopyMetaFile32A   (GDI32.23)
  *
- *    The metafile is rendered in the device context specified by hdc.
+ *  Copies the metafile corresponding to hSrcMetaFile to either
+ *  a disk file, if a filename is given, or to a new memory based
+ *  metafile, if lpFileName is NULL.
  *
- *  RETURNS
+ * RETURNS
  *
- *    Always returns TRUE.
+ *  Handle to metafile copy on success, NULL on failure.
  *
- * FIXME
- *    Wine metafiles are not 100% binary compatible with Microsoft Windows
- *    metafiles.
+ * BUGS
+ *
+ *  Copying to disk returns NULL even if successful.
  */
-BOOL32 WINAPI PlayMetaFile32(
-        HDC32 hdc, /* handle of device context in which to render metafile */
-        HMETAFILE32 hmf /* metafile handle */
-) {
+HMETAFILE32 WINAPI CopyMetaFile32A(
+		   HMETAFILE32 hSrcMetaFile, /* handle of metafile to copy */
+		   LPCSTR lpFilename /* filename if copying to a file */
+) { ... }
 
 becomes, after processing with c2man and nroff -man,
 
-
-PlayMetaFile32(3w)                             PlayMetaFile32(3w)
+CopyMetaFileA(3w)                               CopyMetaFileA(3w)
 
 
 NAME
-       PlayMetaFile32   -   PlayMetaFile32   (GDI32.265)   Render
-       metafile to device
+       CopyMetaFileA - CopyMetaFile32A   (GDI32.23)
 
 SYNOPSIS
-       BOOL32 PlayMetaFile32
+       HMETAFILE32 CopyMetaFileA
        (
-            HDC32 hdc,
-            HMETAFILE32 hmf
+            HMETAFILE32 hSrcMetaFile,
+            LPCSTR lpFilename
        );
 
 PARAMETERS
-       HDC32 hdc
-              Handle  of  device  context  in  which  to   render
-              metafile.
+       HMETAFILE32 hSrcMetaFile
+              Handle of metafile to copy.
 
-       HMETAFILE32 hmf
-              Metafile handle.
+       LPCSTR lpFilename
+              Filename if copying to a file.
 
 DESCRIPTION
-       The  metafile  is rendered in the device context specified
-       by hdc.
+       Copies  the  metafile  corresponding  to  hSrcMetaFile  to
+       either a disk file, if a filename is given, or  to  a  new
+       memory based metafile, if lpFileName is NULL.
 
 RETURNS
-       Always returns TRUE.
+       Handle to metafile copy on success, NULL on failure.
 
-FIXME
-       Wine  metafiles  are  not  100%  binary  compatible   with
-       Microsoft Windows metafiles.
+BUGS
+       Copying to disk returns NULL even if successful.
 
-----------------------------------------------------------------
-Patch for c2man:
-
-diff -u c2man-2.41.orig/manpage.c c2man-2.41/manpage.c
---- c2man-2.41.orig/manpage.c	Tue Apr 23 21:13:44 1996
-+++ c2man-2.41/manpage.c	Thu Dec 18 13:20:08 1997
-@@ -585,10 +585,15 @@
- 		    const char *endterse, *afterdash = skipdash(start_line);
- 
- 		    /* find the end of the terse comment */
--		    while (*c && *c != '.' && *c != '\n')
-+		    while (*c && *c != '\n')
-+		    {
- 			c++;
-+		      /* '.' ends terse description only if it ends sentence */
-+			if (*(c-1)=='.' && *c && isspace(*c)) 
-+			  break;
-+		    }
- 
--		    endterse = *c == '.' ? c+1 : c;
-+		    endterse = c;
- 		    *terse = alloc_string(
- 			afterdash < endterse ? afterdash : start_line,
- 			endterse);
+SEE ALSO
+       GetMetaFileA(3w),   GetMetaFileW(3w),   CopyMetaFileW(3w),
+       PlayMetaFile(3w),  SetMetaFileBitsEx(3w),  GetMetaFileBit-
+       sEx(3w)
