X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=source%2Fio%2Ffile.cpp;h=ab957c97f1e2472a5d007b86e8ace3ea9493ec59;hb=481b844ed7d180ffbf70223075f2fc1ffdb5b444;hp=666b1edc784b9fc9d0bc76cf29d77b82ff80b826;hpb=7b81490ae4ed6c7c8566f889d146677827f5d4a5;p=libs%2Fcore.git diff --git a/source/io/file.cpp b/source/io/file.cpp index 666b1ed..ab957c9 100644 --- a/source/io/file.cpp +++ b/source/io/file.cpp @@ -28,7 +28,7 @@ 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); } @@ -39,7 +39,7 @@ unsigned File::do_write(const char *buf, unsigned size) if(size==0) return 0; -#ifdef WIN32 +#ifdef _WIN32 if(mode&M_APPEND) seek(0, S_END); #endif @@ -91,6 +91,11 @@ 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); +} + unsigned BufferedFile::do_write(const char *buf, unsigned size) { unsigned ret = buffer.write(buf, size); @@ -128,6 +133,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)