mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 10:04:49 +00:00
Separated close request
Fixed bugs in create request svn path=/trunk/; revision=1250
This commit is contained in:
parent
a20a2dd801
commit
0ea1d03808
3 changed files with 203 additions and 105 deletions
77
reactos/drivers/fs/vfat/close.c
Normal file
77
reactos/drivers/fs/vfat/close.c
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
/* $Id: close.c,v 1.1 2000/07/07 02:14:14 ekohl Exp $
|
||||||
|
*
|
||||||
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
|
* PROJECT: ReactOS kernel
|
||||||
|
* FILE: services/fs/vfat/close.c
|
||||||
|
* PURPOSE: VFAT Filesystem
|
||||||
|
* PROGRAMMER: Jason Filby (jasonfilby@yahoo.com)
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* INCLUDES *****************************************************************/
|
||||||
|
|
||||||
|
#include <ddk/ntddk.h>
|
||||||
|
|
||||||
|
#define NDEBUG
|
||||||
|
#include <debug.h>
|
||||||
|
|
||||||
|
#include "vfat.h"
|
||||||
|
|
||||||
|
/* FUNCTIONS ****************************************************************/
|
||||||
|
|
||||||
|
NTSTATUS FsdCloseFile(PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject)
|
||||||
|
/*
|
||||||
|
* FUNCTION: Closes a file
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
PVFATFCB pFcb;
|
||||||
|
PVFATCCB pCcb;
|
||||||
|
KIRQL oldIrql;
|
||||||
|
|
||||||
|
DPRINT("FsdCloseFile(DeviceExt %x, FileObject %x)\n",
|
||||||
|
DeviceExt,FileObject);
|
||||||
|
|
||||||
|
//FIXME : update entry in directory ?
|
||||||
|
pCcb = (PVFATCCB)(FileObject->FsContext2);
|
||||||
|
|
||||||
|
DPRINT("pCcb %x\n",pCcb);
|
||||||
|
if (pCcb == NULL)
|
||||||
|
{
|
||||||
|
return(STATUS_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
pFcb = pCcb->pFcb;
|
||||||
|
|
||||||
|
pFcb->RefCount--;
|
||||||
|
if(pFcb->RefCount<=0)
|
||||||
|
{
|
||||||
|
KeAcquireSpinLock(&DeviceExt->FcbListLock, &oldIrql);
|
||||||
|
RemoveEntryList(&pFcb->FcbListEntry);
|
||||||
|
KeReleaseSpinLock(&DeviceExt->FcbListLock, oldIrql);
|
||||||
|
ExFreePool(pFcb);
|
||||||
|
}
|
||||||
|
ExFreePool(pCcb);
|
||||||
|
return STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS FsdClose(PDEVICE_OBJECT DeviceObject, PIRP Irp)
|
||||||
|
/*
|
||||||
|
* FUNCTION: Closes a file
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
PIO_STACK_LOCATION Stack = IoGetCurrentIrpStackLocation(Irp);
|
||||||
|
PFILE_OBJECT FileObject = Stack->FileObject;
|
||||||
|
PDEVICE_EXTENSION DeviceExtension = DeviceObject->DeviceExtension;
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
DPRINT("FsdClose(DeviceObject %x, Irp %x)\n",DeviceObject, Irp);
|
||||||
|
|
||||||
|
Status = FsdCloseFile(DeviceExtension,FileObject);
|
||||||
|
|
||||||
|
Irp->IoStatus.Status = Status;
|
||||||
|
Irp->IoStatus.Information = 0;
|
||||||
|
|
||||||
|
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||||
|
return(Status);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* EOF */
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: create.c,v 1.5 2000/06/29 23:35:50 dwelch Exp $
|
/* $Id: create.c,v 1.6 2000/07/07 02:14:14 ekohl Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -218,7 +218,7 @@ NTSTATUS FindFile(PDEVICE_EXTENSION DeviceExt, PVFATFCB Fcb,
|
||||||
if (wcslen(FileToFind)==0)
|
if (wcslen(FileToFind)==0)
|
||||||
{
|
{
|
||||||
CHECKPOINT;
|
CHECKPOINT;
|
||||||
TempStr[0] = (WCHAR)'.';
|
TempStr[0] = (WCHAR)'.';
|
||||||
TempStr[1] = 0;
|
TempStr[1] = 0;
|
||||||
FileToFind=(PWSTR)&TempStr;
|
FileToFind=(PWSTR)&TempStr;
|
||||||
}
|
}
|
||||||
|
@ -348,40 +348,6 @@ NTSTATUS FindFile(PDEVICE_EXTENSION DeviceExt, PVFATFCB Fcb,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
NTSTATUS FsdCloseFile(PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject)
|
|
||||||
/*
|
|
||||||
* FUNCTION: Closes a file
|
|
||||||
*/
|
|
||||||
{
|
|
||||||
PVFATFCB pFcb;
|
|
||||||
PVFATCCB pCcb;
|
|
||||||
KIRQL oldIrql;
|
|
||||||
|
|
||||||
DPRINT("FsdCloseFile(DeviceExt %x, FileObject %x)\n",
|
|
||||||
DeviceExt,FileObject);
|
|
||||||
|
|
||||||
//FIXME : update entry in directory ?
|
|
||||||
pCcb = (PVFATCCB)(FileObject->FsContext2);
|
|
||||||
|
|
||||||
DPRINT("pCcb %x\n",pCcb);
|
|
||||||
if (pCcb == NULL)
|
|
||||||
{
|
|
||||||
return(STATUS_SUCCESS);
|
|
||||||
}
|
|
||||||
|
|
||||||
pFcb = pCcb->pFcb;
|
|
||||||
|
|
||||||
pFcb->RefCount--;
|
|
||||||
if(pFcb->RefCount<=0)
|
|
||||||
{
|
|
||||||
KeAcquireSpinLock(&DeviceExt->FcbListLock, &oldIrql);
|
|
||||||
RemoveEntryList(&pFcb->FcbListEntry);
|
|
||||||
KeReleaseSpinLock(&DeviceExt->FcbListLock, oldIrql);
|
|
||||||
ExFreePool(pFcb);
|
|
||||||
}
|
|
||||||
ExFreePool(pCcb);
|
|
||||||
return STATUS_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
NTSTATUS FsdOpenFile(PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject,
|
NTSTATUS FsdOpenFile(PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject,
|
||||||
PWSTR FileName)
|
PWSTR FileName)
|
||||||
|
@ -395,7 +361,7 @@ NTSTATUS FsdOpenFile(PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject,
|
||||||
PVFATFCB ParentFcb;
|
PVFATFCB ParentFcb;
|
||||||
PVFATFCB Fcb,pRelFcb;
|
PVFATFCB Fcb,pRelFcb;
|
||||||
PVFATFCB Temp;
|
PVFATFCB Temp;
|
||||||
PVFATCCB newCCB,pRelCcb;
|
PVFATCCB newCCB,pRelCcb;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
PFILE_OBJECT pRelFileObject;
|
PFILE_OBJECT pRelFileObject;
|
||||||
PWSTR AbsFileName=NULL;
|
PWSTR AbsFileName=NULL;
|
||||||
|
@ -408,10 +374,10 @@ NTSTATUS FsdOpenFile(PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject,
|
||||||
FileObject,
|
FileObject,
|
||||||
FileName);
|
FileName);
|
||||||
|
|
||||||
/* FIXME : treat relative name */
|
/* FIXME : treat relative name */
|
||||||
if(FileObject->RelatedFileObject)
|
if(FileObject->RelatedFileObject)
|
||||||
{
|
{
|
||||||
DbgPrint("try related for %S\n",FileName);
|
DbgPrint("try related for %S\n",FileName);
|
||||||
pRelFileObject=FileObject->RelatedFileObject;
|
pRelFileObject=FileObject->RelatedFileObject;
|
||||||
pRelCcb=pRelFileObject->FsContext2;
|
pRelCcb=pRelFileObject->FsContext2;
|
||||||
assert(pRelCcb);
|
assert(pRelCcb);
|
||||||
|
@ -437,10 +403,10 @@ NTSTATUS FsdOpenFile(PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject,
|
||||||
AbsFileName[i]=0;
|
AbsFileName[i]=0;
|
||||||
FileName=AbsFileName;
|
FileName=AbsFileName;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* try first to find an existing FCB in memory
|
* try first to find an existing FCB in memory
|
||||||
*/
|
*/
|
||||||
CHECKPOINT;
|
CHECKPOINT;
|
||||||
|
|
||||||
KeAcquireSpinLock(&DeviceExt->FcbListLock, &oldIrql);
|
KeAcquireSpinLock(&DeviceExt->FcbListLock, &oldIrql);
|
||||||
|
@ -470,27 +436,35 @@ NTSTATUS FsdOpenFile(PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject,
|
||||||
current_entry = current_entry->Flink;
|
current_entry = current_entry->Flink;
|
||||||
}
|
}
|
||||||
KeReleaseSpinLock(&DeviceExt->FcbListLock, oldIrql);
|
KeReleaseSpinLock(&DeviceExt->FcbListLock, oldIrql);
|
||||||
|
|
||||||
CHECKPOINT;
|
|
||||||
|
|
||||||
string = FileName;
|
CHECKPOINT;
|
||||||
ParentFcb = NULL;
|
DPRINT("FileName %S\n", FileName);
|
||||||
Fcb = ExAllocatePool(NonPagedPool, sizeof(VFATFCB));
|
|
||||||
memset(Fcb,0,sizeof(VFATFCB));
|
string = FileName;
|
||||||
Fcb->ObjectName=Fcb->PathName;
|
ParentFcb = NULL;
|
||||||
next = &string[0];
|
Fcb = ExAllocatePool(NonPagedPool, sizeof(VFATFCB));
|
||||||
|
memset(Fcb,0,sizeof(VFATFCB));
|
||||||
|
Fcb->ObjectName=Fcb->PathName;
|
||||||
|
next = &string[0];
|
||||||
|
|
||||||
CHECKPOINT;
|
CHECKPOINT;
|
||||||
while (next!=NULL)
|
while (TRUE)
|
||||||
{
|
{
|
||||||
CHECKPOINT;
|
CHECKPOINT;
|
||||||
*next = '\\';
|
*next = '\\';
|
||||||
current = next+1;
|
current = next+1;
|
||||||
next = wcschr(next+1,'\\');
|
next = wcschr(next+1,'\\');
|
||||||
if (next!=NULL)
|
if (next!=NULL)
|
||||||
{
|
{
|
||||||
*next=0;
|
*next=0;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* reached the last path component */
|
||||||
|
DPRINT("exiting: current '%S'\n",current);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
DPRINT("current '%S'\n",current);
|
DPRINT("current '%S'\n",current);
|
||||||
Status = FindFile(DeviceExt,Fcb,ParentFcb,current,NULL,NULL);
|
Status = FindFile(DeviceExt,Fcb,ParentFcb,current,NULL,NULL);
|
||||||
if (Status != STATUS_SUCCESS)
|
if (Status != STATUS_SUCCESS)
|
||||||
|
@ -501,8 +475,10 @@ NTSTATUS FsdOpenFile(PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject,
|
||||||
if (ParentFcb != NULL)
|
if (ParentFcb != NULL)
|
||||||
ExFreePool(ParentFcb);
|
ExFreePool(ParentFcb);
|
||||||
if(AbsFileName)
|
if(AbsFileName)
|
||||||
ExFreePool(AbsFileName);
|
ExFreePool(AbsFileName);
|
||||||
return(Status);
|
|
||||||
|
DPRINT("error STATUS_OBJECT_PATH_NOT_FOUND\n");
|
||||||
|
return STATUS_OBJECT_PATH_NOT_FOUND;
|
||||||
}
|
}
|
||||||
Temp = Fcb;
|
Temp = Fcb;
|
||||||
CHECKPOINT;
|
CHECKPOINT;
|
||||||
|
@ -518,8 +494,41 @@ CHECKPOINT;
|
||||||
CHECKPOINT;
|
CHECKPOINT;
|
||||||
ParentFcb = Temp;
|
ParentFcb = Temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* searching for last path component */
|
||||||
|
DPRINT("current '%S'\n",current);
|
||||||
|
Status = FindFile(DeviceExt,Fcb,ParentFcb,current,NULL,NULL);
|
||||||
|
if (Status != STATUS_SUCCESS)
|
||||||
|
{
|
||||||
|
/* file does not exist */
|
||||||
|
CHECKPOINT;
|
||||||
|
if (Fcb != NULL)
|
||||||
|
ExFreePool(Fcb);
|
||||||
|
if (ParentFcb != NULL)
|
||||||
|
ExFreePool(ParentFcb);
|
||||||
|
if(AbsFileName)
|
||||||
|
ExFreePool(AbsFileName);
|
||||||
|
|
||||||
|
return STATUS_OBJECT_NAME_NOT_FOUND;
|
||||||
|
}
|
||||||
|
|
||||||
|
Temp = Fcb;
|
||||||
CHECKPOINT;
|
CHECKPOINT;
|
||||||
FileObject->FsContext =(PVOID) &ParentFcb->NTRequiredFCB;
|
if (ParentFcb == NULL)
|
||||||
|
{
|
||||||
|
CHECKPOINT;
|
||||||
|
Fcb = ExAllocatePool(NonPagedPool,sizeof(VFATFCB));
|
||||||
|
memset(Fcb,0,sizeof(VFATFCB));
|
||||||
|
Fcb->ObjectName=Fcb->PathName;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Fcb = ParentFcb;
|
||||||
|
CHECKPOINT;
|
||||||
|
ParentFcb = Temp;
|
||||||
|
|
||||||
|
|
||||||
|
CHECKPOINT;
|
||||||
|
FileObject->FsContext =(PVOID) &ParentFcb->NTRequiredFCB;
|
||||||
newCCB = ExAllocatePool(NonPagedPool,sizeof(VFATCCB));
|
newCCB = ExAllocatePool(NonPagedPool,sizeof(VFATCCB));
|
||||||
memset(newCCB,0,sizeof(VFATCCB));
|
memset(newCCB,0,sizeof(VFATCCB));
|
||||||
FileObject->FsContext2 = newCCB;
|
FileObject->FsContext2 = newCCB;
|
||||||
|
@ -537,35 +546,17 @@ CHECKPOINT;
|
||||||
ParentFcb->pDevExt=DeviceExt;
|
ParentFcb->pDevExt=DeviceExt;
|
||||||
DPRINT("file open, fcb=%x\n",ParentFcb);
|
DPRINT("file open, fcb=%x\n",ParentFcb);
|
||||||
DPRINT("FileSize %d\n",ParentFcb->entry.FileSize);
|
DPRINT("FileSize %d\n",ParentFcb->entry.FileSize);
|
||||||
if(Fcb) ExFreePool(Fcb);
|
if(Fcb)
|
||||||
if(AbsFileName)ExFreePool(AbsFileName);
|
ExFreePool(Fcb);
|
||||||
|
if(AbsFileName)
|
||||||
|
ExFreePool(AbsFileName);
|
||||||
CHECKPOINT;
|
CHECKPOINT;
|
||||||
|
|
||||||
return(STATUS_SUCCESS);
|
return(STATUS_SUCCESS);
|
||||||
}
|
|
||||||
|
|
||||||
NTSTATUS FsdClose(PDEVICE_OBJECT DeviceObject, PIRP Irp)
|
|
||||||
/*
|
|
||||||
* FUNCTION: Close a file
|
|
||||||
*/
|
|
||||||
{
|
|
||||||
PIO_STACK_LOCATION Stack = IoGetCurrentIrpStackLocation(Irp);
|
|
||||||
PFILE_OBJECT FileObject = Stack->FileObject;
|
|
||||||
PDEVICE_EXTENSION DeviceExtension = DeviceObject->DeviceExtension;
|
|
||||||
NTSTATUS Status;
|
|
||||||
|
|
||||||
DPRINT("FsdClose(DeviceObject %x, Irp %x)\n",DeviceObject, Irp);
|
|
||||||
|
|
||||||
Status = FsdCloseFile(DeviceExtension,FileObject);
|
|
||||||
|
|
||||||
Irp->IoStatus.Status = Status;
|
|
||||||
Irp->IoStatus.Information = 0;
|
|
||||||
|
|
||||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
|
||||||
return(Status);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
NTSTATUS FsdCreate(PDEVICE_OBJECT DeviceObject, PIRP Irp)
|
NTSTATUS FsdCreateFile (PDEVICE_OBJECT DeviceObject, PIRP Irp)
|
||||||
/*
|
/*
|
||||||
* FUNCTION: Create or open a file
|
* FUNCTION: Create or open a file
|
||||||
*/
|
*/
|
||||||
|
@ -578,19 +569,6 @@ NTSTATUS FsdCreate(PDEVICE_OBJECT DeviceObject, PIRP Irp)
|
||||||
PVFATCCB pCcb;
|
PVFATCCB pCcb;
|
||||||
PVFATFCB pFcb;
|
PVFATFCB pFcb;
|
||||||
|
|
||||||
assert(DeviceObject);
|
|
||||||
assert(Irp);
|
|
||||||
|
|
||||||
if (DeviceObject->Size==sizeof(DEVICE_OBJECT))
|
|
||||||
{
|
|
||||||
/* DeviceObject represent FileSystem instead of logical volume */
|
|
||||||
DbgPrint("FsdCreate called with file system\n");
|
|
||||||
Irp->IoStatus.Status=Status;
|
|
||||||
Irp->IoStatus.Information=FILE_OPENED;
|
|
||||||
IoCompleteRequest(Irp,IO_NO_INCREMENT);
|
|
||||||
return(Status);
|
|
||||||
}
|
|
||||||
|
|
||||||
Stack = IoGetCurrentIrpStackLocation(Irp);
|
Stack = IoGetCurrentIrpStackLocation(Irp);
|
||||||
assert(Stack);
|
assert(Stack);
|
||||||
RequestedDisposition = ((Stack->Parameters.Create.Options>>24)&0xff);
|
RequestedDisposition = ((Stack->Parameters.Create.Options>>24)&0xff);
|
||||||
|
@ -598,10 +576,18 @@ NTSTATUS FsdCreate(PDEVICE_OBJECT DeviceObject, PIRP Irp)
|
||||||
FileObject = Stack->FileObject;
|
FileObject = Stack->FileObject;
|
||||||
DeviceExt = DeviceObject->DeviceExtension;
|
DeviceExt = DeviceObject->DeviceExtension;
|
||||||
assert(DeviceExt);
|
assert(DeviceExt);
|
||||||
ExAcquireResourceExclusiveLite(&DeviceExt->DirResource, TRUE);
|
|
||||||
Status = FsdOpenFile(DeviceExt,FileObject,FileObject->FileName.Buffer);
|
Status = FsdOpenFile(DeviceExt,FileObject,FileObject->FileName.Buffer);
|
||||||
|
|
||||||
CHECKPOINT;
|
CHECKPOINT;
|
||||||
Irp->IoStatus.Information = 0;
|
Irp->IoStatus.Information = 0;
|
||||||
|
if (Status == STATUS_OBJECT_PATH_NOT_FOUND)
|
||||||
|
{
|
||||||
|
Irp->IoStatus.Status = Status;
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
CHECKPOINT;
|
||||||
if(!NT_SUCCESS(Status))
|
if(!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
if(RequestedDisposition==FILE_CREATE
|
if(RequestedDisposition==FILE_CREATE
|
||||||
|
@ -646,13 +632,47 @@ CHECKPOINT;
|
||||||
else Irp->IoStatus.Information = FILE_OPENED;
|
else Irp->IoStatus.Information = FILE_OPENED;
|
||||||
// FIXME : make supersed or overwrite if requested
|
// FIXME : make supersed or overwrite if requested
|
||||||
}
|
}
|
||||||
CHECKPOINT;
|
|
||||||
|
CHECKPOINT;
|
||||||
Irp->IoStatus.Status = Status;
|
Irp->IoStatus.Status = Status;
|
||||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
|
||||||
ExReleaseResourceLite(&DeviceExt->DirResource);
|
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
NTSTATUS FsdCreate(PDEVICE_OBJECT DeviceObject, PIRP Irp)
|
||||||
|
/*
|
||||||
|
* FUNCTION: Create or open a file
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
NTSTATUS Status=STATUS_SUCCESS;
|
||||||
|
PDEVICE_EXTENSION DeviceExt;
|
||||||
|
|
||||||
|
assert(DeviceObject);
|
||||||
|
assert(Irp);
|
||||||
|
|
||||||
|
if (DeviceObject->Size==sizeof(DEVICE_OBJECT))
|
||||||
|
{
|
||||||
|
/* DeviceObject represent FileSystem instead of logical volume */
|
||||||
|
DbgPrint("FsdCreate called with file system\n");
|
||||||
|
Irp->IoStatus.Status=Status;
|
||||||
|
Irp->IoStatus.Information=FILE_OPENED;
|
||||||
|
IoCompleteRequest(Irp,IO_NO_INCREMENT);
|
||||||
|
return(Status);
|
||||||
|
}
|
||||||
|
|
||||||
|
DeviceExt = DeviceObject->DeviceExtension;
|
||||||
|
assert(DeviceExt);
|
||||||
|
ExAcquireResourceExclusiveLite(&DeviceExt->DirResource, TRUE);
|
||||||
|
|
||||||
|
Status = FsdCreateFile (DeviceObject, Irp);
|
||||||
|
|
||||||
|
ExReleaseResourceLite(&DeviceExt->DirResource);
|
||||||
|
|
||||||
|
Irp->IoStatus.Status = Status;
|
||||||
|
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||||
|
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* EOF */
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
# $Id: makefile,v 1.16 2000/06/29 23:35:51 dwelch Exp $
|
# $Id: makefile,v 1.17 2000/07/07 02:14:14 ekohl Exp $
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
TARGET=vfatfs
|
TARGET=vfatfs
|
||||||
|
|
||||||
OBJECTS = blockdev.o dir.o dirwr.o iface.o string.o fat.o rw.o finfo.o volume.o create.o $(TARGET).coff
|
OBJECTS = blockdev.o close.o create.o dir.o dirwr.o iface.o string.o fat.o \
|
||||||
|
rw.o finfo.o volume.o $(TARGET).coff
|
||||||
LIBS = ../../../ntoskrnl/ntoskrnl.a
|
LIBS = ../../../ntoskrnl/ntoskrnl.a
|
||||||
|
|
||||||
BASE_CFLAGS = -I. -I../../../include
|
BASE_CFLAGS = -I. -I../../../include
|
||||||
|
|
Loading…
Reference in a new issue