From 1b0b103796b45b539ca8ace15dc744b612665afe Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Thu, 16 Dec 1999 23:08:17 +0000 Subject: [PATCH] Added a time conversion function and fixed a little bug (fat stores only 2 second steps) svn path=/trunk/; revision=882 --- reactos/drivers/fs/vfat/dir.c | 33 ++++++++++++++++++++++++++++++++- reactos/drivers/fs/vfat/vfat.h | 3 ++- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/reactos/drivers/fs/vfat/dir.c b/reactos/drivers/fs/vfat/dir.c index 06ba5d3a7d8..ded821f5e78 100644 --- a/reactos/drivers/fs/vfat/dir.c +++ b/reactos/drivers/fs/vfat/dir.c @@ -32,7 +32,7 @@ BOOL FsdDosDateTimeToFileTime(WORD wDosDate,WORD wDosTime, TIME *FileTime) return FALSE; TimeFields.Milliseconds = 0; - TimeFields.Second = pdtime->Second; + TimeFields.Second = pdtime->Second * 2; TimeFields.Minute = pdtime->Minute; TimeFields.Hour = pdtime->Hour; @@ -46,6 +46,37 @@ BOOL FsdDosDateTimeToFileTime(WORD wDosDate,WORD wDosTime, TIME *FileTime) } +// function like FileTimeToDosDateTime +BOOL FsdFileTimeToDosDateTime(TIME *FileTime,WORD *pwDosDate,WORD *pwDosTime) +{ + PDOSTIME pdtime = (PDOSTIME)pwDosTime; + PDOSDATE pddate = (PDOSDATE)pwDosDate; + TIME_FIELDS TimeFields; + + if (FileTime == NULL) + return FALSE; + + RtlTimeToTimeFields((PLARGE_INTEGER)FileTime, &TimeFields); + + if (pdtime) + { + pdtime->Second = TimeFields.Second / 2; + pdtime->Minute = TimeFields.Minute; + pdtime->Hour = TimeFields.Hour; + } + + if (pddate) + { + pddate->Day = TimeFields.Day; + pddate->Month = TimeFields.Month; + pddate->Year = TimeFields.Year - 1980; + } + + return TRUE; +} + + + unsigned long vfat_wstrlen(PWSTR s) { WCHAR c=' '; diff --git a/reactos/drivers/fs/vfat/vfat.h b/reactos/drivers/fs/vfat/vfat.h index c151b3891e4..c4bba3d71fe 100644 --- a/reactos/drivers/fs/vfat/vfat.h +++ b/reactos/drivers/fs/vfat/vfat.h @@ -1,4 +1,4 @@ -/* $Id: vfat.h,v 1.15 1999/12/11 21:14:49 dwelch Exp $ */ +/* $Id: vfat.h,v 1.16 1999/12/16 23:08:17 ekohl Exp $ */ struct _BootSector { unsigned char magic0, res0, magic1; @@ -171,6 +171,7 @@ BOOLEAN VFATWriteSectors(IN PDEVICE_OBJECT pDeviceObject, //internal functions in dir.c : BOOL FsdDosDateTimeToFileTime(WORD wDosDate,WORD wDosTime, TIME *FileTime); +BOOL FsdFileTimeToDosDateTime(TIME *FileTime,WORD *pwDosDate,WORD *pwDosTime); //internal functions in iface.c : NTSTATUS FindFile(PDEVICE_EXTENSION DeviceExt, PVFATFCB Fcb, -- 2.17.1