From 86d33d548e8645de7c0d489fd659af399de1deda Mon Sep 17 00:00:00 2001
From: "Tobias S. Josefowitz" <tobij@tobij.de>
Date: Sun, 3 Nov 2013 11:13:01 +0100
Subject: [PATCH] Unicode: Work around input/output redirection issues with the
 windows build environment.

---
 src/post_modules/Unicode/Makefile.in          | 10 +++++-----
 src/post_modules/Unicode/make_canonicals.pike |  5 +++--
 src/post_modules/Unicode/make_decompose.pike  |  5 +++--
 src/post_modules/Unicode/make_rtl.pike        |  7 ++++---
 src/post_modules/Unicode/make_uversion.pike   |  3 ++-
 src/post_modules/Unicode/make_wordbits.pike   |  5 +++--
 6 files changed, 20 insertions(+), 15 deletions(-)

diff --git a/src/post_modules/Unicode/Makefile.in b/src/post_modules/Unicode/Makefile.in
index 7d03ea5533..d77ee37333 100644
--- a/src/post_modules/Unicode/Makefile.in
+++ b/src/post_modules/Unicode/Makefile.in
@@ -16,23 +16,23 @@ unicode_module.o: $(SRCDIR)/unicode_module.c
 
 $(SRCDIR)/decompositions.h: $(SRCDIR)/make_decompose.pike $(SRCDIR)/$(UNICODEDATA)
 	 $(RUNPIKE) $(SRCDIR)/make_decompose.pike 		\
-                    < $(SRCDIR)/$(UNICODEDATA) > "$@" || { rm "$@"; exit 1; }
+                    $(SRCDIR)/$(UNICODEDATA) "$@" || { rm "$@"; exit 1; }
 
 $(SRCDIR)/canonicals.h: $(SRCDIR)/make_canonicals.pike $(SRCDIR)/$(UNICODEDATA)
 	 $(RUNPIKE) $(SRCDIR)/make_canonicals.pike 		\
-                    < $(SRCDIR)/$(UNICODEDATA) > "$@" || { rm "$@"; exit 1; }
+                     $(SRCDIR)/$(UNICODEDATA)  "$@" || { rm "$@"; exit 1; }
 
 $(SRCDIR)/wordbits.h: $(SRCDIR)/make_wordbits.pike $(SRCDIR)/$(UNICODEDATA)
 	 $(RUNPIKE) $(SRCDIR)/make_wordbits.pike 		\
-                    < $(SRCDIR)/$(UNICODEDATA) > "$@" || { rm "$@"; exit 1; }
+                     $(SRCDIR)/$(UNICODEDATA) "$@" || { rm "$@"; exit 1; }
 
 $(SRCDIR)/uversion.h: $(SRCDIR)/make_uversion.pike $(SRCDIR)/$(UNICODEDATARM)
 	 $(RUNPIKE) $(SRCDIR)/make_uversion.pike		\
-                    $(SRCDIR)/$(UNICODEDATARM) > "$@" || { rm "$@"; exit 1; }
+                    $(SRCDIR)/$(UNICODEDATARM) "$@" || { rm "$@"; exit 1; }
 
 $(SRCDIR)/rtl.h: $(SRCDIR)/make_rtl.pike $(SRCDIR)/$(UNICODEDATA)
 	$(RUNPIKE) $(SRCDIR)/make_rtl.pike			\
-		< $(SRCDIR)/$(UNICODEDATA) > "$@" || { rm "$@"; exit 1; }
+		$(SRCDIR)/$(UNICODEDATA) "$@" || { rm "$@"; exit 1; }
 
 unicode_module.o: $(SRCDIR)/unicode_module.c $(SRCDIR)/wordbits.h         \
 		  $(SRCDIR)/canonicals.h     			\
