- Fixed the destination path for installing freeldr on a floppy.  
- Used NtOpenFile for accessing the mbr or the boot sector.
Modified: trunk/reactos/subsys/system/usetup/bootsup.c

Modified: trunk/reactos/subsys/system/usetup/bootsup.c
--- trunk/reactos/subsys/system/usetup/bootsup.c	2005-04-10 05:00:27 UTC (rev 14567)
+++ trunk/reactos/subsys/system/usetup/bootsup.c	2005-04-10 10:16:37 UTC (rev 14568)
@@ -1134,19 +1134,15 @@
 			     NULL,
 			     NULL);
 
-  Status = NtCreateFile(&FileHandle,
-			FILE_WRITE_ACCESS,
-			&ObjectAttributes,
-			&IoStatusBlock,
-			NULL,
-			FILE_ATTRIBUTE_NORMAL,
-			0,
-			FILE_OVERWRITE_IF,
-			FILE_SYNCHRONOUS_IO_NONALERT | FILE_SEQUENTIAL_ONLY,
-			NULL,
-			0);
+  Status = NtOpenFile(&FileHandle,
+		      FILE_WRITE_ACCESS | FILE_WRITE_ATTRIBUTES,
+		      &ObjectAttributes,
+		      &IoStatusBlock,
+		      0,
+		      FILE_SYNCHRONOUS_IO_NONALERT | FILE_SEQUENTIAL_ONLY);
   if (!NT_SUCCESS(Status))
   {
+    DPRINT1("NtOpenFile() failed (Status %lx)\n", Status);
     RtlFreeHeap(ProcessHeap, 0, NewBootSector);
     return(Status);
   }
@@ -1295,19 +1291,15 @@
 			     NULL,
 			     NULL);
 
-  Status = NtCreateFile(&FileHandle,
-			FILE_WRITE_ACCESS,
-			&ObjectAttributes,
-			&IoStatusBlock,
-			NULL,
-			FILE_ATTRIBUTE_NORMAL,
-			0,
-			FILE_OVERWRITE_IF,
-			FILE_SYNCHRONOUS_IO_NONALERT | FILE_SEQUENTIAL_ONLY,
-			NULL,
-			0);
+  Status = NtOpenFile(&FileHandle,
+		      FILE_WRITE_ACCESS | FILE_WRITE_ATTRIBUTES,
+		      &ObjectAttributes,
+		      &IoStatusBlock,
+		      0,
+		      FILE_SYNCHRONOUS_IO_NONALERT | FILE_SEQUENTIAL_ONLY);
   if (!NT_SUCCESS(Status))
   {
+    DPRINT1("NtOpenFile() failed (Status %lx)\n", Status);
     RtlFreeHeap(ProcessHeap, 0, NewBootSector);
     return(Status);
   }
@@ -2080,7 +2072,7 @@
   wcscpy(SrcPath, SourceRootPath->Buffer);
   wcscat(SrcPath, L"\\loader\\freeldr.sys");
 
-  wcscat(DstPath, L"\\Device\\Floppy0\\freeldr.sys");
+  wcscpy(DstPath, L"\\Device\\Floppy0\\freeldr.sys");
 
   DPRINT("Copy: %S ==> %S\n", SrcPath, DstPath);
   Status = SetupCopyFile(SrcPath, DstPath);
@@ -2091,7 +2083,7 @@
     }
 
   /* Create new 'freeldr.ini' */
-  wcscat(DstPath, L"\\Device\\Floppy0\\freeldr.ini");
+  wcscpy(DstPath, L"\\Device\\Floppy0\\freeldr.ini");
 
   DPRINT("Create new 'freeldr.ini'\n");
   Status = CreateFreeLoaderIniForReactos(DstPath,
@@ -2106,7 +2098,7 @@
   wcscpy(SrcPath, SourceRootPath->Buffer);
   wcscat(SrcPath, L"\\loader\\fat.bin");
 
-  wcscat(DstPath, L"\\Device\\Floppy0");
+  wcscpy(DstPath, L"\\Device\\Floppy0");
 
   DPRINT("Install FAT bootcode: %S ==> %S\n", SrcPath, DstPath);
   Status = InstallFat16BootCodeToDisk(SrcPath,