Hide Attic directories by default; show files that are in the Attic in their
old location with an "(in the Attic)" notation. Make queries sticky so that only_on_branch &c can live across directory traversals. Learn about file death.
This commit is contained in:
parent
53a4c623f4
commit
2437b7a96d
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/www/; revision=1754
2 changed files with 144 additions and 20 deletions
|
|
@ -70,8 +70,8 @@ if (!-d $cvsroot) {
|
||||||
&fatal("500 Internal Error",'$CVSROOT not found!');
|
&fatal("500 Internal Error",'$CVSROOT not found!');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($q = $ENV{'QUERY_STRING'}) {
|
if ($query = $ENV{'QUERY_STRING'}) {
|
||||||
foreach (split(/&/, $q)) {
|
foreach (split(/&/, $query)) {
|
||||||
s/%(..)/sprintf("%c", hex($1))/ge; # unquote %-quoted
|
s/%(..)/sprintf("%c", hex($1))/ge; # unquote %-quoted
|
||||||
if (/(\S+)=(.*)/) {
|
if (/(\S+)=(.*)/) {
|
||||||
$input{$1} = $2;
|
$input{$1} = $2;
|
||||||
|
|
@ -79,6 +79,7 @@ if ($q = $ENV{'QUERY_STRING'}) {
|
||||||
$input{$_}++;
|
$input{$_}++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
$query = "?" . $query;
|
||||||
}
|
}
|
||||||
if (-d $fullname) {
|
if (-d $fullname) {
|
||||||
opendir(DIR, $fullname) || &fatal("404 Not Found","$where: $!");
|
opendir(DIR, $fullname) || &fatal("404 Not Found","$where: $!");
|
||||||
|
|
@ -97,27 +98,68 @@ if (-d $fullname) {
|
||||||
# provides the results that I want in most browsers. Another
|
# provides the results that I want in most browsers. Another
|
||||||
# case of layout spooging up HTML.
|
# case of layout spooging up HTML.
|
||||||
print "<MENU>\n";
|
print "<MENU>\n";
|
||||||
foreach (sort @dir) {
|
lookingforattic:
|
||||||
|
for ($i = 0; $i <= $#dir; $i++) {
|
||||||
|
if ($dir[$i] eq "Attic") {
|
||||||
|
last lookingforattic;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!$input{"showattic"} && ($i <= $#dir) &&
|
||||||
|
opendir(DIR, $fullname . "/Attic")) {
|
||||||
|
splice(@dir, $i, 1,
|
||||||
|
grep((s|^|Attic/|,!m|/\.|), readdir(DIR)));
|
||||||
|
closedir(DIR);
|
||||||
|
}
|
||||||
|
# Sort without the Attic/ pathname.
|
||||||
|
foreach (sort {($c=$a)=~s|.*/||;($d=$b)=~s|.*/||;($c cmp $d)} @dir) {
|
||||||
if ($_ eq '.') {
|
if ($_ eq '.') {
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
|
if (s|^Attic/||) {
|
||||||
|
$attic = " (in the Attic)";
|
||||||
|
} else {
|
||||||
|
$attic = "";
|
||||||
|
}
|
||||||
if ($_ eq '..') {
|
if ($_ eq '..') {
|
||||||
next if ($where eq '');
|
next if ($where eq '');
|
||||||
($updir = $scriptwhere) =~ s|[^/]+$||;
|
($updir = $scriptwhere) =~ s|[^/]+$||;
|
||||||
print "<IMG SRC=\"/icons/back.gif\"> ",
|
print "<IMG SRC=\"/icons/back.gif\"> ",
|
||||||
&link("Previous Directory",$updir), "<BR>";
|
&link("Previous Directory",$updir . $query), "<BR>";
|
||||||
# print "<IMG SRC=???> ",
|
# print "<IMG SRC=???> ",
|
||||||
# &link("Directory-wide diffs", $scriptwhere . '/*'), "<BR>";
|
# &link("Directory-wide diffs", $scriptwhere . '/*'), "<BR>";
|
||||||
} elsif (-d $fullname . "/" . $_) {
|
} elsif (-d $fullname . "/" . $_) {
|
||||||
print "<IMG SRC=\"/icons/dir.gif\"> ",
|
print "<IMG SRC=\"/icons/dir.gif\"> ",
|
||||||
&link($_ . "/", $scriptwhere . '/' . $_ . '/'), "<BR>";
|
&link($_ . "/", $scriptwhere . '/' . $_ . '/' . $query), $attic, "<BR>";
|
||||||
} elsif (s/,v$//) {
|
} elsif (s/,v$//) {
|
||||||
# TODO: add date/time? How about sorting?
|
# TODO: add date/time? How about sorting?
|
||||||
print "<IMG SRC=\"/icons/text.gif\"> ",
|
print "<IMG SRC=\"/icons/text.gif\"> ",
|
||||||
&link($_, $scriptwhere . '/' . $_), "<BR>";
|
&link($_, $scriptwhere . '/' .
|
||||||
|
($attic ? "Attic/" : "") . $_ . $query),
|
||||||
|
$attic, "<BR>";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
print "</MENU>\n";
|
print "</MENU>\n";
|
||||||
|
if ($input{"only_on_branch"}) {
|
||||||
|
print "<HR><FORM METHOD=\"GET\" ACTION=\"${scriptwhere}\">\n";
|
||||||
|
print "Currently showing only branch $input{'only_on_branch'}.\n";
|
||||||
|
$input{"only_on_branch"}="";
|
||||||
|
foreach $k (keys %input) {
|
||||||
|
print "<INPUT TYPE=hidden NAME=$k VALUE=$input{$k}>\n" if $input{$k};
|
||||||
|
}
|
||||||
|
print "<INPUT TYPE=SUBMIT VALUE=\"Show all branches\">\n";
|
||||||
|
print "</FORM>\n";
|
||||||
|
}
|
||||||
|
$formwhere = $scriptwhere;
|
||||||
|
$formwhere =~ s|Attic/?$|| if ($input{"showattic"});
|
||||||
|
print "<HR><FORM METHOD=\"GET\" ACTION=\"${formwhere}\">\n";
|
||||||
|
$input{"showattic"}=!$input{"showattic"};
|
||||||
|
foreach $k (keys %input) {
|
||||||
|
print "<INPUT TYPE=hidden NAME=$k VALUE=$input{$k}>\n" if $input{$k};
|
||||||
|
}
|
||||||
|
print "<INPUT TYPE=SUBMIT VALUE=\"";
|
||||||
|
print ($input{"showattic"} ? "Show" : "Hide");
|
||||||
|
print " attic directories\">\n";
|
||||||
|
print "</FORM>\n";
|
||||||
print &html_footer;
|
print &html_footer;
|
||||||
print "</BODY></HTML>\n";
|
print "</BODY></HTML>\n";
|
||||||
} elsif (-f $fullname . ',v') {
|
} elsif (-f $fullname . ',v') {
|
||||||
|
|
@ -178,7 +220,7 @@ if (-d $fullname) {
|
||||||
}
|
}
|
||||||
$_ = <RCS>;
|
$_ = <RCS>;
|
||||||
print "D:", $_ if ($verbose);
|
print "D:", $_ if ($verbose);
|
||||||
if (m|^date:\s+(\d+)/(\d+)/(\d+)\s+(\d+):(\d+):(\d+);\s+author:\s+(\S+);|) {
|
if (m|^date:\s+(\d+)/(\d+)/(\d+)\s+(\d+):(\d+):(\d+);\s+author:\s+(\S+);\s+state:\s+(\S+);|) {
|
||||||
$yr = $1;
|
$yr = $1;
|
||||||
# damn 2-digit year routines
|
# damn 2-digit year routines
|
||||||
if ($yr > 100) {
|
if ($yr > 100) {
|
||||||
|
|
@ -186,6 +228,7 @@ if (-d $fullname) {
|
||||||
}
|
}
|
||||||
$date{$rev} = &timelocal($6,$5,$4,$3,$2 - 1,$yr);
|
$date{$rev} = &timelocal($6,$5,$4,$3,$2 - 1,$yr);
|
||||||
$author{$rev} = $7;
|
$author{$rev} = $7;
|
||||||
|
$state{$rev} = $8;
|
||||||
} else {
|
} else {
|
||||||
&fatal("500 Internal Error", "Error parsing RCS output: $_");
|
&fatal("500 Internal Error", "Error parsing RCS output: $_");
|
||||||
}
|
}
|
||||||
|
|
@ -266,8 +309,8 @@ if (-d $fullname) {
|
||||||
}
|
}
|
||||||
print "Done associating revisions with branches\n" if ($verbose);
|
print "Done associating revisions with branches\n" if ($verbose);
|
||||||
print &html_header("CVS log for $where");
|
print &html_header("CVS log for $where");
|
||||||
($upwhere = $where) =~ s|[^/]+$||;
|
($upwhere = $where) =~ s|(Attic/)?[^/]+$||;
|
||||||
print "Up to ", &link($upwhere,$scriptname . "/" . $upwhere);
|
print "Up to ", &link($upwhere,$scriptname . "/" . $upwhere . $query);
|
||||||
print "<BR>\n";
|
print "<BR>\n";
|
||||||
print "<A HREF=\"#diff\">Request diff between arbitrary revisions</A>\n";
|
print "<A HREF=\"#diff\">Request diff between arbitrary revisions</A>\n";
|
||||||
print "<HR NOSHADE>\n";
|
print "<HR NOSHADE>\n";
|
||||||
|
|
@ -362,6 +405,9 @@ if (-d $fullname) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ($state{$_} eq "dead") {
|
||||||
|
print "<BR><B><I>FILE REMOVED</I></B>\n";
|
||||||
|
}
|
||||||
print "<PRE>\n";
|
print "<PRE>\n";
|
||||||
print &htmlify($log{$_}, 1);
|
print &htmlify($log{$_}, 1);
|
||||||
print "</PRE><HR NOSHADE>\n";
|
print "</PRE><HR NOSHADE>\n";
|
||||||
|
|
@ -398,8 +444,13 @@ if (-d $fullname) {
|
||||||
print "<FORM METHOD=\"GET\" ACTION=\"$scriptwhere\">\n";
|
print "<FORM METHOD=\"GET\" ACTION=\"$scriptwhere\">\n";
|
||||||
print "Branch: \n";
|
print "Branch: \n";
|
||||||
print "<SELECT NAME=\"only_on_branch\">\n";
|
print "<SELECT NAME=\"only_on_branch\">\n";
|
||||||
|
print "<OPTION VALUE=\"\"";
|
||||||
|
print " SELECTED" if ($input{"only_on_branch"} eq "");
|
||||||
|
print ">Show all branches\n";
|
||||||
foreach (sort @branchnames) {
|
foreach (sort @branchnames) {
|
||||||
print "<OPTION>${_}\n";
|
print "<OPTION";
|
||||||
|
print " SELECTED" if ($input{"only_on_branch"} eq $_);
|
||||||
|
print ">${_}\n";
|
||||||
}
|
}
|
||||||
print "</SELECT>\n";
|
print "</SELECT>\n";
|
||||||
print "<INPUT TYPE=SUBMIT VALUE=\"View Branch\">\n";
|
print "<INPUT TYPE=SUBMIT VALUE=\"View Branch\">\n";
|
||||||
|
|
@ -408,9 +459,20 @@ if (-d $fullname) {
|
||||||
print "</BODY></HTML>\n";
|
print "</BODY></HTML>\n";
|
||||||
} elsif ($fullname =~ s/\.diff$// && -f $fullname . ",v" &&
|
} elsif ($fullname =~ s/\.diff$// && -f $fullname . ",v" &&
|
||||||
$input{'r1'} && $input{'r2'}) {
|
$input{'r1'} && $input{'r2'}) {
|
||||||
|
# Allow diffs using the ".diff" extension
|
||||||
|
# so that browsers that default to the URL
|
||||||
|
# for a save filename don't save diff's as
|
||||||
|
# e.g. foo.c
|
||||||
&dodiff($fullname, $input{'r1'}, $input{'tr1'},
|
&dodiff($fullname, $input{'r1'}, $input{'tr1'},
|
||||||
$input{'r2'}, $input{'tr2'}, $input{'f'});
|
$input{'r2'}, $input{'tr2'}, $input{'f'});
|
||||||
exit;
|
exit;
|
||||||
|
} elsif (($newname = $fullname) =~ s|/([^/]+)$|/Attic/$1| &&
|
||||||
|
-f $newname . ",v") {
|
||||||
|
# The file has been removed and is in the Attic.
|
||||||
|
# Send a redirect pointing to the file in the Attic.
|
||||||
|
($newplace = $scriptwhere) =~ s|/([^/]+)$|/Attic/$1|;
|
||||||
|
&redirect($newplace);
|
||||||
|
exit;
|
||||||
} elsif (0 && (@files = &safeglob($fullname . ",v"))) {
|
} elsif (0 && (@files = &safeglob($fullname . ",v"))) {
|
||||||
print "Content-type: text/plain\n\n";
|
print "Content-type: text/plain\n\n";
|
||||||
print "You matched the following files:\n";
|
print "You matched the following files:\n";
|
||||||
|
|
|
||||||
|
|
@ -70,8 +70,8 @@ if (!-d $cvsroot) {
|
||||||
&fatal("500 Internal Error",'$CVSROOT not found!');
|
&fatal("500 Internal Error",'$CVSROOT not found!');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($q = $ENV{'QUERY_STRING'}) {
|
if ($query = $ENV{'QUERY_STRING'}) {
|
||||||
foreach (split(/&/, $q)) {
|
foreach (split(/&/, $query)) {
|
||||||
s/%(..)/sprintf("%c", hex($1))/ge; # unquote %-quoted
|
s/%(..)/sprintf("%c", hex($1))/ge; # unquote %-quoted
|
||||||
if (/(\S+)=(.*)/) {
|
if (/(\S+)=(.*)/) {
|
||||||
$input{$1} = $2;
|
$input{$1} = $2;
|
||||||
|
|
@ -79,6 +79,7 @@ if ($q = $ENV{'QUERY_STRING'}) {
|
||||||
$input{$_}++;
|
$input{$_}++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
$query = "?" . $query;
|
||||||
}
|
}
|
||||||
if (-d $fullname) {
|
if (-d $fullname) {
|
||||||
opendir(DIR, $fullname) || &fatal("404 Not Found","$where: $!");
|
opendir(DIR, $fullname) || &fatal("404 Not Found","$where: $!");
|
||||||
|
|
@ -97,27 +98,68 @@ if (-d $fullname) {
|
||||||
# provides the results that I want in most browsers. Another
|
# provides the results that I want in most browsers. Another
|
||||||
# case of layout spooging up HTML.
|
# case of layout spooging up HTML.
|
||||||
print "<MENU>\n";
|
print "<MENU>\n";
|
||||||
foreach (sort @dir) {
|
lookingforattic:
|
||||||
|
for ($i = 0; $i <= $#dir; $i++) {
|
||||||
|
if ($dir[$i] eq "Attic") {
|
||||||
|
last lookingforattic;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!$input{"showattic"} && ($i <= $#dir) &&
|
||||||
|
opendir(DIR, $fullname . "/Attic")) {
|
||||||
|
splice(@dir, $i, 1,
|
||||||
|
grep((s|^|Attic/|,!m|/\.|), readdir(DIR)));
|
||||||
|
closedir(DIR);
|
||||||
|
}
|
||||||
|
# Sort without the Attic/ pathname.
|
||||||
|
foreach (sort {($c=$a)=~s|.*/||;($d=$b)=~s|.*/||;($c cmp $d)} @dir) {
|
||||||
if ($_ eq '.') {
|
if ($_ eq '.') {
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
|
if (s|^Attic/||) {
|
||||||
|
$attic = " (in the Attic)";
|
||||||
|
} else {
|
||||||
|
$attic = "";
|
||||||
|
}
|
||||||
if ($_ eq '..') {
|
if ($_ eq '..') {
|
||||||
next if ($where eq '');
|
next if ($where eq '');
|
||||||
($updir = $scriptwhere) =~ s|[^/]+$||;
|
($updir = $scriptwhere) =~ s|[^/]+$||;
|
||||||
print "<IMG SRC=\"/icons/back.gif\"> ",
|
print "<IMG SRC=\"/icons/back.gif\"> ",
|
||||||
&link("Previous Directory",$updir), "<BR>";
|
&link("Previous Directory",$updir . $query), "<BR>";
|
||||||
# print "<IMG SRC=???> ",
|
# print "<IMG SRC=???> ",
|
||||||
# &link("Directory-wide diffs", $scriptwhere . '/*'), "<BR>";
|
# &link("Directory-wide diffs", $scriptwhere . '/*'), "<BR>";
|
||||||
} elsif (-d $fullname . "/" . $_) {
|
} elsif (-d $fullname . "/" . $_) {
|
||||||
print "<IMG SRC=\"/icons/dir.gif\"> ",
|
print "<IMG SRC=\"/icons/dir.gif\"> ",
|
||||||
&link($_ . "/", $scriptwhere . '/' . $_ . '/'), "<BR>";
|
&link($_ . "/", $scriptwhere . '/' . $_ . '/' . $query), $attic, "<BR>";
|
||||||
} elsif (s/,v$//) {
|
} elsif (s/,v$//) {
|
||||||
# TODO: add date/time? How about sorting?
|
# TODO: add date/time? How about sorting?
|
||||||
print "<IMG SRC=\"/icons/text.gif\"> ",
|
print "<IMG SRC=\"/icons/text.gif\"> ",
|
||||||
&link($_, $scriptwhere . '/' . $_), "<BR>";
|
&link($_, $scriptwhere . '/' .
|
||||||
|
($attic ? "Attic/" : "") . $_ . $query),
|
||||||
|
$attic, "<BR>";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
print "</MENU>\n";
|
print "</MENU>\n";
|
||||||
|
if ($input{"only_on_branch"}) {
|
||||||
|
print "<HR><FORM METHOD=\"GET\" ACTION=\"${scriptwhere}\">\n";
|
||||||
|
print "Currently showing only branch $input{'only_on_branch'}.\n";
|
||||||
|
$input{"only_on_branch"}="";
|
||||||
|
foreach $k (keys %input) {
|
||||||
|
print "<INPUT TYPE=hidden NAME=$k VALUE=$input{$k}>\n" if $input{$k};
|
||||||
|
}
|
||||||
|
print "<INPUT TYPE=SUBMIT VALUE=\"Show all branches\">\n";
|
||||||
|
print "</FORM>\n";
|
||||||
|
}
|
||||||
|
$formwhere = $scriptwhere;
|
||||||
|
$formwhere =~ s|Attic/?$|| if ($input{"showattic"});
|
||||||
|
print "<HR><FORM METHOD=\"GET\" ACTION=\"${formwhere}\">\n";
|
||||||
|
$input{"showattic"}=!$input{"showattic"};
|
||||||
|
foreach $k (keys %input) {
|
||||||
|
print "<INPUT TYPE=hidden NAME=$k VALUE=$input{$k}>\n" if $input{$k};
|
||||||
|
}
|
||||||
|
print "<INPUT TYPE=SUBMIT VALUE=\"";
|
||||||
|
print ($input{"showattic"} ? "Show" : "Hide");
|
||||||
|
print " attic directories\">\n";
|
||||||
|
print "</FORM>\n";
|
||||||
print &html_footer;
|
print &html_footer;
|
||||||
print "</BODY></HTML>\n";
|
print "</BODY></HTML>\n";
|
||||||
} elsif (-f $fullname . ',v') {
|
} elsif (-f $fullname . ',v') {
|
||||||
|
|
@ -178,7 +220,7 @@ if (-d $fullname) {
|
||||||
}
|
}
|
||||||
$_ = <RCS>;
|
$_ = <RCS>;
|
||||||
print "D:", $_ if ($verbose);
|
print "D:", $_ if ($verbose);
|
||||||
if (m|^date:\s+(\d+)/(\d+)/(\d+)\s+(\d+):(\d+):(\d+);\s+author:\s+(\S+);|) {
|
if (m|^date:\s+(\d+)/(\d+)/(\d+)\s+(\d+):(\d+):(\d+);\s+author:\s+(\S+);\s+state:\s+(\S+);|) {
|
||||||
$yr = $1;
|
$yr = $1;
|
||||||
# damn 2-digit year routines
|
# damn 2-digit year routines
|
||||||
if ($yr > 100) {
|
if ($yr > 100) {
|
||||||
|
|
@ -186,6 +228,7 @@ if (-d $fullname) {
|
||||||
}
|
}
|
||||||
$date{$rev} = &timelocal($6,$5,$4,$3,$2 - 1,$yr);
|
$date{$rev} = &timelocal($6,$5,$4,$3,$2 - 1,$yr);
|
||||||
$author{$rev} = $7;
|
$author{$rev} = $7;
|
||||||
|
$state{$rev} = $8;
|
||||||
} else {
|
} else {
|
||||||
&fatal("500 Internal Error", "Error parsing RCS output: $_");
|
&fatal("500 Internal Error", "Error parsing RCS output: $_");
|
||||||
}
|
}
|
||||||
|
|
@ -266,8 +309,8 @@ if (-d $fullname) {
|
||||||
}
|
}
|
||||||
print "Done associating revisions with branches\n" if ($verbose);
|
print "Done associating revisions with branches\n" if ($verbose);
|
||||||
print &html_header("CVS log for $where");
|
print &html_header("CVS log for $where");
|
||||||
($upwhere = $where) =~ s|[^/]+$||;
|
($upwhere = $where) =~ s|(Attic/)?[^/]+$||;
|
||||||
print "Up to ", &link($upwhere,$scriptname . "/" . $upwhere);
|
print "Up to ", &link($upwhere,$scriptname . "/" . $upwhere . $query);
|
||||||
print "<BR>\n";
|
print "<BR>\n";
|
||||||
print "<A HREF=\"#diff\">Request diff between arbitrary revisions</A>\n";
|
print "<A HREF=\"#diff\">Request diff between arbitrary revisions</A>\n";
|
||||||
print "<HR NOSHADE>\n";
|
print "<HR NOSHADE>\n";
|
||||||
|
|
@ -362,6 +405,9 @@ if (-d $fullname) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ($state{$_} eq "dead") {
|
||||||
|
print "<BR><B><I>FILE REMOVED</I></B>\n";
|
||||||
|
}
|
||||||
print "<PRE>\n";
|
print "<PRE>\n";
|
||||||
print &htmlify($log{$_}, 1);
|
print &htmlify($log{$_}, 1);
|
||||||
print "</PRE><HR NOSHADE>\n";
|
print "</PRE><HR NOSHADE>\n";
|
||||||
|
|
@ -398,8 +444,13 @@ if (-d $fullname) {
|
||||||
print "<FORM METHOD=\"GET\" ACTION=\"$scriptwhere\">\n";
|
print "<FORM METHOD=\"GET\" ACTION=\"$scriptwhere\">\n";
|
||||||
print "Branch: \n";
|
print "Branch: \n";
|
||||||
print "<SELECT NAME=\"only_on_branch\">\n";
|
print "<SELECT NAME=\"only_on_branch\">\n";
|
||||||
|
print "<OPTION VALUE=\"\"";
|
||||||
|
print " SELECTED" if ($input{"only_on_branch"} eq "");
|
||||||
|
print ">Show all branches\n";
|
||||||
foreach (sort @branchnames) {
|
foreach (sort @branchnames) {
|
||||||
print "<OPTION>${_}\n";
|
print "<OPTION";
|
||||||
|
print " SELECTED" if ($input{"only_on_branch"} eq $_);
|
||||||
|
print ">${_}\n";
|
||||||
}
|
}
|
||||||
print "</SELECT>\n";
|
print "</SELECT>\n";
|
||||||
print "<INPUT TYPE=SUBMIT VALUE=\"View Branch\">\n";
|
print "<INPUT TYPE=SUBMIT VALUE=\"View Branch\">\n";
|
||||||
|
|
@ -408,9 +459,20 @@ if (-d $fullname) {
|
||||||
print "</BODY></HTML>\n";
|
print "</BODY></HTML>\n";
|
||||||
} elsif ($fullname =~ s/\.diff$// && -f $fullname . ",v" &&
|
} elsif ($fullname =~ s/\.diff$// && -f $fullname . ",v" &&
|
||||||
$input{'r1'} && $input{'r2'}) {
|
$input{'r1'} && $input{'r2'}) {
|
||||||
|
# Allow diffs using the ".diff" extension
|
||||||
|
# so that browsers that default to the URL
|
||||||
|
# for a save filename don't save diff's as
|
||||||
|
# e.g. foo.c
|
||||||
&dodiff($fullname, $input{'r1'}, $input{'tr1'},
|
&dodiff($fullname, $input{'r1'}, $input{'tr1'},
|
||||||
$input{'r2'}, $input{'tr2'}, $input{'f'});
|
$input{'r2'}, $input{'tr2'}, $input{'f'});
|
||||||
exit;
|
exit;
|
||||||
|
} elsif (($newname = $fullname) =~ s|/([^/]+)$|/Attic/$1| &&
|
||||||
|
-f $newname . ",v") {
|
||||||
|
# The file has been removed and is in the Attic.
|
||||||
|
# Send a redirect pointing to the file in the Attic.
|
||||||
|
($newplace = $scriptwhere) =~ s|/([^/]+)$|/Attic/$1|;
|
||||||
|
&redirect($newplace);
|
||||||
|
exit;
|
||||||
} elsif (0 && (@files = &safeglob($fullname . ",v"))) {
|
} elsif (0 && (@files = &safeglob($fullname . ",v"))) {
|
||||||
print "Content-type: text/plain\n\n";
|
print "Content-type: text/plain\n\n";
|
||||||
print "You matched the following files:\n";
|
print "You matched the following files:\n";
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue