https://git.reactos.org/?p=reactos.git;a=commitdiff;h=c63e7e54b5a1808d7f126…
commit c63e7e54b5a1808d7f126911d75ac996dbb8093c
Author: Trevor Thompson <tmt256(a)email.vccs.edu>
AuthorDate: Fri Aug 25 17:16:04 2017 +0000
    [NTFS] - When creating files:
    -Don't add a preceding backslash when creating files on root.
    -Use NTFS_FILE_NAME_POSIX name type if CaseSensitive option is specified.
    -Don't try to create a file when a folder is requested (folder creation is still
TODO).
    svn path=/branches/GSoC_2016/NTFS/; revision=75671
---
 drivers/filesystems/ntfs/attrib.c | 8 ++++----
 drivers/filesystems/ntfs/create.c | 7 +++++++
 2 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/drivers/filesystems/ntfs/attrib.c b/drivers/filesystems/ntfs/attrib.c
index e6d3483553..e830264ad6 100644
--- a/drivers/filesystems/ntfs/attrib.c
+++ b/drivers/filesystems/ntfs/attrib.c
@@ -172,11 +172,11 @@ AddFileName(PFILE_RECORD_HEADER FileRecord,
     // we need to extract the filename from the path
     DPRINT1("Pathname: %wZ\n", &FileObject->FileName);
-    FilenameNoPath.Buffer = FileObject->FileName.Buffer;
-    FilenameNoPath.MaximumLength = FilenameNoPath.Length =
FileObject->FileName.Length;
-
     FsRtlDissectName(FileObject->FileName, &Current, &Remaining);
+    FilenameNoPath.Buffer = Current.Buffer;
+    FilenameNoPath.MaximumLength = FilenameNoPath.Length = Current.Length;
+
     while (Current.Length != 0)
     {
         DPRINT1("Current: %wZ\n", &Current);
@@ -232,7 +232,7 @@ AddFileName(PFILE_RECORD_HEADER FileRecord,
     // For now, we're emulating the way Windows behaves when 8.3 name generation is
disabled
     // TODO: add DOS Filename as needed
-    if (RtlIsNameLegalDOS8Dot3(&FilenameNoPath, NULL, NULL))
+    if (!CaseSensitive && RtlIsNameLegalDOS8Dot3(&FilenameNoPath, NULL,
NULL))
         FileNameAttribute->NameType = NTFS_FILE_NAME_WIN32_AND_DOS;
     else
         FileNameAttribute->NameType = NTFS_FILE_NAME_POSIX;
diff --git a/drivers/filesystems/ntfs/create.c b/drivers/filesystems/ntfs/create.c
index a98afc67b7..e8d0b1eb14 100644
--- a/drivers/filesystems/ntfs/create.c
+++ b/drivers/filesystems/ntfs/create.c
@@ -569,6 +569,13 @@ NtfsCreateFile(PDEVICE_OBJECT DeviceObject,
                 return STATUS_ACCESS_DENIED;
             }
+            // We can't create directories yet
+            if (RequestedOptions & FILE_DIRECTORY_FILE)
+            {
+                DPRINT1("FIXME: Folder creation is still TODO!\n");
+                return STATUS_NOT_IMPLEMENTED;
+            }
+
             // Create the file record on disk
             Status = NtfsCreateFileRecord(DeviceExt,
                                           FileObject,