diff --git a/ChangeLog b/ChangeLog
index c7d6c7a..655c494 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2012-06-30  Bruno Haible  <bruno@clisp.org>
 
+	Make it possible to run 'genaliases2' on native Windows.
+	* lib/genaliases2.c (main): Expect 3 arguments. Open the output files
+	explicitly. Complain if they don't exist.
+	* Makefile.devel (lib/aliases_*.h): Pass the output filenames as
+	arguments to genaliases.
+	Reported at <http://savannah.gnu.org/bugs/?36748>.
+
 	Make it possible to run 'genaliases' on native Windows.
 	* lib/genaliases.c (main): Expect 3 arguments. Open the output files
 	explicitly. Complain if they don't exist. Improve error checking.
diff --git a/Makefile.devel b/Makefile.devel
index e9bd88b..ae99a9d 100644
--- a/Makefile.devel
+++ b/Makefile.devel
@@ -154,32 +154,32 @@
 
 lib/aliases_aix.h lib/canonical_aix.h : lib/encodings_aix.def lib/genaliases2.c
 	$(CC) $(CFLAGS) -DUSE_AIX lib/genaliases2.c -o genaliases
-	./genaliases aix > lib/aliases_aix.h 3> lib/canonical_aix.h
+	./genaliases aix lib/aliases_aix.h lib/canonical_aix.h
 	$(RM) genaliases
 
 lib/aliases_aix_sysaix.h lib/canonical_aix_sysaix.h : lib/encodings_aix.def lib/genaliases2.c
 	$(CC) $(CFLAGS) -DUSE_AIX -DUSE_AIX_ALIASES lib/genaliases2.c -o genaliases
-	./genaliases aix > lib/aliases_aix_sysaix.h 3> lib/canonical_aix_sysaix.h
+	./genaliases aix lib/aliases_aix_sysaix.h lib/canonical_aix_sysaix.h
 	$(RM) genaliases
 
 lib/aliases_osf1.h lib/canonical_osf1.h : lib/encodings_osf1.def lib/genaliases2.c
 	$(CC) $(CFLAGS) -DUSE_OSF1 lib/genaliases2.c -o genaliases
-	./genaliases osf1 > lib/aliases_osf1.h 3> lib/canonical_osf1.h
+	./genaliases osf1 lib/aliases_osf1.h lib/canonical_osf1.h
 	$(RM) genaliases
 
 lib/aliases_osf1_sysosf1.h lib/canonical_osf1_sysosf1.h : lib/encodings_osf1.def lib/genaliases2.c
 	$(CC) $(CFLAGS) -DUSE_OSF1 -DUSE_OSF1_ALIASES lib/genaliases2.c -o genaliases
-	./genaliases osf1 > lib/aliases_osf1_sysosf1.h 3> lib/canonical_osf1_sysosf1.h
+	./genaliases osf1 lib/aliases_osf1_sysosf1.h lib/canonical_osf1_sysosf1.h
 	$(RM) genaliases
 
 lib/aliases_dos.h lib/canonical_dos.h : lib/encodings_dos.def lib/genaliases2.c
 	$(CC) $(CFLAGS) -DUSE_DOS lib/genaliases2.c -o genaliases
-	./genaliases dos > lib/aliases_dos.h 3> lib/canonical_dos.h
+	./genaliases dos lib/aliases_dos.h lib/canonical_dos.h
 	$(RM) genaliases
 
 lib/aliases_extra.h lib/canonical_extra.h : lib/encodings_extra.def lib/genaliases2.c
 	$(CC) $(CFLAGS) -DUSE_EXTRA lib/genaliases2.c -o genaliases
-	./genaliases extra > lib/aliases_extra.h 3> lib/canonical_extra.h
+	./genaliases extra lib/aliases_extra.h lib/canonical_extra.h
 	$(RM) genaliases
 
 
diff --git a/lib/genaliases2.c b/lib/genaliases2.c
index 5304771..3cdb9dc 100644
--- a/lib/genaliases2.c
+++ b/lib/genaliases2.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999-2003, 2005, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2003, 2005, 2008, 2012 Free Software Foundation, Inc.
    This file is part of the GNU LIBICONV Library.
 
    The GNU LIBICONV Library is free software; you can redistribute it
@@ -50,17 +50,40 @@
 
 int main (int argc, char* argv[])
 {
-  const char * tag = (argc > 1 ? argv[1] : "xxx");
-  FILE * stdout2 = fdopen(3, "w");
-  if (stdout2 == NULL)
+  const char* tag;
+  char* aliases_file_name;
+  char* canonical_file_name;
+  FILE* aliases_file;
+  FILE* canonical_file;
+
+  if (argc != 4) {
+    fprintf(stderr, "Usage: genaliases2 tag aliases.h canonical.h\n");
     exit(1);
+  }
+
+  tag = argv[1];
+  aliases_file_name = argv[2];
+  canonical_file_name = argv[3];
+
+  aliases_file = fopen(aliases_file_name, "w");
+  if (aliases_file == NULL) {
+    fprintf(stderr, "Could not open '%s' for writing\n", aliases_file_name);
+    exit(1);
+  }
+
+  canonical_file = fopen(canonical_file_name, "w");
+  if (canonical_file == NULL) {
+    fprintf(stderr, "Could not open '%s' for writing\n", canonical_file_name);
+    exit(1);
+  }
+
 #define DEFENCODING(xxx_names,xxx,xxx_ifuncs1,xxx_ifuncs2,xxx_ofuncs1,xxx_ofuncs2) \
   {                                                           \
     static const char* const names[] = BRACIFY xxx_names;     \
-    emit_encoding(stdout,stdout2,tag,names,sizeof(names)/sizeof(names[0]),#xxx); \
+    emit_encoding(aliases_file,canonical_file,tag,names,sizeof(names)/sizeof(names[0]),#xxx); \
   }
 #define BRACIFY(...) { __VA_ARGS__ }
-#define DEFALIAS(xxx_alias,xxx) emit_alias(stdout,tag,xxx_alias,#xxx);
+#define DEFALIAS(xxx_alias,xxx) emit_alias(aliases_file,tag,xxx_alias,#xxx);
 #ifdef USE_AIX
 #include "encodings_aix.def"
 #endif
@@ -76,7 +99,9 @@
 #undef DEFALIAS
 #undef BRACIFY
 #undef DEFENCODING
-  if (ferror(stdout) || fclose(stdout) || ferror(stdout2) || fclose(stdout2))
+  if (ferror(aliases_file) || fclose(aliases_file))
+    exit(1);
+  if (ferror(canonical_file) || fclose(canonical_file))
     exit(1);
   exit(0);
 }
