Fossil SCM

Correctly escape ZIP and Tarball filenames for URLs. Limit SHA1 hashs on diff URLs using %S instead of %s. Limit the number of links to follow off of each page in the many-www.tcl test script.

drh 2012-11-08 20:51 trunk
Commit 76e8600b94210e4a83288264a278f423051e4b1d
+1 -1
--- src/finfo.c
+++ src/finfo.c
@@ -357,11 +357,11 @@
357357
hyperlink_to_user(zUser, zDate, "");
358358
@ branch: %h(zBr))
359359
if( g.perm.Hyperlink && zUuid ){
360360
const char *z = zFilename;
361361
if( fpid ){
362
- @ %z(href("%R/fdiff?v1=%s&v2=%s",zPUuid,zUuid))[diff]</a>
362
+ @ %z(href("%R/fdiff?v1=%S&v2=%S",zPUuid,zUuid))[diff]</a>
363363
}
364364
@ %z(href("%R/annotate?checkin=%S&filename=%h",zCkin,z))
365365
@ [annotate]</a>
366366
}
367367
@ </td></tr>
368368
--- src/finfo.c
+++ src/finfo.c
@@ -357,11 +357,11 @@
357 hyperlink_to_user(zUser, zDate, "");
358 @ branch: %h(zBr))
359 if( g.perm.Hyperlink && zUuid ){
360 const char *z = zFilename;
361 if( fpid ){
362 @ %z(href("%R/fdiff?v1=%s&v2=%s",zPUuid,zUuid))[diff]</a>
363 }
364 @ %z(href("%R/annotate?checkin=%S&filename=%h",zCkin,z))
365 @ [annotate]</a>
366 }
367 @ </td></tr>
368
--- src/finfo.c
+++ src/finfo.c
@@ -357,11 +357,11 @@
357 hyperlink_to_user(zUser, zDate, "");
358 @ branch: %h(zBr))
359 if( g.perm.Hyperlink && zUuid ){
360 const char *z = zFilename;
361 if( fpid ){
362 @ %z(href("%R/fdiff?v1=%S&v2=%S",zPUuid,zUuid))[diff]</a>
363 }
364 @ %z(href("%R/annotate?checkin=%S&filename=%h",zCkin,z))
365 @ [annotate]</a>
366 }
367 @ </td></tr>
368
+2 -2
--- src/info.c
+++ src/info.c
@@ -617,16 +617,16 @@
617617
@ </td></tr>
618618
}
619619
620620
/* The Download: line */
621621
if( g.perm.Zip ){
622
- char *zUrl = mprintf("%R/tarball/%s-%S.tar.gz?uuid=%s",
622
+ char *zUrl = mprintf("%R/tarball/%t-%S.tar.gz?uuid=%s",
623623
zProjName, zUuid, zUuid);
624624
@ </td></tr>
625625
@ <tr><th>Downloads:</th><td>
626626
@ %z(href("%s",zUrl))Tarball</a>
627
- @ | %z(href("%R/zip/%s-%S.zip?uuid=%s",zProjName,zUuid,zUuid))
627
+ @ | %z(href("%R/zip/%t-%S.zip?uuid=%s",zProjName,zUuid,zUuid))
628628
@ ZIP archive</a>
629629
fossil_free(zUrl);
630630
}
631631
@ </td></tr>
632632
@ <tr><th>Other&nbsp;Links:</th>
633633
--- src/info.c
+++ src/info.c
@@ -617,16 +617,16 @@
617 @ </td></tr>
618 }
619
620 /* The Download: line */
621 if( g.perm.Zip ){
622 char *zUrl = mprintf("%R/tarball/%s-%S.tar.gz?uuid=%s",
623 zProjName, zUuid, zUuid);
624 @ </td></tr>
625 @ <tr><th>Downloads:</th><td>
626 @ %z(href("%s",zUrl))Tarball</a>
627 @ | %z(href("%R/zip/%s-%S.zip?uuid=%s",zProjName,zUuid,zUuid))
628 @ ZIP archive</a>
629 fossil_free(zUrl);
630 }
631 @ </td></tr>
632 @ <tr><th>Other&nbsp;Links:</th>
633
--- src/info.c
+++ src/info.c
@@ -617,16 +617,16 @@
617 @ </td></tr>
618 }
619
620 /* The Download: line */
621 if( g.perm.Zip ){
622 char *zUrl = mprintf("%R/tarball/%t-%S.tar.gz?uuid=%s",
623 zProjName, zUuid, zUuid);
624 @ </td></tr>
625 @ <tr><th>Downloads:</th><td>
626 @ %z(href("%s",zUrl))Tarball</a>
627 @ | %z(href("%R/zip/%t-%S.zip?uuid=%s",zProjName,zUuid,zUuid))
628 @ ZIP archive</a>
629 fossil_free(zUrl);
630 }
631 @ </td></tr>
632 @ <tr><th>Other&nbsp;Links:</th>
633
--- test/many-www.tcl
+++ test/many-www.tcl
@@ -64,12 +64,15 @@
6464
puts [format {%.3fs} [expr {$ms/1000000.0}]]
6565
flush stdout
6666
if {[string length $x]>1000000} {
6767
set x [string range $x 0 1000000]
6868
}
69
+ set k 0
6970
while {[regexp {<[aA] .*?href="(/[a-z].*?)".*?>(.*)$} $x all url tail]} {
7071
# if {$npending>2*($limit - $i)} break
72
+ incr k
73
+ if {$k>100} break
7174
set u2 [string map {&lt; < &gt; > &quot; \" &amp; &} $url]
7275
if {![info exists seen($u2)]} {
7376
set next($u2) 1
7477
set seen($u2) 1
7578
}
7679
--- test/many-www.tcl
+++ test/many-www.tcl
@@ -64,12 +64,15 @@
64 puts [format {%.3fs} [expr {$ms/1000000.0}]]
65 flush stdout
66 if {[string length $x]>1000000} {
67 set x [string range $x 0 1000000]
68 }
 
69 while {[regexp {<[aA] .*?href="(/[a-z].*?)".*?>(.*)$} $x all url tail]} {
70 # if {$npending>2*($limit - $i)} break
 
 
71 set u2 [string map {&lt; < &gt; > &quot; \" &amp; &} $url]
72 if {![info exists seen($u2)]} {
73 set next($u2) 1
74 set seen($u2) 1
75 }
76
--- test/many-www.tcl
+++ test/many-www.tcl
@@ -64,12 +64,15 @@
64 puts [format {%.3fs} [expr {$ms/1000000.0}]]
65 flush stdout
66 if {[string length $x]>1000000} {
67 set x [string range $x 0 1000000]
68 }
69 set k 0
70 while {[regexp {<[aA] .*?href="(/[a-z].*?)".*?>(.*)$} $x all url tail]} {
71 # if {$npending>2*($limit - $i)} break
72 incr k
73 if {$k>100} break
74 set u2 [string map {&lt; < &gt; > &quot; \" &amp; &} $url]
75 if {![info exists seen($u2)]} {
76 set next($u2) 1
77 set seen($u2) 1
78 }
79

Keyboard Shortcuts

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