Browse Source

FildFd: Introduce a Flush() function and call it from Close()

The flush function can be used for buffered writers.
tags/debian/1.1.9
Julian Andres Klode 6 years ago
parent
commit
766761fd83
2 changed files with 16 additions and 0 deletions
  1. +15
    -0
      apt-pkg/contrib/fileutl.cc
  2. +1
    -0
      apt-pkg/contrib/fileutl.h

+ 15
- 0
apt-pkg/contrib/fileutl.cc View File

@@ -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;



+ 1
- 0
apt-pkg/contrib/fileutl.h View File

@@ -85,6 +85,7 @@ class FileFd
}
bool Read(void *To,unsigned long long Size,unsigned long long *Actual = 0);
char* ReadLine(char *To, unsigned long long const Size);
bool Flush();
bool Write(const void *From,unsigned long long Size);
bool static Write(int Fd, const void *From, unsigned long long Size);
bool Seek(unsigned long long To);


Loading…
Cancel
Save