mirror of
https://github.com/altlinux/ALTMediaWriter.git
synced 2024-10-26 17:25:05 +03:00
check for file open error when writing image
improve loadVariant debug msg's don't modify variant status in LinuxDrive::cancel() Variant::resetStatus() check for existance of file instead of filename reset variant status both when download dialog opens and closes
This commit is contained in:
parent
a38cd42eb2
commit
8b74d7af10
@ -43,12 +43,13 @@ Dialog {
|
||||
}
|
||||
|
||||
onVisibleChanged: {
|
||||
// When dialog is closed via Cancel button or Close button, cancel current download or write
|
||||
if (!visible) {
|
||||
if (drives.selected)
|
||||
drives.selected.cancel()
|
||||
releases.selected.variant.cancelDownload()
|
||||
releases.selected.variant.resetStatus()
|
||||
}
|
||||
releases.selected.variant.resetStatus()
|
||||
reset()
|
||||
}
|
||||
|
||||
|
@ -228,16 +228,6 @@ void LinuxDrive::cancel() {
|
||||
static bool beingCancelled = false;
|
||||
if (m_process != nullptr && !beingCancelled) {
|
||||
beingCancelled = true;
|
||||
if (m_variant) {
|
||||
if (m_variant->status() == Variant::WRITE_VERIFYING) {
|
||||
m_variant->setStatus(Variant::WRITING_FINISHED);
|
||||
}
|
||||
else if (m_variant->status() != Variant::DOWNLOADING &&
|
||||
m_variant->status() != Variant::DOWNLOAD_VERIFYING) {
|
||||
m_variant->setErrorString(tr("Stopped before writing has finished."));
|
||||
m_variant->setStatus(Variant::WRITING_FAILED);
|
||||
}
|
||||
}
|
||||
m_process->kill();
|
||||
m_process->deleteLater();
|
||||
m_process = nullptr;
|
||||
|
@ -133,6 +133,8 @@ void ReleaseManager::downloadMetadata() {
|
||||
return out;
|
||||
}();
|
||||
|
||||
qDebug() << "Loading releases";
|
||||
|
||||
loadReleases(sectionsFiles);
|
||||
|
||||
const QList<QString> imagesFiles =
|
||||
@ -145,6 +147,8 @@ void ReleaseManager::downloadMetadata() {
|
||||
return out;
|
||||
}();
|
||||
|
||||
qDebug() << "Loading variants";
|
||||
|
||||
for (auto imagesFile : imagesFiles) {
|
||||
loadVariants(imagesFile);
|
||||
}
|
||||
@ -203,13 +207,11 @@ void ReleaseManager::loadVariants(const QString &variantsFile) {
|
||||
if (url.isEmpty()) {
|
||||
qWarning() << "Variant has no url";
|
||||
continue;
|
||||
} else {
|
||||
qDebug() << "Url:" << url;
|
||||
}
|
||||
|
||||
const QString releaseName = yml_get(variantData, "solution");
|
||||
if (releaseName.isEmpty()) {
|
||||
qWarning() << "Variant has no releaseName";
|
||||
qDebug() << "Variant has no releaseName" << url;
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -223,7 +225,7 @@ void ReleaseManager::loadVariants(const QString &variantsFile) {
|
||||
}
|
||||
}();
|
||||
if (arch == Architecture_UNKNOWN) {
|
||||
qWarning() << "Variant has unknown architecture" << arch_string;
|
||||
qDebug() << "Variant has unknown architecture" << arch_string << url;
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -240,7 +242,7 @@ void ReleaseManager::loadVariants(const QString &variantsFile) {
|
||||
|
||||
const FileType fileType = file_type_from_filename(url);
|
||||
if (fileType == FileType_UNKNOWN) {
|
||||
qWarning() << "Variant has unknown file type";
|
||||
qDebug() << "Variant has unknown file type" << url;
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -254,7 +256,7 @@ void ReleaseManager::loadVariants(const QString &variantsFile) {
|
||||
}
|
||||
}();
|
||||
|
||||
qDebug() << QUrl(url).fileName() << releaseName << architecture_name(arch) << board << file_type_name(fileType) << (live ? "LIVE" : "");
|
||||
// qDebug() << QUrl(url).fileName() << releaseName << architecture_name(arch) << board << file_type_name(fileType) << (live ? "LIVE" : "");
|
||||
|
||||
// Find a release that has the same name as this variant
|
||||
Release *release =
|
||||
@ -273,7 +275,7 @@ void ReleaseManager::loadVariants(const QString &variantsFile) {
|
||||
Variant *variant = new Variant(url, arch, fileType, board, live, this);
|
||||
release->addVariant(variant);
|
||||
} else {
|
||||
qWarning() << "Failed to find a release for this variant!" << url;
|
||||
qDebug() << "Failed to find a release for this variant!" << url;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -333,8 +335,6 @@ QStringList ReleaseManager::fileTypeFilters() const {
|
||||
}
|
||||
|
||||
void ReleaseManager::loadReleases(const QList<QString> §ionsFiles) {
|
||||
qDebug() << "Loading releases";
|
||||
|
||||
for (auto sectionFile : sectionsFiles) {
|
||||
const YAML::Node section = YAML::Load(sectionFile.toStdString());
|
||||
|
||||
|
@ -212,7 +212,7 @@ void Variant::cancelDownload() {
|
||||
}
|
||||
|
||||
void Variant::resetStatus() {
|
||||
if (!fileName().isEmpty()) {
|
||||
if (QFile::exists(filePath())) {
|
||||
setStatus(READY_FOR_WRITING);
|
||||
} else {
|
||||
setStatus(PREPARING);
|
||||
|
@ -115,7 +115,13 @@ bool WriteJob::writeCompressed(int fd) {
|
||||
std::size_t bufferSize = std::get<2>(outBufferOwner);
|
||||
|
||||
QFile file(what);
|
||||
file.open(QIODevice::ReadOnly);
|
||||
const bool open_success = file.open(QIODevice::ReadOnly);
|
||||
if (!open_success) {
|
||||
err << tr("Source image is not readable") << what;
|
||||
err.flush();
|
||||
qApp->exit(2);
|
||||
return false;
|
||||
}
|
||||
|
||||
ret = lzma_stream_decoder(&strm, MEDIAWRITER_LZMA_LIMIT, LZMA_CONCATENATED);
|
||||
if (ret != LZMA_OK) {
|
||||
@ -186,9 +192,8 @@ bool WriteJob::writeCompressed(int fd) {
|
||||
|
||||
bool WriteJob::writePlain(int fd) {
|
||||
QFile inFile(what);
|
||||
inFile.open(QIODevice::ReadOnly);
|
||||
|
||||
if (!inFile.isReadable()) {
|
||||
const bool open_success = inFile.open(QIODevice::ReadOnly);
|
||||
if (!open_success) {
|
||||
err << tr("Source image is not readable") << what;
|
||||
err.flush();
|
||||
qApp->exit(2);
|
||||
|
@ -230,7 +230,13 @@ bool WriteJob::writeCompressed(HANDLE drive) {
|
||||
uint8_t *outBuffer = new uint8_t[BLOCK_SIZE];
|
||||
|
||||
QFile file(what);
|
||||
file.open(QIODevice::ReadOnly);
|
||||
const bool open_success = file.open(QIODevice::ReadOnly);
|
||||
if (!open_success) {
|
||||
err << tr("Source image is not readable");
|
||||
err.flush();
|
||||
qApp->exit(1);
|
||||
return false;
|
||||
}
|
||||
|
||||
ret = lzma_stream_decoder(&strm, MEDIAWRITER_LZMA_LIMIT, LZMA_CONCATENATED);
|
||||
if (ret != LZMA_OK) {
|
||||
@ -322,8 +328,8 @@ bool WriteJob::writePlain(HANDLE drive) {
|
||||
uint64_t cnt = 0;
|
||||
QByteArray buffer;
|
||||
QFile isoFile(what);
|
||||
isoFile.open(QIODevice::ReadOnly);
|
||||
if (!isoFile.isOpen()) {
|
||||
const bool open_success = isoFile.open(QIODevice::ReadOnly);
|
||||
if (!open_success) {
|
||||
err << tr("Source image is not readable");
|
||||
err.flush();
|
||||
qApp->exit(1);
|
||||
|
Loading…
Reference in New Issue
Block a user