+svn_path(){
+ tmp="${url%/*}"
+ until [ "$tmp" = "${tmp#/}" ]; do
+ echo "<a href='?p=Subversion&i=$tmp/&r=$rev'>${tmp##*/}/</a> "
+ tmp="${tmp%/*}"
+ done \
+ | tac
+ echo "${url##*/}"
+}
+
+svn_revisions(){
+ for i in {1.."$lastrev"}; do
+ echo "<a href='?p=Subversion&i=$url&r=$i'>$i</a>"
+ done
+}
+
+svn_changelog(){
+ svn log "${baseuri}/${url}" \
+ | sed -rn '2,${s:^-+$:</div>:g;
+ s:^r([0-9]+) \| ([a-zA-Z0-9]+) \| ([0-9: -]+) .+$:<div class="changelog"><h2>Revision \1 by \2<br>at \3</h2>:g;p}'
+}
+
+svn_showurl(){
+ if [ "${url%/}" != "$url" ]; then
+ # we are showing a directory
+ svn propget svn:externals -r "$rev" "${baseuri}/${url}" \
+ | sed -rn "s;^([^ ]+) (.+)$;<span class='extern'>\2/</span> [external include from <a href='\1'>\1</a>]<br>;p"
+
+ svn ls -r "$rev" "${baseuri}/${url}" \
+ | sed -r "s:^.*$:<a href='?p=Subversion\&i=$url&\&r=$rev'>&</a><br>:g"
+ else
+ # we are showing a file
+ if [ "$url" = "${url#*.}" ] && \
+ lang=txt \
+ || lang="$(source-highlight --lang-list |grep -o "^${url##*.} ")"
+ lang="${lang:-sh}"
+ lang="${lang% }"
+ svn cat -r "$rev" "${baseuri}/${url}" \
+ | source-highlight -s "$lang"
+ fi
+}
+