diff --git a/src/post_modules/Unicode/make_canonicals.pike b/src/post_modules/Unicode/make_canonicals.pike
index 8a6d9f98f7..1bc1cbba3c 100644
--- a/src/post_modules/Unicode/make_canonicals.pike
+++ b/src/post_modules/Unicode/make_canonicals.pike
@@ -1,8 +1,9 @@
 
-void main()
+void main(int argc, array(string) argv)
 {
+  function write = Stdio.File(argv[2], "wct")->write;
   mapping classes = ([]);
-  foreach( Stdio.stdin.read()/"\n", string line )
+  foreach( Stdio.read_file(argv[1])/"\n", string line )
   {
     sscanf( line, "%s#", line );
     if( !sizeof( line ) )
diff --git a/src/post_modules/Unicode/make_decompose.pike b/src/post_modules/Unicode/make_decompose.pike
index 4471f9cab0..9eb18cc17c 100644
--- a/src/post_modules/Unicode/make_decompose.pike
+++ b/src/post_modules/Unicode/make_decompose.pike
@@ -1,6 +1,7 @@
 
-void main()
+void main(int argc, array(string) argv)
 {
+  function write = Stdio.File(argv[2], "wct")->write;
 
   multiset dont = (<
     /* Script Specifics */
@@ -42,7 +43,7 @@ void main()
     return c;
   };
 
-  foreach( Stdio.stdin.read()/"\n", string line )
+  foreach( Stdio.read_file(argv[1])/"\n", string line )
   {
     sscanf( line, "%s#", line );
     if( !sizeof( line ) )
diff --git a/src/post_modules/Unicode/make_rtl.pike b/src/post_modules/Unicode/make_rtl.pike
index ddf8cf75ba..30f3695c00 100644
--- a/src/post_modules/Unicode/make_rtl.pike
+++ b/src/post_modules/Unicode/make_rtl.pike
@@ -1,9 +1,10 @@
 
-void main()
+void main(int argc, array(string) argv)
 {
+  function write = Stdio.File(argv[2], "cwt")->write;
   write("static const int _rtl[] = {\n");
   int last_mode;
-  foreach( Stdio.stdin.read()/"\n", string line )
+  foreach( Stdio.read_file(argv[1])/"\n", string line )
   {
     sscanf( line, "%s#", line );
     if( !sizeof( line ) )
@@ -23,4 +24,4 @@ void main()
     }
   }
   write("};\n");
-}
\ No newline at end of file
+}
diff --git a/src/post_modules/Unicode/make_uversion.pike b/src/post_modules/Unicode/make_uversion.pike
index 0c73f8cc1e..6bb203edaf 100644
--- a/src/post_modules/Unicode/make_uversion.pike
+++ b/src/post_modules/Unicode/make_uversion.pike
@@ -1,9 +1,10 @@
 
 void main(int n, array args)
 {
-  if(n!=2) exit(1);
+  if(n!=3) exit(1);
   string file = Stdio.read_file(args[1]);
   if(!file) exit(1);
+  function write = Stdio.File(args[2], "cwt")->write;
   string ver;
   sscanf(file, "%*sVersion %s\n", ver);
   if(!ver) exit(1);
diff --git a/src/post_modules/Unicode/make_wordbits.pike b/src/post_modules/Unicode/make_wordbits.pike
index 451987bdb7..f4f6e7d2b1 100644
--- a/src/post_modules/Unicode/make_wordbits.pike
+++ b/src/post_modules/Unicode/make_wordbits.pike
@@ -15,14 +15,15 @@ int parse_type( string s )
   }
 }
 
-void main()
+void main(int argc, array(string) argv)
 {
   int last_was,c,last_c;
+  function write = Stdio.File(argv[2], "cwt")->write;
 
   write( "static const struct {\n"
 	 "  int start; int end;\n"
 	 "} ranges[] = {\n" );
-  foreach( Stdio.stdin.read()/"\n", string line )
+  foreach( Stdio.read_file(argv[1])/"\n", string line )
   {
     sscanf( line, "%s#", line );
     if( !sizeof( line ) )
-- 
GitLab