diff options
author | flow <flowlnlnln@gmail.com> | 2022-10-28 20:11:46 -0300 |
---|---|---|
committer | flow <flowlnlnln@gmail.com> | 2022-10-28 20:54:58 -0300 |
commit | be3c9abcfeb68ad76914848e7135b2595490beda (patch) | |
tree | 4a621755d02927a008d8a37ce8ae32169f63160e /launcher/FileSystem.cpp | |
parent | 150a3adaafa3f795b0a8c65dca730f5ff5271041 (diff) | |
download | PrismLauncher-be3c9abcfeb68ad76914848e7135b2595490beda.tar.gz PrismLauncher-be3c9abcfeb68ad76914848e7135b2595490beda.tar.bz2 PrismLauncher-be3c9abcfeb68ad76914848e7135b2595490beda.zip |
fix: copy single files too in FS::copy
eek
Signed-off-by: flow <flowlnlnln@gmail.com>
Diffstat (limited to 'launcher/FileSystem.cpp')
-rw-r--r-- | launcher/FileSystem.cpp | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/launcher/FileSystem.cpp b/launcher/FileSystem.cpp index 76cfccb0..9bca847e 100644 --- a/launcher/FileSystem.cpp +++ b/launcher/FileSystem.cpp @@ -182,6 +182,21 @@ bool copy::operator()(const QString& offset) if (!m_followSymlinks) opt |= copy_opts::copy_symlinks; + // Function that'll do the actual copying + auto copy_file = [&](QString src_path, QString relative_dst_path) { + if (m_blacklist && m_blacklist->matches(relative_dst_path)) + return; + + auto dst_path = PathCombine(dst, relative_dst_path); + ensureFilePathExists(dst_path); + + fs::copy(toStdString(src_path), toStdString(dst_path), opt, err); + if (err) { + qWarning() << "Failed to copy files:" << QString::fromStdString(err.message()); + qDebug() << "Source file:" << src_path; + qDebug() << "Destination file:" << dst_path; + } + }; // We can't use copy_opts::recursive because we need to take into account the // blacklisted paths, so we iterate over the source directory, and if there's no blacklist @@ -193,20 +208,13 @@ bool copy::operator()(const QString& offset) auto src_path = source_it.next(); auto relative_path = src_dir.relativeFilePath(src_path); - if (m_blacklist && m_blacklist->matches(relative_path)) - continue; - - auto dst_path = PathCombine(dst, relative_path); - ensureFilePathExists(dst_path); - - fs::copy(toStdString(src_path), toStdString(dst_path), opt, err); - if (err) { - qWarning() << "Failed to copy files:" << QString::fromStdString(err.message()); - qDebug() << "Source file:" << src_path; - qDebug() << "Destination file:" << dst_path; - } + copy_file(src_path, relative_path); } + // If the root src is not a directory, the previous iterator won't run. + if (!fs::is_directory(toStdString(src))) + copy_file(src, ""); + return err.value() == 0; } |