Commit f1f871f1 authored by Max Kellermann's avatar Max Kellermann

fs/io/FileOutputStream: add method Tell()

parent 6387b528
...@@ -48,6 +48,17 @@ FileOutputStream::FileOutputStream(Path _path, Error &error) ...@@ -48,6 +48,17 @@ FileOutputStream::FileOutputStream(Path _path, Error &error)
GetPath().ToUTF8().c_str()); GetPath().ToUTF8().c_str());
} }
uint64_t
BaseFileOutputStream::Tell() const
{
LONG high = 0;
DWORD low = SetFilePointer(handle, 0, &high, FILE_CURRENT);
if (low == 0xffffffff)
return 0;
return uint64_t(high) << 32 | uint64_t(low);
}
bool bool
BaseFileOutputStream::Write(const void *data, size_t size, Error &error) BaseFileOutputStream::Write(const void *data, size_t size, Error &error)
{ {
...@@ -136,6 +147,12 @@ FileOutputStream::FileOutputStream(Path _path, Error &error) ...@@ -136,6 +147,12 @@ FileOutputStream::FileOutputStream(Path _path, Error &error)
#endif #endif
} }
uint64_t
BaseFileOutputStream::Tell() const
{
return fd.Tell();
}
bool bool
BaseFileOutputStream::Write(const void *data, size_t size, Error &error) BaseFileOutputStream::Write(const void *data, size_t size, Error &error)
{ {
......
...@@ -114,6 +114,9 @@ public: ...@@ -114,6 +114,9 @@ public:
return path; return path;
} }
gcc_pure
uint64_t Tell() const;
/* virtual methods from class OutputStream */ /* virtual methods from class OutputStream */
bool Write(const void *data, size_t size, Error &error) override; bool Write(const void *data, size_t size, Error &error) override;
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment