X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fio%2Ffile.cpp;h=7d6e1f9b8df12feee60d3eae53b532db13ae55e0;hb=1787d4928ac1285f5434a2c8d0676deea9ce9176;hp=ab957c97f1e2472a5d007b86e8ace3ea9493ec59;hpb=481b844ed7d180ffbf70223075f2fc1ffdb5b444;p=libs%2Fcore.git diff --git a/source/io/file.cpp b/source/io/file.cpp index ab957c9..7d6e1f9 100644 --- a/source/io/file.cpp +++ b/source/io/file.cpp @@ -1,3 +1,4 @@ +#include #include "file.h" #include "handle_private.h" @@ -32,7 +33,13 @@ void File::set_block(bool 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); @@ -47,14 +54,14 @@ unsigned File::do_write(const char *buf, unsigned size) 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(); @@ -96,23 +103,28 @@ void BufferedFile::set_block(bool b) file.set_block(b); } -unsigned BufferedFile::do_write(const char *buf, unsigned size) +void BufferedFile::set_inherit(bool) +{ + throw unsupported("BufferedFile::set_inherit"); +} + +size_t BufferedFile::do_write(const char *buf, size_t size) { - unsigned ret = buffer.write(buf, 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; } @@ -135,7 +147,7 @@ int BufferedFile::get() const Handle &BufferedFile::get_handle(Mode) { - throw logic_error("BufferedFile::get_handle"); + throw unsupported("BufferedFile::get_handle"); } SeekOffset BufferedFile::seek(SeekOffset offset, SeekType type)