X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fphysfs%2Fphysfs_stream.cpp;h=659c8ce94852b5a19f9e1d6fbd4cca9cf70a909b;hb=08813a74da6ac1fd045a105e4e8105f1d7f716f0;hp=28d92c567a632085a65a5bb7ee3beb8c9b879111;hpb=f406067af6cbeb0a638078fe1d386d092583909c;p=supertux.git diff --git a/src/physfs/physfs_stream.cpp b/src/physfs/physfs_stream.cpp index 28d92c567..659c8ce94 100644 --- a/src/physfs/physfs_stream.cpp +++ b/src/physfs/physfs_stream.cpp @@ -1,12 +1,10 @@ -// $Id$ -// // SuperTux // Copyright (C) 2006 Matthias Braun // -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -14,53 +12,51 @@ // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// along with this program. If not, see . -#include +#include "physfs/physfs_stream.hpp" -#include "physfs_stream.hpp" +#include #include -#include -#include #include +#include IFileStreambuf::IFileStreambuf(const std::string& filename) { - // check this as PHYSFS seems to be buggy and still returns a - // valid pointer in this case - if(filename == "") { - throw std::runtime_error("Couldn't open file: empty filename"); - } - file = PHYSFS_openRead(filename.c_str()); - if(file == 0) { - std::stringstream msg; - msg << "Couldn't open file '" << filename << "': " - << PHYSFS_getLastError(); - throw std::runtime_error(msg.str()); - } + // check this as PHYSFS seems to be buggy and still returns a + // valid pointer in this case + if(filename == "") { + throw std::runtime_error("Couldn't open file: empty filename"); + } + file = PHYSFS_openRead(filename.c_str()); + if(file == 0) { + std::stringstream msg; + msg << "Couldn't open file '" << filename << "': " + << PHYSFS_getLastError(); + throw std::runtime_error(msg.str()); + } } IFileStreambuf::~IFileStreambuf() { - PHYSFS_close(file); + PHYSFS_close(file); } int IFileStreambuf::underflow() { - if(PHYSFS_eof(file)) { - return traits_type::eof(); - } + if(PHYSFS_eof(file)) { + return traits_type::eof(); + } - PHYSFS_sint64 bytesread = PHYSFS_read(file, buf, 1, sizeof(buf)); - if(bytesread <= 0) { - return traits_type::eof(); - } - setg(buf, buf, buf + bytesread); + PHYSFS_sint64 bytesread = PHYSFS_read(file, buf, 1, sizeof(buf)); + if(bytesread <= 0) { + return traits_type::eof(); + } + setg(buf, buf, buf + bytesread); - return buf[0]; + return buf[0]; } IFileStreambuf::pos_type @@ -108,72 +104,74 @@ IFileStreambuf::seekoff(off_type off, std::ios_base::seekdir dir, OFileStreambuf::OFileStreambuf(const std::string& filename) { - file = PHYSFS_openWrite(filename.c_str()); - if(file == 0) { - std::stringstream msg; - msg << "Couldn't open file '" << filename << "': " - << PHYSFS_getLastError(); - throw std::runtime_error(msg.str()); - } - - setp(buf, buf+sizeof(buf)); + file = PHYSFS_openWrite(filename.c_str()); + if(file == 0) { + std::stringstream msg; + msg << "Couldn't open file '" << filename << "': " + << PHYSFS_getLastError(); + throw std::runtime_error(msg.str()); + } + + setp(buf, buf+sizeof(buf)); } OFileStreambuf::~OFileStreambuf() { - sync(); - PHYSFS_close(file); + sync(); + PHYSFS_close(file); } int OFileStreambuf::overflow(int c) { - char c2 = (char)c; + char c2 = (char)c; - if(pbase() == pptr()) - return 0; + if(pbase() == pptr()) + return 0; - size_t size = pptr() - pbase(); - PHYSFS_sint64 res = PHYSFS_write(file, pbase(), 1, size); - if(res <= 0) - return traits_type::eof(); + size_t size = pptr() - pbase(); + PHYSFS_sint64 res = PHYSFS_write(file, pbase(), 1, size); + if(res <= 0) + return traits_type::eof(); - if(c != traits_type::eof()) { - PHYSFS_sint64 res = PHYSFS_write(file, &c2, 1, 1); - if(res <= 0) - return traits_type::eof(); - } + if(c != traits_type::eof()) { + PHYSFS_sint64 res = PHYSFS_write(file, &c2, 1, 1); + if(res <= 0) + return traits_type::eof(); + } - setp(buf, buf + res); - return 0; + setp(buf, buf + res); + return 0; } int OFileStreambuf::sync() { - return overflow(traits_type::eof()); + return overflow(traits_type::eof()); } //--------------------------------------------------------------------------- IFileStream::IFileStream(const std::string& filename) - : std::istream(new IFileStreambuf(filename)) + : std::istream(new IFileStreambuf(filename)) { } IFileStream::~IFileStream() { - delete rdbuf(); + delete rdbuf(); } //--------------------------------------------------------------------------- OFileStream::OFileStream(const std::string& filename) - : std::ostream(new OFileStreambuf(filename)) + : std::ostream(new OFileStreambuf(filename)) { } OFileStream::~OFileStream() { - delete rdbuf(); + delete rdbuf(); } + +/* EOF */