forked from premiere/premiere-libtorrent
mapped file resume data fixes
This commit is contained in:
parent
ad87e84e47
commit
3e4634097d
|
@ -217,11 +217,16 @@ namespace libtorrent
|
|||
void swap(file_storage& ti)
|
||||
{
|
||||
using std::swap;
|
||||
swap(ti.m_piece_length, m_piece_length);
|
||||
swap(ti.m_files, m_files);
|
||||
swap(ti.m_file_hashes, m_file_hashes);
|
||||
swap(ti.m_symlinks, m_symlinks);
|
||||
swap(ti.m_mtime, m_mtime);
|
||||
swap(ti.m_file_base, m_file_base);
|
||||
swap(ti.m_paths, m_paths);
|
||||
swap(ti.m_name, m_name);
|
||||
swap(ti.m_total_size, m_total_size);
|
||||
swap(ti.m_num_pieces, m_num_pieces);
|
||||
swap(ti.m_name, m_name);
|
||||
swap(ti.m_piece_length, m_piece_length);
|
||||
}
|
||||
|
||||
// if pad_file_limit >= 0, files larger than
|
||||
|
|
|
@ -727,6 +727,9 @@ namespace libtorrent
|
|||
|
||||
bool storage::verify_resume_data(lazy_entry const& rd, error_code& error)
|
||||
{
|
||||
// TODO: make this more generic to not just work if files have been
|
||||
// renamed, but also if they have been merged into a single file for instance
|
||||
// maybe use the same format as .torrent files and reuse some code from torrent_info
|
||||
lazy_entry const* mapped_files = rd.dict_find_list("mapped_files");
|
||||
if (mapped_files && mapped_files->list_size() == m_files.num_files())
|
||||
{
|
||||
|
|
|
@ -4270,17 +4270,6 @@ namespace libtorrent
|
|||
prioritize_udp_trackers();
|
||||
}
|
||||
|
||||
lazy_entry const* mapped_files = rd.dict_find_list("mapped_files");
|
||||
if (mapped_files && mapped_files->list_size() == m_torrent_file->num_files())
|
||||
{
|
||||
for (int i = 0; i < m_torrent_file->num_files(); ++i)
|
||||
{
|
||||
std::string new_filename = mapped_files->list_string_value_at(i);
|
||||
if (new_filename.empty()) continue;
|
||||
m_torrent_file->rename_file(i, new_filename);
|
||||
}
|
||||
}
|
||||
|
||||
lazy_entry const* url_list = rd.dict_find_list("url-list");
|
||||
if (url_list)
|
||||
{
|
||||
|
@ -4489,7 +4478,10 @@ namespace libtorrent
|
|||
}
|
||||
|
||||
// write renamed files
|
||||
if (&m_torrent_file->files() != &m_torrent_file->orig_files())
|
||||
// TODO: make this more generic to not just work if files have been
|
||||
// renamed, but also if they have been merged into a single file for instance
|
||||
if (&m_torrent_file->files() != &m_torrent_file->orig_files()
|
||||
&& m_torrent_file->files().num_files() == m_torrent_file->orig_files().num_files())
|
||||
{
|
||||
entry::list_type& fl = ret["mapped_files"].list();
|
||||
for (torrent_info::file_iterator i = m_torrent_file->begin_files()
|
||||
|
|
Loading…
Reference in New Issue