forked from premiere/premiere-libtorrent
add_file_borrow: use string_view instead of pointer, size parameters (#2302)
This commit is contained in:
parent
7087a16b36
commit
5361ffc1c2
|
@ -232,16 +232,16 @@ namespace libtorrent {
|
||||||
void reserve(int num_files);
|
void reserve(int num_files);
|
||||||
|
|
||||||
// Adds a file to the file storage. The ``add_file_borrow`` version
|
// Adds a file to the file storage. The ``add_file_borrow`` version
|
||||||
// expects that ``filename`` points to a string of ``filename_len``
|
// expects that ``filename`` is the file name (without a path) of
|
||||||
// bytes that is the file name (without a path) of the file that's
|
// the file that's being added.
|
||||||
// being added. This memory is *borrowed*, i.e. it is the caller's
|
// This memory is *borrowed*, i.e. it is the caller's
|
||||||
// responsibility to make sure it stays valid throughout the lifetime
|
// responsibility to make sure it stays valid throughout the lifetime
|
||||||
// of this file_storage object or any copy of it. The same thing applies
|
// of this file_storage object or any copy of it. The same thing applies
|
||||||
// to ``filehash``, which is an optional pointer to a 20 byte binary
|
// to ``filehash``, which is an optional pointer to a 20 byte binary
|
||||||
// SHA-1 hash of the file.
|
// SHA-1 hash of the file.
|
||||||
//
|
//
|
||||||
// if ``filename`` is nullptr, the filename from ``path`` is used and not
|
// if ``filename`` is empty, the filename from ``path`` is used and not
|
||||||
// borrowed. In this case ``filename_len`` is ignored.
|
// borrowed.
|
||||||
//
|
//
|
||||||
// The ``path`` argument is the full path (in the torrent file) to
|
// The ``path`` argument is the full path (in the torrent file) to
|
||||||
// the file to add. Note that this is not supposed to be an absolute
|
// the file to add. Note that this is not supposed to be an absolute
|
||||||
|
@ -268,7 +268,7 @@ namespace libtorrent {
|
||||||
// That is, the first path element of all files must be the same.
|
// That is, the first path element of all files must be the same.
|
||||||
// This shared path element is also set to the name of the torrent. It
|
// This shared path element is also set to the name of the torrent. It
|
||||||
// can be changed by calling ``set_name``.
|
// can be changed by calling ``set_name``.
|
||||||
void add_file_borrow(char const* filename, int filename_len
|
void add_file_borrow(string_view filename
|
||||||
, std::string const& path, std::int64_t file_size
|
, std::string const& path, std::int64_t file_size
|
||||||
, file_flags_t file_flags = {}, char const* filehash = 0
|
, file_flags_t file_flags = {}, char const* filehash = 0
|
||||||
, std::int64_t mtime = 0, string_view symlink_path = string_view());
|
, std::int64_t mtime = 0, string_view symlink_path = string_view());
|
||||||
|
@ -282,6 +282,11 @@ namespace libtorrent {
|
||||||
|
|
||||||
#ifndef TORRENT_NO_DEPRECATE
|
#ifndef TORRENT_NO_DEPRECATE
|
||||||
TORRENT_DEPRECATED
|
TORRENT_DEPRECATED
|
||||||
|
void add_file_borrow(char const* filename, int filename_len
|
||||||
|
, std::string const& path, std::int64_t file_size
|
||||||
|
, file_flags_t file_flags = {}, char const* filehash = 0
|
||||||
|
, std::int64_t mtime = 0, string_view symlink_path = string_view());
|
||||||
|
TORRENT_DEPRECATED
|
||||||
void add_file(file_entry const& fe, char const* filehash = nullptr);
|
void add_file(file_entry const& fe, char const* filehash = nullptr);
|
||||||
|
|
||||||
// all wstring APIs are deprecated since 0.16.11
|
// all wstring APIs are deprecated since 0.16.11
|
||||||
|
|
|
@ -344,6 +344,15 @@ namespace {
|
||||||
|
|
||||||
#ifndef TORRENT_NO_DEPRECATE
|
#ifndef TORRENT_NO_DEPRECATE
|
||||||
|
|
||||||
|
void file_storage::add_file_borrow(char const* filename, int filename_len
|
||||||
|
, std::string const& path, std::int64_t file_size, file_flags_t file_flags
|
||||||
|
, char const* filehash, std::int64_t mtime, string_view symlink_path)
|
||||||
|
{
|
||||||
|
TORRENT_ASSERT(filename_len >= 0);
|
||||||
|
add_file_borrow({filename, std::size_t(filename_len)}, path, file_size
|
||||||
|
, file_flags, filehash, mtime, symlink_path);
|
||||||
|
}
|
||||||
|
|
||||||
void file_storage::add_file(file_entry const& fe, char const* filehash)
|
void file_storage::add_file(file_entry const& fe, char const* filehash)
|
||||||
{
|
{
|
||||||
file_flags_t flags = {};
|
file_flags_t flags = {};
|
||||||
|
@ -352,7 +361,7 @@ namespace {
|
||||||
if (fe.executable_attribute) flags |= file_storage::flag_executable;
|
if (fe.executable_attribute) flags |= file_storage::flag_executable;
|
||||||
if (fe.symlink_attribute) flags |= file_storage::flag_symlink;
|
if (fe.symlink_attribute) flags |= file_storage::flag_symlink;
|
||||||
|
|
||||||
add_file_borrow(nullptr, 0, fe.path, fe.size, flags, filehash, fe.mtime
|
add_file_borrow({}, fe.path, fe.size, flags, filehash, fe.mtime
|
||||||
, fe.symlink_path);
|
, fe.symlink_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -547,11 +556,11 @@ namespace {
|
||||||
void file_storage::add_file(std::string const& path, std::int64_t file_size
|
void file_storage::add_file(std::string const& path, std::int64_t file_size
|
||||||
, file_flags_t const file_flags, std::time_t mtime, string_view symlink_path)
|
, file_flags_t const file_flags, std::time_t mtime, string_view symlink_path)
|
||||||
{
|
{
|
||||||
add_file_borrow(nullptr, 0, path, file_size, file_flags, nullptr, mtime
|
add_file_borrow({}, path, file_size, file_flags, nullptr, mtime
|
||||||
, symlink_path);
|
, symlink_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
void file_storage::add_file_borrow(char const* filename, int const filename_len
|
void file_storage::add_file_borrow(string_view filename
|
||||||
, std::string const& path, std::int64_t const file_size
|
, std::string const& path, std::int64_t const file_size
|
||||||
, file_flags_t const file_flags, char const* filehash
|
, file_flags_t const file_flags, char const* filehash
|
||||||
, std::int64_t const mtime, string_view symlink_path)
|
, std::int64_t const mtime, string_view symlink_path)
|
||||||
|
@ -581,11 +590,11 @@ namespace {
|
||||||
// if filename is nullptr, we should copy it. If it isn't, we're borrowing
|
// if filename is nullptr, we should copy it. If it isn't, we're borrowing
|
||||||
// it and we can save the copy by setting it after this call to
|
// it and we can save the copy by setting it after this call to
|
||||||
// update_path_index().
|
// update_path_index().
|
||||||
update_path_index(e, path, filename == nullptr);
|
update_path_index(e, path, filename.empty());
|
||||||
|
|
||||||
// filename is allowed to be nullptr, in which case we just use path
|
// filename is allowed to be nullptr, in which case we just use path
|
||||||
if (filename)
|
if (!filename.empty())
|
||||||
e.set_name(filename, true, filename_len);
|
e.set_name(filename.data(), true, int(filename.size()));
|
||||||
|
|
||||||
e.size = aux::numeric_cast<std::uint64_t>(file_size);
|
e.size = aux::numeric_cast<std::uint64_t>(file_size);
|
||||||
e.offset = aux::numeric_cast<std::uint64_t>(m_total_size);
|
e.offset = aux::numeric_cast<std::uint64_t>(m_total_size);
|
||||||
|
|
|
@ -484,7 +484,7 @@ namespace {
|
||||||
filename_len = 0;
|
filename_len = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
files.add_file_borrow(filename, filename_len, path, file_size, file_flags, filehash
|
files.add_file_borrow({filename, std::size_t(filename_len)}, path, file_size, file_flags, filehash
|
||||||
, mtime, symlink_path);
|
, mtime, symlink_path);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -177,7 +177,7 @@ TORRENT_TEST(pointer_offset)
|
||||||
file_storage st;
|
file_storage st;
|
||||||
char const filename[] = "test1fooba";
|
char const filename[] = "test1fooba";
|
||||||
|
|
||||||
st.add_file_borrow(filename, 5, combine_path("test-torrent-1", "test1")
|
st.add_file_borrow({filename, 5}, combine_path("test-torrent-1", "test1")
|
||||||
, 10);
|
, 10);
|
||||||
|
|
||||||
// test filename_ptr and filename_len
|
// test filename_ptr and filename_len
|
||||||
|
|
Loading…
Reference in New Issue