Page 1 of 1

Some lesson: which file is more updated than the other?

Posted: 17 Jul 2015 5:41
by Peter Muraya
I needed to implement a predicate that tells me if one file is more updated than another. Here is how I went about it and the lesson I learnt.

Code: Select all

/* This predicated succeeds if the first file is more updated than the second one*/ predicates      is_more_updated:(string Filename1, string Filename2) determ. clauses      is_more_updated(Filename1, Filename2):-           /*           Get the GMT times when the files were last changed*/           file::getFileProperties(Filename1,_,_,_,_,Gmt1),           file::getFileProperties(Filename2,_,_,_,_,Gmt2),           /*           Now I need to find out which date/time is more recent and I tried the following:-                     Gmt1>Gmt2,!, %This compiled but gave me wrong results; then I tried:-                     compare(Gmt1, Gmt2) = ::greater,!, %This too compiled but gave me wrong results. Finally I tried (which worked):-*/           Time1=time::newFromGMT(Gmt1),           Time2=time::newFromGMT(Gmt2),           Time1:compare(Time2)=::greater.

Posted: 17 Jul 2015 13:36
by Thomas Linder Puls
It is very strange that you have gotten wrong results when comparing the gmtTimeValue's directly, that should work. Notice that compare on time (which is actually gtmTime::compare) does actually just compare the gmtTimeValue's:

Code: Select all

clauses     compare(AnotherTime) = compare(gmtTimeValue, AnotherTime:gmtTimeValue).