summaryrefslogtreecommitdiff
path: root/src/BufferedFile.cc
diff options
context:
space:
mode:
authorNils Maier <maierman@web.de>2013-03-01 16:07:16 +0100
committerNils Maier <maierman@web.de>2013-03-02 15:48:26 +0100
commitf2f8b14047c5b0f3a41338440c63ca3f9a591427 (patch)
tree06aeb2584b0d6e1db79b15acadb6612a9af2b590 /src/BufferedFile.cc
parentb0556a7519af611f665ee5a6ccc1b514a0585bef (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.cc14
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)