- if ((OpenMode & EFI_FILE_MODE_CREATE) == EFI_FILE_MODE_CREATE && (Attributes & EFI_FILE_DIRECTORY) == EFI_FILE_DIRECTORY) {\r
- return ShellCreateDirectory(FileName, FileHandle);\r
+ if ((OpenMode & EFI_FILE_MODE_CREATE) == EFI_FILE_MODE_CREATE) {\r
+\r
+ //\r
+ // Create only a directory\r
+ //\r
+ if ((Attributes & EFI_FILE_DIRECTORY) == EFI_FILE_DIRECTORY) {\r
+ return ShellCreateDirectory(FileName, FileHandle);\r
+ }\r
+\r
+ //\r
+ // Create the directory to create the file in\r
+ //\r
+ FileNameCopy = AllocateCopyPool (StrSize (FileName), FileName);\r
+ if (FileName == NULL) {\r
+ return (EFI_OUT_OF_RESOURCES);\r
+ }\r
+ PathCleanUpDirectories (FileNameCopy);\r
+ if (PathRemoveLastItem (FileNameCopy)) {\r
+ ShellCreateDirectory (FileNameCopy, FileHandle);\r
+ ShellCloseFile (FileHandle);\r
+ }\r
+ SHELL_FREE_NON_NULL (FileNameCopy);\r