diff --git a/ChangeLog b/ChangeLog
index 1c40337..c047234 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2012-01-04  Bruno Haible  <bruno@clisp.org>
+
+	Talk about "native Windows API", not "Win32".
+	* lib/relocatable.c: Update comments to mention native Windows.
+	(WINDOWS_NATIVE): Renamed from WIN32_NATIVE.
+
 2011-10-27  Bruno Haible  <bruno@clisp.org>
 
 	Fix bug with error handling in UCS-2, UCS-4, UTF-32 decoders.
diff --git a/lib/relocatable.c b/lib/relocatable.c
index 887b755..8bd9483 100644
--- a/lib/relocatable.c
+++ b/lib/relocatable.c
@@ -1,5 +1,5 @@
 /* Provide relocatable packages.
-   Copyright (C) 2003-2006, 2008-2011 Free Software Foundation, Inc.
+   Copyright (C) 2003-2006, 2008-2012 Free Software Foundation, Inc.
    Written by Bruno Haible <bruno@clisp.org>, 2003.
 
    This program is free software; you can redistribute it and/or modify it
@@ -72,7 +72,7 @@
    IS_PATH_WITH_DIR(P)  tests whether P contains a directory specification.
  */
 #if ((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__) || defined __EMX__ || defined __DJGPP__
-  /* Win32, OS/2, DOS */
+  /* Native Windows, OS/2, DOS */
 # define ISSLASH(C) ((C) == '/' || (C) == '\\')
 # define HAS_DEVICE(P) \
     ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \
@@ -91,7 +91,7 @@
    It allows libraries to be have been installed with a different original
    prefix than the program.  But it is quite costly, especially on Cygwin
    platforms, see below.  Therefore we enable it by default only on native
-   Win32 platforms.  */
+   Windows platforms.  */
 #ifndef ENABLE_COSTLY_RELOCATABLE
 # if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
 #  define ENABLE_COSTLY_RELOCATABLE 1
@@ -251,7 +251,7 @@
                often case-insensitive.  It's better to accept the comparison
                if the difference is only in case, rather than to fail.  */
 #if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__
-            /* Win32, Cygwin, OS/2, DOS - case insignificant file system */
+            /* Native Windows, Cygwin, OS/2, DOS - case insignificant file system */
             if ((*rpi >= 'a' && *rpi <= 'z' ? *rpi - 'a' + 'A' : *rpi)
                 != (*cpi >= 'a' && *cpi <= 'z' ? *cpi - 'a' + 'A' : *cpi))
               break;
@@ -305,10 +305,10 @@
 static char *shared_library_fullname;
 
 #if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
-/* Native Win32 only.
+/* Native Windows only.
    On Cygwin, it is better to use the Cygwin provided /proc interface, than
-   to use native Win32 API and cygwin_conv_to_posix_path, because it supports
-   longer file names
+   to use native Windows API and cygwin_conv_to_posix_path, because it
+   supports longer file names
    (see <http://cygwin.com/ml/cygwin/2011-01/msg00410.html>).  */
 
 /* Determine the full pathname of the shared library when it is loaded.  */
@@ -392,7 +392,7 @@
 #endif
 }
 
-#endif /* WIN32 / Unix */
+#endif /* Native Windows / Unix */
 
 /* Return the full pathname of the current shared library.
    Return NULL if unknown.
diff --git a/libcharset/lib/ChangeLog b/libcharset/lib/ChangeLog
index 2adaac5..1f53fb9 100644
--- a/libcharset/lib/ChangeLog
+++ b/libcharset/lib/ChangeLog
@@ -1,3 +1,10 @@
+2012-01-04  Bruno Haible  <bruno@clisp.org>
+
+	Talk about "native Windows API", not "Win32".
+	* localcharset.c: Update comments to mention native Windows.
+	(WINDOWS_NATIVE): Renamed from WIN32_NATIVE.
+	* relocatable.c: Likewise.
+
 2011-10-03  Bruno Haible  <bruno@clisp.org>
 
 	* relocatable.c: Update from gnulib.
diff --git a/libcharset/lib/localcharset.c b/libcharset/lib/localcharset.c
index 3aceb42..1bbeb99 100644
--- a/libcharset/lib/localcharset.c
+++ b/libcharset/lib/localcharset.c
@@ -1,6 +1,6 @@
 /* Determine a canonical name for the current locale's character encoding.
 
-   Copyright (C) 2000-2006, 2008-2010 Free Software Foundation, Inc.
+   Copyright (C) 2000-2006, 2008-2012 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify it
    under the terms of the GNU Library General Public License as published
@@ -35,7 +35,7 @@
 #endif
 
 #if defined _WIN32 || defined __WIN32__
-# define WIN32_NATIVE
+# define WINDOWS_NATIVE
 #endif
 
 #if defined __EMX__
@@ -45,7 +45,7 @@
 # endif
 #endif
 
-#if !defined WIN32_NATIVE
+#if !defined WINDOWS_NATIVE
 # include <unistd.h>
 # if HAVE_LANGINFO_CODESET
 #  include <langinfo.h>
@@ -58,7 +58,7 @@
 #  define WIN32_LEAN_AND_MEAN
 #  include <windows.h>
 # endif
-#elif defined WIN32_NATIVE
+#elif defined WINDOWS_NATIVE
 # define WIN32_LEAN_AND_MEAN
 # include <windows.h>
 #endif
@@ -84,7 +84,7 @@
 #endif
 
 #if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__
-  /* Win32, Cygwin, OS/2, DOS */
+  /* Native Windows, Cygwin, OS/2, DOS */
 # define ISSLASH(C) ((C) == '/' || (C) == '\\')
 #endif
 
