diff options
Diffstat (limited to 'apt-pkg/contrib/fileutl.cc')
-rw-r--r-- | apt-pkg/contrib/fileutl.cc | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/apt-pkg/contrib/fileutl.cc b/apt-pkg/contrib/fileutl.cc index 8fdd6a5dd..ecc8c83fd 100644 --- a/apt-pkg/contrib/fileutl.cc +++ b/apt-pkg/contrib/fileutl.cc @@ -1055,6 +1055,10 @@ public: *To = '\0'; return InitialTo; } + virtual bool InternalFlush() + { + return true; + } virtual ssize_t InternalWrite(void const * const From, unsigned long long const Size) = 0; virtual bool InternalWriteError() { return filefd->FileFdErrno("write",_("Write error")); } virtual bool InternalSeek(unsigned long long const To) @@ -2070,6 +2074,15 @@ char* FileFd::ReadLine(char *To, unsigned long long const Size) return d->InternalReadLine(To, Size); } /*}}}*/ +// FileFd::Flush - Flush the file /*{{{*/ +bool FileFd::Flush() +{ + if (d == nullptr) + return true; + + return d->InternalFlush(); +} + /*}}}*/ // FileFd::Write - Write to the file /*{{{*/ bool FileFd::Write(const void *From,unsigned long long Size) { @@ -2223,6 +2236,8 @@ unsigned long long FileFd::Size() /* */ bool FileFd::Close() { + if (Flush() == false) + return false; if (iFd == -1) return true; |