Date: Tue, 21 Oct 2003 01:01:27 +1000 From: "David O'Shea" <dcoshea@hotmail.com> To: <freebsd-cvsweb@FreeBSD.org> Subject: Re: Bug accessing file whose path starts with a dot Message-ID: <BAY10-DAV42RgD8HpAx00003f05@hotmail.com>
next in thread | raw e-mail | index | archive | help
Hi all, cvsweb 2.0.6 running under Win32 Apache 2.0.44 and Cygwin Perl 5.8.0 (but I don't think those details are relevant) is failing to display a file whose path starts with a '.'. When I select the relevant CVS Root and then in the table click on the directory starting with a '.' ('.profile.d/'), then select a file ('lynx.cfg') and click on the version ('1.1.1.1') I get: >>> Error: Unexpected output from cvs co: =================================================================== Checking out .profile.d/lynx.cfg RCS: /home/doshea/profile-repository/.profile.d/lynx.cfg,v VERS: 1.1.1.1 <<< The issue is that cvsweb seems to be trying to strip off any leading './', './/', './//', etc. from the filename shown after 'Checking out' but it also strips a '.' by itself. Here's my patch which also improves the error message (which helped me to figure out the problem): >>> --- cvsweb.cgi 2002-09-27 06:56:06.000000000 +1000 +++ /usr/Apache/Apache2/cgi-bin/cvsweb.cgi 2003-09-11 20:01:06.000000000 +1000 @@ -1861,15 +1862,15 @@ if (/^Checking out (.*)$/) { $filename = $1; - $filename =~ s/^\.\/*//; + $filename =~ s/^\.\/+//; } $cvsheader .= $_; } if ($filename ne $where) { fatal("500 Internal Error", - 'Unexpected output from cvs co: %s', - $cvsheader); + 'Unexpected output from cvs co: %s (output says "%s" but expected "%s")', + $cvsheader, $filename, $where); } $| = 1; <<< I changed the regexp to match a '.' followed by one or more '/', instead of zero or more '/' as it was previously. Thanks, David
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?BAY10-DAV42RgD8HpAx00003f05>