EFIAPI\r
UnixSimpleFileSystemOpenVolume (\r
IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *This,\r
- OUT EFI_FILE **Root\r
+ OUT EFI_FILE_PROTOCOL **Root\r
)\r
/*++\r
\r
EFI_STATUS\r
EFIAPI\r
UnixSimpleFileSystemOpen (\r
- IN EFI_FILE *This,\r
- OUT EFI_FILE **NewHandle,\r
- IN CHAR16 *FileName,\r
- IN UINT64 OpenMode,\r
- IN UINT64 Attributes\r
+ IN EFI_FILE_PROTOCOL *This,\r
+ OUT EFI_FILE_PROTOCOL **NewHandle,\r
+ IN CHAR16 *FileName,\r
+ IN UINT64 OpenMode,\r
+ IN UINT64 Attributes\r
)\r
/*++\r
\r
// TODO: EFI_INVALID_PARAMETER - add return value to function comment\r
// TODO: EFI_INVALID_PARAMETER - add return value to function comment\r
{\r
- EFI_FILE *Root;\r
+ EFI_FILE_PROTOCOL *Root;\r
UNIX_EFI_FILE_PRIVATE *PrivateFile;\r
UNIX_EFI_FILE_PRIVATE *NewPrivateFile;\r
UNIX_SIMPLE_FILE_SYSTEM_PRIVATE *PrivateRoot;\r
NewPrivateFile->IsDirectoryPath = FALSE;\r
}\r
} else {\r
- struct stat finfo;\r
+ STAT_FIX finfo;\r
int res = NewPrivateFile->UnixThunk->Stat (NewPrivateFile->FileName, &finfo);\r
if (res == 0 && S_ISDIR(finfo.st_mode))\r
NewPrivateFile->IsDirectoryPath = TRUE;\r
EFI_STATUS\r
EFIAPI\r
UnixSimpleFileSystemClose (\r
- IN EFI_FILE *This\r
+ IN EFI_FILE_PROTOCOL *This\r
)\r
/*++\r
\r
EFI_STATUS\r
EFIAPI\r
UnixSimpleFileSystemDelete (\r
- IN EFI_FILE *This\r
+ IN EFI_FILE_PROTOCOL *This\r
)\r
/*++\r
\r
struct tm *tm;\r
tm = UnixThunk->GmTime (&SystemTime);\r
Time->Year = tm->tm_year;\r
- Time->Month = tm->tm_mon;\r
+ Time->Month = tm->tm_mon + 1;\r
Time->Day = tm->tm_mday;\r
Time->Hour = tm->tm_hour;\r
Time->Minute = tm->tm_min;\r
UINTN NameSize;\r
UINTN ResultSize;\r
EFI_FILE_INFO *Info;\r
- CHAR8 *RealFileName;\r
- CHAR8 *TempPointer;\r
+ CHAR8 *RealFileName;\r
+ CHAR8 *TempPointer;\r
CHAR16 *BufferFileName;\r
- struct stat buf;\r
+ STAT_FIX buf;\r
\r
if (FileName != NULL) {\r
RealFileName = FileName;\r
EFI_STATUS\r
EFIAPI\r
UnixSimpleFileSystemRead (\r
- IN EFI_FILE *This,\r
- IN OUT UINTN *BufferSize,\r
- OUT VOID *Buffer\r
+ IN EFI_FILE_PROTOCOL *This,\r
+ IN OUT UINTN *BufferSize,\r
+ OUT VOID *Buffer\r
)\r
/*++\r
\r
EFI_STATUS\r
EFIAPI\r
UnixSimpleFileSystemWrite (\r
- IN EFI_FILE *This,\r
- IN OUT UINTN *BufferSize,\r
- IN VOID *Buffer\r
+ IN EFI_FILE_PROTOCOL *This,\r
+ IN OUT UINTN *BufferSize,\r
+ IN VOID *Buffer\r
)\r
/*++\r
\r
EFI_STATUS\r
EFIAPI\r
UnixSimpleFileSystemSetPosition (\r
- IN EFI_FILE *This,\r
- IN UINT64 Position\r
+ IN EFI_FILE_PROTOCOL *This,\r
+ IN UINT64 Position\r
)\r
/*++\r
\r
EFI_STATUS\r
EFIAPI\r
UnixSimpleFileSystemGetPosition (\r
- IN EFI_FILE *This,\r
- OUT UINT64 *Position\r
+ IN EFI_FILE_PROTOCOL *This,\r
+ OUT UINT64 *Position\r
)\r
/*++\r
\r
EFI_STATUS\r
EFIAPI\r
UnixSimpleFileSystemGetInfo (\r
- IN EFI_FILE *This,\r
- IN EFI_GUID *InformationType,\r
- IN OUT UINTN *BufferSize,\r
- OUT VOID *Buffer\r
+ IN EFI_FILE_PROTOCOL *This,\r
+ IN EFI_GUID *InformationType,\r
+ IN OUT UINTN *BufferSize,\r
+ OUT VOID *Buffer\r
)\r
/*++\r
\r
EFI_STATUS\r
EFIAPI\r
UnixSimpleFileSystemSetInfo (\r
- IN EFI_FILE *This,\r
+ IN EFI_FILE_PROTOCOL*This,\r
IN EFI_GUID *InformationType,\r
IN UINTN BufferSize,\r
IN VOID *Buffer\r
UINTN OldInfoSize;\r
EFI_TPL OldTpl;\r
mode_t NewAttr;\r
- struct stat OldAttr;\r
+ STAT_FIX OldAttr;\r
CHAR8 *OldFileName;\r
CHAR8 *NewFileName;\r
CHAR8 *CharPointer;\r
} else {\r
Status = gBS->AllocatePool (\r
EfiBootServicesData,\r
- AsciiStrLen (PrivateFile->FileName) + 1 + StrLen (NewFileInfo->FileName) + 1,\r
+ AsciiStrLen (PrivateFile->FileName) + 2 + StrLen (NewFileInfo->FileName) + 1,\r
(VOID **)&NewFileName\r
);\r
\r
\r
AsciiStrCpy (NewFileName, PrivateRoot->FilePath);\r
AsciiFilePtr = NewFileName + AsciiStrLen(NewFileName);\r
- while (AsciiFilePtr > NewFileName && AsciiFilePtr[-1] != '/') {\r
- AsciiFilePtr--;\r
+ if ((AsciiFilePtr[-1] != '/') && (NewFileInfo->FileName[0] != '/')) {\r
+ // make sure there is a / between Root FilePath and NewFileInfo Filename\r
+ AsciiFilePtr[0] = '/'; \r
+ AsciiFilePtr[1] = '\0';\r
+ AsciiFilePtr++;\r
}\r
UnicodeFilePtr = NewFileInfo->FileName;\r
}\r
}\r
\r
UnixStatus = PrivateFile->UnixThunk->Chmod (NewFileName, NewAttr);\r
-\r
if (UnixStatus != 0) {\r
Status = EFI_DEVICE_ERROR;\r
}\r
EFI_STATUS\r
EFIAPI\r
UnixSimpleFileSystemFlush (\r
- IN EFI_FILE *This\r
+ IN EFI_FILE_PROTOCOL *This\r
)\r
/*++\r
\r