our @ISA=qw(My::Web Exporter);
+use constant ENTRIES =>top_dir()."/project/CVS/Entries";
+use constant ENTRIES_LOG=>top_dir()."/project/CVS/Entries.Log";
+
+
sub print_project ($)
{
my($class,$ListItem)=@_;
return $W;
}
+sub item_hash_read ()
+{
+ my %dirs;
+ for my $ENTRIES (ENTRIES,ENTRIES_LOG) {
+ local *E;
+ next if !open E,$ENTRIES;
+ while (<E>) {
+ chomp;
+ do { $dirs{$1}=1; next; } if m#^(?:A )?D/([^/]*)/#;
+ next if m#^/([^/]*)/# ;
+ next if /^D$/;
+ warn "File $ENTRIES contains invalid line \"$_\": $!";
+ }
+ close E;
+ }
+
+ my %item;
+ for my $dir (keys(%dirs)) {
+ Wrequire "project::${dir}::ListItem";
+ my $item=eval('\@project::'.$dir.'::ListItem::ListItem');
+ do { warn "Broken project/$dir/ListItem.pm"; next; } if !defined $item;
+ $item{$dir}={ My::Project::project_arr_to_hash(@$item) };
+ }
+ return %item;
+}
+
1;
do { $$_=1 if !defined $$_; } for (\$args{"size"});
$contents=CGI::escapeHTML($url) if !defined $contents;
+ $contents=~s#<a\b[^>]*>##gi;
+ $contents=~s#</a>##gi;
my $r='<a href="';
my $urlent=CGI::escapeHTML($url);
{ $r.=$urlent; }
else # unknown client, &CGI::escapeHTML should not be needed here
{ $r.=CGI::escapeHTML(top_dir()."/Redirect.pl?location=".uri_escape($url)); }
+ $r.='"';
+ do { $r.=" $_" if $_; } for ($args{"attr"});
$r.='">'.$contents.'</a>';
if ($args{"size"} && url_is_local($url) && $url=~/[.](?:gz|Z|rpm|zip|deb|lha)/) { # Downloadable?
if (!-r $url)