Hello community, here is the log from the commit of package unetbootin for openSUSE:Factory checked in at 2019-04-23 14:39:21 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/unetbootin (Old) and /work/SRC/openSUSE:Factory/.unetbootin.new.5536 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "unetbootin" Tue Apr 23 14:39:21 2019 rev:9 rq:697038 version:0.0.661 Changes: -------- --- /work/SRC/openSUSE:Factory/unetbootin/unetbootin.changes 2018-07-18 22:53:06.247127199 +0200 +++ /work/SRC/openSUSE:Factory/.unetbootin.new.5536/unetbootin.changes 2019-04-23 14:39:23.521589341 +0200 @@ -1,0 +2,18 @@ +Mon Apr 1 17:14:08 UTC 2019 - Christophe Giboudeaux <christo...@krop.fr> +- Add Qt5 port patches from https://github.com/unetbootin/unetbootin/pull/137: + * 0001-rought-Qt5-port.patch + * 0002-comment-out-all-sources-that-require-FTP-LIST.patch + * 0003-fix-distrolst.cpp.patch + * 0004-don-t-wait-until-the-file-is-downloaded-fully-before.patch +- Refresh unetbootin-suse.patch: + * add Leap 15.0 and 15.1 + * Update the download URLs and the distro description +- Refresh unetbootin-locate-usb-devices.diff +- Run spec-cleaner + +------------------------------------------------------------------- +Mon Oct 15 00:51:35 UTC 2018 - s...@suspend.net + +- update to revision 661 + +------------------------------------------------------------------- Old: ---- unetbootin-source-657.tar.gz New: ---- 0001-rought-Qt5-port.patch 0002-comment-out-all-sources-that-require-FTP-LIST.patch 0003-fix-distrolst.cpp.patch 0004-don-t-wait-until-the-file-is-downloaded-fully-before.patch unetbootin-source-661.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ unetbootin.spec ++++++ --- /var/tmp/diff_new_pack.Q6XYdR/_old 2019-04-23 14:39:24.293589750 +0200 +++ /var/tmp/diff_new_pack.Q6XYdR/_new 2019-04-23 14:39:24.297589751 +0200 @@ -1,7 +1,7 @@ # # spec file for package unetbootin # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -12,43 +12,49 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # -%define rev 657 - +%define rev 661 Name: unetbootin +Version: 0.0.%{rev} +Release: 0 Summary: Universal Netboot Installer License: GPL-2.0-or-later Group: System/GUI/Other -Version: 0.0.%{rev} -Release: 0 -Url: https://sourceforge.net/projects/unetbootin/ +URL: https://sourceforge.net/projects/unetbootin/ Source: %{name}-source-%{rev}.tar.gz -Patch0: %{name}-suse.patch -Patch1: %{name}-locate-usb-devices.diff -Patch2: %{name}-desktop.patch -BuildRoot: %{_tmppath}/%{name}-%{version}-build +Patch0: 0001-rought-Qt5-port.patch +Patch1: 0002-comment-out-all-sources-that-require-FTP-LIST.patch +Patch2: 0003-fix-distrolst.cpp.patch +Patch3: 0004-don-t-wait-until-the-file-is-downloaded-fully-before.patch +Patch4: %{name}-suse.patch +Patch5: %{name}-locate-usb-devices.diff +Patch6: %{name}-desktop.patch BuildRequires: gcc-c++ -BuildRequires: libqt4-devel -# Requires syslinux, and that only exists for the following arches: -ExclusiveArch: %ix86 x86_64 +BuildRequires: cmake(Qt5Core) +BuildRequires: cmake(Qt5Gui) +BuildRequires: cmake(Qt5LinguistTools) +BuildRequires: cmake(Qt5Network) +BuildRequires: cmake(Qt5Widgets) +Requires: mtools +Requires: syslinux +Requires: udev +Requires: util-linux +Requires: xdg-utils Requires(post): hicolor-icon-theme Requires(post): update-desktop-files Requires(postun): hicolor-icon-theme Requires(postun): update-desktop-files -Requires: mtools +# Requires syslinux, and that only exists for the following arches: +ExclusiveArch: %{ix86} x86_64 # Remove when p7zip-full is in all products -%if 0%{suse_version} > 1500 +%if 0%{?suse_version} > 1500 Requires: p7zip-full %else Requires: p7zip %endif -Requires: syslinux -Requires: udev -Requires: util-linux -Requires: xdg-utils %description UNetbootin allows for the installation of various Linux/BSD distributions @@ -58,16 +64,20 @@ %prep %setup -q -c -n %{name} -%patch0 -%patch1 -%patch2 +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 # rpmlint: wrong-file-end-of-line-encoding sed -i 's/\r$//' README.TXT %build -lupdate unetbootin.pro -lrelease unetbootin.pro -qmake QMAKE_CXXFLAGS="%optflags" "DEFINES += NOSTATIC" "RESOURCES -= unetbootin.qrc" +lupdate-qt5 unetbootin.pro +lrelease-qt5 unetbootin.pro +%qmake5 "DEFINES += NOSTATIC" "RESOURCES -= unetbootin.qrc" make %{?_smp_mflags} %install @@ -76,7 +86,7 @@ install -D -m 0644 unetbootin_*.qm %{buildroot}%{_datadir}/%{name} for i in 16 22 24 32 48 64 128 192 256 ; do - install -D -m 0644 unetbootin_"$i".png %buildroot%{_datadir}/icons/hicolor/"$i"x"$i"/apps/%{name}.png; + install -D -m 0644 unetbootin_"$i".png %{buildroot}%{_datadir}/icons/hicolor/"$i"x"$i"/apps/%{name}.png; done install -D -m 0644 %{name}.desktop %{buildroot}%{_datadir}/applications/%{name}.desktop @@ -90,7 +100,6 @@ %icon_theme_cache_postun %files -%defattr(-,root,root) %doc README.TXT %{_sbindir}/* %{_datadir}/%{name} ++++++ 0001-rought-Qt5-port.patch ++++++ >From d8266c51317d279caf8f6a0f595dc2642014b12b Mon Sep 17 00:00:00 2001 From: Valeriy Malov <jazzv...@gmail.com> Date: Fri, 28 Jul 2017 19:45:04 +0300 Subject: [PATCH 1/4] rought Qt5 port this breaks unetbootin::lstFtpDirFiles due to https://bugreports.qt.io/ browse/QTBUG-26294 --- main.cpp | 24 ++--- unetbootin.cpp | 194 ++++++++++++---------------------- unetbootin.h | 12 +-- unetbootin.pro | 1 + 4 files changed, 84 insertions(+), 147 deletions(-) diff --git a/main.cpp b/main.cpp index 486b75b..1ef7304 100644 --- a/main.cpp +++ b/main.cpp @@ -9,6 +9,8 @@ This program is distributed in the hope that it will be useful, but WITHOUT ANY #include "unetbootin.h" +#include <QMessageBox> + #ifdef Q_OS_WIN32 void configsysUndo(QString uninstPathL) @@ -380,18 +382,16 @@ int main(int argc, char **argv) uninstmsgb.setIcon(QMessageBox::Information); uninstmsgb.setWindowTitle(uninstaller::tr("%1 Uninstaller").arg(UNETBOOTINB)); uninstmsgb.setText(uninstaller::tr("%1 is currently installed. Remove the existing version?").arg(UNETBOOTINB)); - uninstmsgb.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); - switch (uninstmsgb.exec()) - { - case QMessageBox::Ok: - { - ubnUninst(); - } - case QMessageBox::Cancel: - break; - default: - break; - } + uninstmsgb.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); + switch (uninstmsgb.exec()) + { + case QMessageBox::Ok: + ubnUninst(); + break; + case QMessageBox::Cancel: + default: + break; + } return 0; } #endif diff --git a/unetbootin.cpp b/unetbootin.cpp index 3982f61..0767fc8 100644 --- a/unetbootin.cpp +++ b/unetbootin.cpp @@ -9,6 +9,10 @@ This program is distributed in the hope that it will be useful, but WITHOUT ANY #include "unetbootin.h" +#include <QMessageBox> +#include <QFileDialog> +#include <QProgressDialog> + static const QList<QRegExp> ignoredtypesbothRL = QList<QRegExp>() << QRegExp("isolinux.bin$", Qt::CaseInsensitive) << QRegExp("isolinux.cfg$", Qt::CaseInsensitive) @@ -101,8 +105,8 @@ void callexternappT::run() void callexternappWriteToStdinT::run() { QProcess lnexternapp; - lnexternapp.start("\"" + execFile + "\" " + execParm); - lnexternapp.write(writeToStdin.toAscii().data()); + lnexternapp.start("\"" + execFile + "\" " + execParm); + lnexternapp.write(writeToStdin.toLatin1().data()); lnexternapp.closeWriteChannel(); lnexternapp.waitForFinished(-1); retnValu = QString(lnexternapp.readAll()); @@ -133,16 +137,6 @@ void copyfileT::run() emit finished(); } -ubngetrequestheader::ubngetrequestheader(QString urhost, QString urpath) -{ - this->setRequest("GET", urpath); - this->setValue("HOST", urhost); - this->setValue("User-Agent", "UNetbootin/1.1.1"); -// this->setValue("User-Agent", "Wget/1.10.2"); - this->setValue("Accept", "*/*"); - this->setValue("Connection", "Keep-Alive"); -} - randtmpfile::randtmpfile(QString rfpath, QString rfextn) { QString basefn = getrandfilename(rfpath, rfextn); @@ -159,7 +153,7 @@ QString randtmpfile::getrandfilename(QString rfpath, QString rfextn) } return basefn; } - +/* void nDirListStor::sAppendSelfUrlInfoList(QUrlInfo curDirUrl) { if (curDirUrl.isValid() && curDirUrl.isReadable() && curDirUrl.isFile() && curDirUrl.size() > nMinFileSizeBytes && curDirUrl.size() < nMaxFileSizeBytes) @@ -171,7 +165,7 @@ void nDirListStor::sAppendSelfUrlInfoList(QUrlInfo curDirUrl) nDirFileListSL.append(curDirUrl.name()); } } - +*/ unetbootin::unetbootin(QWidget *parent) : QWidget(parent) { @@ -471,18 +465,20 @@ bool unetbootin::ubninitialize(QList<QPair<QString, QString> > oppairs) { if (psecond.contains("listdistros", Qt::CaseInsensitive)) { + QTextStream out(stdout); for (int i = 1; i < this->distroselect->count(); ++i) { - printf("%s\n", this->distroselect->itemText(i).toAscii().constData()); + out << this->distroselect->itemText(i); } QApplication::exit(); exit(0); } else if (psecond.contains("listversions", Qt::CaseInsensitive)) { + QTextStream out(stdout); for (int i = 0; i < this->dverselect->count(); ++i) { - printf("%s\n", this->dverselect->itemText(i).toAscii().constData()); + out << this->dverselect->itemText(i); } QApplication::exit(); exit(0); @@ -1098,7 +1094,7 @@ bool unetbootin::checkifoutofspace(QString destindir) bool outofspace = false; #ifdef Q_OS_UNIX struct statfs diskstatS; - if (!statfs(QString(destindir+"/.").toAscii(), &diskstatS)) + if (!statfs(QString(destindir+"/.").toLatin1(), &diskstatS)) { if (diskstatS.f_bavail * diskstatS.f_bfree < 1024) outofspace = true; @@ -2620,31 +2616,41 @@ void unetbootin::downloadfile(QString fileurl, QString targetfile, int minsize=5 { rmFile(targetfile); } - QUrl dlurl(fileurl); - bool isftp = false; - if (dlurl.scheme() == "ftp") - { - isftp = true; - } - QHttp dlhttp; - QFtp dlftp; + QNetworkAccessManager manager; + QNetworkRequest dlurl(fileurl); + QNetworkReply * networkReply = manager.get(dlurl); + QEventLoop dlewait; pdesc5->setText(""); pdesc4->setText(tr("Downloading files, please wait...")); pdesc3->setText(tr("<b>Source:</b> <a href=\"%1\">%1</a>").arg(fileurl)); pdesc2->setText(tr("<b>Destination:</b> %1").arg(targetfile)); pdesc1->setText(tr("<b>Downloaded:</b> 0 bytes")); - QString realupath = QString(fileurl).remove(0, fileurl.indexOf(QString("://%1").arg(dlurl.host())) + QString("://%1").arg(dlurl.host()).length()); - if (isftp) + + QUrl redirectUrl; + bool downloadFailed = false; + + connect(networkReply, &QNetworkReply::finished, &dlewait, &QEventLoop::quit); + connect(networkReply, &QNetworkReply::downloadProgress, this, &unetbootin::dlprogressupdate64); + connect(networkReply, &QNetworkReply::redirected, [&redirectUrl](const QUrl &url){ redirectUrl = url; }); + connect(networkReply, static_cast<void (QNetworkReply::*)(QNetworkReply::NetworkError)>(&QNetworkReply::error), + [&downloadFailed](QNetworkReply::NetworkError){ downloadFailed = true; }); + + dlewait.exec(); + + if (!redirectUrl.isEmpty()) { - connect(&dlftp, SIGNAL(done(bool)), &dlewait, SLOT(quit())); - connect(&dlftp, SIGNAL(dataTransferProgress(qint64, qint64)), this, SLOT(dlprogressupdate64(qint64, qint64))); + downloadfile(redirectUrl.toString(), targetfile, minsize); + return; } - else + + if (downloadFailed) { - connect(&dlhttp, SIGNAL(done(bool)), &dlewait, SLOT(quit())); - connect(&dlhttp, SIGNAL(dataReadProgress(int, int)), this, SLOT(dlprogressupdate(int, int))); + QString errorStr = networkReply->errorString(); + showDownloadFailedScreen(fileurl); + return; } + QFile dloutfile; if (installType == tr("USB Drive")) { @@ -2654,83 +2660,17 @@ void unetbootin::downloadfile(QString fileurl, QString targetfile, int minsize=5 { dloutfile.setFileName(targetfile); } + dloutfile.open(QIODevice::WriteOnly); - if (isftp) - { - dlftp.connectToHost(dlurl.host()); - dlftp.login(); - dlftp.get(realupath, &dloutfile); - } - else - { - dlhttp.setHost(dlurl.host()); - ubngetrequestheader dlrequest(dlurl.host(), realupath); - dlhttp.request(dlrequest, 0, &dloutfile); - } - dlewait.exec(); - if (!isftp) - { - QHttpResponseHeader dlresponse(dlhttp.lastResponse()); - int dlrstatus = dlresponse.statusCode(); - if (dlrstatus >= 300 && dlrstatus < 400 && dlresponse.hasKey("Location")) - { - dloutfile.close(); - rmFile(dloutfile); - downloadfile(dlresponse.value("Location"), targetfile, minsize); - return; - } - } - if (isftp) - { - dlftp.close(); - } - else - { - dlhttp.close(); - } + dloutfile.write(networkReply->readAll()); + networkReply->close(); + networkReply->deleteLater(); dloutfile.close(); if (installType == tr("USB Drive")) { dloutfile.rename(targetfile); } - if (QFile(targetfile).size() <= 4096) - { - QString redirectTargetURL; - QFile seeRedirect(targetfile); - seeRedirect.open(QIODevice::ReadOnly | QIODevice::Text); - QTextStream seeRedirectTextStream(&seeRedirect); - while (!seeRedirectTextStream.atEnd()) - { - QString curline = seeRedirectTextStream.readLine(); - if (curline.contains("content=\"0;url=")) - { - int urlstartidx = curline.indexOf("content=\"0;url=") + QString("content=\"0;url=").size(); - redirectTargetURL = curline.mid(urlstartidx); - if (redirectTargetURL.contains("\"")) - { - redirectTargetURL = redirectTargetURL.left(redirectTargetURL.indexOf("\"")); - } - break; - } - if (curline.contains("content='0;url=")) - { - int urlstartidx = curline.indexOf("content='0;url=") + QString("content='0;url=").size(); - redirectTargetURL = curline.mid(urlstartidx); - if (redirectTargetURL.contains("'")) - { - redirectTargetURL = redirectTargetURL.left(redirectTargetURL.indexOf("'")); - } - break; - } - } - seeRedirect.close(); - if (!redirectTargetURL.isEmpty()) - { - rmFile(targetfile); - downloadfile(redirectTargetURL, targetfile, minsize); - return; - } - } + if (QFile(targetfile).size() < minsize) { // download failed @@ -2812,31 +2752,33 @@ void unetbootin::cpprogressupdate64(qint64 dlbytes, qint64 maxbytes) } } -QString unetbootin::downloadpagecontents(QString pageurl) +QString unetbootin::downloadpagecontents(QUrl pageurl) { - QUrl pgurl(pageurl); - QHttp pghttp; + QNetworkAccessManager _manager; + QNetworkRequest dlurl(pageurl); + QNetworkReply * networkReply = _manager.get(dlurl); QEventLoop pgwait; - connect(&pghttp, SIGNAL(done(bool)), &pgwait, SLOT(quit())); - pghttp.setHost(pgurl.host()); - QString realpgupath = QString(pageurl).remove(0, pageurl.indexOf(QString("://%1").arg(pgurl.host())) + QString("://%1").arg(pgurl.host()).length()); - ubngetrequestheader pgrequest(pgurl.host(), realpgupath); - pghttp.request(pgrequest); + QUrl redirectUrl; + connect(networkReply, &QNetworkReply::finished, &pgwait, &QEventLoop::quit); + connect(networkReply, &QNetworkReply::redirected, [&redirectUrl](const QUrl &url){ redirectUrl = url; }); + pgwait.exec(); - QHttpResponseHeader pgresponse(pghttp.lastResponse()); - int pgrstatus = pgresponse.statusCode(); - if (pgrstatus >= 300 && pgrstatus < 400 && pgresponse.hasKey("Location")) - { - return downloadpagecontents(pgresponse.value("Location")); - } - else + + if (!redirectUrl.isEmpty()) { - return QString(pghttp.readAll()); + return downloadpagecontents(redirectUrl); } + + QString result = networkReply->readAll(); + networkReply->close(); + networkReply->deleteLater(); + return result; } QStringList unetbootin::lstFtpDirFiles(QString ldfDirStringUrl, int ldfMinSize, int ldfMaxSize) { + return {}; +/* QUrl ldfDirUrl(ldfDirStringUrl); QFtp ldfFtp; QEventLoop ldfWait; @@ -2851,14 +2793,14 @@ QStringList unetbootin::lstFtpDirFiles(QString ldfDirStringUrl, int ldfMinSize, ldfFtp.list(ldfDirUrl.path()); ldfWait.exec(); ldfFtp.close(); - return nDirListStorL.nDirFileListSL; + return nDirListStorL.nDirFileListSL;*/ } QStringList unetbootin::lstHttpDirFiles(QString ldfDirStringUrl) { QStringList relativefilelinksL; QStringList relativelinksLPreFilter = - downloadpagecontents(ldfDirStringUrl) + downloadpagecontents(QUrl(ldfDirStringUrl)) .replace(">", ">\n") .replace("<", "\n<") .split("\n"); @@ -3218,11 +3160,11 @@ int unetbootin::letterToNumber(QChar lettertoconvert) { if (lettertoconvert.isLower()) { - return static_cast<int>(lettertoconvert.toAscii() - 'a'); + return static_cast<int>(lettertoconvert.toLatin1() - 'a'); } if (lettertoconvert.isUpper()) { - return static_cast<int>(lettertoconvert.toAscii() - 'A'); + return static_cast<int>(lettertoconvert.toLatin1() - 'A'); } else { @@ -3724,7 +3666,7 @@ void unetbootin::writegrub2cfg() QString menulstxt = QString( "%9\n\n" #ifndef NODEFAULTBOOT - "\nmenuentry \""UNETBOOTINB"\" {\n" + "\nmenuentry \"" UNETBOOTINB"\" {\n" "\tset root=%8\n" "\t%1 %2 %3 %4\n" "\t%5 %6 %7\n" @@ -3845,7 +3787,7 @@ void unetbootin::runinsthdd() "timeout 10\n" #endif #ifndef NODEFAULTBOOT - "\ntitle "UNETBOOTINB"\n" + "\ntitle " UNETBOOTINB"\n" #ifdef Q_OS_WIN32 "find --set-root %3\n" #endif @@ -4343,7 +4285,7 @@ void unetbootin::fininstall() sdesc4->setText(QString("<b>%1 %2</b>").arg(sdesc4->text()).arg(trcurrent)); if (installType == tr("Hard Disk")) { - rebootmsgtext->setText(tr("After rebooting, select the "UNETBOOTINB" menu entry to boot.%1").arg(postinstmsg)); + rebootmsgtext->setText(tr("After rebooting, select the " UNETBOOTINB" menu entry to boot.%1").arg(postinstmsg)); } if (installType == tr("USB Drive")) { diff --git a/unetbootin.h b/unetbootin.h index ea607c8..8cb45d8 100644 --- a/unetbootin.h +++ b/unetbootin.h @@ -152,19 +152,13 @@ signals: void finished(); }; -class ubngetrequestheader : public QHttpRequestHeader -{ -public: - ubngetrequestheader(QString urhost, QString urpath); -}; - class randtmpfile : public QFile { public: randtmpfile(QString rfpath, QString rfextn); static QString getrandfilename(QString rfpath, QString rfextn); }; - +/* class nDirListStor : public QObject { Q_OBJECT @@ -178,7 +172,7 @@ public: public slots: void sAppendSelfUrlInfoList(QUrlInfo curDirUrl); }; - +*/ class unetbootin : public QWidget, private Ui::unetbootinui { Q_OBJECT @@ -280,7 +274,7 @@ public: QString searchforgrub2includesfile(QString includesfile, QString archivefile, QStringList archivefileconts, QStringList visitedincludes); QPair<QPair<QStringList, QStringList>, QPair<QStringList, QStringList> > searchforgrub2includesfileL(QString includesfile, QString archivefile, QStringList archivefileconts, QStringList visitedincludes); void downloadfile(QString fileurl, QString targetfile, int minsize); - QString downloadpagecontents(QString pageurl); + QString downloadpagecontents(QUrl pageurl); QStringList lstFtpDirFiles(QString ldfDirStringUrl, int ldfMinSize, int ldfMaxSize); QStringList lstHttpDirFiles(QString ldfDirStringUrl); QStringList lstNetDirFiles(QString ldfDirStringUrl, int ldfMinSize, int ldfMaxSize); diff --git a/unetbootin.pro b/unetbootin.pro index 3d4cece..f3af65f 100644 --- a/unetbootin.pro +++ b/unetbootin.pro @@ -14,6 +14,7 @@ SOURCES += main.cpp \ distrovercust.cpp QT += core \ gui \ + widgets \ network ICON = unetbootin.icns TRANSLATIONS += unetbootin.ts \ -- 2.21.0 ++++++ 0002-comment-out-all-sources-that-require-FTP-LIST.patch ++++++ >From e5ae50b8336b115611478af0bf036c3c7b76274d Mon Sep 17 00:00:00 2001 From: Valeriy Malov <jazzv...@gmail.com> Date: Fri, 28 Jul 2017 19:45:57 +0300 Subject: [PATCH 2/4] comment out all sources that require FTP LIST except for DrWeb, which seems to be no longer a public ftp --- distrolst.cpp | 56 ++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/distrolst.cpp b/distrolst.cpp index 034f07a..b4829f4 100644 --- a/distrolst.cpp +++ b/distrolst.cpp @@ -278,14 +278,14 @@ if (nameDistro == "CloneZilla") if (nameDistro == "Damn Small Linux") { downloadfile(fileFilterNetDir(QStringList() << - "ftp://ibiblio.org/pub/Linux/distributions/damnsmall/current/" << +// "ftp://ibiblio.org/pub/Linux/distributions/damnsmall/current/" << "http://ibiblio.org/pub/Linux/distributions/damnsmall/current/" << - "ftp://gd.tuwien.ac.at/opsys/linux/damnsmall/current/" << +// "ftp://gd.tuwien.ac.at/opsys/linux/damnsmall/current/" << "http://gd.tuwien.ac.at/opsys/linux/damnsmall/current/" << - "ftp://ftp.is.co.za/linux/distributions/damnsmall/current/" << +// "ftp://ftp.is.co.za/linux/distributions/damnsmall/current/" << // "ftp://ftp.belnet.be/packages/damnsmalllinux/current/" << "http://ftp.belnet.be/packages/damnsmalllinux/current/" << - "ftp://ftp.heanet.ie/mirrors/damnsmalllinux.org/current/" << +// "ftp://ftp.heanet.ie/mirrors/damnsmalllinux.org/current/" << "http://ftp.heanet.ie/mirrors/damnsmalllinux.org/current/" // "ftp://ftp.oss.cc.gatech.edu/pub/linux/distributions/damnsmall/current/" << // "http://ftp.oss.cc.gatech.edu/pub/linux/distributions/damnsmall/current/" << @@ -333,9 +333,9 @@ if (nameDistro == "Debian") if (nameDistro == "Dreamlinux") { downloadfile(fileFilterNetDir(QStringList() << - "ftp://ftp.nluug.nl/pub/os/Linux/distr/dreamlinux/stable/" << +// "ftp://ftp.nluug.nl/pub/os/Linux/distr/dreamlinux/stable/" << "http://ftp.nluug.nl/pub/os/Linux/distr/dreamlinux/stable/" << - "ftp://ftp.surfnet.nl/pub/os/Linux/distr/dreamlinux/stable/" << +// "ftp://ftp.surfnet.nl/pub/os/Linux/distr/dreamlinux/stable/" << "http://ftp.surfnet.nl/pub/os/Linux/distr/dreamlinux/stable/" , 524288000, 1048576000, QList<QRegExp>() << QRegExp(".iso$", Qt::CaseInsensitive) << @@ -467,16 +467,16 @@ if (nameDistro == "Frugalware") QStringList frugalwaremirrorsL = QStringList() << // "ftp://ftp5.frugalware.org/packages/frugalware/pub/frugalware-"+relname+"/boot/" << // "http://www5.frugalware.org/packages/frugalware/pub/frugalware-"+relname+"/boot/" << - "ftp://ftp8.frugalware.org/distro/frugalware/frugalware-"+relname+"/boot/" << +// "ftp://ftp8.frugalware.org/distro/frugalware/frugalware-"+relname+"/boot/" << "http://www8.frugalware.org/distro/frugalware/frugalware-"+relname+"/boot/" << - "ftp://ftp10.frugalware.org/pub/linux/frugalware/frugalware-"+relname+"/boot/" << +// "ftp://ftp10.frugalware.org/pub/linux/frugalware/frugalware-"+relname+"/boot/" << "http://www10.frugalware.org/pub/linux/frugalware/frugalware-"+relname+"/boot/" << - "ftp://ftp12.frugalware.org/mirrors/ftp.frugalware.org/pub/frugalware/frugalware-"+relname+"/boot/" << +// "ftp://ftp12.frugalware.org/mirrors/ftp.frugalware.org/pub/frugalware/frugalware-"+relname+"/boot/" << "http://www12.frugalware.org/mirrors/ftp.frugalware.org/pub/frugalware/frugalware-"+relname+"/boot/" << - "ftp://ftp4.frugalware.org/pub/linux/distributions/frugalware/frugalware-"+relname+"/boot/" << +// "ftp://ftp4.frugalware.org/pub/linux/distributions/frugalware/frugalware-"+relname+"/boot/" << "http://www4.frugalware.org/pub/linux/distributions/frugalware/frugalware-"+relname+"/boot/" << - "ftp://ftp2.frugalware.org/frugalware/pub/frugalware/frugalware-"+relname+"/boot/" << - "ftp://ftp3.frugalware.org/mirrors/frugalware/pub/frugalware/frugalware-"+relname+"/boot/"; +// "ftp://ftp2.frugalware.org/frugalware/pub/frugalware/frugalware-"+relname+"/boot/" << +// "ftp://ftp3.frugalware.org/mirrors/frugalware/pub/frugalware/frugalware-"+relname+"/boot/"; downloadfile(fileFilterNetDir(frugalwaremirrorsL , 307200, 104857600, QList<QRegExp>() << QRegExp("vmlinuz", Qt::CaseInsensitive) << @@ -551,7 +551,7 @@ if (nameDistro == "Kaspersky Rescue Disk") downloadfile(fileFilterNetDir(QStringList() << "http://devbuilds.kaspersky-labs.com/devbuilds/RescueDisk/" << "http://ftp.kaspersky.com/devbuilds/RescueDisk/" << - "ftp://ftp.kaspersky.com/devbuilds/RescueDisk/" +// "ftp://ftp.kaspersky.com/devbuilds/RescueDisk/" , 9288000, 1048576000, QList<QRegExp>() << QRegExp(".iso$", Qt::CaseInsensitive) << QRegExp("k\\S{0,}.iso$", Qt::CaseInsensitive) @@ -562,7 +562,7 @@ if (nameDistro == "Kaspersky Rescue Disk") downloadfile(fileFilterNetDir(QStringList() << "http://devbuilds.kaspersky-labs.com/devbuilds/RescueDisk10/" << "http://ftp.kaspersky.com/devbuilds/RescueDisk10/" << - "ftp://ftp.kaspersky.com/devbuilds/RescueDisk10/" +// "ftp://ftp.kaspersky.com/devbuilds/RescueDisk10/" , 9288000, 1048576000, QList<QRegExp>() << QRegExp(".iso$", Qt::CaseInsensitive) << QRegExp("k\\S{0,}.iso$", Qt::CaseInsensitive) @@ -624,11 +624,11 @@ if (nameDistro == "Linux Mint") QString("http://mirror.sov.uk.goscomb.net/linuxmint.com/stable/%1/").arg(relname) << QString("http://mirror.csclub.uwaterloo.ca/linuxmint/stable/%1/").arg(relname) << QString("http://mirror.aarnet.edu.au/pub/linuxmint/stable/%1/").arg(relname) << - QString("http://mirror.waia.asn.au/pub/linux/linuxmint/linuxmint-isos/linuxmint.com/stable/%1/").arg(relname) << - QString("ftp://mirrors.secution.com/linuxmint.com/stable/%1/").arg(relname) << - QString("ftp://ftp.is.co.za/mirror/linuxmint.com/stable/%1/").arg(relname) << - QString("ftp://ftp.tpnet.pl/pub/linux/linuxmint/isos/stable/%1/").arg(relname) << - QString("ftp://mirror.unej.ac.id/pub/iso/linux-mint/stable/%1/").arg(relname) + QString("http://mirror.waia.asn.au/pub/linux/linuxmint/linuxmint-isos/linuxmint.com/stable/%1/").arg(relname) //<< +// QString("ftp://mirrors.secution.com/linuxmint.com/stable/%1/").arg(relname) << +// QString("ftp://ftp.is.co.za/mirror/linuxmint.com/stable/%1/").arg(relname) << +// QString("ftp://ftp.tpnet.pl/pub/linux/linuxmint/isos/stable/%1/").arg(relname) << +// QString("ftp://mirror.unej.ac.id/pub/iso/linux-mint/stable/%1/").arg(relname) , 61440000, 1048576000, mintregex), isotmpf); extractiso(isotmpf); } @@ -675,11 +675,11 @@ if (nameDistro == "MEPIS") if (relname == "antix") { downloadfile(fileFilterNetDir(QStringList() << - "ftp://ftp.ibiblio.org/pub/linux/distributions/mepis/released/antix/" << +// "ftp://ftp.ibiblio.org/pub/linux/distributions/mepis/released/antix/" << "http://distro.ibiblio.org/pub/linux/distributions/mepis/released/antix/" << - "ftp://ftp-linux.cc.gatech.edu/pub/linux/distributions/mepis/released/antix/" << +// "ftp://ftp-linux.cc.gatech.edu/pub/linux/distributions/mepis/released/antix/" << "http://ftp.uwsg.indiana.edu/linux/mepis/released/antix/" << - "ftp://ftp.ussg.iu.edu/pub/linux/mepis/released/antix/" << +// "ftp://ftp.ussg.iu.edu/pub/linux/mepis/released/antix/" << "http://mirror.cs.vt.edu/pub/MEPIS/antix/" , 61440000, 1048576000, QList<QRegExp>() << QRegExp("antiX\\S{0,}.iso$", Qt::CaseInsensitive) << @@ -689,11 +689,11 @@ if (nameDistro == "MEPIS") else { downloadfile(fileFilterNetDir(QStringList() << - "ftp://ftp.ibiblio.org/pub/linux/distributions/mepis/released/" << +// "ftp://ftp.ibiblio.org/pub/linux/distributions/mepis/released/" << "http://distro.ibiblio.org/pub/linux/distributions/mepis/released/" << - "ftp://ftp-linux.cc.gatech.edu/pub/linux/distributions/mepis/released/" << +// "ftp://ftp-linux.cc.gatech.edu/pub/linux/distributions/mepis/released/" << "http://ftp.uwsg.indiana.edu/linux/mepis/released/" << - "ftp://ftp.ussg.iu.edu/pub/linux/mepis/released/" << +// "ftp://ftp.ussg.iu.edu/pub/linux/mepis/released/" << "http://mirror.cs.vt.edu/pub/MEPIS/" , 61440000, 1048576000, QList<QRegExp>() << QRegExp("MEPIS\\S{0,}.iso$", Qt::CaseInsensitive) << @@ -805,9 +805,9 @@ if (nameDistro == "PCLinuxOS") if (nameDistro == "Puppy Linux") { downloadfile(fileFilterNetDir(QStringList() << - "ftp://ibiblio.org/pub/linux/distributions/puppylinux/" << +// "ftp://ibiblio.org/pub/linux/distributions/puppylinux/" << "http://distro.ibiblio.org/pub/linux/distributions/puppylinux/" << - "ftp://ftp.nluug.nl/ftp/pub/os/Linux/distr/puppylinux/" << +// "ftp://ftp.nluug.nl/ftp/pub/os/Linux/distr/puppylinux/" << "http://ftp.nluug.nl/ftp/pub/os/Linux/distr/puppylinux/" , 61440000, 1048576000, QList<QRegExp>() << QRegExp(".iso$", Qt::CaseInsensitive) << @@ -1018,7 +1018,7 @@ if (nameDistro == "Ubuntu") downloadfile(fileFilterNetDir(QStringList() << "http://releases.ubuntu.com/"+relname << "http://releases.ubuntu.com/releases/"+relname << - "ftp://releases.ubuntu.com/releases/.pool/" << +// "ftp://releases.ubuntu.com/releases/.pool/" << "http://mirrors.gigenet.com/ubuntu/"+relname << "http://mirrors.easynews.com/linux/ubuntu-releases/"+relname << "http://www.gtlib.gatech.edu/pub/ubuntu-releases/"+relname << -- 2.21.0 ++++++ 0003-fix-distrolst.cpp.patch ++++++ >From 879f90846abf164f1521c23e494bda986653a1e4 Mon Sep 17 00:00:00 2001 From: Valeriy Malov <jazzv...@gmail.com> Date: Fri, 28 Jul 2017 21:33:28 +0300 Subject: [PATCH 3/4] fix distrolst.cpp fix listdistros/listversions output findbrokendownloads.rb doesn't need root, use default ruby use default CONFIG to allow debug builds --- distrolst.cpp | 6 +++--- findbrokendownloads.rb | 13 ++++--------- unetbootin.cpp | 25 +++++++++++++++++-------- unetbootin.pro | 3 +-- 4 files changed, 25 insertions(+), 22 deletions(-) diff --git a/distrolst.cpp b/distrolst.cpp index b4829f4..3b45583 100644 --- a/distrolst.cpp +++ b/distrolst.cpp @@ -474,7 +474,7 @@ if (nameDistro == "Frugalware") // "ftp://ftp12.frugalware.org/mirrors/ftp.frugalware.org/pub/frugalware/frugalware-"+relname+"/boot/" << "http://www12.frugalware.org/mirrors/ftp.frugalware.org/pub/frugalware/frugalware-"+relname+"/boot/" << // "ftp://ftp4.frugalware.org/pub/linux/distributions/frugalware/frugalware-"+relname+"/boot/" << - "http://www4.frugalware.org/pub/linux/distributions/frugalware/frugalware-"+relname+"/boot/" << + "http://www4.frugalware.org/pub/linux/distributions/frugalware/frugalware-"+relname+"/boot/"; //<< // "ftp://ftp2.frugalware.org/frugalware/pub/frugalware/frugalware-"+relname+"/boot/" << // "ftp://ftp3.frugalware.org/mirrors/frugalware/pub/frugalware/frugalware-"+relname+"/boot/"; downloadfile(fileFilterNetDir(frugalwaremirrorsL @@ -550,7 +550,7 @@ if (nameDistro == "Kaspersky Rescue Disk") { downloadfile(fileFilterNetDir(QStringList() << "http://devbuilds.kaspersky-labs.com/devbuilds/RescueDisk/" << - "http://ftp.kaspersky.com/devbuilds/RescueDisk/" << + "http://ftp.kaspersky.com/devbuilds/RescueDisk/" //<< // "ftp://ftp.kaspersky.com/devbuilds/RescueDisk/" , 9288000, 1048576000, QList<QRegExp>() << QRegExp(".iso$", Qt::CaseInsensitive) << @@ -561,7 +561,7 @@ if (nameDistro == "Kaspersky Rescue Disk") { downloadfile(fileFilterNetDir(QStringList() << "http://devbuilds.kaspersky-labs.com/devbuilds/RescueDisk10/" << - "http://ftp.kaspersky.com/devbuilds/RescueDisk10/" << + "http://ftp.kaspersky.com/devbuilds/RescueDisk10/" //<< // "ftp://ftp.kaspersky.com/devbuilds/RescueDisk10/" , 9288000, 1048576000, QList<QRegExp>() << QRegExp(".iso$", Qt::CaseInsensitive) << diff --git a/unetbootin.cpp b/unetbootin.cpp index 0767fc8..6ffd6fc 100644 --- a/unetbootin.cpp +++ b/unetbootin.cpp @@ -12,6 +12,7 @@ This program is distributed in the hope that it will be useful, but WITHOUT ANY #include <QMessageBox> #include <QFileDialog> #include <QProgressDialog> +#include <QDebug> static const QList<QRegExp> ignoredtypesbothRL = QList<QRegExp>() << QRegExp("isolinux.bin$", Qt::CaseInsensitive) @@ -468,8 +469,9 @@ bool unetbootin::ubninitialize(QList<QPair<QString, QString> > oppairs) QTextStream out(stdout); for (int i = 1; i < this->distroselect->count(); ++i) { - out << this->distroselect->itemText(i); + out << this->distroselect->itemText(i) << endl; } + out.flush(); QApplication::exit(); exit(0); } @@ -478,8 +480,9 @@ bool unetbootin::ubninitialize(QList<QPair<QString, QString> > oppairs) QTextStream out(stdout); for (int i = 0; i < this->dverselect->count(); ++i) { - out << this->dverselect->itemText(i); + out << this->dverselect->itemText(i) << endl; } + out.flush(); QApplication::exit(); exit(0); } @@ -2629,12 +2632,13 @@ void unetbootin::downloadfile(QString fileurl, QString targetfile, int minsize=5 QUrl redirectUrl; bool downloadFailed = false; + QNetworkReply::NetworkError errorCode; connect(networkReply, &QNetworkReply::finished, &dlewait, &QEventLoop::quit); connect(networkReply, &QNetworkReply::downloadProgress, this, &unetbootin::dlprogressupdate64); - connect(networkReply, &QNetworkReply::redirected, [&redirectUrl](const QUrl &url){ redirectUrl = url; }); + connect(networkReply, &QNetworkReply::redirected, [&](const QUrl &url){ redirectUrl = url; }); connect(networkReply, static_cast<void (QNetworkReply::*)(QNetworkReply::NetworkError)>(&QNetworkReply::error), - [&downloadFailed](QNetworkReply::NetworkError){ downloadFailed = true; }); + [&](QNetworkReply::NetworkError code){ downloadFailed = true; errorCode = code; }); dlewait.exec(); @@ -2646,7 +2650,8 @@ void unetbootin::downloadfile(QString fileurl, QString targetfile, int minsize=5 if (downloadFailed) { - QString errorStr = networkReply->errorString(); + qDebug() << networkReply->errorString(); + qDebug() << "Error code: " << errorCode; showDownloadFailedScreen(fileurl); return; } @@ -2685,7 +2690,8 @@ void unetbootin::downloadfile(QString fileurl, QString targetfile, int minsize=5 if (testingDownload) { // Note that this only tests that the first download succeeds - printf("exitstatus:downloadcomplete\n"); + QTextStream out(stdout); + out << "exitstatus:downloadcomplete" << endl << flush; QApplication::exit(); exit(0); } @@ -2701,7 +2707,8 @@ void unetbootin::showDownloadFailedScreen(const QString &fileurl) this->downloadFailed = true; if (exitOnCompletion) { - printf("exitstatus:downloadfailed\n"); + QTextStream out(stdout); + out << "exitstatus:downloadfailed" << endl << flush; QApplication::exit(); exit(0); } @@ -2777,6 +2784,7 @@ QString unetbootin::downloadpagecontents(QUrl pageurl) QStringList unetbootin::lstFtpDirFiles(QString ldfDirStringUrl, int ldfMinSize, int ldfMaxSize) { + qDebug() << "lstFtpDirFiles called for " << ldfDirStringUrl; return {}; /* QUrl ldfDirUrl(ldfDirStringUrl); @@ -4299,7 +4307,8 @@ void unetbootin::fininstall() finishLogging(); if (exitOnCompletion) { - printf("exitstatus:success\n"); + QTextStream out(stdout); + out << "exitstatus:success" << endl << flush; QApplication::exit(); exit(0); } diff --git a/unetbootin.pro b/unetbootin.pro index f3af65f..6405ba2 100644 --- a/unetbootin.pro +++ b/unetbootin.pro @@ -2,13 +2,12 @@ TEMPLATE = app TARGET = unetbootin DEPENDPATH += . INCLUDEPATH += . -CONFIG += release \ - static HEADERS += unetbootin.h FORMS += unetbootin.ui SOURCES += main.cpp \ unetbootin.cpp \ + customdistrolst.cpp \ distrolst.cpp \ distrover.cpp \ distrovercust.cpp -- 2.21.0 ++++++ 0004-don-t-wait-until-the-file-is-downloaded-fully-before.patch ++++++ >From 9cc0841af5d129832d8e2df87355a53f45fca417 Mon Sep 17 00:00:00 2001 From: Valeriy Malov <jazzv...@gmail.com> Date: Fri, 28 Jul 2017 22:13:20 +0300 Subject: [PATCH 4/4] don't wait until the file is downloaded fully before dumping it on disk fix some QNetworkReply/QFile resource freeing delete dlprogressupdate64 because it's never used fix some slot warnings --- unetbootin.cpp | 80 ++++++++++++++++------------------- unetbootin.h | 7 ++- 2 files changed, 39 insertions(+), 48 deletions(-) diff --git a/unetbootin.cpp b/unetbootin.cpp index 6ffd6fc..5a6750e 100644 --- a/unetbootin.cpp +++ b/unetbootin.cpp @@ -699,17 +699,17 @@ QStringList unetbootin::listalldrives() return fulldrivelist; } -void unetbootin::on_typeselect_currentIndexChanged(int typeselectIndex) +void unetbootin::on_typeselect_currentIndexChanged(int) { refreshdriveslist(); } -void unetbootin::on_dverselect_currentIndexChanged() +void unetbootin::on_dverselect_currentIndexChanged(int) { radioDistro->setChecked(true); } -void unetbootin::on_diskimagetypeselect_currentIndexChanged() +void unetbootin::on_diskimagetypeselect_currentIndexChanged(int) { radioFloppy->setChecked(true); } @@ -2640,35 +2640,41 @@ void unetbootin::downloadfile(QString fileurl, QString targetfile, int minsize=5 connect(networkReply, static_cast<void (QNetworkReply::*)(QNetworkReply::NetworkError)>(&QNetworkReply::error), [&](QNetworkReply::NetworkError code){ downloadFailed = true; errorCode = code; }); + QFile dloutfile; + if (installType == tr("USB Drive")) + { + dloutfile.setFileName(randtmpfile::getrandfilename(ubntmpf, "tmp")); + } + else + { + dloutfile.setFileName(targetfile); + } + dloutfile.open(QIODevice::WriteOnly); + + connect(networkReply, &QNetworkReply::downloadProgress, [&](qint64, qint64){ + dloutfile.write(networkReply->readAll()); + }); + dlewait.exec(); if (!redirectUrl.isEmpty()) { + networkReply->deleteLater(); downloadfile(redirectUrl.toString(), targetfile, minsize); return; } if (downloadFailed) { - qDebug() << networkReply->errorString(); + qDebug() << "Failed to download URL: " << fileurl; qDebug() << "Error code: " << errorCode; + qDebug() << "Error string: " << networkReply->errorString(); + networkReply->deleteLater(); showDownloadFailedScreen(fileurl); return; } - QFile dloutfile; - if (installType == tr("USB Drive")) - { - dloutfile.setFileName(randtmpfile::getrandfilename(ubntmpf, "tmp")); - } - else - { - dloutfile.setFileName(targetfile); - } - - dloutfile.open(QIODevice::WriteOnly); dloutfile.write(networkReply->readAll()); - networkReply->close(); networkReply->deleteLater(); dloutfile.close(); if (installType == tr("USB Drive")) @@ -2714,34 +2720,19 @@ void unetbootin::showDownloadFailedScreen(const QString &fileurl) } } -void unetbootin::dlprogressupdate(int dlbytes, int maxbytes) -{ - QTime time = QTime::currentTime(); - static int oldsec = 0; - // refresh the progress bar every second - if(oldsec != time.second()) - { - oldsec = time.second(); - tprogress->setValue(dlbytes); - tprogress->setMaximum(maxbytes); - // display the downloaded size with suffix - pdesc1->setText(tr("<b>Downloaded:</b> %1 of %2").arg(displayfisize(dlbytes)).arg(displayfisize(maxbytes))); - } -} - void unetbootin::dlprogressupdate64(qint64 dlbytes, qint64 maxbytes) { - QTime time = QTime::currentTime(); - static int oldsec = 0; - // refresh the progress bar every second - if(oldsec != time.second()) - { - oldsec = time.second(); - tprogress->setValue(dlbytes); - tprogress->setMaximum(maxbytes); - // display the downloaded size with suffix - pdesc1->setText(tr("<b>Downloaded:</b> %1 of %2").arg(displayfisize(dlbytes)).arg(displayfisize(maxbytes))); - } + QTime time = QTime::currentTime(); + static int oldsec = 0; + // refresh the progress bar every second + if(oldsec != time.second()) + { + oldsec = time.second(); + tprogress->setValue(dlbytes); + tprogress->setMaximum(maxbytes); + // display the downloaded size with suffix + pdesc1->setText(tr("<b>Downloaded:</b> %1 of %2").arg(displayfisize(dlbytes)).arg(displayfisize(maxbytes))); + } } void unetbootin::cpprogressupdate64(qint64 dlbytes, qint64 maxbytes) @@ -2761,9 +2752,9 @@ void unetbootin::cpprogressupdate64(qint64 dlbytes, qint64 maxbytes) QString unetbootin::downloadpagecontents(QUrl pageurl) { - QNetworkAccessManager _manager; + QNetworkAccessManager manager; QNetworkRequest dlurl(pageurl); - QNetworkReply * networkReply = _manager.get(dlurl); + QNetworkReply * networkReply = manager.get(dlurl); QEventLoop pgwait; QUrl redirectUrl; connect(networkReply, &QNetworkReply::finished, &pgwait, &QEventLoop::quit); @@ -2773,6 +2764,7 @@ QString unetbootin::downloadpagecontents(QUrl pageurl) if (!redirectUrl.isEmpty()) { + networkReply->deleteLater(); return downloadpagecontents(redirectUrl); } diff --git a/unetbootin.h b/unetbootin.h index 8cb45d8..99c93a2 100644 --- a/unetbootin.h +++ b/unetbootin.h @@ -336,9 +336,9 @@ public: private slots: void on_distroselect_currentIndexChanged(int distroselectIndex); - void on_typeselect_currentIndexChanged(int typeselectIndex); - void on_dverselect_currentIndexChanged(); - void on_diskimagetypeselect_currentIndexChanged(); + void on_typeselect_currentIndexChanged(int); + void on_dverselect_currentIndexChanged(int); + void on_diskimagetypeselect_currentIndexChanged(int); void on_FloppyFileSelector_clicked(); void on_KernelFileSelector_clicked(); void on_InitrdFileSelector_clicked(); @@ -347,7 +347,6 @@ private slots: void on_fexitbutton_clicked(); public slots: - void dlprogressupdate(int dlbytes, int maxbytes); void dlprogressupdate64(qint64 dlbytes, qint64 maxbytes); void cpprogressupdate64(qint64 dlbytes, qint64 maxbytes); void on_okbutton_clicked(); -- 2.21.0 ++++++ unetbootin-locate-usb-devices.diff ++++++ --- /var/tmp/diff_new_pack.Q6XYdR/_old 2019-04-23 14:39:24.333589771 +0200 +++ /var/tmp/diff_new_pack.Q6XYdR/_new 2019-04-23 14:39:24.333589771 +0200 @@ -1,8 +1,8 @@ -Index: unetbootin.cpp -=================================================================== ---- unetbootin.cpp.orig -+++ unetbootin.cpp -@@ -508,17 +508,12 @@ +diff --git a/unetbootin.cpp b/unetbootin.cpp +index f7af26c..5551bc2 100644 +--- a/unetbootin.cpp ++++ b/unetbootin.cpp +@@ -607,17 +607,12 @@ QStringList unetbootin::listsanedrives() } #endif #ifdef Q_OS_LINUX @@ -23,10 +23,10 @@ if (!volidcommand.isEmpty()) { if (QString(callexternapp(volidcommand, QString("-t %2").arg(usbfileinfoL.at(i).canonicalFilePath()))).contains(QRegExp("(vfat|ext2|ext3|ext4)"))) -@@ -635,20 +630,7 @@ - } - } - } +@@ -634,20 +629,7 @@ QStringList unetbootin::listsanedrives() + } + } + } - /* - QString fdisklusbdevsS = callexternapp(fdiskcommand, "-l"); - QStringList usbdevsL = QString(fdisklusbdevsS).split("\n").filter(QRegExp("\\.{0,}FAT|Disk\\.{0,}")).join("\n").split(" ").join("\n").split("\t").join("\n").split("\n").filter("/dev/"); ++++++ unetbootin-source-657.tar.gz -> unetbootin-source-661.tar.gz ++++++ Binary files old/._INSTALL and new/._INSTALL differ Binary files old/._README.TXT and new/._README.TXT differ Binary files old/._build-nostatic and new/._build-nostatic differ Binary files old/._customdistrolst.cpp and new/._customdistrolst.cpp differ Binary files old/._customdistselect.cpp and new/._customdistselect.cpp differ Binary files old/._distrolst.cpp and new/._distrolst.cpp differ Binary files old/._distrover.cpp and new/._distrover.cpp differ Binary files old/._distrovercust.cpp and new/._distrovercust.cpp differ Binary files old/._main.cpp and new/._main.cpp differ Binary files old/._org.unetbootin.pkexec.unetbootin.policy and new/._org.unetbootin.pkexec.unetbootin.policy differ Binary files old/._unetbootin.cpp and new/._unetbootin.cpp differ Binary files old/._unetbootin.desktop and new/._unetbootin.desktop differ Binary files old/._unetbootin.h and new/._unetbootin.h differ Binary files old/._unetbootin.pro and new/._unetbootin.pro differ Binary files old/._unetbootin.ts and new/._unetbootin.ts differ Binary files old/._unetbootin.ui and new/._unetbootin.ui differ Binary files old/._unetbootin.xpm and new/._unetbootin.xpm differ Binary files old/._unetbootin_128.png and new/._unetbootin_128.png differ Binary files old/._unetbootin_14.png and new/._unetbootin_14.png differ Binary files old/._unetbootin_16.png and new/._unetbootin_16.png differ Binary files old/._unetbootin_192.png and new/._unetbootin_192.png differ Binary files old/._unetbootin_22.png and new/._unetbootin_22.png differ Binary files old/._unetbootin_24.png and new/._unetbootin_24.png differ Binary files old/._unetbootin_256.png and new/._unetbootin_256.png differ Binary files old/._unetbootin_32.png and new/._unetbootin_32.png differ Binary files old/._unetbootin_48.png and new/._unetbootin_48.png differ Binary files old/._unetbootin_512.png and new/._unetbootin_512.png differ Binary files old/._unetbootin_64.png and new/._unetbootin_64.png differ Binary files old/._unetbootin_am.ts and new/._unetbootin_am.ts differ Binary files old/._unetbootin_ar.ts and new/._unetbootin_ar.ts differ Binary files old/._unetbootin_ast.ts and new/._unetbootin_ast.ts differ Binary files old/._unetbootin_be.ts and new/._unetbootin_be.ts differ Binary files old/._unetbootin_bg.ts and new/._unetbootin_bg.ts differ Binary files old/._unetbootin_bn.ts and new/._unetbootin_bn.ts differ Binary files old/._unetbootin_ca.ts and new/._unetbootin_ca.ts differ Binary files old/._unetbootin_cs.ts and new/._unetbootin_cs.ts differ Binary files old/._unetbootin_custom.ts and new/._unetbootin_custom.ts differ Binary files old/._unetbootin_da.ts and new/._unetbootin_da.ts differ Binary files old/._unetbootin_de.ts and new/._unetbootin_de.ts differ Binary files old/._unetbootin_el.ts and new/._unetbootin_el.ts differ Binary files old/._unetbootin_eo.ts and new/._unetbootin_eo.ts differ Binary files old/._unetbootin_es.ts and new/._unetbootin_es.ts differ Binary files old/._unetbootin_et.ts and new/._unetbootin_et.ts differ Binary files old/._unetbootin_eu.ts and new/._unetbootin_eu.ts differ Binary files old/._unetbootin_fa.ts and new/._unetbootin_fa.ts differ Binary files old/._unetbootin_fi.ts and new/._unetbootin_fi.ts differ Binary files old/._unetbootin_fo.ts and new/._unetbootin_fo.ts differ Binary files old/._unetbootin_fr.ts and new/._unetbootin_fr.ts differ Binary files old/._unetbootin_gl.ts and new/._unetbootin_gl.ts differ Binary files old/._unetbootin_he.ts and new/._unetbootin_he.ts differ Binary files old/._unetbootin_hr.ts and new/._unetbootin_hr.ts differ Binary files old/._unetbootin_hu.ts and new/._unetbootin_hu.ts differ Binary files old/._unetbootin_icons.svg and new/._unetbootin_icons.svg differ Binary files old/._unetbootin_id.ts and new/._unetbootin_id.ts differ Binary files old/._unetbootin_it.ts and new/._unetbootin_it.ts differ Binary files old/._unetbootin_ja.ts and new/._unetbootin_ja.ts differ Binary files old/._unetbootin_lt.ts and new/._unetbootin_lt.ts differ Binary files old/._unetbootin_lv.ts and new/._unetbootin_lv.ts differ Binary files old/._unetbootin_ml.ts and new/._unetbootin_ml.ts differ Binary files old/._unetbootin_ms.ts and new/._unetbootin_ms.ts differ Binary files old/._unetbootin_nan.ts and new/._unetbootin_nan.ts differ Binary files old/._unetbootin_nb.ts and new/._unetbootin_nb.ts differ Binary files old/._unetbootin_nl.ts and new/._unetbootin_nl.ts differ Binary files old/._unetbootin_nn.ts and new/._unetbootin_nn.ts differ Binary files old/._unetbootin_pl.ts and new/._unetbootin_pl.ts differ Binary files old/._unetbootin_pt.ts and new/._unetbootin_pt.ts differ Binary files old/._unetbootin_pt_BR.ts and new/._unetbootin_pt_BR.ts differ Binary files old/._unetbootin_ro.ts and new/._unetbootin_ro.ts differ Binary files old/._unetbootin_ru.ts and new/._unetbootin_ru.ts differ Binary files old/._unetbootin_si.ts and new/._unetbootin_si.ts differ Binary files old/._unetbootin_sk.ts and new/._unetbootin_sk.ts differ Binary files old/._unetbootin_sl.ts and new/._unetbootin_sl.ts differ Binary files old/._unetbootin_sr.ts and new/._unetbootin_sr.ts differ Binary files old/._unetbootin_sv.ts and new/._unetbootin_sv.ts differ Binary files old/._unetbootin_sw.ts and new/._unetbootin_sw.ts differ Binary files old/._unetbootin_tr.ts and new/._unetbootin_tr.ts differ Binary files old/._unetbootin_uk.ts and new/._unetbootin_uk.ts differ Binary files old/._unetbootin_ur.ts and new/._unetbootin_ur.ts differ Binary files old/._unetbootin_vi.ts and new/._unetbootin_vi.ts differ Binary files old/._unetbootin_zh_CN.ts and new/._unetbootin_zh_CN.ts differ Binary files old/._unetbootin_zh_TW.ts and new/._unetbootin_zh_TW.ts differ Binary files old/._vcs-name and new/._vcs-name differ Binary files old/._vcs-revno and new/._vcs-revno differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/README.TXT new/README.TXT --- old/README.TXT 2017-10-24 11:00:20.000000000 +0200 +++ new/README.TXT 2018-04-28 11:30:54.000000000 +0200 @@ -1,16 +1,16 @@ -UNetbootin Source Revision 657 +UNetbootin Source Revision 631 Copyright Geza Kovacs Homepage at http://unetbootin.sourceforge.net Licensed under the GNU GPL v2 and above, components from other projects are licensed under their respective licenses -Build generated on Tue Oct 24 02:00:20 PDT 2017 +Build generated on Sat Apr 28 02:30:54 PDT 2018 Download using git: git clone https://github.com/gkovacs/unetbootin.git cd unetbootin -git checkout 4400a81158c0f3c66fc6da6cf9cedf54453794e2 +git checkout ba69d3cab4f41b260d526d9d4c5a406b06591697 Download using bzr: -bzr branch http://bazaar.launchpad.net/~vcs-imports/unetbootin/trunk -r657 +bzr branch http://bazaar.launchpad.net/~vcs-imports/unetbootin/trunk -r631 Build instructions at http://sourceforge.net/apps/trac/unetbootin/wiki/compile diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/distrolst.cpp new/distrolst.cpp --- old/distrolst.cpp 2017-10-24 10:49:16.000000000 +0200 +++ new/distrolst.cpp 2018-04-28 03:24:54.000000000 +0200 @@ -18,6 +18,7 @@ #ifndef ubunturelnamereplace #define ubunturelnamereplace \ relname \ + .replace("18.04", "bionic") \ .replace("17.10", "artful") \ .replace("17.04", "zesty") \ .replace("16.10", "yakkety") \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/distrover.cpp new/distrover.cpp --- old/distrover.cpp 2017-10-24 10:59:12.000000000 +0200 +++ new/distrover.cpp 2018-04-28 11:29:31.000000000 +0200 @@ -10,11 +10,9 @@ #ifndef ubuntuverlist #define ubuntuverlist \ "14.04_NetInstall" << "14.04_NetInstall_x64" << "14.04_HdMedia" << "14.04_HdMedia_x64" << "14.04_Live" << "14.04_Live_x64" << \ -"15.10_NetInstall" << "15.10_NetInstall_x64" << "15.10_HdMedia" << "15.10_HdMedia_x64" << "15.10_Live" << "15.10_Live_x64" << \ "16.04_NetInstall" << "16.04_NetInstall_x64" << "16.04_HdMedia" << "16.04_HdMedia_x64" << "16.04_Live" << "16.04_Live_x64" << \ -"16.10_NetInstall" << "16.10_NetInstall_x64" << "16.10_HdMedia" << "16.10_HdMedia_x64" << "16.10_Live" << "16.10_Live_x64" << \ -"17.04_NetInstall" << "17.04_NetInstall_x64" << "17.04_HdMedia" << "17.04_HdMedia_x64" << "17.04_Live" << "17.04_Live_x64" << \ "17.10_NetInstall" << "17.10_NetInstall_x64" << "17.10_HdMedia" << "17.10_HdMedia_x64" << "17.10_Live_x64" << \ +"18.04_NetInstall" << "18.04_NetInstall_x64" << "18.04_HdMedia" << "18.04_HdMedia_x64" << "18.04_Live_x64" << \ "Daily_Live" << "Daily_Live_x64" #endif @@ -127,7 +125,7 @@ "<b>Description:</b> Kaspersky Rescue Disk detects and removes malware from your Windows installation.<br/>" "<b>Install Notes:</b> The Live version allows for booting in Live mode, from which malware scans can be launched.") << "10_Live" << "8_Live")); - distroselect->addItem("Kubuntu", (QStringList() << "16.04_Live" << + distroselect->addItem("Kubuntu", (QStringList() << "18.04_Live_x64" << unetbootin::tr("<b>Homepage:</b> <a href=\"http://www.kubuntu.org/\">http://www.kubuntu.org</a><br/>" "<b>Description:</b> Kubuntu is an official Ubuntu derivative featuring the KDE desktop.<br/>" "<b>Install Notes:</b> The Live version allows for booting in Live mode, from which the installer can optionally be launched. The NetInstall version allows for installation over FTP, and can install Kubuntu and other official Ubuntu derivatives. If you would like to use a pre-downloaded alternate (not desktop) install iso, use the HdMedia option, and then place the alternate install iso file on the root directory of your hard drive or USB drive") << @@ -142,7 +140,7 @@ "<b>Description:</b> Linux Mint is a user-friendly Ubuntu-based distribution which includes additional proprietary codecs and other software by default.<br/>" "<b>Install Notes:</b> The Live version allows for booting in Live mode, from which the installer can optionally be launched.") << "17_Live" << "17_Live_x64" << "17.1_Live" << "17.1_Live_x64" << "17.2_Live" << "17.2_Live_x64")); -distroselect->addItem("Lubuntu", (QStringList() << "16.04_Live" << +distroselect->addItem("Lubuntu", (QStringList() << "18.04_Live_x64" << unetbootin::tr("<b>Homepage:</b> <a href=\"http://www.lubuntu.net/\">http://www.lubuntu.net</a><br/>" "<b>Description:</b> Lubuntu is an official Ubuntu derivative featuring the LXDE desktop.<br/>" "<b>Install Notes:</b> The Live version allows for booting in Live mode, from which the installer can optionally be launched. The NetInstall version allows for installation over FTP, and can install Kubuntu and other official Ubuntu derivatives. If you would like to use a pre-downloaded alternate (not desktop) install iso, use the HdMedia option, and then place the alternate install iso file on the root directory of your hard drive or USB drive") << @@ -249,7 +247,7 @@ // "<b>Description:</b> SystemRescueCD includes various partition management and data recovery and backup tools.<br/>" // "<b>Install Notes:</b> SystemRescueCD is booted and run in live mode; no installation is required to use it.") << //"Latest_Live")); -distroselect->addItem("Ubuntu", (QStringList() << "16.04_Live" << +distroselect->addItem("Ubuntu", (QStringList() << "18.04_Live_x64" << unetbootin::tr("<b>Homepage:</b> <a href=\"http://www.ubuntu.com/\">http://www.ubuntu.com</a><br/>" "<b>Description:</b> Ubuntu is a user-friendly Debian-based distribution. It is currently the most popular Linux desktop distribution.<br/>" "<b>Install Notes:</b> The Live version allows for booting in Live mode, from which the installer can optionally be launched. The NetInstall version allows for installation over FTP, and can install Kubuntu and other official Ubuntu derivatives. If you would like to use a pre-downloaded alternate (not desktop) install iso, use the HdMedia option, and then place the alternate install iso file on the root directory of your hard drive or USB drive") << @@ -259,7 +257,7 @@ "<b>Description:</b> xPUD is a lightweight distribution featuring a simple kiosk-like interface with a web browser and media player.<br/>" "<b>Install Notes:</b> The Live version loads the entire system into RAM and boots from memory.") << "Stable_Live" << "Unstable_Live")); -distroselect->addItem("Xubuntu", (QStringList() << "16.04_Live" << +distroselect->addItem("Xubuntu", (QStringList() << "18.04_Live_x64" << unetbootin::tr("<b>Homepage:</b> <a href=\"http://www.xubuntu.org/\">http://www.xubuntu.org</a><br/>" "<b>Description:</b> Xubuntu is an official Ubuntu derivative featuring the XFCE desktop.<br/>" "<b>Install Notes:</b> The Live version allows for booting in Live mode, from which the installer can optionally be launched. The NetInstall version allows for installation over FTP, and can install Kubuntu and other official Ubuntu derivatives. If you would like to use a pre-downloaded alternate (not desktop) install iso, use the HdMedia option, and then place the alternate install iso file on the root directory of your hard drive or USB drive") << diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unetbootin.cpp new/unetbootin.cpp --- old/unetbootin.cpp 2017-07-14 10:54:12.000000000 +0200 +++ new/unetbootin.cpp 2018-04-28 03:24:54.000000000 +0200 @@ -4351,7 +4351,7 @@ rebootmsgtext->setText(tr("After rebooting, select the USB boot option in the BIOS boot menu.%1").arg(postinstmsg)); #endif #ifdef Q_OS_MAC - rebootmsgtext->setText(tr("The created USB device will not boot off a Mac. Insert it into a PC, and select the USB boot option in the BIOS boot menu.%1").arg(postinstmsg)); + rebootmsgtext->setText(tr("After rebooting, hold the option key and select your USB drive to boot from it.%1").arg(postinstmsg)); #endif } finishLogging(); ++++++ unetbootin-suse.patch ++++++ --- /var/tmp/diff_new_pack.Q6XYdR/_old 2019-04-23 14:39:24.453589834 +0200 +++ /var/tmp/diff_new_pack.Q6XYdR/_new 2019-04-23 14:39:24.453589834 +0200 @@ -1,16 +1,68 @@ ---- distrover.cpp.orig 2017-04-24 01:22:37.000000000 +0200 -+++ distrover.cpp 2017-06-17 12:32:55.939553687 +0200 -@@ -177,11 +177,11 @@ +diff --git a/distrolst.cpp b/distrolst.cpp +index 8cc6580..511ea06 100644 +--- a/distrolst.cpp ++++ b/distrolst.cpp +@@ -753,23 +753,36 @@ if (nameDistro == "openSUSE") + { + cpuarch = "i386"; + } ++ ++ QString leapversion; ++ if(relname != "tumbleweed") ++ { ++ leapversion = relname.split("_").last(); ++ } + if (islivecd) + { +- downloadfile(QString("http://download.opensuse.org/distribution/%1/iso/cd/openSUSE-%1-GM-GNOME-Live-%2.iso").arg(relname, cpuarch), isotmpf); ++ if (relname == "tumbleweed") ++ { ++ downloadfile(QString("https://download.opensuse.org/tumbleweed/iso/openSUSE-tumbleweed-DVD-%1-Current.iso").arg(cpuarch), isotmpf); ++ } ++ else ++ { ++ downloadfile(QString("https://download.opensuse.org/distribution/leap/%1/iso/openSUSE-Leap-DVD-x86_64-Current.iso").arg(leapversion), isotmpf); ++ } + extractiso(isotmpf); + } + else + { +- if (relname == "factory") ++ if (relname == "tumbleweed") + { +- downloadfile(QString("http://download.opensuse.org/factory/repo/oss/boot/%1/loader/linux").arg(cpuarch), QString("%1ubnkern").arg(targetPath)); +- downloadfile(QString("http://download.opensuse.org/factory/repo/oss/boot/%1/loader/initrd").arg(cpuarch), QString("%1ubninit").arg(targetPath)); +- postinstmsg = unetbootin::tr("\n*IMPORTANT* After rebooting, ignore any error messages and select back if prompted for a CD, then go to the main menu, select the 'Start Installation' option, choose 'Network' as the source, choose 'HTTP' as the protocol, enter 'download.opensuse.org' when prompted for a server, and enter '/factory/repo/oss' when asked for the folder."); ++ downloadfile(QString("https://download.opensuse.org/tumbleweed/repo/oss/boot/%1/loader/linux").arg(cpuarch), QString("%1ubnkern").arg(targetPath)); ++ downloadfile(QString("https://download.opensuse.org/tumbleweed/repo/oss/boot/%1/loader/initrd").arg(cpuarch), QString("%1ubninit").arg(targetPath)); ++ postinstmsg = unetbootin::tr("\n*IMPORTANT* After rebooting, ignore any error messages and select back if prompted for a CD, then go to the main menu, select the 'Start Installation' option, choose 'Network' as the source, choose 'HTTP' as the protocol, enter 'download.opensuse.org' when prompted for a server, and enter '/tumbleweed/repo/oss' when asked for the folder."); + } + else + { +- downloadfile(QString("http://download.opensuse.org/distribution/%1/repo/oss/boot/%2/loader/linux").arg(relname, cpuarch), QString("%1ubnkern").arg(targetPath)); +- downloadfile(QString("http://download.opensuse.org/distribution/%1/repo/oss/boot/%2/loader/initrd").arg(relname, cpuarch), QString("%1ubninit").arg(targetPath)); ++ downloadfile(QString("https://download.opensuse.org/distribution/leap/%1/repo/oss/boot/x86_64/loader/linux").arg(leapversion), QString("%1ubnkern").arg(targetPath)); ++ downloadfile(QString("https://download.opensuse.org/distribution/leap/%1/repo/oss/boot/x86_64/loader/initrd").arg(leapversion), QString("%1ubninit").arg(targetPath)); + postinstmsg = unetbootin::tr("\n*IMPORTANT* After rebooting, ignore any error messages and select back if prompted for a CD, then go to the main menu, select the 'Start Installation' option, choose 'Network' as the source, choose 'HTTP' as the protocol, enter 'download.opensuse.org' when prompted for a server, and enter '/distribution/%1/repo/oss' when asked for the folder.").arg(relname); + } + kernelOpts = "splash=silent showopts"; +diff --git a/distrover.cpp b/distrover.cpp +index 156666b..50596d5 100644 +--- a/distrover.cpp ++++ b/distrover.cpp +@@ -175,11 +175,11 @@ unetbootin::tr("<b>Homepage:</b> <a href=\"http://pogostick.net/~pnh/ntpasswd/\" "<b>Description:</b> The Offline NT Password and Registry Editor can reset Windows passwords and edit the registry on Windows 2000-Vista.<br/>" "<b>Install Notes:</b> NTPasswd is booted and run in live mode; no installation is required to use it.") << "2008.05.26" << "2011.05.11")); - distroselect->addItem("openSUSE", (QStringList() << "11.1" << -+ distroselect->addItem("openSUSE", (QStringList() << "Leap_42.3" << ++ distroselect->addItem("openSUSE", (QStringList() << "Leap_15.1" << unetbootin::tr("<b>Homepage:</b> <a href=\"http://www.opensuse.org/\">http://www.opensuse.org</a><br/>" - "<b>Description:</b> openSUSE is a user-friendly Novell sponsored distribution.<br/>" +- "<b>Description:</b> openSUSE is a user-friendly Novell sponsored distribution.<br/>" ++"<b>Description:</b> The openSUSE project is a community program sponsored by SUSE Linux and other companies.<br/>" "<b>Install Notes:</b> The default version allows for both installation over the internet (FTP), or offline installation using pre-downloaded installation ISO files.") << - "11.1" << "11.1_x64" << "Factory" << "Factory_x64")); -+ "13.2" << "13.2_x64" << "Leap_42.1" << "Leap_42.2" << "Leap_42.3" << "Tumbleweed" << "Tumbleweed_x64" << "Factory" << "Factory_x64")); ++ "Leap_15.0" << "Leap_15.1" << "Tumbleweed" << "Tumbleweed_x64")); distroselect->addItem("Ophcrack", (QStringList() << "XP-LiveCD-2.0" << unetbootin::tr("<b>Homepage:</b> <a href=\"http://ophcrack.sourceforge.net/\">http://ophcrack.sourceforge.net</a><br/>" "<b>Description:</b> Ophcrack can crack Windows passwords.<br/>" +--