X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Fio%2Ffile.cpp;h=862b607c9d00e08db7ce4e10bc2843ba1bd473ba;hp=a91a927fbc4ac5b5c76ba65fcaa341a8571b6e99;hb=f041a31f9a6e19da86a63912e5a8050f216e5bc5;hpb=e4afb5edb0b7834ef4872218c99207e6b589e9ce diff --git a/source/io/file.cpp b/source/io/file.cpp index a91a927..862b607 100644 --- a/source/io/file.cpp +++ b/source/io/file.cpp @@ -88,13 +88,10 @@ File::~File() { signal_flush_required.emit(); sys_close(handle); - signal_closed.emit(); } void File::set_block(bool b) { - check_access(M_NONE); - mode = (mode&~M_NONBLOCK); if(b) mode = (mode|M_NONBLOCK); @@ -128,10 +125,7 @@ unsigned File::do_read(char *buf, unsigned size) unsigned ret = sys_read(handle, buf, size); if(ret==0) - { - eof_flag = true; - signal_end_of_file.emit(); - } + set_eof(); return ret; } @@ -147,8 +141,6 @@ void File::sync() SeekOffset File::seek(SeekOffset off, SeekType type) { - check_access(M_NONE); - signal_flush_required.emit(); off = sys_seek(handle, off, type); eof_flag = false; @@ -158,15 +150,13 @@ SeekOffset File::seek(SeekOffset off, SeekType type) SeekOffset File::tell() const { - check_access(M_NONE); - return sys_seek(const_cast(handle), 0, S_CUR); } -void File::check_access(Mode m) const +const Handle &File::get_handle(Mode m) { - if(!handle || (m && !(mode&m))) - throw invalid_access(m); + check_access(m); + return handle; } } // namespace IO