Data Structures | |
| struct | s_PXENV_FILE_OPEN |
| Parameter block for pxenv_file_open(). More... | |
Defines | |
| #define | PXENV_FILE_OPEN 0x00e0 |
| PXE API function code for pxenv_file_open(). | |
Typedefs | |
| typedef struct s_PXENV_FILE_OPEN | PXENV_FILE_OPEN_t |
Functions | |
| PXENV_EXIT_t | pxenv_file_open (struct s_PXENV_FILE_OPEN *file_open) |
| FILE OPEN. | |
| #define PXENV_FILE_OPEN 0x00e0 |
PXE API function code for pxenv_file_open().
Definition at line 1619 of file pxe_api.h.
Referenced by pxe_api_call().
| typedef struct s_PXENV_FILE_OPEN PXENV_FILE_OPEN_t |
| PXENV_EXIT_t pxenv_file_open | ( | struct s_PXENV_FILE_OPEN * | file_open | ) |
FILE OPEN.
| file_open | Pointer to a struct s_PXENV_FILE_OPEN | |
| s_PXENV_FILE_OPEN::FileName | URL of file to open |
| PXENV_EXIT_SUCCESS | File was opened | |
| PXENV_EXIT_FAILURE | File was not opened | |
| s_PXENV_FILE_OPEN::Status | PXE status code | |
| s_PXENV_FILE_OPEN::FileHandle | Handle of opened file |
Definition at line 52 of file pxe_file.c.
References copy_from_user(), DBG, s_PXENV_FILE_OPEN::FileHandle, s_PXENV_FILE_OPEN::FileName, s_SEGOFF16::offset, open(), PXENV_EXIT_FAILURE, PXENV_EXIT_SUCCESS, PXENV_STATUS, PXENV_STATUS_SUCCESS, real_to_user(), s_SEGOFF16::segment, s_PXENV_FILE_OPEN::Status, and strlen_user().
Referenced by pxe_api_call().
00052 { 00053 userptr_t filename; 00054 size_t filename_len; 00055 int fd; 00056 00057 DBG ( "PXENV_FILE_OPEN" ); 00058 00059 /* Copy name from external program, and open it */ 00060 filename = real_to_user ( file_open->FileName.segment, 00061 file_open->FileName.offset ); 00062 filename_len = strlen_user ( filename, 0 ); 00063 { 00064 char uri_string[ filename_len + 1 ]; 00065 00066 copy_from_user ( uri_string, filename, 0, 00067 sizeof ( uri_string ) ); 00068 DBG ( " %s", uri_string ); 00069 fd = open ( uri_string ); 00070 } 00071 00072 if ( fd < 0 ) { 00073 file_open->Status = PXENV_STATUS ( fd ); 00074 return PXENV_EXIT_FAILURE; 00075 } 00076 00077 DBG ( " as file %d", fd ); 00078 00079 file_open->FileHandle = fd; 00080 file_open->Status = PXENV_STATUS_SUCCESS; 00081 return PXENV_EXIT_SUCCESS; 00082 }
1.5.7.1