From a3fdd62c1365058249aea24fd3996eefcd1220e4 Mon Sep 17 00:00:00 2001 From: Gediminas Jarulaitis Date: Sun, 17 Mar 2013 16:44:07 +0200 Subject: [PATCH] iso9960, exfat, fat: Corrected time conversion mistakes. * Fixes #9524 * Some style cleanup Signed-off-by: Jerome Duval --- src/add-ons/kernel/file_systems/exfat/Inode.cpp | 6 ++++-- src/add-ons/kernel/file_systems/fat/util.c | 4 ++-- src/add-ons/kernel/file_systems/iso9660/iso9660.cpp | 4 ++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/add-ons/kernel/file_systems/exfat/Inode.cpp b/src/add-ons/kernel/file_systems/exfat/Inode.cpp index 7081565640..c2548437de 100644 --- a/src/add-ons/kernel/file_systems/exfat/Inode.cpp +++ b/src/add-ons/kernel/file_systems/exfat/Inode.cpp @@ -270,9 +270,11 @@ Inode::_GetTimespec(uint16 date, uint16 time, struct timespec ×pec) const if (tzoffset == -1) tzoffset = get_timezone_offset() / 60; - time_t days = daze[(date>>5)&15] + ((date>>9)+10)*365 + leaps((date>>9)+10,((date>>5)&15)-1)+(date&31)-1; + time_t days = daze[(date >> 5) & 15] + ((date >> 9) + 10) * 365 + + leaps((date >> 9) + 10, ((date >> 5) & 15) - 1) + (date & 31) -1; - timespec.tv_sec = ((days * 24 + (time >> 11)) * 60 + ((time>>5)&63) + tzoffset) * 60 + 2*(time&31); + timespec.tv_sec = ((days * 24 + (time >> 11)) * 60 + ((time >> 5) & 63) + - tzoffset) * 60 + 2 * (time & 31); timespec.tv_nsec = 0; } diff --git a/src/add-ons/kernel/file_systems/fat/util.c b/src/add-ons/kernel/file_systems/fat/util.c index d5114f7731..7bab5e3a20 100644 --- a/src/add-ons/kernel/file_systems/fat/util.c +++ b/src/add-ons/kernel/file_systems/fat/util.c @@ -106,7 +106,7 @@ dos2time_t(uint32 t) days = daze[(t>>21)&15] + ((t>>25)+10)*365 + leaps((t>>25)+10,((t>>21)&15)-1)+((t>>16)&31)-1; - return (((days * 24) + ((t>>11)&31)) * 60 + ((t>>5)&63) + tzoffset) * 60 + 2*(t&31); + return (((days * 24) + ((t>>11)&31)) * 60 + ((t>>5)&63) - tzoffset) * 60 + 2*(t&31); } @@ -118,7 +118,7 @@ time_t2dos(time_t s) get_tzoffset(); - t = (s % 60) / 2; s /= 60; s -= tzoffset; + t = (s % 60) / 2; s /= 60; s += tzoffset; t += (s % 60) << 5; s /= 60; t += (s % 24) << 11;s /= 24; diff --git a/src/add-ons/kernel/file_systems/iso9660/iso9660.cpp b/src/add-ons/kernel/file_systems/iso9660/iso9660.cpp index c66ae29058..bbe2685e19 100644 --- a/src/add-ons/kernel/file_systems/iso9660/iso9660.cpp +++ b/src/add-ons/kernel/file_systems/iso9660/iso9660.cpp @@ -975,7 +975,7 @@ ConvertRecDate(ISORecDate* inDate, time_t* outDate) time_t time; int days, i, year, tz; - year = inDate->year -70; + year = inDate->year - 70; tz = inDate->offsetGMT; if (year < 0) { @@ -1002,7 +1002,7 @@ ConvertRecDate(ISORecDate* inDate, time_t* outDate) tz |= (-1 << 8); if (-48 <= tz && tz <= 52) - time += tz *15 * 60; + time -= tz * 15 * 60; } *outDate = time; return 0;