wine/libs/unicode cpmap.pl

Alexandre Julliard julliard at wine.codeweavers.com
Thu Nov 17 05:43:10 CST 2005


ChangeSet ID:	21315
CVSROOT:	/opt/cvs-commit
Module name:	wine
Changes by:	julliard at winehq.org	2005/11/17 05:43:10

Modified files:
	libs/unicode   : cpmap.pl 

Log message:
	Only update modified files.

Patch: http://cvs.winehq.org/patch.py?id=21315

Old revision  New revision  Changes     Path
 1.9           1.10          +28 -6      wine/libs/unicode/cpmap.pl

Index: wine/libs/unicode/cpmap.pl
diff -u -p wine/libs/unicode/cpmap.pl:1.9 wine/libs/unicode/cpmap.pl:1.10
--- wine/libs/unicode/cpmap.pl:1.9	17 Nov 2005 11:43:10 -0000
+++ wine/libs/unicode/cpmap.pl	17 Nov 2005 11:43:10 -0000
@@ -577,7 +577,7 @@ sub DUMP_SORTKEYS
 
     # output the range offsets
 
-    open OUTPUT,">collation.c" or die "Cannot create collation.c";
+    open OUTPUT,">collation.c.new" or die "Cannot create collation.c";
     printf "Building collation.c\n";
     printf OUTPUT "/* Unicode collation element table */\n";
     printf OUTPUT "/* generated from %s */\n", $SORTKEYS;
@@ -602,6 +602,7 @@ sub DUMP_SORTKEYS
     }
     printf OUTPUT "\n};\n";
     close OUTPUT;
+    save_file("collation.c");
 }
 
 
@@ -870,7 +871,7 @@ sub DUMP_LB_RANGES
 # dump the case mapping tables
 sub DUMP_CASE_MAPPINGS
 {
-    open OUTPUT,">casemap.c" or die "Cannot create casemap.c";
+    open OUTPUT,">casemap.c.new" or die "Cannot create casemap.c";
     printf "Building casemap.c\n";
     printf OUTPUT "/* Unicode case mappings */\n";
     printf OUTPUT "/* Automatically generated; DO NOT EDIT!! */\n\n";
@@ -881,6 +882,7 @@ sub DUMP_CASE_MAPPINGS
     DUMP_CASE_TABLE( "wine_digitmap",  @digitmap_table );
     DUMP_CASE_TABLE( "wine_compatmap", @compatmap_table );
     close OUTPUT;
+    save_file("casemap.c");
 }
 
 
@@ -957,7 +959,7 @@ sub DUMP_CASE_TABLE
 # dump the ctype tables
 sub DUMP_CTYPE_TABLES
 {
-    open OUTPUT,">wctype.c" or die "Cannot create wctype.c";
+    open OUTPUT,">wctype.c.new" or die "Cannot create wctype.c";
     printf "Building wctype.c\n";
     printf OUTPUT "/* Unicode ctype tables */\n";
     printf OUTPUT "/* Automatically generated; DO NOT EDIT!! */\n\n";
@@ -994,6 +996,7 @@ sub DUMP_CTYPE_TABLES
     printf OUTPUT "    /* values */\n%s\n};\n", DUMP_ARRAY( "0x%04x", 0, @array[256..$#array] );
 
     close OUTPUT;
+    save_file("wctype.c");
 }
 
 
@@ -1001,7 +1004,7 @@ sub DUMP_CTYPE_TABLES
 # dump the char composition tables
 sub DUMP_COMPOSE_TABLES
 {
-    open OUTPUT,">compose.c" or die "Cannot create compose.c";
+    open OUTPUT,">compose.c.new" or die "Cannot create compose.c";
     printf "Building compose.c\n";
     printf OUTPUT "/* Unicode char composition */\n";
     printf OUTPUT "/* Automatically generated; DO NOT EDIT!! */\n\n";
@@ -1131,6 +1134,7 @@ sub DUMP_COMPOSE_TABLES
 
     printf OUTPUT "\n};\n";
     close OUTPUT;
+    save_file("compose.c");
 }
 
 
@@ -1150,7 +1154,7 @@ sub HANDLE_FILE
     ADD_DEFAULT_MAPPINGS();
 
     my $output = sprintf "c_%03d.c", $codepage;
-    open OUTPUT,">$output" or die "Cannot create $output";
+    open OUTPUT,">$output.new" or die "Cannot create $output";
 
     printf "Building %s from %s (%s)\n", $output, $filename, $comment;
 
@@ -1164,6 +1168,23 @@ sub HANDLE_FILE
     if ($#lead_bytes == -1) { DUMP_SBCS_TABLE( $codepage, $comment ); }
     else { DUMP_DBCS_TABLE( $codepage, $comment ); }
     close OUTPUT;
+    save_file($output);
+}
+
+
+################################################################
+# save a file if modified
+sub save_file($)
+{
+    my $file = shift;
+    if (!system "cmp $file $file.new >/dev/null")
+    {
+        unlink "$file.new";
+    }
+    else
+    {
+        rename "$file.new", "$file";
+    }
 }
 
 
@@ -1209,7 +1230,8 @@ sub REPLACE_IN_FILE
 	if (/\#\#\# cpmap end \#\#\#/) { push @lines, "\n", $_; last; }
     }
     push @lines, <FILE>;
-    open(FILE,">$name") or die "Can't modify $name";
+    open(FILE,">$name.new") or die "Can't modify $name";
     print FILE @lines;
     close(FILE);
+    save_file($name);
 }



More information about the wine-cvs mailing list