Fossil SCM

Enhance the --tk option on diff so that it works with special characters (like "\" and "}") in the filename.

drh 2014-04-03 13:37 trunk
Commit 544d22139da66d98f857dbd0149dff036b7dc213
1 file changed +7 -2
+7 -2
--- src/diffcmd.c
+++ src/diffcmd.c
@@ -1024,12 +1024,17 @@
10241024
i++;
10251025
zTempFile = g.argv[i];
10261026
continue;
10271027
}
10281028
}
1029
- blob_append(&script, " ", 1);
1030
- shell_escape(&script, z);
1029
+ if( sqlite3_strglob("*}*",z) ){
1030
+ blob_appendf(&script, " {%/}", z);
1031
+ }else{
1032
+ int j;
1033
+ blob_append(&script, " ", 1);
1034
+ for(j=0; z[j]; j++) blob_appendf(&script, "\\%03o", (unsigned char)z[j]);
1035
+ }
10311036
}
10321037
blob_appendf(&script, "}\n%s", zDiffScript);
10331038
if( zTempFile ){
10341039
blob_write_to_file(&script, zTempFile);
10351040
fossil_print("To see diff, run: tclsh \"%s\"\n", zTempFile);
10361041
--- src/diffcmd.c
+++ src/diffcmd.c
@@ -1024,12 +1024,17 @@
1024 i++;
1025 zTempFile = g.argv[i];
1026 continue;
1027 }
1028 }
1029 blob_append(&script, " ", 1);
1030 shell_escape(&script, z);
 
 
 
 
 
1031 }
1032 blob_appendf(&script, "}\n%s", zDiffScript);
1033 if( zTempFile ){
1034 blob_write_to_file(&script, zTempFile);
1035 fossil_print("To see diff, run: tclsh \"%s\"\n", zTempFile);
1036
--- src/diffcmd.c
+++ src/diffcmd.c
@@ -1024,12 +1024,17 @@
1024 i++;
1025 zTempFile = g.argv[i];
1026 continue;
1027 }
1028 }
1029 if( sqlite3_strglob("*}*",z) ){
1030 blob_appendf(&script, " {%/}", z);
1031 }else{
1032 int j;
1033 blob_append(&script, " ", 1);
1034 for(j=0; z[j]; j++) blob_appendf(&script, "\\%03o", (unsigned char)z[j]);
1035 }
1036 }
1037 blob_appendf(&script, "}\n%s", zDiffScript);
1038 if( zTempFile ){
1039 blob_write_to_file(&script, zTempFile);
1040 fossil_print("To see diff, run: tclsh \"%s\"\n", zTempFile);
1041

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button