Fossil SCM

Make sure sbsdiff lines are escaped properly.

jan 2011-10-15 12:22 jan-sbsdiff
Commit ff41d4be8a2a3c3b35e897029269cceb83346c50
2 files changed +7 -7 +20 -8
+7 -7
--- src/diff.c
+++ src/diff.c
@@ -682,16 +682,16 @@
682682
continue;
683683
@ <tr style="display:none;">
684684
}
685685
686686
copylimline(linebuf, &c.aFrom[iFrom+j], collim);
687
- @ <td class="lineno">%d(iFrom+j+1)</td><td>%s(linebuf)</td>
687
+ @ <td class="lineno">%d(iFrom+j+1)</td><td>%h(linebuf)</td>
688688
689689
@ <td> </td>
690690
691691
copylimline(linebuf, &c.aTo[iTo+j], collim);
692
- @ <td class="lineno">%d(iTo+j+1)</td><td>%s(linebuf)</td>
692
+ @ <td class="lineno">%d(iTo+j+1)</td><td>%h(linebuf)</td>
693693
694694
@ </tr>
695695
}
696696
iFrom+=c.aEdit[i];
697697
iTo+=c.aEdit[i];
@@ -706,21 +706,21 @@
706706
@ <tr>
707707
708708
if( j<c.aEdit[i+1] ){
709709
copylimline(linebuf, &c.aFrom[iFrom+j], collim);
710710
@ <td class="changed lineno">%d(iFrom+j+1)</td>
711
- @ <td class="changed">%s(linebuf)</td>
711
+ @ <td class="changed">%h(linebuf)</td>
712712
}else{
713
- @ <td colspan="2"/>
713
+ @ <td colspan="2"/>
714714
}
715715
716716
@ <td class="changed">|</td>
717717
718718
if( j<c.aEdit[i+2] ){
719719
copylimline(linebuf, &c.aTo[iTo+j], collim);
720720
@ <td class="changed lineno">%d(iTo+j+1)</td>
721
- @ <td class="changed">%s(linebuf)</td>
721
+ @ <td class="changed">%h(linebuf)</td>
722722
}else{
723723
@ <td colspan="2"/>
724724
}
725725
726726
@ </tr>
@@ -734,11 +734,11 @@
734734
int len;
735735
@ <tr>
736736
737737
copylimline(linebuf, &c.aFrom[iFrom+j], collim);
738738
@ <td class="removed lineno">%d(iFrom+j+1)</td>
739
- @ <td class="removed">%s(linebuf)</td>
739
+ @ <td class="removed">%h(linebuf)</td>
740740
741741
@ <td>&lt;</td>
742742
743743
@ <td colspan="2"/>
744744
@@ -754,11 +754,11 @@
754754
755755
@ <td>&gt;</td>
756756
757757
copylimline(linebuf, &c.aTo[iTo+j], collim);
758758
@ <td class="added lineno">%d(iTo+j+1)</td>
759
- @ <td class="added">%s(linebuf)</td>
759
+ @ <td class="added">%h(linebuf)</td>
760760
761761
@ </tr>
762762
}
763763
iTo+=c.aEdit[i+2];
764764
}
765765
--- src/diff.c
+++ src/diff.c
@@ -682,16 +682,16 @@
682 continue;
683 @ <tr style="display:none;">
684 }
685
686 copylimline(linebuf, &c.aFrom[iFrom+j], collim);
687 @ <td class="lineno">%d(iFrom+j+1)</td><td>%s(linebuf)</td>
688
689 @ <td> </td>
690
691 copylimline(linebuf, &c.aTo[iTo+j], collim);
692 @ <td class="lineno">%d(iTo+j+1)</td><td>%s(linebuf)</td>
693
694 @ </tr>
695 }
696 iFrom+=c.aEdit[i];
697 iTo+=c.aEdit[i];
@@ -706,21 +706,21 @@
706 @ <tr>
707
708 if( j<c.aEdit[i+1] ){
709 copylimline(linebuf, &c.aFrom[iFrom+j], collim);
710 @ <td class="changed lineno">%d(iFrom+j+1)</td>
711 @ <td class="changed">%s(linebuf)</td>
712 }else{
713 @ <td colspan="2"/>
714 }
715
716 @ <td class="changed">|</td>
717
718 if( j<c.aEdit[i+2] ){
719 copylimline(linebuf, &c.aTo[iTo+j], collim);
720 @ <td class="changed lineno">%d(iTo+j+1)</td>
721 @ <td class="changed">%s(linebuf)</td>
722 }else{
723 @ <td colspan="2"/>
724 }
725
726 @ </tr>
@@ -734,11 +734,11 @@
734 int len;
735 @ <tr>
736
737 copylimline(linebuf, &c.aFrom[iFrom+j], collim);
738 @ <td class="removed lineno">%d(iFrom+j+1)</td>
739 @ <td class="removed">%s(linebuf)</td>
740
741 @ <td>&lt;</td>
742
743 @ <td colspan="2"/>
744
@@ -754,11 +754,11 @@
754
755 @ <td>&gt;</td>
756
757 copylimline(linebuf, &c.aTo[iTo+j], collim);
758 @ <td class="added lineno">%d(iTo+j+1)</td>
759 @ <td class="added">%s(linebuf)</td>
760
761 @ </tr>
762 }
763 iTo+=c.aEdit[i+2];
764 }
765
--- src/diff.c
+++ src/diff.c
@@ -682,16 +682,16 @@
682 continue;
683 @ <tr style="display:none;">
684 }
685
686 copylimline(linebuf, &c.aFrom[iFrom+j], collim);
687 @ <td class="lineno">%d(iFrom+j+1)</td><td>%h(linebuf)</td>
688
689 @ <td> </td>
690
691 copylimline(linebuf, &c.aTo[iTo+j], collim);
692 @ <td class="lineno">%d(iTo+j+1)</td><td>%h(linebuf)</td>
693
694 @ </tr>
695 }
696 iFrom+=c.aEdit[i];
697 iTo+=c.aEdit[i];
@@ -706,21 +706,21 @@
706 @ <tr>
707
708 if( j<c.aEdit[i+1] ){
709 copylimline(linebuf, &c.aFrom[iFrom+j], collim);
710 @ <td class="changed lineno">%d(iFrom+j+1)</td>
711 @ <td class="changed">%h(linebuf)</td>
712 }else{
713 @ <td colspan="2"/>
714 }
715
716 @ <td class="changed">|</td>
717
718 if( j<c.aEdit[i+2] ){
719 copylimline(linebuf, &c.aTo[iTo+j], collim);
720 @ <td class="changed lineno">%d(iTo+j+1)</td>
721 @ <td class="changed">%h(linebuf)</td>
722 }else{
723 @ <td colspan="2"/>
724 }
725
726 @ </tr>
@@ -734,11 +734,11 @@
734 int len;
735 @ <tr>
736
737 copylimline(linebuf, &c.aFrom[iFrom+j], collim);
738 @ <td class="removed lineno">%d(iFrom+j+1)</td>
739 @ <td class="removed">%h(linebuf)</td>
740
741 @ <td>&lt;</td>
742
743 @ <td colspan="2"/>
744
@@ -754,11 +754,11 @@
754
755 @ <td>&gt;</td>
756
757 copylimline(linebuf, &c.aTo[iTo+j], collim);
758 @ <td class="added lineno">%d(iTo+j+1)</td>
759 @ <td class="added">%h(linebuf)</td>
760
761 @ </tr>
762 }
763 iTo+=c.aEdit[i+2];
764 }
765
+20 -8
--- src/info.c
+++ src/info.c
@@ -1031,19 +1031,21 @@
10311031
** is present.
10321032
*/
10331033
void diff_page(void){
10341034
int v1, v2;
10351035
int isPatch;
1036
+ int sideBySide;
10361037
Blob c1, c2, diff, *pOut;
10371038
char *zV1;
10381039
char *zV2;
10391040
10401041
login_check_credentials();
10411042
if( !g.perm.Read ){ login_needed(); return; }
10421043
v1 = name_to_rid_www("v1");
10431044
v2 = name_to_rid_www("v2");
10441045
if( v1==0 || v2==0 ) fossil_redirect_home();
1046
+ sideBySide = atoi(PD("sbs","1"));
10451047
zV1 = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", v1);
10461048
zV2 = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", v2);
10471049
isPatch = P("patch")!=0;
10481050
if( isPatch ){
10491051
pOut = cgi_output_blob();
@@ -1050,15 +1052,17 @@
10501052
cgi_set_content_type("text/plain");
10511053
}else{
10521054
blob_zero(&diff);
10531055
pOut = &diff;
10541056
}
1055
- content_get(v1, &c1);
1056
- content_get(v2, &c2);
1057
- text_diff(&c1, &c2, pOut, 4, 1);
1058
- blob_reset(&c1);
1059
- blob_reset(&c2);
1057
+ if( !sideBySide ){
1058
+ content_get(v1, &c1);
1059
+ content_get(v2, &c2);
1060
+ text_diff(&c1, &c2, pOut, 4, 1);
1061
+ blob_reset(&c1);
1062
+ blob_reset(&c2);
1063
+ }
10601064
if( !isPatch ){
10611065
style_header("Diff");
10621066
style_submenu_element("Patch", "Patch", "%s/fdiff?v1=%T&v2=%T&patch",
10631067
g.zTop, P("v1"), P("v2"));
10641068
@ <h2>Differences From
@@ -1065,13 +1069,21 @@
10651069
@ Artifact <a href="%s(g.zTop)/artifact/%S(zV1)">[%S(zV1)]</a>:</h2>
10661070
object_description(v1, 0, 0);
10671071
@ <h2>To Artifact <a href="%s(g.zTop)/artifact/%S(zV2)">[%S(zV2)]</a>:</h2>
10681072
object_description(v2, 0, 0);
10691073
@ <hr />
1070
- @ <blockquote><pre>
1071
- @ %h(blob_str(&diff))
1072
- @ </pre></blockquote>
1074
+ if( sideBySide ){
1075
+ @ <table class="sbsdiff">
1076
+ @ <tr><th colspan="2" class="diffhdr">Old (%S(zV1))</th><th/>
1077
+ @ <th colspan="2" class="diffhdr">New (%S(zV2))</th></tr>
1078
+ generate_sbsdiff(zV1, zV2);
1079
+ @ </table>
1080
+ }else{
1081
+ @ <blockquote><pre>
1082
+ @ %h(blob_str(&diff))
1083
+ @ </pre></blockquote>
1084
+ }
10731085
blob_reset(&diff);
10741086
style_footer();
10751087
}
10761088
}
10771089
10781090
--- src/info.c
+++ src/info.c
@@ -1031,19 +1031,21 @@
1031 ** is present.
1032 */
1033 void diff_page(void){
1034 int v1, v2;
1035 int isPatch;
 
1036 Blob c1, c2, diff, *pOut;
1037 char *zV1;
1038 char *zV2;
1039
1040 login_check_credentials();
1041 if( !g.perm.Read ){ login_needed(); return; }
1042 v1 = name_to_rid_www("v1");
1043 v2 = name_to_rid_www("v2");
1044 if( v1==0 || v2==0 ) fossil_redirect_home();
 
1045 zV1 = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", v1);
1046 zV2 = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", v2);
1047 isPatch = P("patch")!=0;
1048 if( isPatch ){
1049 pOut = cgi_output_blob();
@@ -1050,15 +1052,17 @@
1050 cgi_set_content_type("text/plain");
1051 }else{
1052 blob_zero(&diff);
1053 pOut = &diff;
1054 }
1055 content_get(v1, &c1);
1056 content_get(v2, &c2);
1057 text_diff(&c1, &c2, pOut, 4, 1);
1058 blob_reset(&c1);
1059 blob_reset(&c2);
 
 
1060 if( !isPatch ){
1061 style_header("Diff");
1062 style_submenu_element("Patch", "Patch", "%s/fdiff?v1=%T&v2=%T&patch",
1063 g.zTop, P("v1"), P("v2"));
1064 @ <h2>Differences From
@@ -1065,13 +1069,21 @@
1065 @ Artifact <a href="%s(g.zTop)/artifact/%S(zV1)">[%S(zV1)]</a>:</h2>
1066 object_description(v1, 0, 0);
1067 @ <h2>To Artifact <a href="%s(g.zTop)/artifact/%S(zV2)">[%S(zV2)]</a>:</h2>
1068 object_description(v2, 0, 0);
1069 @ <hr />
1070 @ <blockquote><pre>
1071 @ %h(blob_str(&diff))
1072 @ </pre></blockquote>
 
 
 
 
 
 
 
 
1073 blob_reset(&diff);
1074 style_footer();
1075 }
1076 }
1077
1078
--- src/info.c
+++ src/info.c
@@ -1031,19 +1031,21 @@
1031 ** is present.
1032 */
1033 void diff_page(void){
1034 int v1, v2;
1035 int isPatch;
1036 int sideBySide;
1037 Blob c1, c2, diff, *pOut;
1038 char *zV1;
1039 char *zV2;
1040
1041 login_check_credentials();
1042 if( !g.perm.Read ){ login_needed(); return; }
1043 v1 = name_to_rid_www("v1");
1044 v2 = name_to_rid_www("v2");
1045 if( v1==0 || v2==0 ) fossil_redirect_home();
1046 sideBySide = atoi(PD("sbs","1"));
1047 zV1 = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", v1);
1048 zV2 = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", v2);
1049 isPatch = P("patch")!=0;
1050 if( isPatch ){
1051 pOut = cgi_output_blob();
@@ -1050,15 +1052,17 @@
1052 cgi_set_content_type("text/plain");
1053 }else{
1054 blob_zero(&diff);
1055 pOut = &diff;
1056 }
1057 if( !sideBySide ){
1058 content_get(v1, &c1);
1059 content_get(v2, &c2);
1060 text_diff(&c1, &c2, pOut, 4, 1);
1061 blob_reset(&c1);
1062 blob_reset(&c2);
1063 }
1064 if( !isPatch ){
1065 style_header("Diff");
1066 style_submenu_element("Patch", "Patch", "%s/fdiff?v1=%T&v2=%T&patch",
1067 g.zTop, P("v1"), P("v2"));
1068 @ <h2>Differences From
@@ -1065,13 +1069,21 @@
1069 @ Artifact <a href="%s(g.zTop)/artifact/%S(zV1)">[%S(zV1)]</a>:</h2>
1070 object_description(v1, 0, 0);
1071 @ <h2>To Artifact <a href="%s(g.zTop)/artifact/%S(zV2)">[%S(zV2)]</a>:</h2>
1072 object_description(v2, 0, 0);
1073 @ <hr />
1074 if( sideBySide ){
1075 @ <table class="sbsdiff">
1076 @ <tr><th colspan="2" class="diffhdr">Old (%S(zV1))</th><th/>
1077 @ <th colspan="2" class="diffhdr">New (%S(zV2))</th></tr>
1078 generate_sbsdiff(zV1, zV2);
1079 @ </table>
1080 }else{
1081 @ <blockquote><pre>
1082 @ %h(blob_str(&diff))
1083 @ </pre></blockquote>
1084 }
1085 blob_reset(&diff);
1086 style_footer();
1087 }
1088 }
1089
1090

Keyboard Shortcuts

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