diff options
| author | Nils Maier <maierman@web.de> | 2013-03-01 16:07:16 +0100 |
|---|---|---|
| committer | Nils Maier <maierman@web.de> | 2013-03-02 15:48:26 +0100 |
| commit | f2f8b14047c5b0f3a41338440c63ca3f9a591427 (patch) | |
| tree | 06aeb2584b0d6e1db79b15acadb6612a9af2b590 /src/BufferedFile.cc | |
| parent | b0556a7519af611f665ee5a6ccc1b514a0585bef (diff) | |
Support for gzipped -i and --save-session
Saved sessions may very large, as in hundreds and even thousands of
megabyte when dealing with large queues.
Add support to save and reload sessions to gzipped files, when libz is
available.
The session serializer will output gzipped contents when the file ends
with .gz, while the input file reader (UriListParser) will accept
whatever is thrown at it.
Diffstat (limited to 'src/BufferedFile.cc')
| -rw-r--r-- | src/BufferedFile.cc | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/BufferedFile.cc b/src/BufferedFile.cc index d1af1c09..62b8e87d 100644 --- a/src/BufferedFile.cc +++ b/src/BufferedFile.cc @@ -59,7 +59,7 @@ BufferedFile::BufferedFile(const char* filename, const char* mode) {} BufferedFile::BufferedFile(FILE* fp) - : fp_(fp), open_(true), supportsColor_(fp_ ? isatty(fileno(fp_)) : false) + : fp_(fp), open_(fp_), supportsColor_(fp_ ? isatty(fileno(fp_)) : false) {} BufferedFile::~BufferedFile() @@ -69,7 +69,8 @@ BufferedFile::~BufferedFile() BufferedFile::operator unspecified_bool_type() const { - return (!open_ || ferror(fp_)) ? 0 : &BufferedFile::good_state; + bool ok = isOpen() && !isError(); + return ok ? &BufferedFile::good_state : 0; } size_t BufferedFile::read(void* ptr, size_t count) @@ -94,7 +95,7 @@ char* BufferedFile::gets(char* s, int size) char* BufferedFile::getsn(char* s, int size) { - char* ptr = fgets(s, size, fp_); + char* ptr = gets(s, size); if(ptr) { int len = strlen(ptr); if(ptr[len-1] == '\n') { @@ -128,17 +129,16 @@ std::string BufferedFile::getLine() int BufferedFile::close() { - if(open_) { + if (open_) { open_ = false; return fclose(fp_); - } else { - return 0; } + return 0; } bool BufferedFile::eof() { - return open_ && feof(fp_); + return !isOpen()|| isEOF(); } size_t BufferedFile::transfer(std::ostream& out) |
