diff --git a/reactos/drivers/fs/vfat/cleanup.c b/reactos/drivers/fs/vfat/cleanup.c index c93593c087e..241fd659835 100644 --- a/reactos/drivers/fs/vfat/cleanup.c +++ b/reactos/drivers/fs/vfat/cleanup.c @@ -1,4 +1,4 @@ -/* $Id: cleanup.c,v 1.4 2002/05/15 18:05:00 ekohl Exp $ +/* $Id: cleanup.c,v 1.5 2002/06/10 21:15:58 hbirr Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -25,10 +25,27 @@ VfatCleanupFile(PDEVICE_EXTENSION DeviceExt, * FUNCTION: Cleans up after a file has been closed. */ { + PVFATCCB pCcb; + PVFATFCB pFcb; + DPRINT("VfatCleanupFile(DeviceExt %x, FileObject %x)\n", DeviceExt, FileObject); /* FIXME: handle file/directory deletion here */ + pCcb = (PVFATCCB) (FileObject->FsContext2); + if (pCcb == NULL) + { + return STATUS_SUCCESS; + } + pFcb = pCcb->pFcb; + if (FileObject->FileName.Buffer) + { + if (pFcb->Flags & FCB_UPDATE_DIRENTRY) + { + updEntry (DeviceExt, FileObject); + pFcb->Flags &= ~FCB_UPDATE_DIRENTRY; + } + } return STATUS_SUCCESS; } diff --git a/reactos/drivers/fs/vfat/close.c b/reactos/drivers/fs/vfat/close.c index 1b5bea7362c..e4dce792645 100644 --- a/reactos/drivers/fs/vfat/close.c +++ b/reactos/drivers/fs/vfat/close.c @@ -1,4 +1,4 @@ -/* $Id: close.c,v 1.11 2002/05/15 18:05:00 ekohl Exp $ +/* $Id: close.c,v 1.12 2002/06/10 21:15:58 hbirr Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -56,10 +56,16 @@ VfatCloseFile (PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject) if (pFcb->Flags & FCB_DELETE_PENDING) { delEntry (DeviceExt, FileObject); + pFcb->Flags &= ~FCB_UPDATE_DIRENTRY; } else Status = STATUS_DELETE_PENDING; } + if (pFcb->Flags & FCB_UPDATE_DIRENTRY) + { + updEntry (DeviceExt, FileObject); + pFcb->Flags &= ~FCB_UPDATE_DIRENTRY; + } FileObject->FsContext2 = NULL; vfatReleaseFCB (DeviceExt, pFcb); } diff --git a/reactos/drivers/fs/vfat/vfat.h b/reactos/drivers/fs/vfat/vfat.h index 1eb184a626f..1c082ce3c5d 100644 --- a/reactos/drivers/fs/vfat/vfat.h +++ b/reactos/drivers/fs/vfat/vfat.h @@ -1,4 +1,4 @@ -/* $Id: vfat.h,v 1.41 2002/05/05 20:18:33 hbirr Exp $ */ +/* $Id: vfat.h,v 1.42 2002/06/10 21:15:58 hbirr Exp $ */ #include @@ -153,6 +153,7 @@ extern PVFAT_GLOBAL_DATA VfatGlobalData; #define FCB_IS_FAT 0x0004 #define FCB_IS_PAGE_FILE 0x0008 #define FCB_IS_VOLUME 0x0010 +#define FCB_UPDATE_DIRENTRY 0x0020 typedef struct _VFATFCB {