execve(2) now sets errno=EACCESS on non-buffer files.

This commit is contained in:
Jonas 'Sortie' Termansen 2011-11-22 18:21:01 +01:00
parent 9deb183786
commit e234e0a2d4
3 changed files with 5 additions and 3 deletions

View File

@ -18,5 +18,6 @@
#define EPERM 26
#define EIO 27
#define ENOEXEC 28
#define EACCESS 29
#endif

View File

@ -32,7 +32,7 @@ namespace Maxsi
{
DEFN_SYSCALL1(int, SysRegisterErrno, 28, int*);
extern "C" int errno = 0;
extern "C" { int errno = 0; }
extern "C" void init_error_functions()
{
@ -58,9 +58,10 @@ namespace Maxsi
case ENOMEM: return (char*) "Not enough space";
case ERANGE: return (char*) "Result too large";
case EISDIR: return (char*) "Is a directory";
case EPERM: return (char*) "Permission denied";
case EPERM: return (char*) "Operation not permitted";
case EIO: return (char*) "Input/output error";
case ENOEXEC: return (char*) "Not executable";
case EACCESS: return (char*) "Permission denied";
default: return (char*) "Unknown error condition";
}
}

View File

@ -397,7 +397,7 @@ namespace Sortix
delete[] abs;
if ( !dev ) { return NULL; }
if ( !dev->IsType(Device::BUFFER) ) { dev->Unref(); return NULL; }
if ( !dev->IsType(Device::BUFFER) ) { Error::Set(EACCESS); dev->Unref(); return NULL; }
return (DevBuffer*) dev;
}