зеркало из https://github.com/mozilla/gecko-dev.git
Bug 379841 - nsIZipReader's last modified time ignores secondsp=Dave Townsend (Mossop) <mossop.bugzilla@blueprintit.co.uk>r=biesi, sr=bsmedberg
This commit is contained in:
Родитель
5a7bf31fdf
Коммит
09fbbcf3c3
|
@ -1291,15 +1291,25 @@ nsZipReaderCache::Observe(nsISupports *aSubject,
|
|||
|
||||
PRTime GetModTime(PRUint16 aDate, PRUint16 aTime)
|
||||
{
|
||||
char buffer[17];
|
||||
PRExplodedTime time;
|
||||
|
||||
PR_snprintf(buffer, sizeof(buffer), "%02d/%02d/%04d %02d:%02d",
|
||||
((aDate >> 5) & 0x0F), (aDate & 0x1F), (aDate >> 9) + 1980,
|
||||
((aTime >> 11) & 0x1F), ((aTime >> 5) & 0x3F));
|
||||
time.tm_usec = 0;
|
||||
|
||||
time.tm_hour = (aTime >> 11) & 0x1F;
|
||||
time.tm_min = (aTime >> 5) & 0x3F;
|
||||
time.tm_sec = (aTime & 0x1F) * 2;
|
||||
|
||||
PRTime result;
|
||||
PR_ParseTimeString(buffer, PR_FALSE, &result);
|
||||
return result;
|
||||
time.tm_year = (aDate >> 9) + 1980;
|
||||
time.tm_month = ((aDate >> 5) & 0x0F)-1;
|
||||
time.tm_mday = aDate & 0x1F;
|
||||
|
||||
time.tm_params.tp_gmt_offset = 0;
|
||||
time.tm_params.tp_dst_offset = 0;
|
||||
|
||||
PR_NormalizeTime(&time, PR_GMTParameters);
|
||||
time.tm_params = PR_LocalTimeParameters(&time);
|
||||
|
||||
return PR_ImplodeTime(&time);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
Двоичный файл не отображается.
|
@ -0,0 +1,23 @@
|
|||
// Regression test for bug 379841 - nsIZipReader's last modified time ignores seconds
|
||||
|
||||
const Cc = Components.classes;
|
||||
const Ci = Components.interfaces;
|
||||
const path = "modules/libjar/test/unit/data/test_bug379841.zip";
|
||||
// Retrieved time should be within 2 seconds of original file's time.
|
||||
const MAX_TIME_DIFF = 2000000;
|
||||
|
||||
var ENTRY_NAME = "test";
|
||||
// Actual time of file was 07 May 2007 14:35:49
|
||||
var ENTRY_TIME = new Date(2007, 4, 7, 14, 35, 49, 0);
|
||||
|
||||
function run_test() {
|
||||
var file = do_get_file(path);
|
||||
var zipReader = Cc["@mozilla.org/libjar/zip-reader;1"].
|
||||
createInstance(Ci.nsIZipReader);
|
||||
zipReader.open(file);
|
||||
var entry = zipReader.getEntry(ENTRY_NAME);
|
||||
var diff = Math.abs(entry.lastModifiedTime - ENTRY_TIME.getTime()*1000);
|
||||
zipReader.close();
|
||||
if (diff >= MAX_TIME_DIFF)
|
||||
do_throw(diff);
|
||||
}
|
Загрузка…
Ссылка в новой задаче