From 9deb1837862777879930ed63aea3d9ebca78765b Mon Sep 17 00:00:00 2001 From: Jonas 'Sortie' Termansen Date: Tue, 22 Nov 2011 18:06:40 +0100 Subject: [PATCH] The ELF loader now uses errno. --- libmaxsi/decl/errno_values.h | 1 + libmaxsi/error.cpp | 1 + sortix/elf.cpp | 6 +++--- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/libmaxsi/decl/errno_values.h b/libmaxsi/decl/errno_values.h index abe8b545..72fa458f 100644 --- a/libmaxsi/decl/errno_values.h +++ b/libmaxsi/decl/errno_values.h @@ -17,5 +17,6 @@ #define EISDIR 25 #define EPERM 26 #define EIO 27 +#define ENOEXEC 28 #endif diff --git a/libmaxsi/error.cpp b/libmaxsi/error.cpp index 97f6364e..0ddb1245 100644 --- a/libmaxsi/error.cpp +++ b/libmaxsi/error.cpp @@ -60,6 +60,7 @@ namespace Maxsi case EISDIR: return (char*) "Is a directory"; case EPERM: return (char*) "Permission denied"; case EIO: return (char*) "Input/output error"; + case ENOEXEC: return (char*) "Not executable"; default: return (char*) "Unknown error condition"; } } diff --git a/sortix/elf.cpp b/sortix/elf.cpp index 9d219052..81b46b71 100644 --- a/sortix/elf.cpp +++ b/sortix/elf.cpp @@ -23,6 +23,7 @@ ******************************************************************************/ #include "platform.h" +#include #include #include "elf.h" #include "memorymanagement.h" @@ -117,14 +118,13 @@ namespace Sortix addr_t Construct(Process* process, const void* file, size_t filelen) { - // TODO: These messages should be returned by errno instead! - if ( filelen < sizeof(Header) ) { Log::PrintF("File is not executable\n"); return 0; } + if ( filelen < sizeof(Header) ) { Error::Set(ENOEXEC); return 0; } const Header* header = (const Header*) file; if ( !(header->magic[0] == 0x7F && header->magic[1] == 'E' && header->magic[2] == 'L' && header->magic[3] == 'F' ) ) { - Log::PrintF("File is not executable\n"); + Error::Set(ENOEXEC); return 0; }