\r
--*/\r
\r
-#include <fcntl.h>
-#include <unistd.h>
+#include <fcntl.h>\r
+#include <unistd.h>\r
#include "UnixBlockIo.h"\r
\r
//\r
UnixBlockIoDriverBindingSupported,\r
UnixBlockIoDriverBindingStart,\r
UnixBlockIoDriverBindingStop,\r
- 0x10,\r
+ 0xa,\r
NULL,\r
NULL\r
};\r
//\r
// Check the GUID to see if this is a handle type the driver supports\r
//\r
- if (CompareGuid (UnixIo->TypeGuid, &gEfiUnixVirtualDisksGuid) ) {
+ if (CompareGuid (UnixIo->TypeGuid, &gEfiUnixVirtualDisksGuid) ) {\r
Status = EFI_SUCCESS;\r
}\r
}\r
BOOLEAN WriteProtected;\r
UINTN NumberOfBlocks;\r
UINTN BlockSize;\r
- INTN i;
+ INTN i;\r
\r
//\r
// Grab the protocols we need\r
}\r
\r
Status = EFI_NOT_FOUND;\r
- // Extract filename.
+ // Extract filename.\r
Str = UnixIo->EnvString;\r
- i = 0;
- while (*Str && *Str != ':')
- Buffer[i++] = *Str++;
- Buffer[i] = 0;
+ i = 0;\r
+ while (*Str && *Str != ':')\r
+ Buffer[i++] = *Str++;\r
+ Buffer[i] = 0;\r
if (*Str != ':') {\r
goto Done;\r
}\r
\r
Str++;\r
\r
- RemovableMedia = FALSE;
- WriteProtected = TRUE;
- NumberOfBlocks = 0;
- BlockSize = 512;
- do {
+ RemovableMedia = FALSE;\r
+ WriteProtected = TRUE;\r
+ NumberOfBlocks = 0;\r
+ BlockSize = 512;\r
+ do {\r
if (*Str == 'R' || *Str == 'F') {\r
RemovableMedia = (BOOLEAN) (*Str == 'R');\r
Str++;\r
- }
+ }\r
if (*Str == 'O' || *Str == 'W') {\r
WriteProtected = (BOOLEAN) (*Str == 'O');\r
- Str++;
- }
- if (*Str == 0)
- break;
- if (*Str != ';')
- goto Done;
- Str++;
-
+ Str++;\r
+ }\r
+ if (*Str == 0)\r
+ break;\r
+ if (*Str != ';')\r
+ goto Done;\r
+ Str++;\r
+\r
NumberOfBlocks = Atoi (Str);\r
Str = GetNextElementPastTerminator (Str, ';');\r
- if (NumberOfBlocks == 0)
- break;
-
+ if (NumberOfBlocks == 0)\r
+ break;\r
+\r
BlockSize = Atoi (Str);\r
- if (BlockSize != 0)
+ if (BlockSize != 0)\r
Str = GetNextElementPastTerminator (Str, ';');\r
- } while (0);
-
+ } while (0);\r
+\r
//\r
// If we get here the variable is valid so do the work.\r
//\r
\r
Private->Filename[Index] = 0;\r
\r
- Private->Mode = (ReadOnly ? O_RDONLY : O_RDWR);
+ Private->Mode = (ReadOnly ? O_RDONLY : O_RDWR);\r
\r
Private->NumberOfBlocks = NumberOfBlocks;\r
- Private->fd = -1;
+ Private->fd = -1;\r
\r
Private->ControllerNameTable = NULL;\r
\r
//\r
// If the device is already opened, close it\r
//\r
- if (Private->fd >= 0) {
+ if (Private->fd >= 0) {\r
BlockIo->Reset (BlockIo, FALSE);\r
}\r
\r
//\r
// Open the device\r
//\r
- Private->fd = Private->UnixThunk->Open
- (Private->Filename, Private->Mode, 0644);
+ Private->fd = Private->UnixThunk->Open\r
+ (Private->Filename, Private->Mode, 0644);\r
\r
- if (Private->fd < 0) {
- DEBUG ((EFI_D_INFO, "PlOpenBlock: Could not open %s\n",
- Private->Filename));
+ if (Private->fd < 0) {\r
+ DEBUG ((EFI_D_INFO, "PlOpenBlock: Could not open %s\n",\r
+ Private->Filename));\r
BlockIo->Media->MediaPresent = FALSE;\r
Status = EFI_NO_MEDIA;\r
goto Done;\r
//\r
// first set it to 0\r
//\r
- Private->UnixThunk->FTruncate (Private->fd, 0);
+ Private->UnixThunk->FTruncate (Private->fd, 0);\r
\r
//\r
// then set it to the needed file size (OS will zero fill it)\r
//\r
- Private->UnixThunk->FTruncate (Private->fd, EndOfFile);
+ Private->UnixThunk->FTruncate (Private->fd, EndOfFile);\r
}\r
\r
DEBUG ((EFI_D_INIT, "%HPlOpenBlock: opened %s%N\n", Private->Filename));\r
--*/\r
{\r
return EFI_DEVICE_ERROR;\r
-
-#if 0
+\r
+#if 0\r
EFI_BLOCK_IO_PROTOCOL *BlockIo;\r
EFI_STATUS Status;\r
BOOLEAN ReinstallBlockIoFlag;\r
\r
-
+\r
BlockIo = &Private->BlockIo;\r
\r
switch (Private->UnixThunk->GetLastError ()) {\r
}\r
\r
return Status;\r
-#endif
+#endif\r
}\r
\r
STATIC\r
// Seek to End of File\r
//\r
DistanceToMove = MultU64x32 (Lba, BlockSize);\r
- Status = SetFilePointer64 (Private, DistanceToMove, &DistanceMoved, SEEK_SET);
+ Status = SetFilePointer64 (Private, DistanceToMove, &DistanceMoved, SEEK_SET);\r
\r
if (EFI_ERROR (Status)) {\r
DEBUG ((EFI_D_INIT, "WriteBlocks: SetFilePointer failed\n"));\r
--*/\r
{\r
UNIX_BLOCK_IO_PRIVATE *Private;\r
- ssize_t len;
+ ssize_t len;\r
EFI_STATUS Status;\r
\r
Private = UNIX_BLOCK_IO_PRIVATE_DATA_FROM_THIS (This);\r
return Status;\r
}\r
\r
- len = Private->UnixThunk->Read (Private->fd, Buffer, BufferSize);
+ len = Private->UnixThunk->Read (Private->fd, Buffer, BufferSize);\r
if (len != BufferSize) {\r
- DEBUG ((EFI_D_INIT, "ReadBlocks: ReadFile failed.\n"));
+ DEBUG ((EFI_D_INIT, "ReadBlocks: ReadFile failed.\n"));\r
return UnixBlockIoError (Private);\r
}\r
\r
--*/\r
{\r
UNIX_BLOCK_IO_PRIVATE *Private;\r
- ssize_t len;
+ ssize_t len;\r
EFI_STATUS Status;\r
\r
Private = UNIX_BLOCK_IO_PRIVATE_DATA_FROM_THIS (This);\r
return Status;\r
}\r
\r
- len = Private->UnixThunk->Write (Private->fd, Buffer, BufferSize);
+ len = Private->UnixThunk->Write (Private->fd, Buffer, BufferSize);\r
if (len != BufferSize) {\r
- DEBUG ((EFI_D_INIT, "ReadBlocks: WriteFile failed.\n"));
+ DEBUG ((EFI_D_INIT, "ReadBlocks: WriteFile failed.\n"));\r
return UnixBlockIoError (Private);\r
}\r
\r
\r
if (Private->fd >= 0) {\r
Private->UnixThunk->Close (Private->fd);\r
- Private->fd = -1;
+ Private->fd = -1;\r
}\r
\r
return EFI_SUCCESS;\r
// TODO: MoveMethod - add argument and description to function comment\r
{\r
EFI_STATUS Status;\r
- off_t res;
+ off_t res;\r
\r
- res = Private->UnixThunk->Lseek(Private->fd, DistanceToMove, MoveMethod);
- if (res == -1) {
+ res = Private->UnixThunk->Lseek(Private->fd, DistanceToMove, MoveMethod);\r
+ if (res == -1) {\r
Status = EFI_INVALID_PARAMETER;\r
}\r
\r
if (NewFilePointer != NULL) {\r
- *NewFilePointer = res;
+ *NewFilePointer = res;\r
}\r
\r
return Status;\r
UnixSimpleFileSystemDriverBindingSupported,\r
UnixSimpleFileSystemDriverBindingStart,\r
UnixSimpleFileSystemDriverBindingStop,\r
- 0x10,\r
+ 0xa,\r
NULL,\r
NULL\r
};\r
EFI_STATUS Status;\r
EFI_UNIX_IO_PROTOCOL *UnixIo;\r
UNIX_SIMPLE_FILE_SYSTEM_PRIVATE *Private;\r
- INTN i;
+ INTN i;\r
\r
Private = NULL;\r
\r
\r
Private->Signature = UNIX_SIMPLE_FILE_SYSTEM_PRIVATE_SIGNATURE;\r
Private->UnixThunk = UnixIo->UnixThunk;\r
- Private->FilePath = NULL;
- Private->VolumeLabel = NULL;
+ Private->FilePath = NULL;\r
+ Private->VolumeLabel = NULL;\r
\r
Status = gBS->AllocatePool (\r
EfiBootServicesData,\r
if (EFI_ERROR (Status)) {\r
goto Done;\r
}\r
-
- for (i = 0; UnixIo->EnvString[i] != 0; i++)
+\r
+ for (i = 0; UnixIo->EnvString[i] != 0; i++)\r
Private->FilePath[i] = UnixIo->EnvString[i];\r
- Private->FilePath[i] = 0;
+ Private->FilePath[i] = 0;\r
\r
Private->VolumeLabel = NULL;\r
Status = gBS->AllocatePool (\r
\r
if (Private != NULL) {\r
\r
- if (Private->VolumeLabel != NULL)
- gBS->FreePool (Private->VolumeLabel);
- if (Private->FilePath != NULL)
- gBS->FreePool (Private->FilePath);
+ if (Private->VolumeLabel != NULL)\r
+ gBS->FreePool (Private->VolumeLabel);\r
+ if (Private->FilePath != NULL)\r
+ gBS->FreePool (Private->FilePath);\r
FreeUnicodeStringTable (Private->ControllerNameTable);\r
\r
gBS->FreePool (Private);\r
PrivateFile->EfiFile.GetInfo = UnixSimpleFileSystemGetInfo;\r
PrivateFile->EfiFile.SetInfo = UnixSimpleFileSystemSetInfo;\r
PrivateFile->EfiFile.Flush = UnixSimpleFileSystemFlush;\r
- PrivateFile->fd = -1;
- PrivateFile->Dir = NULL;
- PrivateFile->Dirent = NULL;
+ PrivateFile->fd = -1;\r
+ PrivateFile->Dir = NULL;\r
+ PrivateFile->Dirent = NULL;\r
\r
*Root = &PrivateFile->EfiFile;\r
\r
- PrivateFile->Dir = PrivateFile->UnixThunk->OpenDir(PrivateFile->FileName);
+ PrivateFile->Dir = PrivateFile->UnixThunk->OpenDir(PrivateFile->FileName);\r
\r
- if (PrivateFile->Dir == NULL) {
+ if (PrivateFile->Dir == NULL) {\r
Status = EFI_ACCESS_DENIED;\r
- }
- else {
+ }\r
+ else {\r
Status = EFI_SUCCESS;\r
- }
+ }\r
\r
Done:\r
if (EFI_ERROR (Status)) {\r
UNIX_EFI_FILE_PRIVATE *NewPrivateFile;\r
UNIX_SIMPLE_FILE_SYSTEM_PRIVATE *PrivateRoot;\r
EFI_STATUS Status;\r
- CHAR16 *Src;
- char *Dst;
+ CHAR16 *Src;\r
+ char *Dst;\r
CHAR8 *RealFileName;\r
//CHAR16 *TempFileName;\r
char *ParseFileName;\r
// BUGBUG: assume an open of root\r
// if current location, return current data\r
//\r
- if (StrCmp (FileName, L"\\") == 0
+ if (StrCmp (FileName, L"\\") == 0\r
|| (StrCmp (FileName, L".") == 0 && PrivateFile->IsRootDirectory)) {\r
//\r
// BUGBUG: assume an open root\r
\r
if (*FileName == L'\\') {\r
AsciiStrCpy (NewPrivateFile->FileName, PrivateRoot->FilePath);\r
- // Skip first '\'.
- Src = FileName + 1;
+ // Skip first '\'.\r
+ Src = FileName + 1;\r
} else {\r
AsciiStrCpy (NewPrivateFile->FileName, PrivateFile->FileName);\r
- Src = FileName;
- }\r
- Dst = NewPrivateFile->FileName + AsciiStrLen(NewPrivateFile->FileName);
- GuardPointer = NewPrivateFile->FileName + AsciiStrLen(PrivateRoot->FilePath);
- *Dst++ = '/';
- // Convert unicode to ascii and '\' to '/'
- while (*Src) {
- if (*Src == '\\')
- *Dst++ = '/';
- else
- *Dst++ = *Src;
- Src++;
- }
- *Dst = 0;
-
+ Src = FileName;\r
+ }\r
+ Dst = NewPrivateFile->FileName + AsciiStrLen(NewPrivateFile->FileName);\r
+ GuardPointer = NewPrivateFile->FileName + AsciiStrLen(PrivateRoot->FilePath);\r
+ *Dst++ = '/';\r
+ // Convert unicode to ascii and '\' to '/'\r
+ while (*Src) {\r
+ if (*Src == '\\')\r
+ *Dst++ = '/';\r
+ else\r
+ *Dst++ = *Src;\r
+ Src++;\r
+ }\r
+ *Dst = 0;\r
+ \r
\r
//\r
// Get rid of . and .., except leading . or ..\r
}\r
\r
RealFileName = NewPrivateFile->FileName + AsciiStrLen(NewPrivateFile->FileName) - 1;\r
- while (RealFileName > NewPrivateFile->FileName && *RealFileName != '/')
- RealFileName--;
+ while (RealFileName > NewPrivateFile->FileName && *RealFileName != '/')\r
+ RealFileName--;\r
\r
TempChar = *(RealFileName - 1);\r
*(RealFileName - 1) = 0;\r
\r
*(RealFileName - 1) = TempChar;\r
\r
-
-
+\r
+\r
//\r
// Test whether file or directory\r
//\r
NewPrivateFile->IsRootDirectory = FALSE;\r
- NewPrivateFile->fd = -1;
- NewPrivateFile->Dir = NULL;
+ NewPrivateFile->fd = -1;\r
+ NewPrivateFile->Dir = NULL;\r
if (OpenMode & EFI_FILE_MODE_CREATE) {\r
if (Attributes & EFI_FILE_DIRECTORY) {\r
NewPrivateFile->IsDirectoryPath = TRUE;\r
NewPrivateFile->IsDirectoryPath = FALSE;\r
}\r
} else {\r
- struct stat finfo;
- int res = NewPrivateFile->UnixThunk->Stat (NewPrivateFile->FileName, &finfo);
- if (res == 0 && S_ISDIR(finfo.st_mode))
+ struct stat finfo;\r
+ int res = NewPrivateFile->UnixThunk->Stat (NewPrivateFile->FileName, &finfo);\r
+ if (res == 0 && S_ISDIR(finfo.st_mode))\r
NewPrivateFile->IsDirectoryPath = TRUE;\r
- else
+ else\r
NewPrivateFile->IsDirectoryPath = FALSE;\r
}\r
\r
// Create a directory\r
//\r
if (NewPrivateFile->UnixThunk->MkDir (NewPrivateFile->FileName, 0777) != 0) {\r
- INTN LastError;
+ INTN LastError;\r
\r
LastError = PrivateFile->UnixThunk->GetErrno ();\r
- if (LastError != EEXIST) {
+ if (LastError != EEXIST) {\r
//gBS->FreePool (TempFileName);\r
Status = EFI_ACCESS_DENIED;\r
goto Done;\r
}\r
}\r
\r
- NewPrivateFile->Dir = NewPrivateFile->UnixThunk->OpenDir
- (NewPrivateFile->FileName);
+ NewPrivateFile->Dir = NewPrivateFile->UnixThunk->OpenDir\r
+ (NewPrivateFile->FileName);\r
\r
- if (NewPrivateFile->Dir == NULL) {
- if (PrivateFile->UnixThunk->GetErrno () == EACCES) {
+ if (NewPrivateFile->Dir == NULL) {\r
+ if (PrivateFile->UnixThunk->GetErrno () == EACCES) {\r
Status = EFI_ACCESS_DENIED;\r
} else {\r
Status = EFI_NOT_FOUND;\r
//\r
// deal with file\r
//\r
- NewPrivateFile->fd = NewPrivateFile->UnixThunk->Open
+ NewPrivateFile->fd = NewPrivateFile->UnixThunk->Open\r
(NewPrivateFile->FileName,\r
- ((OpenMode & EFI_FILE_MODE_CREATE) ? O_CREAT : 0)
- | (NewPrivateFile->IsOpenedByRead ? O_RDONLY : O_RDWR),
- 0666);
- if (NewPrivateFile->fd < 0) {
- if (PrivateFile->UnixThunk->GetErrno () == ENOENT) {
+ ((OpenMode & EFI_FILE_MODE_CREATE) ? O_CREAT : 0)\r
+ | (NewPrivateFile->IsOpenedByRead ? O_RDONLY : O_RDWR),\r
+ 0666);\r
+ if (NewPrivateFile->fd < 0) {\r
+ if (PrivateFile->UnixThunk->GetErrno () == ENOENT) {\r
Status = EFI_NOT_FOUND;\r
} else {\r
Status = EFI_ACCESS_DENIED;\r
\r
PrivateFile = UNIX_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
\r
- if (PrivateFile->fd >= 0) {
+ if (PrivateFile->fd >= 0) {\r
PrivateFile->UnixThunk->Close (PrivateFile->fd);\r
- }
- if (PrivateFile->Dir != NULL) {
+ }\r
+ if (PrivateFile->Dir != NULL) {\r
PrivateFile->UnixThunk->CloseDir (PrivateFile->Dir);\r
- }
+ }\r
\r
- PrivateFile->fd = -1;
- PrivateFile->Dir = NULL;
+ PrivateFile->fd = -1;\r
+ PrivateFile->Dir = NULL;\r
\r
if (PrivateFile->FileName) {\r
gBS->FreePool (PrivateFile->FileName);\r
if (PrivateFile->IsDirectoryPath) {\r
if (PrivateFile->Dir != NULL) {\r
PrivateFile->UnixThunk->CloseDir (PrivateFile->Dir);\r
- PrivateFile->Dir = NULL;
+ PrivateFile->Dir = NULL;\r
}\r
\r
if (PrivateFile->UnixThunk->RmDir (PrivateFile->FileName) == 0) {\r
}\r
} else {\r
PrivateFile->UnixThunk->Close (PrivateFile->fd);\r
- PrivateFile->fd = -1;
+ PrivateFile->fd = -1;\r
\r
if (!PrivateFile->IsOpenedByRead) {\r
if (!PrivateFile->UnixThunk->UnLink (PrivateFile->FileName)) {\r
VOID\r
UnixSystemTimeToEfiTime (\r
EFI_UNIX_THUNK_PROTOCOL *UnixThunk,\r
- IN time_t SystemTime,
+ IN time_t SystemTime,\r
OUT EFI_TIME *Time\r
)\r
/*++\r
\r
--*/\r
{\r
- struct tm *tm;
- tm = UnixThunk->GmTime (&SystemTime);
- Time->Year = tm->tm_year;
- Time->Month = tm->tm_mon;
- Time->Day = tm->tm_mday;
- Time->Hour = tm->tm_hour;
- Time->Minute = tm->tm_min;
- Time->Second = tm->tm_sec;
- Time->Nanosecond = 0;
-
- Time->TimeZone = UnixThunk->GetTimeZone ();
-\r
- if (UnixThunk->GetDayLight ()) {
+ struct tm *tm;\r
+ tm = UnixThunk->GmTime (&SystemTime);\r
+ Time->Year = tm->tm_year;\r
+ Time->Month = tm->tm_mon;\r
+ Time->Day = tm->tm_mday;\r
+ Time->Hour = tm->tm_hour;\r
+ Time->Minute = tm->tm_min;\r
+ Time->Second = tm->tm_sec;\r
+ Time->Nanosecond = 0;\r
+\r
+ Time->TimeZone = UnixThunk->GetTimeZone ();\r
+\r
+ if (UnixThunk->GetDayLight ()) {\r
Time->Daylight = EFI_TIME_ADJUST_DAYLIGHT;\r
}\r
}\r
EFI_STATUS\r
UnixSimpleFileSystemFileInfo (\r
UNIX_EFI_FILE_PRIVATE *PrivateFile,\r
- IN CHAR8 *FileName,
+ IN CHAR8 *FileName,\r
IN OUT UINTN *BufferSize,\r
OUT VOID *Buffer\r
)\r
EFI_FILE_INFO *Info;\r
CHAR8 *RealFileName;\r
CHAR8 *TempPointer;\r
- CHAR16 *BufferFileName;
- struct stat buf;
+ CHAR16 *BufferFileName;\r
+ struct stat buf;\r
\r
- if (FileName != NULL) {
- RealFileName = FileName;
- }
+ if (FileName != NULL) {\r
+ RealFileName = FileName;\r
+ }\r
else if (PrivateFile->IsRootDirectory) {\r
- RealFileName = "";
+ RealFileName = "";\r
} else {\r
RealFileName = PrivateFile->FileName;\r
- }
-
+ }\r
+\r
TempPointer = RealFileName;\r
while (*TempPointer) {\r
if (*TempPointer == '/') {\r
\r
TempPointer++;\r
}\r
-
+\r
Size = SIZE_OF_EFI_FILE_INFO;\r
NameSize = AsciiStrSize (RealFileName) * 2;\r
ResultSize = Size + NameSize;\r
if (*BufferSize < ResultSize) {\r
*BufferSize = ResultSize;\r
return EFI_BUFFER_TOO_SMALL;\r
- }
- if (PrivateFile->UnixThunk->Stat (
- FileName == NULL ? PrivateFile->FileName : FileName,
- &buf) < 0)
- return EFI_DEVICE_ERROR;
-
+ }\r
+ if (PrivateFile->UnixThunk->Stat (\r
+ FileName == NULL ? PrivateFile->FileName : FileName,\r
+ &buf) < 0)\r
+ return EFI_DEVICE_ERROR;\r
+\r
Status = EFI_SUCCESS;\r
\r
Info = Buffer;\r
ZeroMem (Info, ResultSize);\r
\r
Info->Size = ResultSize;\r
- Info->FileSize = buf.st_size;
- Info->PhysicalSize = MultU64x32 (buf.st_blocks, buf.st_blksize);
-\r
- UnixSystemTimeToEfiTime (PrivateFile->UnixThunk, buf.st_ctime, &Info->CreateTime);
- UnixSystemTimeToEfiTime (PrivateFile->UnixThunk, buf.st_atime, &Info->LastAccessTime);
- UnixSystemTimeToEfiTime (PrivateFile->UnixThunk, buf.st_mtime, &Info->ModificationTime);
-
- if (!(buf.st_mode & S_IWUSR)) {
+ Info->FileSize = buf.st_size;\r
+ Info->PhysicalSize = MultU64x32 (buf.st_blocks, buf.st_blksize);\r
+\r
+ UnixSystemTimeToEfiTime (PrivateFile->UnixThunk, buf.st_ctime, &Info->CreateTime);\r
+ UnixSystemTimeToEfiTime (PrivateFile->UnixThunk, buf.st_atime, &Info->LastAccessTime);\r
+ UnixSystemTimeToEfiTime (PrivateFile->UnixThunk, buf.st_mtime, &Info->ModificationTime);\r
+\r
+ if (!(buf.st_mode & S_IWUSR)) {\r
Info->Attribute |= EFI_FILE_READ_ONLY;\r
}\r
\r
- if (S_ISDIR(buf.st_mode)) {
+ if (S_ISDIR(buf.st_mode)) {\r
Info->Attribute |= EFI_FILE_DIRECTORY;\r
}\r
\r
\r
- BufferFileName = (CHAR16 *)((CHAR8 *) Buffer + Size);
- while (*RealFileName)
- *BufferFileName++ = *RealFileName++;
- *BufferFileName = 0;
-
+ BufferFileName = (CHAR16 *)((CHAR8 *) Buffer + Size);\r
+ while (*RealFileName)\r
+ *BufferFileName++ = *RealFileName++;\r
+ *BufferFileName = 0;\r
+\r
*BufferSize = ResultSize;\r
return Status;\r
}\r
{\r
UNIX_EFI_FILE_PRIVATE *PrivateFile;\r
EFI_STATUS Status;\r
- INTN Res;
+ INTN Res;\r
UINTN Size;\r
UINTN NameSize;\r
UINTN ResultSize;\r
- CHAR8 *FullFileName;
+ CHAR8 *FullFileName;\r
\r
if (This == NULL || BufferSize == NULL || Buffer == NULL) {\r
return EFI_INVALID_PARAMETER;\r
Res = PrivateFile->UnixThunk->Read (\r
PrivateFile->fd,\r
Buffer,\r
- *BufferSize);
- if (Res < 0)
- return EFI_DEVICE_ERROR;
- *BufferSize = Res;
- return EFI_SUCCESS;
+ *BufferSize);\r
+ if (Res < 0)\r
+ return EFI_DEVICE_ERROR;\r
+ *BufferSize = Res;\r
+ return EFI_SUCCESS;\r
}\r
\r
//\r
- // Read on a directory.
+ // Read on a directory.\r
//\r
if (PrivateFile->Dir == NULL) {\r
return EFI_DEVICE_ERROR;\r
}\r
-
- if (PrivateFile->Dirent == NULL) {
- PrivateFile->Dirent = PrivateFile->UnixThunk->ReadDir (PrivateFile->Dir);
- if (PrivateFile->Dirent == NULL) {
+\r
+ if (PrivateFile->Dirent == NULL) {\r
+ PrivateFile->Dirent = PrivateFile->UnixThunk->ReadDir (PrivateFile->Dir);\r
+ if (PrivateFile->Dirent == NULL) {\r
*BufferSize = 0;\r
return EFI_SUCCESS;\r
- }
- }
-
+ }\r
+ }\r
+\r
Size = SIZE_OF_EFI_FILE_INFO;\r
- NameSize = AsciiStrLen (PrivateFile->Dirent->d_name) + 1;
+ NameSize = AsciiStrLen (PrivateFile->Dirent->d_name) + 1;\r
ResultSize = Size + 2 * NameSize;\r
\r
if (*BufferSize < ResultSize) {\r
*BufferSize = ResultSize;\r
return EFI_BUFFER_TOO_SMALL;\r
- }
+ }\r
Status = EFI_SUCCESS;\r
\r
*BufferSize = ResultSize;\r
-
+\r
Status = gBS->AllocatePool (\r
EfiBootServicesData,\r
- AsciiStrLen(PrivateFile->FileName) + 1 + NameSize,
- (VOID **)&FullFileName
+ AsciiStrLen(PrivateFile->FileName) + 1 + NameSize,\r
+ (VOID **)&FullFileName\r
);\r
\r
if (EFI_ERROR (Status)) {\r
- return Status;
+ return Status;\r
}\r
-
- AsciiStrCpy(FullFileName, PrivateFile->FileName);
- AsciiStrCat(FullFileName, "/");
- AsciiStrCat(FullFileName, PrivateFile->Dirent->d_name);
- Status = UnixSimpleFileSystemFileInfo (PrivateFile,
- FullFileName,
- BufferSize,
- Buffer);
- gBS->FreePool (FullFileName);
+ \r
+ AsciiStrCpy(FullFileName, PrivateFile->FileName);\r
+ AsciiStrCat(FullFileName, "/");\r
+ AsciiStrCat(FullFileName, PrivateFile->Dirent->d_name);\r
+ Status = UnixSimpleFileSystemFileInfo (PrivateFile,\r
+ FullFileName,\r
+ BufferSize,\r
+ Buffer);\r
+ gBS->FreePool (FullFileName);\r
\r
- PrivateFile->Dirent = NULL;
+ PrivateFile->Dirent = NULL;\r
\r
- return Status;
+ return Status;\r
}\r
\r
EFI_STATUS\r
// TODO: EFI_INVALID_PARAMETER - add return value to function comment\r
{\r
UNIX_EFI_FILE_PRIVATE *PrivateFile;\r
- UINTN Res;
+ UINTN Res;\r
\r
if (This == NULL || BufferSize == NULL || Buffer == NULL) {\r
return EFI_INVALID_PARAMETER;\r
Res = PrivateFile->UnixThunk->Write (\r
PrivateFile->fd,\r
Buffer,\r
- *BufferSize);
- if (Res == (UINTN)-1)
- return EFI_DEVICE_ERROR;
- *BufferSize = Res;
- return EFI_SUCCESS;
+ *BufferSize);\r
+ if (Res == (UINTN)-1)\r
+ return EFI_DEVICE_ERROR;\r
+ *BufferSize = Res;\r
+ return EFI_SUCCESS;\r
\r
//\r
// bugbug: need to access unix error reporting\r
return EFI_UNSUPPORTED;\r
}\r
\r
- if (PrivateFile->Dir == NULL) {
- return EFI_DEVICE_ERROR;
- }
- PrivateFile->UnixThunk->RewindDir (PrivateFile->Dir);
+ if (PrivateFile->Dir == NULL) {\r
+ return EFI_DEVICE_ERROR;\r
+ }\r
+ PrivateFile->UnixThunk->RewindDir (PrivateFile->Dir);\r
return EFI_SUCCESS;\r
} else {\r
if (Position == (UINT64) -1) {\r
Pos = PrivateFile->UnixThunk->Lseek (PrivateFile->fd, 0, SEEK_END);\r
} else {\r
Pos = PrivateFile->UnixThunk->Lseek (PrivateFile->fd, Position, SEEK_SET);\r
- }
+ }\r
Status = (Pos == (UINT64) -1) ? EFI_DEVICE_ERROR : EFI_SUCCESS;\r
\r
return Status;\r
if (PrivateFile->IsDirectoryPath) {\r
return EFI_UNSUPPORTED;\r
} else {\r
- *Position = PrivateFile->UnixThunk->Lseek (PrivateFile->fd, 0, SEEK_CUR);
+ *Position = PrivateFile->UnixThunk->Lseek (PrivateFile->fd, 0, SEEK_CUR);\r
return (*Position == (UINT64) -1) ? EFI_DEVICE_ERROR : EFI_SUCCESS;\r
}\r
}\r
EFI_FILE_SYSTEM_INFO *FileSystemInfoBuffer;\r
INTN UnixStatus;\r
UNIX_SIMPLE_FILE_SYSTEM_PRIVATE *PrivateRoot;\r
- struct statfs buf;
+ struct statfs buf;\r
\r
if (This == NULL || InformationType == NULL || BufferSize == NULL) {\r
return EFI_INVALID_PARAMETER;\r
return EFI_BUFFER_TOO_SMALL;\r
}\r
\r
- UnixStatus = PrivateFile->UnixThunk->StatFs (PrivateFile->FileName, &buf);
- if (UnixStatus < 0)
+ UnixStatus = PrivateFile->UnixThunk->StatFs (PrivateFile->FileName, &buf);\r
+ if (UnixStatus < 0)\r
return EFI_DEVICE_ERROR;\r
-
+\r
FileSystemInfoBuffer = (EFI_FILE_SYSTEM_INFO *) Buffer;\r
FileSystemInfoBuffer->Size = SIZE_OF_EFI_FILE_SYSTEM_INFO + StrSize (PrivateRoot->VolumeLabel);\r
FileSystemInfoBuffer->ReadOnly = FALSE;\r
//\r
// Succeeded\r
//\r
- FileSystemInfoBuffer->VolumeSize = MultU64x32 (buf.f_blocks, buf.f_bsize);
- FileSystemInfoBuffer->FreeSpace = MultU64x32 (buf.f_bavail, buf.f_bsize);
- FileSystemInfoBuffer->BlockSize = buf.f_bsize;
+ FileSystemInfoBuffer->VolumeSize = MultU64x32 (buf.f_blocks, buf.f_bsize);\r
+ FileSystemInfoBuffer->FreeSpace = MultU64x32 (buf.f_bavail, buf.f_bsize);\r
+ FileSystemInfoBuffer->BlockSize = buf.f_bsize;\r
\r
\r
StrCpy ((CHAR16 *) FileSystemInfoBuffer->VolumeLabel, PrivateRoot->VolumeLabel);\r
Status = EFI_SUCCESS;\r
}\r
\r
- else if (CompareGuid (InformationType,
+ else if (CompareGuid (InformationType,\r
&gEfiFileSystemVolumeLabelInfoIdGuid)) {\r
if (*BufferSize < StrSize (PrivateRoot->VolumeLabel)) {\r
*BufferSize = StrSize (PrivateRoot->VolumeLabel);\r
struct tm NewLastAccessSystemTime;\r
struct tm NewLastWriteSystemTime;\r
EFI_FILE_SYSTEM_INFO *NewFileSystemInfo;\r
- CHAR8 *AsciiFilePtr;
- CHAR16 *UnicodeFilePtr;
- INTN UnixStatus;
+ CHAR8 *AsciiFilePtr;\r
+ CHAR16 *UnicodeFilePtr;\r
+ INTN UnixStatus;\r
\r
//\r
// Check for invalid parameters.\r
goto Done;\r
}\r
\r
- Status = gBS->AllocatePool (EfiBootServicesData, OldInfoSize,
+ Status = gBS->AllocatePool (EfiBootServicesData, OldInfoSize,\r
(VOID **)&OldFileInfo);\r
\r
if (EFI_ERROR (Status)) {\r
}\r
\r
AsciiStrCpy (NewFileName, PrivateRoot->FilePath);\r
- AsciiFilePtr = NewFileName + AsciiStrLen(NewFileName);
- UnicodeFilePtr = NewFileInfo->FileName + 1;
- *AsciiFilePtr++ ='/';
+ AsciiFilePtr = NewFileName + AsciiStrLen(NewFileName);\r
+ UnicodeFilePtr = NewFileInfo->FileName + 1;\r
+ *AsciiFilePtr++ ='/';\r
} else {\r
Status = gBS->AllocatePool (\r
EfiBootServicesData,\r
}\r
\r
AsciiStrCpy (NewFileName, PrivateRoot->FilePath);\r
- AsciiFilePtr = NewFileName + AsciiStrLen(NewFileName);
- while (AsciiFilePtr > NewFileName && AsciiFilePtr[-1] != '/') {
- AsciiFilePtr--;
- }
- UnicodeFilePtr = NewFileInfo->FileName;
+ AsciiFilePtr = NewFileName + AsciiStrLen(NewFileName);\r
+ while (AsciiFilePtr > NewFileName && AsciiFilePtr[-1] != '/') {\r
+ AsciiFilePtr--;\r
+ }\r
+ UnicodeFilePtr = NewFileInfo->FileName;\r
+ }\r
+ // Convert to ascii.\r
+ while (*UnicodeFilePtr) {\r
+ *AsciiFilePtr++ = *UnicodeFilePtr++;\r
}\r
- // Convert to ascii.
- while (*UnicodeFilePtr) {
- *AsciiFilePtr++ = *UnicodeFilePtr++;
- }
- *AsciiFilePtr = 0;
-
+ *AsciiFilePtr = 0;\r
+\r
\r
//\r
// Is there an attribute change request?\r
//\r
// Set file or directory information.\r
//\r
- if (PrivateFile->UnixThunk->Stat (OldFileName, &OldAttr) != 0) {
- Status = EFI_DEVICE_ERROR;
- goto Done;
- }
+ if (PrivateFile->UnixThunk->Stat (OldFileName, &OldAttr) != 0) {\r
+ Status = EFI_DEVICE_ERROR;\r
+ goto Done;\r
+ }\r
\r
//\r
// Name change.\r
// Time change\r
//\r
if (TimeChangeFlag) {\r
- struct utimbuf utime;
+ struct utimbuf utime;\r
\r
NewLastAccessSystemTime.tm_year = NewFileInfo->LastAccessTime.Year;\r
NewLastAccessSystemTime.tm_mon = NewFileInfo->LastAccessTime.Month;\r
NewLastAccessSystemTime.tm_hour = NewFileInfo->LastAccessTime.Hour;\r
NewLastAccessSystemTime.tm_min = NewFileInfo->LastAccessTime.Minute;\r
NewLastAccessSystemTime.tm_sec = NewFileInfo->LastAccessTime.Second;\r
- NewLastAccessSystemTime.tm_isdst = 0;
+ NewLastAccessSystemTime.tm_isdst = 0;\r
+\r
+ utime.actime = PrivateFile->UnixThunk->MkTime (&NewLastAccessSystemTime);\r
\r
- utime.actime = PrivateFile->UnixThunk->MkTime (&NewLastAccessSystemTime);
-
NewLastWriteSystemTime.tm_year = NewFileInfo->ModificationTime.Year;\r
NewLastWriteSystemTime.tm_mon = NewFileInfo->ModificationTime.Month;\r
NewLastWriteSystemTime.tm_mday = NewFileInfo->ModificationTime.Day;\r
NewLastWriteSystemTime.tm_hour = NewFileInfo->ModificationTime.Hour;\r
NewLastWriteSystemTime.tm_min = NewFileInfo->ModificationTime.Minute;\r
NewLastWriteSystemTime.tm_sec = NewFileInfo->ModificationTime.Second;\r
- NewLastWriteSystemTime.tm_isdst = 0;
+ NewLastWriteSystemTime.tm_isdst = 0;\r
+\r
+ utime.modtime = PrivateFile->UnixThunk->MkTime (&NewLastWriteSystemTime);\r
\r
- utime.modtime = PrivateFile->UnixThunk->MkTime (&NewLastWriteSystemTime);
-
- if (utime.actime == (time_t)-1 || utime.modtime == (time_t)-1) {
+ if (utime.actime == (time_t)-1 || utime.modtime == (time_t)-1) {\r
goto Done;\r
}\r
\r
- if (PrivateFile->UnixThunk->UTime (PrivateFile->FileName, &utime) == -1) {
+ if (PrivateFile->UnixThunk->UTime (PrivateFile->FileName, &utime) == -1) {\r
goto Done;\r
}\r
}\r
NewAttr = OldAttr.st_mode;\r
\r
if (NewFileInfo->Attribute & EFI_FILE_READ_ONLY) {\r
- NewAttr &= ~(S_IRUSR | S_IRGRP | S_IROTH);
+ NewAttr &= ~(S_IRUSR | S_IRGRP | S_IROTH);\r
} else {\r
- NewAttr |= S_IRUSR;
+ NewAttr |= S_IRUSR;\r
}\r
\r
UnixStatus = PrivateFile->UnixThunk->Chmod (NewFileName, NewAttr);\r
return EFI_ACCESS_DENIED;\r
}\r
\r
- if (PrivateFile->fd < 0) {
+ if (PrivateFile->fd < 0) {\r
return EFI_DEVICE_ERROR;\r
}\r
-
+\r
return PrivateFile->UnixThunk->FSync (PrivateFile->fd) == 0 ? EFI_SUCCESS : EFI_DEVICE_ERROR;\r
\r
//\r