Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package unetbootin for openSUSE:Factory checked in at 2021-01-25 18:25:10 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/unetbootin (Old) and /work/SRC/openSUSE:Factory/.unetbootin.new.28504 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "unetbootin" Mon Jan 25 18:25:10 2021 rev:11 rq:866617 version:0.0.700 Changes: -------- --- /work/SRC/openSUSE:Factory/unetbootin/unetbootin.changes 2020-09-21 17:40:56.960784604 +0200 +++ /work/SRC/openSUSE:Factory/.unetbootin.new.28504/unetbootin.changes 2021-01-25 18:25:40.256607493 +0100 @@ -1,0 +2,13 @@ +Tue Jan 19 18:13:28 UTC 2021 - ecsos <[email protected]> + +- Update to revision 700 +- Refresh unetbootin-suse.patch: + - Remove Leap_15.1 and and Leap_15.2 +- Drop 0001-rought-Qt5-port.patch, because now in upstream. +- Drop 0002-comment-out-all-sources-that-require-FTP-LIST.patch, + because now in upstream. +- Drop 0003-fix-distrolst.cpp.patch, because now in upstream. +- Drop 0004-don-t-wait-until-the-file-is-downloaded-fully-before.patch, + because now in upstream. + +------------------------------------------------------------------- Old: ---- 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-681.tar.gz New: ---- unetbootin-source-700.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ unetbootin.spec ++++++ --- /var/tmp/diff_new_pack.N7QbNX/_old 2021-01-25 18:25:41.012608592 +0100 +++ /var/tmp/diff_new_pack.N7QbNX/_new 2021-01-25 18:25:41.016608597 +0100 @@ -1,7 +1,7 @@ # # spec file for package unetbootin # -# Copyright (c) 2020 SUSE LLC +# Copyright (c) 2021 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,7 +16,7 @@ # -%define rev 681 +%define rev 700 Name: unetbootin Version: 0.0.%{rev} Release: 0 @@ -26,13 +26,9 @@ URL: https://sourceforge.net/projects/unetbootin/ #Source: %%{name}-source-%%{rev}.tar.gz Source: https://downloads.sourceforge.net/project/unetbootin/UNetbootin/%{rev}/unetbootin-source-%{rev}.tar.gz -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 +Patch0: %{name}-suse.patch +Patch1: %{name}-locate-usb-devices.diff +Patch2: %{name}-desktop.patch BuildRequires: gcc-c++ BuildRequires: cmake(Qt5Core) BuildRequires: cmake(Qt5Gui) @@ -67,11 +63,7 @@ %setup -q -c -n %{name} %patch0 -p1 %patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 +%patch2 # rpmlint: wrong-file-end-of-line-encoding sed -i 's/\r$//' README.TXT ++++++ unetbootin-source-681.tar.gz -> unetbootin-source-700.tar.gz ++++++ Binary files old/._distrolst.cpp and new/._distrolst.cpp differ Binary files old/._distrover.cpp and new/._distrover.cpp differ Binary files old/._main.cpp and new/._main.cpp differ Binary files old/._unetbootin.cpp and new/._unetbootin.cpp 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_asroot and new/._unetbootin_asroot differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/README.TXT new/README.TXT --- old/README.TXT 2020-06-11 04:01:59.000000000 +0200 +++ new/README.TXT 2020-11-09 08:01:42.000000000 +0100 @@ -1,16 +1,16 @@ -UNetbootin Source Revision 681 +UNetbootin Source Revision 700 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 2020??? 6???10??? ????????? 19???01???59??? PDT +Build generated on 2020???11??? 8??? ????????? 23???01???42??? PST Download using git: git clone https://github.com/gkovacs/unetbootin.git cd unetbootin -git checkout 62fbbd5983054275c38729a414d4f84dfdef4847 +git checkout 741e8048f908017335a622d5afe26c9212883488 Download using bzr: -bzr branch http://bazaar.launchpad.net/~vcs-imports/unetbootin/trunk -r681 +bzr branch http://bazaar.launchpad.net/~vcs-imports/unetbootin/trunk -r700 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 2020-06-10 20:55:17.000000000 +0200 +++ new/distrolst.cpp 2020-09-28 22:37:48.000000000 +0200 @@ -285,14 +285,14 @@ 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/" << @@ -340,9 +340,9 @@ 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) << @@ -474,16 +474,16 @@ 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/" << - "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://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/"; downloadfile(fileFilterNetDir(frugalwaremirrorsL , 307200, 104857600, QList<QRegExp>() << QRegExp("vmlinuz", Qt::CaseInsensitive) << @@ -557,8 +557,8 @@ { downloadfile(fileFilterNetDir(QStringList() << "http://devbuilds.kaspersky-labs.com/devbuilds/RescueDisk/" << - "http://ftp.kaspersky.com/devbuilds/RescueDisk/" << - "ftp://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) << QRegExp("k\\S{0,}.iso$", Qt::CaseInsensitive) @@ -568,8 +568,8 @@ { downloadfile(fileFilterNetDir(QStringList() << "http://devbuilds.kaspersky-labs.com/devbuilds/RescueDisk10/" << - "http://ftp.kaspersky.com/devbuilds/RescueDisk10/" << - "ftp://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) << QRegExp("k\\S{0,}.iso$", Qt::CaseInsensitive) @@ -631,11 +631,11 @@ 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); } @@ -682,11 +682,11 @@ 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) << @@ -696,11 +696,11 @@ 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) << @@ -812,9 +812,9 @@ 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) << @@ -1025,7 +1025,7 @@ 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 << diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/distrover.cpp new/distrover.cpp --- old/distrover.cpp 2020-06-11 03:56:57.000000000 +0200 +++ new/distrover.cpp 2020-11-09 00:22:33.000000000 +0100 @@ -11,8 +11,8 @@ #define ubuntuverlist \ "16.04_NetInstall" << "16.04_NetInstall_x64" << "16.04_HdMedia" << "16.04_HdMedia_x64" << "16.04_Live" << "16.04_Live_x64" << \ "18.04_NetInstall" << "18.04_NetInstall_x64" << "18.04_HdMedia" << "18.04_HdMedia_x64" << "18.04_Live_x64" << \ -"19.10_NetInstall_x64" << "19.10_HdMedia_x64" << "19.10_Live_x64" << \ "20.04_Live_x64" << \ +"20.10_Live_x64" << \ "Daily_Live" << "Daily_Live_x64" #endif @@ -138,7 +138,7 @@ unetbootin::tr("<b>Homepage:</b> <a href=\"https://linuxmint.com/\">https://linuxmint.com</a><br/>" "<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.") << - "19.2_Live" << "19.2_Live_x64")); + "19.2_Live" << "19.2_Live_x64"<<"19.3_Live"<<"19.3_Live_x64"<<"20_Live_x64")); distroselect->addItem("Lubuntu", (QStringList() << "20.04_Live_x64" << unetbootin::tr("<b>Homepage:</b> <a href=\"https://www.lubuntu.net/\">https://www.lubuntu.net</a><br/>" "<b>Description:</b> Lubuntu is an official Ubuntu derivative featuring the LXDE desktop.<br/>" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/main.cpp new/main.cpp --- old/main.cpp 2020-01-21 10:32:54.000000000 +0100 +++ new/main.cpp 2020-11-09 01:35:15.000000000 +0100 @@ -9,6 +9,8 @@ #include "unetbootin.h" +#include <QMessageBox> + #ifdef Q_OS_WIN32 void configsysUndo(QString uninstPathL) @@ -403,18 +405,16 @@ 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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unetbootin.cpp new/unetbootin.cpp --- old/unetbootin.cpp 2019-09-29 02:26:32.000000000 +0200 +++ new/unetbootin.cpp 2020-11-09 02:52:38.000000000 +0100 @@ -9,6 +9,11 @@ #include "unetbootin.h" +#include <QMessageBox> +#include <QFileDialog> +#include <QProgressDialog> +#include <QDebug> + static const QList<QRegExp> ignoredtypesbothRL = QList<QRegExp>() << QRegExp("isolinux.bin$", Qt::CaseInsensitive) << QRegExp("isolinux.cfg$", Qt::CaseInsensitive) @@ -101,8 +106,8 @@ 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 +138,6 @@ 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 +154,7 @@ } return basefn; } - +/* void nDirListStor::sAppendSelfUrlInfoList(QUrlInfo curDirUrl) { if (curDirUrl.isValid() && curDirUrl.isReadable() && curDirUrl.isFile() && curDirUrl.size() > nMinFileSizeBytes && curDirUrl.size() < nMaxFileSizeBytes) @@ -171,7 +166,7 @@ nDirFileListSL.append(curDirUrl.name()); } } - +*/ unetbootin::unetbootin(QWidget *parent) : QWidget(parent) { @@ -471,19 +466,23 @@ { 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) << endl; } + out.flush(); 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) << endl; } + out.flush(); QApplication::exit(); exit(0); } @@ -700,17 +699,17 @@ 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); } @@ -1098,7 +1097,7 @@ 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; @@ -1108,7 +1107,7 @@ ULARGE_INTEGER FreeBytesAvailable; ULARGE_INTEGER TotalNumberOfBytes; ULARGE_INTEGER TotalNumberOfFreeBytes; - if (GetDiskFreeSpaceExA(destindir.toAscii(), &FreeBytesAvailable, &TotalNumberOfBytes, &TotalNumberOfFreeBytes)) + if (GetDiskFreeSpaceExA(destindir.toUtf8(), &FreeBytesAvailable, &TotalNumberOfBytes, &TotalNumberOfFreeBytes)) { if (FreeBytesAvailable.QuadPart < 1024) outofspace = true; @@ -2609,7 +2608,7 @@ return QPair<QPair<QStringList, QStringList>, QPair<QStringList, QStringList> >(); } -void unetbootin::downloadfile(QString fileurl, QString targetfile, int minsize=524288) +void unetbootin::downloadfile(QString fileurl, QString targetfile, qint64 minsize=524288) { if (fileurl.isEmpty()) { @@ -2620,31 +2619,27 @@ { 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) - { - connect(&dlftp, SIGNAL(done(bool)), &dlewait, SLOT(quit())); - connect(&dlftp, SIGNAL(dataTransferProgress(qint64, qint64)), this, SLOT(dlprogressupdate64(qint64, qint64))); - } - else - { - connect(&dlhttp, SIGNAL(done(bool)), &dlewait, SLOT(quit())); - connect(&dlhttp, SIGNAL(dataReadProgress(int, int)), this, SLOT(dlprogressupdate(int, int))); - } + + 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, [&](const QUrl &url){ redirectUrl = url; }); + connect(networkReply, static_cast<void (QNetworkReply::*)(QNetworkReply::NetworkError)>(&QNetworkReply::error), + [&](QNetworkReply::NetworkError code){ downloadFailed = true; errorCode = code; }); + QFile dloutfile; if (installType == tr("USB Drive")) { @@ -2655,82 +2650,38 @@ 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); - } + + connect(networkReply, &QNetworkReply::downloadProgress, [&](qint64, qint64){ + dloutfile.write(networkReply->readAll()); + }); + 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) + + if (!redirectUrl.isEmpty()) { - dlftp.close(); + networkReply->deleteLater(); + downloadfile(redirectUrl.toString(), targetfile, minsize); + return; } - else + + if (downloadFailed) { - dlhttp.close(); + qDebug() << "Failed to download URL: " << fileurl; + qDebug() << "Error code: " << errorCode; + qDebug() << "Error string: " << networkReply->errorString(); + networkReply->deleteLater(); + showDownloadFailedScreen(fileurl); + return; } + + dloutfile.write(networkReply->readAll()); + 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 @@ -2745,7 +2696,8 @@ 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); } @@ -2761,40 +2713,26 @@ this->downloadFailed = true; if (exitOnCompletion) { - printf("exitstatus:downloadfailed\n"); + QTextStream out(stdout); + out << "exitstatus:downloadfailed" << endl << flush; QApplication::exit(); exit(0); } } -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(10000 * dlbytes / maxbytes); + tprogress->setMaximum(10000); + // 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) @@ -2805,38 +2743,42 @@ if(oldsec != time.second()) { oldsec = time.second(); - tprogress->setValue(dlbytes); - tprogress->setMaximum(maxbytes); + tprogress->setValue(10000 * dlbytes / maxbytes); + tprogress->setMaximum(10000); // display the downloaded size with suffix pdesc1->setText(tr("<b>Copied:</b> %1 of %2").arg(displayfisize(dlbytes)).arg(displayfisize(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()); + networkReply->deleteLater(); + return downloadpagecontents(redirectUrl); } + + QString result = networkReply->readAll(); + networkReply->close(); + networkReply->deleteLater(); + return result; } -QStringList unetbootin::lstFtpDirFiles(QString ldfDirStringUrl, int ldfMinSize, int ldfMaxSize) +QStringList unetbootin::lstFtpDirFiles(QString ldfDirStringUrl, qint64 ldfMinSize, qint64 ldfMaxSize) { + qDebug() << "lstFtpDirFiles called for " << ldfDirStringUrl; + return {}; +/* QUrl ldfDirUrl(ldfDirStringUrl); QFtp ldfFtp; QEventLoop ldfWait; @@ -2851,14 +2793,14 @@ 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"); @@ -2881,7 +2823,7 @@ return relativefilelinksL; } -QStringList unetbootin::lstNetDirFiles(QString ldfDirStringUrl, int ldfMinSize, int ldfMaxSize) +QStringList unetbootin::lstNetDirFiles(QString ldfDirStringUrl, qint64 ldfMinSize, qint64 ldfMaxSize) { if (!ldfDirStringUrl.endsWith('/')) ldfDirStringUrl += '/'; @@ -2895,7 +2837,7 @@ } } -QPair<QString, int> unetbootin::weightedFilterNetDir(QString ldfDirStringUrl, int ldfMinSize, int ldfMaxSize, QList<QRegExp> ldfFileMatchExp) +QPair<QString, int> unetbootin::weightedFilterNetDir(QString ldfDirStringUrl, qint64 ldfMinSize, qint64 ldfMaxSize, QList<QRegExp> ldfFileMatchExp) { if (!ldfDirStringUrl.endsWith('/')) ldfDirStringUrl += '/'; @@ -2907,7 +2849,7 @@ return qMakePair(ldfDirStringUrl+relativeFileUrl.first, relativeFileUrl.second); } -QString unetbootin::fileFilterNetDir(QStringList ldfDirStringUrlList, int ldfMinSize, int ldfMaxSize, QList<QRegExp> ldfFileMatchExp) +QString unetbootin::fileFilterNetDir(QStringList ldfDirStringUrlList, qint64 ldfMinSize, qint64 ldfMaxSize, QList<QRegExp> ldfFileMatchExp) { QPair<QString, int> curRemoteFileUrlSP; int hRegxMatch = 0; @@ -3218,11 +3160,11 @@ { 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 { @@ -3277,7 +3219,7 @@ void unetbootin::configsysEdit() { - SetFileAttributesA(QDir::toNativeSeparators(QString("%1config.sys").arg(targetDrive)).toAscii(), FILE_ATTRIBUTE_NORMAL); + SetFileAttributesA(QDir::toNativeSeparators(QString("%1config.sys").arg(targetDrive)).toUtf8(), FILE_ATTRIBUTE_NORMAL); QFile::copy(QDir::toNativeSeparators(QString("%1config.sys").arg(targetDrive)), QString("%1config.sys").arg(targetPath)); QFile::copy(QDir::toNativeSeparators(QString("%1config.sys").arg(targetDrive)), QString("%1confignw.txt").arg(targetPath)); QFile confignwFile(QString("%1confignw.txt").arg(targetPath)); @@ -3724,7 +3666,7 @@ 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 @@ "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 @@ 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")) { @@ -4357,7 +4299,8 @@ finishLogging(); if (exitOnCompletion) { - printf("exitstatus:success\n"); + QTextStream out(stdout); + out << "exitstatus:success" << endl << flush; QApplication::exit(); exit(0); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unetbootin.h new/unetbootin.h --- old/unetbootin.h 2018-04-28 03:24:54.000000000 +0200 +++ new/unetbootin.h 2020-11-09 01:01:49.000000000 +0100 @@ -152,19 +152,13 @@ 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 slots: void sAppendSelfUrlInfoList(QUrlInfo curDirUrl); }; - +*/ class unetbootin : public QWidget, private Ui::unetbootinui { Q_OBJECT @@ -279,13 +273,13 @@ QPair<QPair<QStringList, QStringList>, QPair<QStringList, QStringList> > searchforincludesfileL(QString includesfile, QString archivefile, QStringList archivefileconts, QStringList visitedincludes); 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); - QStringList lstFtpDirFiles(QString ldfDirStringUrl, int ldfMinSize, int ldfMaxSize); + void downloadfile(QString fileurl, QString targetfile, qint64 minsize); + QString downloadpagecontents(QUrl pageurl); + QStringList lstFtpDirFiles(QString ldfDirStringUrl, qint64 ldfMinSize, qint64 ldfMaxSize); QStringList lstHttpDirFiles(QString ldfDirStringUrl); - QStringList lstNetDirFiles(QString ldfDirStringUrl, int ldfMinSize, int ldfMaxSize); - QPair<QString, int> weightedFilterNetDir(QString ldfDirStringUrl, int ldfMinSize, int ldfMaxSize, QList<QRegExp> ldfFileMatchExp); - QString fileFilterNetDir(QStringList ldfDirStringUrlList, int ldfMinSize, int ldfMaxSize, QList<QRegExp> ldfFileMatchExp); + QStringList lstNetDirFiles(QString ldfDirStringUrl, qint64 ldfMinSize, qint64 ldfMaxSize); + QPair<QString, int> weightedFilterNetDir(QString ldfDirStringUrl, qint64 ldfMinSize, qint64 ldfMaxSize, QList<QRegExp> ldfFileMatchExp); + QString fileFilterNetDir(QStringList ldfDirStringUrlList, qint64 ldfMinSize, qint64 ldfMaxSize, QList<QRegExp> ldfFileMatchExp); QPair<QString, int> filterBestMatch(QStringList ufStringList, QList<QRegExp> filterExpList); static QString callexternapp(QString xexecFile, QString xexecParm); static QString callexternappWriteToStdin(QString xexecFile, QString xexecParm, QString xwriteToStdin); @@ -342,9 +336,9 @@ 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(); @@ -353,7 +347,6 @@ 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(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unetbootin.pro new/unetbootin.pro --- old/unetbootin.pro 2020-06-11 04:02:00.000000000 +0200 +++ new/unetbootin.pro 2020-11-09 08:01:42.000000000 +0100 @@ -2,18 +2,18 @@ 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 QT += core \ gui \ + widgets \ network ICON = unetbootin.icns TRANSLATIONS += unetbootin.ts \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unetbootin_asroot new/unetbootin_asroot --- old/unetbootin_asroot 2019-09-29 02:26:32.000000000 +0200 +++ new/unetbootin_asroot 2020-11-09 01:35:15.000000000 +0100 @@ -1,14 +1,6 @@ #!/bin/bash - -if hash gksu 2> /dev/null; then -gksu env QT_X11_NO_MITSHM=1 unetbootin -elif hash kdesu 2> /dev/null; then -kdesu env QT_X11_NO_MITSHM=1 unetbootin -elif hash gnomesudo 2> /dev/null; then -gnomesudo env QT_X11_NO_MITSHM=1 unetbootin -elif hash kdesudo 2> /dev/null; then -kdesudo env QT_X11_NO_MITSHM=1 unetbootin -elif hash pkexec 2> /dev/null; then + +if hash pkexec 2> /dev/null; then pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY QT_X11_NO_MITSHM=1 unetbootin else unetbootin ++++++ unetbootin-suse.patch ++++++ --- /var/tmp/diff_new_pack.N7QbNX/_old 2021-01-25 18:25:41.200608865 +0100 +++ /var/tmp/diff_new_pack.N7QbNX/_new 2021-01-25 18:25:41.200608865 +0100 @@ -61,7 +61,7 @@ + "<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")); -+ "Leap_15.1" << "Leap_15.2" << "Tumbleweed" << "Tumbleweed_x64")); ++ "Leap_15.2" << "Leap_15.3" << "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/>"
