fix: copy single files too in FS::copy
eek Signed-off-by: flow <flowlnlnln@gmail.com>
This commit is contained in:
parent
150a3adaaf
commit
be3c9abcfe
@ -182,6 +182,21 @@ bool copy::operator()(const QString& offset)
|
|||||||
if (!m_followSymlinks)
|
if (!m_followSymlinks)
|
||||||
opt |= copy_opts::copy_symlinks;
|
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
|
// 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
|
// 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 src_path = source_it.next();
|
||||||
auto relative_path = src_dir.relativeFilePath(src_path);
|
auto relative_path = src_dir.relativeFilePath(src_path);
|
||||||
|
|
||||||
if (m_blacklist && m_blacklist->matches(relative_path))
|
copy_file(src_path, 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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 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;
|
return err.value() == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user