+platform
[MyWeb.git] / Project.pm
index 2b916af..d67f978 100644 (file)
@@ -30,6 +30,10 @@ our @EXPORT=qw();
 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)=@_;
@@ -191,4 +195,30 @@ table.print_project td { vertical-align: top; }
        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;