OK. I'll change it to update the mtime after extraction, and create the canary file at extraction time (which is simpler in any case).

I'll also separate out the other components of the patch as separate issues (the meta.yml quoting and verbosity levels needed for -add-files).

Is there an alternate repo? svn.openfoundry.org has not been responding for the last 24 hours, perhaps more. Otherwise I'll wait for it to come back online to update my repo to the latest par sources before starting.

Shawn.


On 18/05/2015 1:40, Roderich Schupp wrote:
On Wed, May 13, 2015 at 12:00 AM, Shawn Laffan <shawn.laf...@unsw.edu.au <mailto:shawn.laf...@unsw.edu.au>> wrote:

It could do with some review,

Shawn,
sorry for not having looked at this earlier: your patch doesn't solve the problem at all. It adds a canary file, alright, but the real problem is that Archive::Zip (method extractMember)
extractsfiles with their original last modified timestamp restored.
That way you will always have extracted files that are older than the canary, hence will be removed by cleaning programs before they ever catch up with the canary.

So first order of business would be to prevent Archive::Zip from doing that. Unfortunately this behaviour is hard coded, so we must resort to reset the last modified time (to "now") ourselves _after_ files have been extracted (at least in in PAR::_extract_inc(), but there may be other callers of Archive::Zip::extract* methods).

Also I don't see the need for PAR::Packer to include the canary file in the .par archive. Just create it after the initial extraction phase and set its last modified time
to something like "24 hours ago".

Cheers, Roderich

--
Assoc Prof Shawn Laffan
  School of Biological, Earth and Environmental Sciences
  UNSW, Sydney 2052, Australia
  Tel +61 2 9385 8093
  http://www.bees.unsw.edu.au/staff/shawn-laffan
  http://www.purl.org/biodiverse (free diversity analysis software)
  http://www.tandf.co.uk/journals/ijgis

  UNSW CRICOS Provider Code 00098G

Reply via email to