1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/as_sfile.cpp Fri Nov 28 11:21:08 2008 +0100 1.3 @@ -0,0 +1,64 @@ 1.4 +// 1.5 +// OSSP asgui - Accounting system graphical user interface 1.6 +// Copyright (c) 2002-2004 The OSSP Project (http://www.ossp.org/) 1.7 +// Copyright (c) 2002-2004 Ralf S. Engelschall <rse@engelschall.com> 1.8 +// Copyright (c) 2002-2004 Michael Schloh von Bennewitz <michael@schloh.com> 1.9 +// Copyright (c) 2002-2004 Cable & Wireless Telecommunications Services GmbH 1.10 +// 1.11 +// This file is part of OSSP asgui, an accounting system graphical user 1.12 +// interface which can be found at http://www.ossp.org/pkg/tool/asgui/. 1.13 +// 1.14 +// Permission to use, copy, modify, and distribute this software for 1.15 +// any purpose with or without fee is hereby granted, provided that 1.16 +// the above copyright notice and this permission notice appear in all 1.17 +// copies. 1.18 +// 1.19 +// THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED 1.20 +// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 1.21 +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 1.22 +// IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR 1.23 +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 1.24 +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 1.25 +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 1.26 +// USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 1.27 +// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 1.28 +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 1.29 +// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 1.30 +// SUCH DAMAGE. 1.31 +// 1.32 +// as_sfile.cpp: ISO C++ implementation 1.33 +// 1.34 + 1.35 +#include "as_sfile.h" 1.36 +#include "as_except.h" 1.37 + 1.38 + 1.39 +// 1.40 +// Serialize a backup of an incoming file object 1.41 +// 1.42 +void Simplefile::makeBackup(void) 1.43 +{ 1.44 + QFile Filein; // Input readonly file 1.45 + QFile Filebak; // Backup writeonly file 1.46 + QString Fname; // Filename of input file 1.47 + QTextStream Streamin; // Stream to read from (Filein) 1.48 + QTextStream Streambak; // Stream to write to (Filebak) 1.49 + 1.50 + try { 1.51 + if(!this->exists()) // Conditionally short circuit if 1.52 + return; // file to backup does not exist 1.53 + Fname = this->name(); // Copy filename from original 1.54 + Filein.setName(Fname); // Set filename of original 1.55 + Filein.open(IO_ReadOnly); // Open original read-only 1.56 + Filebak.setName(Fname + ".bak"); // Set filename of backup 1.57 + Filebak.open(IO_WriteOnly); // Open backup write-only 1.58 + Streamin.setDevice(&Filein); // Set incoming stream 1.59 + Streambak.setDevice(&Filebak); // Set outgoing stream 1.60 + Streambak << Streamin.read(); // Do actual writing 1.61 + Filein.close(); // Close original 1.62 + Filebak.close(); // Close backup 1.63 + } 1.64 + catch (Genexcept& Genex) { 1.65 + Genex.reportErr(); 1.66 + } 1.67 +}