X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Fio%2Ffile.cpp;h=74b9f9fde19e49983e35098ea06c0c6c80bcfd0e;hp=1b4a73884d7b5891a43c461d79901bd7e9d1a147;hb=292aed8e23ea543b089d5f2a73000de4640befe7;hpb=5a32939eb6e576c223e1be5f80226d9e628a2398 diff --git a/source/io/file.cpp b/source/io/file.cpp index 1b4a738..74b9f9f 100644 --- a/source/io/file.cpp +++ b/source/io/file.cpp @@ -28,10 +28,16 @@ File::~File() 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); } +void File::set_inherit(bool i) +{ + adjust_mode(mode, M_INHERIT, i); + sys_set_inherit(handle, i); +} + unsigned File::do_write(const char *buf, unsigned size) { check_access(M_WRITE); @@ -91,6 +97,16 @@ BufferedFile::BufferedFile(const string &fn, Mode m, File::CreateMode cm): file.signal_end_of_file.connect(sigc::mem_fun(this, &BufferedFile::set_eof)); } +void BufferedFile::set_block(bool b) +{ + file.set_block(b); +} + +void BufferedFile::set_inherit(bool) +{ + throw logic_error("BufferedFile::set_inherit"); +} + unsigned BufferedFile::do_write(const char *buf, unsigned size) { unsigned ret = buffer.write(buf, size); @@ -128,6 +144,11 @@ int BufferedFile::get() 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)