michael@1: // michael@1: // OSSP asgui - Accounting system graphical user interface michael@12: // Copyright (c) 2002-2009 The OSSP Project (http://www.ossp.org/) michael@12: // Copyright (c) 2002-2009 Ralf S. Engelschall michael@12: // Copyright (c) 2002-2009 Michael Schloh von Bennewitz michael@12: // Copyright (c) 2002-2009 Cable & Wireless Telecommunications Services GmbH michael@1: // michael@1: // This file is part of OSSP asgui, an accounting system graphical user michael@3: // interface which can be found at http://asgui.europalab.com/. michael@1: // michael@1: // Permission to use, copy, modify, and distribute this software for michael@1: // any purpose with or without fee is hereby granted, provided that michael@1: // the above copyright notice and this permission notice appear in all michael@1: // copies. michael@1: // michael@1: // THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED michael@1: // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF michael@1: // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. michael@1: // IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR michael@1: // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, michael@1: // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT michael@1: // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF michael@1: // USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND michael@1: // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, michael@1: // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT michael@1: // OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF michael@1: // SUCH DAMAGE. michael@1: // michael@1: // as_sfile.cpp: ISO C++ implementation michael@1: // michael@1: michael@1: #include "as_sfile.h" michael@1: #include "as_except.h" michael@1: michael@3: //Added by qt3to4: michael@3: #include michael@3: michael@1: michael@1: // michael@1: // Serialize a backup of an incoming file object michael@1: // michael@1: void Simplefile::makeBackup(void) michael@1: { michael@1: QFile Filein; // Input readonly file michael@1: QFile Filebak; // Backup writeonly file michael@1: QString Fname; // Filename of input file michael@3: Q3TextStream Streamin; // Stream to read from (Filein) michael@3: Q3TextStream Streambak; // Stream to write to (Filebak) michael@1: michael@1: try { michael@1: if(!this->exists()) // Conditionally short circuit if michael@1: return; // file to backup does not exist michael@1: Fname = this->name(); // Copy filename from original michael@1: Filein.setName(Fname); // Set filename of original michael@3: Filein.open(QIODevice::ReadOnly); // Open original read-only michael@1: Filebak.setName(Fname + ".bak"); // Set filename of backup michael@3: Filebak.open(QIODevice::WriteOnly); // Open backup write-only michael@1: Streamin.setDevice(&Filein); // Set incoming stream michael@1: Streambak.setDevice(&Filebak); // Set outgoing stream michael@1: Streambak << Streamin.read(); // Do actual writing michael@1: Filein.close(); // Close original michael@1: Filebak.close(); // Close backup michael@1: } michael@1: catch (Genexcept& Genex) { michael@1: Genex.reportErr(); michael@1: } michael@1: }