Changeset 58
- Timestamp:
- 11/25/05 13:42:01 (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/soft/ObsData/ObsData/Repository.pm
- Property cvs2svn:cvs-rev changed from 1.6 to 1.7
r57 r58 62 62 63 63 64 65 64 sub parse_files { 66 65 my ($self) = @_; … … 72 71 } 73 72 74 if ($self->{status}->SectionExists($file)) { 75 } else { 76 $self->loging(0, "%s is new files", $file); 77 $self->{status}->AddSection($file); 73 if (! $self->file_need_parse($file)) { 74 next; 78 75 } 79 76 80 81 77 my ($datatype, $destfile) = $self->{obsdata}->build_dest_filename($file, $self->{datatype}); 82 78 $self->loging(0, "%s file, datatype %s, destination %s", … … 85 81 $destfile || '(none)', 86 82 ); 83 87 84 } 88 85 close($dirhandle); … … 92 89 } 93 90 91 sub file_need_parse { 92 my ($self, $file) = @_; 93 94 my @filestats = stat("$self->{dir}/$file"); 95 96 if ($self->{status}->SectionExists($file)) { 97 $self->loging(0, "File %s found in status, checking...", $file); 98 my ($mtimeok, $sizeok) = (0, 0); 99 my $olddatatype = $self->{status}->val($file, 'datatype'); 100 my $oldmtime = $self->{status}->val($file, 'mtime'); 101 my $oldsize = $self->{status}->val($file, 'size'); 102 if ($oldmtime) { 103 if ($oldmtime == $filestats[9]) { 104 $mtimeok = 1; 105 } elsif ($oldmtime > $filestats[9]) { 106 $self->loging(3, 107 "Wahou, %s is older than my reference: %d => %d", 108 $oldmtime, 109 $filestats[9], 110 ); 111 } else { 112 # Nothing special to say, file is simply more recent 113 } 114 } 115 if (defined($oldsize)) { 116 if ($oldsize == $filestats[7]) { 117 $sizeok = 1; 118 } else { 119 # Nothing to say, size differ 120 } 121 } 122 123 if ($olddatatype) { 124 if (! ($sizeok && $mtimeok)) { 125 $self->loging(3, "File %s allready processed but has changed:%s%s, skipping", 126 $file, 127 ($sizeok ? "" : sprintf(" size %d => %d", $oldsize, $filestats[7])), 128 ($sizeok ? "" : sprintf(" mtime %d => %d", $oldmtime, $filestats[9])), 129 ); 130 } 131 $self->loging(0, "%s has been allready processed: was %s", $file, $olddatatype); 132 return 0; 133 } else { 134 if ($sizeok && $mtimeok) { 135 $self->loging(0, "%s was not take into acount, no change skipping", $file); 136 return 0; 137 } else { 138 $self->loging(0, "%s file has not been processed, but change, retrying", $file); 139 return 1; 140 } 141 } 142 143 } else { 144 $self->loging(0, "%s is new files", $file); 145 $self->{status}->AddSection($file); 146 $self->{status}->newval($file, 'mtime', $filestats[9]); 147 $self->{status}->newval($file, 'size', $filestats[7]); 148 return 1; 149 } 150 } 151 94 152 1;
Note: See TracChangeset
for help on using the changeset viewer.