diff options
| author | Michael Brown | 2013-04-18 22:29:53 +0200 |
|---|---|---|
| committer | Michael Brown | 2013-04-19 14:34:19 +0200 |
| commit | 54409583e29c481556e94a99dc73316d18aafc74 (patch) | |
| tree | 150a8ceb85c1b523dc8dd8dd36daf8f6260e6538 /src/interface/efi/efi_console.c | |
| parent | [libc] Redefine low 8 bits of error code as "platform error code" (diff) | |
| download | ipxe-54409583e29c481556e94a99dc73316d18aafc74.tar.gz ipxe-54409583e29c481556e94a99dc73316d18aafc74.tar.xz ipxe-54409583e29c481556e94a99dc73316d18aafc74.zip | |
[efi] Perform meaningful error code conversions
Exploit the redefinition of iPXE error codes to include a "platform
error code" to allow for meaningful conversion of EFI_STATUS values to
iPXE errors and vice versa.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/interface/efi/efi_console.c')
| -rw-r--r-- | src/interface/efi/efi_console.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/interface/efi/efi_console.c b/src/interface/efi/efi_console.c index a30ca301b..d86d30c91 100644 --- a/src/interface/efi/efi_console.c +++ b/src/interface/efi/efi_console.c @@ -20,6 +20,8 @@ FILE_LICENCE ( GPL2_OR_LATER ); #include <stddef.h> +#include <string.h> +#include <errno.h> #include <assert.h> #include <ipxe/efi/efi.h> #include <ipxe/ansiesc.h> @@ -227,6 +229,7 @@ static int efi_getchar ( void ) { const char *ansi_seq; EFI_INPUT_KEY key; EFI_STATUS efirc; + int rc; /* If we are mid-sequence, pass out the next byte */ if ( *ansi_input ) @@ -234,8 +237,8 @@ static int efi_getchar ( void ) { /* Read key from real EFI console */ if ( ( efirc = conin->ReadKeyStroke ( conin, &key ) ) != 0 ) { - DBG ( "EFI could not read keystroke: %s\n", - efi_strerror ( efirc ) ); + rc = -EEFI ( efirc ); + DBG ( "EFI could not read keystroke: %s\n", strerror ( rc ) ); return 0; } DBG2 ( "EFI read key stroke with unicode %04x scancode %04x\n", |
