void File::set_block(bool b)
{
- mode = b?(mode&~M_NONBLOCK):(mode|M_NONBLOCK);
+ adjust_mode(mode, M_NONBLOCK, !b);
sys_set_blocking(handle, b);
}
-unsigned File::do_write(const char *buf, unsigned size)
+void File::set_inherit(bool i)
+{
+ adjust_mode(mode, M_INHERIT, i);
+ sys_set_inherit(handle, i);
+}
+
+size_t File::do_write(const char *buf, size_t size)
{
check_access(M_WRITE);
return sys_write(handle, buf, size);
}
-unsigned File::do_read(char *buf, unsigned size)
+size_t File::do_read(char *buf, size_t size)
{
check_access(M_READ);
if(size==0)
return 0;
- unsigned ret = sys_read(handle, buf, size);
+ size_t ret = sys_read(handle, buf, size);
if(ret==0)
set_eof();
file.signal_end_of_file.connect(sigc::mem_fun(this, &BufferedFile::set_eof));
}
-unsigned BufferedFile::do_write(const char *buf, unsigned size)
+void BufferedFile::set_block(bool b)
+{
+ file.set_block(b);
+}
+
+void BufferedFile::set_inherit(bool)
{
- unsigned ret = buffer.write(buf, size);
+ throw logic_error("BufferedFile::set_inherit");
+}
+
+size_t BufferedFile::do_write(const char *buf, size_t size)
+{
+ size_t ret = buffer.write(buf, size);
position += ret;
return ret;
}
-unsigned BufferedFile::do_read(char *buf, unsigned size)
+size_t BufferedFile::do_read(char *buf, size_t size)
{
- unsigned ret = buffer.read(buf, size);
+ size_t ret = buffer.read(buf, size);
position += ret;
return ret;
}
-unsigned BufferedFile::put(char c)
+size_t BufferedFile::put(char c)
{
- unsigned ret = buffer.put(c);
+ size_t ret = buffer.put(c);
position += ret;
return ret;
}
return ret;
}
+const Handle &BufferedFile::get_handle(Mode)
+{
+ throw logic_error("BufferedFile::get_handle");
+}
+
SeekOffset BufferedFile::seek(SeekOffset offset, SeekType type)
{
if(type==S_CUR)