@@ -124,7 +124,7 @@
   cp = charset_aliases;
   if (cp == NULL)
     {
-#if !(defined DARWIN7 || defined VMS || defined WIN32_NATIVE || defined __CYGWIN__)
+#if !(defined DARWIN7 || defined VMS || defined WINDOWS_NATIVE || defined __CYGWIN__)
       const char *dir;
       const char *base = "charset.alias";
       char *file_name;
@@ -309,7 +309,7 @@
            "DECKOREAN" "\0" "EUC-KR" "\0";
 # endif
 
-# if defined WIN32_NATIVE || defined __CYGWIN__
+# if defined WINDOWS_NATIVE || defined __CYGWIN__
       /* To avoid the troubles of installing a separate file in the same
          directory as the DLL and of retrieving the DLL's directory at
          runtime, simply inline the aliases here.  */
@@ -361,7 +361,7 @@
   const char *codeset;
   const char *aliases;
 
-#if !(defined WIN32_NATIVE || defined OS2)
+#if !(defined WINDOWS_NATIVE || defined OS2)
 
 # if HAVE_LANGINFO_CODESET
 
@@ -454,7 +454,7 @@
 
 # endif
 
-#elif defined WIN32_NATIVE
+#elif defined WINDOWS_NATIVE
 
   static char buf[2 + 10 + 1];
 
diff --git a/libcharset/lib/relocatable.c b/libcharset/lib/relocatable.c
index 887b755..8bd9483 100644
--- a/libcharset/lib/relocatable.c
+++ b/libcharset/lib/relocatable.c
@@ -1,5 +1,5 @@
 /* Provide relocatable packages.
-   Copyright (C) 2003-2006, 2008-2011 Free Software Foundation, Inc.
+   Copyright (C) 2003-2006, 2008-2012 Free Software Foundation, Inc.
    Written by Bruno Haible <bruno@clisp.org>, 2003.
 
    This program is free software; you can redistribute it and/or modify it
@@ -72,7 +72,7 @@
    IS_PATH_WITH_DIR(P)  tests whether P contains a directory specification.
  */
 #if ((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__) || defined __EMX__ || defined __DJGPP__
-  /* Win32, OS/2, DOS */
+  /* Native Windows, OS/2, DOS */
 # define ISSLASH(C) ((C) == '/' || (C) == '\\')
 # define HAS_DEVICE(P) \
     ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \
@@ -91,7 +91,7 @@
    It allows libraries to be have been installed with a different original
    prefix than the program.  But it is quite costly, especially on Cygwin
    platforms, see below.  Therefore we enable it by default only on native
-   Win32 platforms.  */
+   Windows platforms.  */
 #ifndef ENABLE_COSTLY_RELOCATABLE
 # if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
 #  define ENABLE_COSTLY_RELOCATABLE 1
@@ -251,7 +251,7 @@
                often case-insensitive.  It's better to accept the comparison
                if the difference is only in case, rather than to fail.  */
 #if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__
-            /* Win32, Cygwin, OS/2, DOS - case insignificant file system */
+            /* Native Windows, Cygwin, OS/2, DOS - case insignificant file system */
             if ((*rpi >= 'a' && *rpi <= 'z' ? *rpi - 'a' + 'A' : *rpi)
                 != (*cpi >= 'a' && *cpi <= 'z' ? *cpi - 'a' + 'A' : *cpi))
               break;
@@ -305,10 +305,10 @@
 static char *shared_library_fullname;
 
 #if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
-/* Native Win32 only.
+/* Native Windows only.
    On Cygwin, it is better to use the Cygwin provided /proc interface, than
-   to use native Win32 API and cygwin_conv_to_posix_path, because it supports
-   longer file names
+   to use native Windows API and cygwin_conv_to_posix_path, because it
+   supports longer file names
    (see <http://cygwin.com/ml/cygwin/2011-01/msg00410.html>).  */
 
 /* Determine the full pathname of the shared library when it is loaded.  */
@@ -392,7 +392,7 @@
 #endif
 }
 
-#endif /* WIN32 / Unix */
+#endif /* Native Windows / Unix */
 
 /* Return the full pathname of the current shared library.
    Return NULL if unknown.
