#include "handle.h"
#include "handle_private.h"
+using namespace std;
+
namespace Msp {
namespace IO {
void sys_set_blocking(Handle &handle, bool b)
{
- int flags = fcntl(*handle, F_GETFD);
+ int flags = fcntl(*handle, F_GETFL);
fcntl(*handle, F_SETFL, (flags&~O_NONBLOCK)|(b?0:O_NONBLOCK));
}
-unsigned sys_read(Handle &handle, char *buf, unsigned size)
+void sys_set_inherit(Handle &handle, bool i)
+{
+ int flags = fcntl(*handle, F_GETFD);
+ fcntl(*handle, F_SETFD, (flags&~O_CLOEXEC)|(i?O_CLOEXEC:0));
+}
+
+size_t sys_read(Handle &handle, char *buf, size_t size)
{
- int ret = read(*handle, buf, size);
+ ssize_t ret = read(*handle, buf, size);
if(ret==-1)
{
if(errno==EAGAIN)
return ret;
}
-unsigned sys_write(Handle &handle, const char *buf, unsigned size)
+size_t sys_write(Handle &handle, const char *buf, size_t size)
{
- int ret = write(*handle, buf, size);
+ ssize_t ret = write(*handle, buf, size);
if(ret==-1)
{
if(errno==EAGAIN)