}
/*}}}*/
+struct APT_HIDDEN simple_buffer { /*{{{*/
+ static constexpr size_t buffersize_max = 4096;
+ unsigned long long bufferstart = 0;
+ unsigned long long bufferend = 0;
+ char buffer[buffersize_max];
+
+ char *get() { return buffer + bufferstart; }
+ bool empty() { return bufferend <= bufferstart; }
+ unsigned long long size() { return bufferend-bufferstart; }
+ void reset() { bufferend = bufferstart = 0; }
+ ssize_t read(void *to, unsigned long long requested_size) APT_MUSTCHECK
+ {
+ if (size() < requested_size)
+ requested_size = size();
+ memcpy(to, buffer + bufferstart, requested_size);
+ bufferstart += requested_size;
+ if (bufferstart == bufferend)
+ bufferstart = bufferend = 0;
+ return requested_size;
+ }
+};
+ /*}}}*/
+
class APT_HIDDEN FileFdPrivate { /*{{{*/
protected:
FileFd * const filefd;
- struct simple_buffer {
- static constexpr size_t buffersize_max = 4096;
- unsigned long long bufferstart = 0;
- unsigned long long bufferend = 0;
- char buffer[buffersize_max];
-
- char *get() { return buffer + bufferstart; }
- bool empty() { return bufferend <= bufferstart; }
- unsigned long long size() { return bufferend-bufferstart; }
- void reset() { bufferend = bufferstart = 0; }
- ssize_t read(void *to, unsigned long long requested_size) APT_MUSTCHECK
- {
- if (size() < requested_size)
- requested_size = size();
- memcpy(to, buffer + bufferstart, requested_size);
- bufferstart += requested_size;
- if (bufferstart == bufferend)
- bufferstart = bufferend = 0;
- return requested_size;
- }
- } buffer;
+ simple_buffer buffer;
public:
int compressed_fd;
pid_t compressor_pid;