namespace Msp {
namespace IO {
-Handle::operator const void *() const
+void sys_set_blocking(Handle &handle, bool b)
{
- return priv->handle!=-1 ? this : 0;
+ int flags = fcntl(*handle, F_GETFL);
+ fcntl(*handle, F_SETFL, (flags&~O_NONBLOCK)|(b?0:O_NONBLOCK));
}
-
-void sys_set_blocking(Handle &handle, bool b)
+void sys_set_inherit(Handle &handle, bool i)
{
int flags = fcntl(*handle, F_GETFD);
- fcntl(*handle, F_SETFL, (flags&~O_NONBLOCK)|(b?0:O_NONBLOCK));
+ fcntl(*handle, F_SETFD, (flags&~O_CLOEXEC)|(i?O_CLOEXEC:0));
}
unsigned sys_read(Handle &handle, char *buf, unsigned size)
void sys_close(Handle &handle)
{
- close(*handle);
+ if(handle)
+ {
+ close(*handle);
+ *handle = INVALID_HANDLE_VALUE;
+ }
}
} // namespace IO