/* */ #include "BufferedFile.h" #include #include #include #include "a2io.h" #include "util.h" namespace aria2 { BufferedFile::BufferedFile(const char* filename, const char* mode) : #ifdef __MINGW32__ fp_(a2fopen(utf8ToWChar(filename).c_str(), utf8ToWChar(mode).c_str())), #else // !__MINGW32__ fp_(a2fopen(filename, mode)), #endif // !__MINGW32__ open_(fp_), supportsColor_(fp_ ? isatty(fileno(fp_)) : false) {} BufferedFile::BufferedFile(FILE* fp) : fp_(fp), open_(fp_), supportsColor_(fp_ ? isatty(fileno(fp_)) : false) {} BufferedFile::~BufferedFile() { close(); } size_t BufferedFile::onRead(void* ptr, size_t count) { return fread(ptr, 1, count, fp_); } size_t BufferedFile::onWrite(const void* ptr, size_t count) { return fwrite(ptr, 1, count, fp_); } char* BufferedFile::onGets(char* s, int size) { return fgets(s, size, fp_); } int BufferedFile::onClose() { if (open_) { open_ = false; return fclose(fp_); } return 0; } int BufferedFile::onVprintf(const char* format, va_list va) { return vfprintf(fp_, format, va); } int BufferedFile::onFlush() { return fflush(fp_); } bool BufferedFile::onSupportsColor() { return supportsColor_; } bool BufferedFile::isError() const { return ferror(fp_); } bool BufferedFile::isEOF() const { return feof(fp_); } bool BufferedFile::isOpen() const { return open_; } } // namespace aria2