1
/***************************************************************************
2
* Copyright (C) 2008 by Volker Lanz <vl@fidra.de> *
4
* This program is free software; you can redistribute it and/or modify *
5
* it under the terms of the GNU General Public License as published by *
6
* the Free Software Foundation; either version 2 of the License, or *
7
* (at your option) any later version. *
9
* This program is distributed in the hope that it will be useful, *
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
12
* GNU General Public License for more details. *
14
* You should have received a copy of the GNU General Public License *
15
* along with this program; if not, write to the *
16
* Free Software Foundation, Inc., *
17
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
18
***************************************************************************/
20
#include "core/copytargetfile.h"
22
/** Constructs a file to write to.
23
@param filename name of the file to write to
24
@param sectorsize the "sector size" of the file to write to, usually the sector size of the CopySourceDevice
26
CopyTargetFile::CopyTargetFile(const QString& filename, qint32 sectorsize) :
29
m_SectorSize(sectorsize)
33
/** Opens the file for writing.
34
@return true on success
36
bool CopyTargetFile::open()
38
return file().open(QIODevice::WriteOnly | QIODevice::Truncate);
41
/** Writes the given number of sectors from the given buffer to the file.
42
@param buffer the data to write
43
@param writeOffset where in the file to start writing
44
@param numSectors the number of sectors to write
45
@return true on success
47
bool CopyTargetFile::writeSectors(void* buffer, qint64 writeOffset, qint64 numSectors)
49
if (!file().seek(writeOffset * sectorSize()))
52
bool rval = file().write(static_cast<char*>(buffer), numSectors * sectorSize()) == numSectors * sectorSize();
55
setSectorsWritten(sectorsWritten() + numSectors);