[display available repos when calling cgi with no repo Will **20040717002144] hunk ./cgi/darcs.cgi.in 61 +$xslt_repos = "$template_root/repos.xslt"; hunk ./cgi/darcs.cgi.in 200 +# get a repository listing as XML output +sub repo_listing { + my ($fh, $fname) = make_xml("", ""); + + print $fh "\n"; + foreach $repo (glob("$repository_root/*")) { + if (-d "$repo/_darcs") { + $name = basename($repo); + printf $fh qq( \n); + } + } + print $fh "\n"; + + finish_xml($fh); + return ($fh, $fname); +} + hunk ./cgi/darcs.cgi.in 232 + # untaint simple parameters, which can only have chars matching \w+ + my $cmd = safe_param('c', '^(\w+)$', 'browse'); + my $sort = safe_param('s', '^(\w+)$', ''); + + # set the xslt processing arguments + my $xslt_args = qq { + --stringparam cgi-program '$script_name' + --stringparam sort-by '$sort' + --stringparam stylesheet '$stylesheet' + }; + $xslt_args =~ s/\s+/ /gm; + hunk ./cgi/darcs.cgi.in 247 - - # don't allow any shell meta characters in paths - $path =~ qr@^([^\\!\$\^&*()\[\]{}<>~`|';"?\r\n]+)$@ or \ - die qq(bad path_info "$path"); - $path = $1; - + hunk ./cgi/darcs.cgi.in 250 - open (STYLES_CSS, "@sysconfdir@/darcs/styles.css") or + open (STYLES_CSS, "@sysconfdir@/darcs/styles.css") or hunk ./cgi/darcs.cgi.in 260 + # when no repository is requested display available repositories + if (length($path) < 2) { + ($fh, $fname) = repo_listing(); + transform($fname, $xslt_repos, $xslt_args); + File::Temp::unlink0($fn, $fname); + return; + } + + # don't allow any shell meta characters in paths + $path =~ qr@^([^\\!\$\^&*()\[\]{}<>~`|';"?\r\n]+)$@ or \ + die qq(bad path_info "$path"); + $path = $1; + hunk ./cgi/darcs.cgi.in 284 - - # untaint simple parameters, which can only have chars matching \w+ - my $cmd = safe_param('c', '^(\w+)$', 'browse'); - my $sort = safe_param('s', '^(\w+)$', ''); - - # set the xslt processing arguments - my $xslt_args = qq { - --stringparam cgi-program '$script_name' - --stringparam sort-by '$sort' - --stringparam stylesheet '$stylesheet' - }; - $xslt_args =~ s/\s+/ /gm; addfile ./cgi/xslt/repos.xslt hunk ./cgi/xslt/repos.xslt 1 + + + + / + + + + + + darcs repository viewer + + + + +

Available Repositories

+ + + +
+ + +
+ + + + + + + + + + + + +