Browse Source

simple_buffer: Allow buffer size to change

Gbp-Dch: ignore
tags/debian/1.2_exp1
Julian Andres Klode 6 years ago
parent
commit
5bdba2ca23
1 changed files with 18 additions and 2 deletions
  1. +18
    -2
      apt-pkg/contrib/fileutl.cc

+ 18
- 2
apt-pkg/contrib/fileutl.cc View File

@@ -920,16 +920,32 @@ bool ChangeOwnerAndPermissionOfFile(char const * const requester, char const * c
/*}}}*/

struct APT_HIDDEN simple_buffer { /*{{{*/
static constexpr size_t buffersize_max = 4096;
size_t buffersize_max = 0;
unsigned long long bufferstart = 0;
unsigned long long bufferend = 0;
char buffer[buffersize_max];
char *buffer = nullptr;

simple_buffer() {
reset(4096);
}
~simple_buffer() {
delete buffer;
}

const char *get() const { return buffer + bufferstart; }
char *get() { return buffer + bufferstart; }
bool empty() const { return bufferend <= bufferstart; }
bool full() const { return bufferend == buffersize_max; }
unsigned long long size() const { return bufferend-bufferstart; }
void reset(size_t size)
{
if (size > buffersize_max) {
delete[] buffer;
buffersize_max = size;
buffer = new char[size];
}
reset();
}
void reset() { bufferend = bufferstart = 0; }
ssize_t read(void *to, unsigned long long requested_size) APT_MUSTCHECK
{


Loading…
Cancel
Save