forked from premiere/premiere-libtorrent
cleanup of ABI breaking configuration options. TORRENT_DEBUG is believed to no longer affect the ABI of libtorrent. introduce a warning in gen_reference_doc.py for when defines are used in public structs. fix build with deprecated functions off
This commit is contained in:
parent
907e7b7415
commit
fe414878b2
|
@ -254,7 +254,7 @@ def parse_class(lno, lines, filename):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if l.startswith('#'):
|
if l.startswith('#'):
|
||||||
lno = consume_ifdef(lno - 1, lines)
|
lno = consume_ifdef(lno - 1, lines, True)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if 'TORRENT_DEFINE_ALERT' in l:
|
if 'TORRENT_DEFINE_ALERT' in l:
|
||||||
|
@ -438,7 +438,7 @@ def consume_comment(lno, lines):
|
||||||
|
|
||||||
return lno
|
return lno
|
||||||
|
|
||||||
def consume_ifdef(lno, lines):
|
def consume_ifdef(lno, lines, warn_on_ifdefs = False):
|
||||||
l = lines[lno].strip()
|
l = lines[lno].strip()
|
||||||
lno += 1
|
lno += 1
|
||||||
|
|
||||||
|
@ -447,6 +447,19 @@ def consume_ifdef(lno, lines):
|
||||||
|
|
||||||
if verbose: print 'prep %s' % l
|
if verbose: print 'prep %s' % l
|
||||||
|
|
||||||
|
if warn_on_ifdefs and ('TORRENT_DEBUG' in l or 'TORRENT_DISABLE_FULL_STATS' in l):
|
||||||
|
print '***\nWARNING: possible ABI breakage in public struct!\n %s:%d\n***' % \
|
||||||
|
(filename, lno)
|
||||||
|
|
||||||
|
if warn_on_ifdefs and '#if' in l:
|
||||||
|
define = l.replace('#ifndef', '').replace('#ifdef', '') \
|
||||||
|
.replace('#if', '').replace('defined', '') \
|
||||||
|
.replace('TORRENT_USE_IPV6', '').replace('TORRENT_NO_DEPRECATE', '') \
|
||||||
|
.replace('||', '').replace('&&', '').replace('(', '').replace(')','') \
|
||||||
|
.replace('!', '').strip()
|
||||||
|
if define != '':
|
||||||
|
print 'sensitive define in public struct: "%s"\n %s:%d' % (define, filename, lno)
|
||||||
|
|
||||||
if l == '#ifndef TORRENT_NO_DEPRECATE' or \
|
if l == '#ifndef TORRENT_NO_DEPRECATE' or \
|
||||||
l == '#ifdef TORRENT_DEBUG' or \
|
l == '#ifdef TORRENT_DEBUG' or \
|
||||||
l == '#ifdef TORRENT_ASIO_DEBUGGING' or \
|
l == '#ifdef TORRENT_ASIO_DEBUGGING' or \
|
||||||
|
|
|
@ -48,6 +48,10 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||||
namespace libtorrent
|
namespace libtorrent
|
||||||
{
|
{
|
||||||
class torrent_info;
|
class torrent_info;
|
||||||
|
#ifdef TORRENT_DISABLE_EXTENSIONS
|
||||||
|
struct torrent;
|
||||||
|
struct torrent_plugin;
|
||||||
|
#endif
|
||||||
|
|
||||||
// The add_torrent_params is a parameter pack for adding torrents to a session.
|
// The add_torrent_params is a parameter pack for adding torrents to a session.
|
||||||
// The key fields when adding a torrent are:
|
// The key fields when adding a torrent are:
|
||||||
|
@ -330,15 +334,14 @@ namespace libtorrent
|
||||||
int upload_limit;
|
int upload_limit;
|
||||||
int download_limit;
|
int download_limit;
|
||||||
|
|
||||||
#ifndef TORRENT_DISABLE_EXTENSIONS
|
|
||||||
// torrent extension construction functions can be added to this
|
// torrent extension construction functions can be added to this
|
||||||
// vector to have them be added immediately when the torrent is
|
// vector to have them be added immediately when the torrent is
|
||||||
// constructed. This may be desired over the torrent_handle::add_extension()
|
// constructed. This may be desired over the torrent_handle::add_extension()
|
||||||
// in order to avoid race conditions. For instance it may be important
|
// in order to avoid race conditions. For instance it may be important
|
||||||
// to have the plugin catch events that happen very early on after
|
// to have the plugin catch events that happen very early on after
|
||||||
// the torrent is created.
|
// the torrent is created.
|
||||||
std::vector<boost::function<boost::shared_ptr<torrent_plugin>(torrent*, void*)> > extensions;
|
std::vector<boost::function<boost::shared_ptr<torrent_plugin>(torrent*, void*)> >
|
||||||
#endif
|
extensions;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,12 +37,6 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include <boost/preprocessor/cat.hpp>
|
#include <boost/preprocessor/cat.hpp>
|
||||||
#include <boost/preprocessor/stringize.hpp>
|
#include <boost/preprocessor/stringize.hpp>
|
||||||
|
|
||||||
#ifdef TORRENT_DEBUG
|
|
||||||
#define TORRENT_CFG_DEBUG dbg_
|
|
||||||
#else
|
|
||||||
#define TORRENT_CFG_DEBUG rel_
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if TORRENT_USE_BOOST_DATE_TIME
|
#if TORRENT_USE_BOOST_DATE_TIME
|
||||||
#define TORRENT_CFG_TIME boosttime_
|
#define TORRENT_CFG_TIME boosttime_
|
||||||
#elif TORRENT_USE_ABSOLUTE_TIME
|
#elif TORRENT_USE_ABSOLUTE_TIME
|
||||||
|
@ -63,29 +57,16 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||||
#define TORRENT_CFG_IPV6 noipv_-
|
#define TORRENT_CFG_IPV6 noipv_-
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef _UNICODE
|
|
||||||
#define TORRENT_CFG_UNICODE unicode_
|
|
||||||
#else
|
|
||||||
#define TORRENT_CFG_UNICODE ansi_
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef TORRENT_NO_DEPRECATE
|
#ifdef TORRENT_NO_DEPRECATE
|
||||||
#define TORRENT_CFG_DEPR nodeprecate_
|
#define TORRENT_CFG_DEPR nodeprecate_
|
||||||
#else
|
#else
|
||||||
#define TORRENT_CFG_DEPR deprecated_
|
#define TORRENT_CFG_DEPR deprecated_
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef TORRENT_DISABLE_FULL_STATS
|
|
||||||
#define TORRENT_CFG_STATS partialstats_
|
|
||||||
#else
|
|
||||||
#define TORRENT_CFG_STATS fullstats_
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define TORRENT_CFG \
|
#define TORRENT_CFG \
|
||||||
BOOST_PP_CAT(TORRENT_CFG_DEBUG, \
|
|
||||||
BOOST_PP_CAT(TORRENT_CFG_TIME, \
|
BOOST_PP_CAT(TORRENT_CFG_TIME, \
|
||||||
BOOST_PP_CAT(TORRENT_CFG_LOG, \
|
BOOST_PP_CAT(TORRENT_CFG_LOG, \
|
||||||
TORRENT_CFG_DEPR)))
|
TORRENT_CFG_DEPR))
|
||||||
|
|
||||||
#define TORRENT_CFG_STRING BOOST_PP_STRINGIZE(TORRENT_CFG)
|
#define TORRENT_CFG_STRING BOOST_PP_STRINGIZE(TORRENT_CFG)
|
||||||
|
|
||||||
|
|
|
@ -272,14 +272,12 @@ namespace libtorrent
|
||||||
// __ http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html
|
// __ http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html
|
||||||
char country[2];
|
char country[2];
|
||||||
|
|
||||||
#ifndef TORRENT_DISABLE_GEO_IP
|
|
||||||
// the name of the AS this peer is located in. This might be
|
// the name of the AS this peer is located in. This might be
|
||||||
// an empty string if there is no name in the geo ip database.
|
// an empty string if there is no name in the geo ip database.
|
||||||
std::string inet_as_name;
|
std::string inet_as_name;
|
||||||
|
|
||||||
// the AS number the peer is located in.
|
// the AS number the peer is located in.
|
||||||
int inet_as;
|
int inet_as;
|
||||||
#endif
|
|
||||||
|
|
||||||
// a measurement of the balancing of free download (that we get)
|
// a measurement of the balancing of free download (that we get)
|
||||||
// and free upload that we give. Every peer gets a certain amount of free upload, but
|
// and free upload that we give. Every peer gets a certain amount of free upload, but
|
||||||
|
|
|
@ -299,10 +299,6 @@ namespace libtorrent
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
#ifdef TORRENT_DEBUG
|
|
||||||
void check_invariant() const;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// The constructor that takes an info-hash will initialize the info-hash to the given value,
|
// The constructor that takes an info-hash will initialize the info-hash to the given value,
|
||||||
// but leave all other fields empty. This is used internally when downloading torrents without
|
// but leave all other fields empty. This is used internally when downloading torrents without
|
||||||
// the metadata. The metadata will be created by libtorrent as soon as it has been downloaded
|
// the metadata. The metadata will be created by libtorrent as soon as it has been downloaded
|
||||||
|
@ -527,15 +523,7 @@ namespace libtorrent
|
||||||
// Returns the SSL root certificate for the torrent, if it is an SSL
|
// Returns the SSL root certificate for the torrent, if it is an SSL
|
||||||
// torrent. Otherwise returns an empty string. The certificate is
|
// torrent. Otherwise returns an empty string. The certificate is
|
||||||
// the the public certificate in x509 format.
|
// the the public certificate in x509 format.
|
||||||
#ifdef TORRENT_USE_OPENSSL
|
std::string ssl_cert() const;
|
||||||
std::string const& ssl_cert() const { return m_ssl_root_cert; }
|
|
||||||
#else
|
|
||||||
std::string ssl_cert() const
|
|
||||||
{
|
|
||||||
if (m_info_dict.type() != lazy_entry::dict_t) return "";
|
|
||||||
return m_info_dict.dict_find_string_value("ssl-cert");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// returns true if this torrent_info object has a torrent loaded.
|
// returns true if this torrent_info object has a torrent loaded.
|
||||||
// This is primarily used to determine if a magnet link has had its
|
// This is primarily used to determine if a magnet link has had its
|
||||||
|
@ -673,6 +661,11 @@ namespace libtorrent
|
||||||
private:
|
private:
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef TORRENT_DEBUG
|
||||||
|
friend class invariant_access;
|
||||||
|
void check_invariant() const;
|
||||||
|
#endif
|
||||||
|
|
||||||
// not assignable
|
// not assignable
|
||||||
torrent_info const& operator=(torrent_info const&);
|
torrent_info const& operator=(torrent_info const&);
|
||||||
|
|
||||||
|
@ -717,13 +710,6 @@ namespace libtorrent
|
||||||
// to create the torrent file
|
// to create the torrent file
|
||||||
std::string m_created_by;
|
std::string m_created_by;
|
||||||
|
|
||||||
#ifdef TORRENT_USE_OPENSSL
|
|
||||||
// for ssl-torrens, this contains the root
|
|
||||||
// certificate, in .pem format (i.e. ascii
|
|
||||||
// base64 encoded with head and tails)
|
|
||||||
std::string m_ssl_root_cert;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// the info section parsed. points into m_info_section
|
// the info section parsed. points into m_info_section
|
||||||
// parsed lazily
|
// parsed lazily
|
||||||
mutable lazy_entry m_info_dict;
|
mutable lazy_entry m_info_dict;
|
||||||
|
|
|
@ -137,8 +137,8 @@ namespace libtorrent
|
||||||
internal_file_entry::internal_file_entry(internal_file_entry const& fe)
|
internal_file_entry::internal_file_entry(internal_file_entry const& fe)
|
||||||
: name(0)
|
: name(0)
|
||||||
, offset(fe.offset)
|
, offset(fe.offset)
|
||||||
, symlink_index(fe.symlink_index)
|
|
||||||
, size(fe.size)
|
, size(fe.size)
|
||||||
|
, symlink_index(fe.symlink_index)
|
||||||
, name_len(fe.name_len)
|
, name_len(fe.name_len)
|
||||||
, pad_file(fe.pad_file)
|
, pad_file(fe.pad_file)
|
||||||
, hidden_attribute(fe.hidden_attribute)
|
, hidden_attribute(fe.hidden_attribute)
|
||||||
|
@ -518,7 +518,22 @@ namespace libtorrent
|
||||||
{
|
{
|
||||||
TORRENT_ASSERT(index >= 0 && index < int(m_files.size()));
|
TORRENT_ASSERT(index >= 0 && index < int(m_files.size()));
|
||||||
internal_file_entry const& fe = m_files[index];
|
internal_file_entry const& fe = m_files[index];
|
||||||
return file_path(fe, save_path);
|
|
||||||
|
// -2 means this is an absolute path filename
|
||||||
|
if (fe.path_index == -2) return fe.filename();
|
||||||
|
|
||||||
|
// -1 means no path
|
||||||
|
if (fe.path_index == -1) return combine_path(save_path, fe.filename());
|
||||||
|
|
||||||
|
if (fe.no_root_dir)
|
||||||
|
return combine_path(save_path
|
||||||
|
, combine_path(m_paths[fe.path_index]
|
||||||
|
, fe.filename()));
|
||||||
|
|
||||||
|
return combine_path(save_path
|
||||||
|
, combine_path(m_name
|
||||||
|
, combine_path(m_paths[fe.path_index]
|
||||||
|
, fe.filename())));
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string file_storage::file_name(int index) const
|
std::string file_storage::file_name(int index) const
|
||||||
|
@ -601,22 +616,8 @@ namespace libtorrent
|
||||||
std::string file_storage::file_path(internal_file_entry const& fe
|
std::string file_storage::file_path(internal_file_entry const& fe
|
||||||
, std::string const& save_path) const
|
, std::string const& save_path) const
|
||||||
{
|
{
|
||||||
TORRENT_ASSERT(fe.path_index >= -2 && fe.path_index < int(m_paths.size()));
|
int index = &fe - &m_files[0];
|
||||||
// -2 means this is an absolute path filename
|
return file_path(index);
|
||||||
if (fe.path_index == -2) return fe.filename();
|
|
||||||
|
|
||||||
// -1 means no path
|
|
||||||
if (fe.path_index == -1) return combine_path(save_path, fe.filename());
|
|
||||||
|
|
||||||
if (fe.no_root_dir)
|
|
||||||
return combine_path(save_path
|
|
||||||
, combine_path(m_paths[fe.path_index]
|
|
||||||
, fe.filename()));
|
|
||||||
|
|
||||||
return combine_path(save_path
|
|
||||||
, combine_path(m_name
|
|
||||||
, combine_path(m_paths[fe.path_index]
|
|
||||||
, fe.filename())));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string file_storage::file_name(internal_file_entry const& fe) const
|
std::string file_storage::file_name(internal_file_entry const& fe) const
|
||||||
|
|
|
@ -3862,6 +3862,8 @@ namespace libtorrent
|
||||||
p.flags |= pi->optimistically_unchoked ? peer_info::optimistic_unchoke : 0;
|
p.flags |= pi->optimistically_unchoked ? peer_info::optimistic_unchoke : 0;
|
||||||
#ifndef TORRENT_DISABLE_GEO_IP
|
#ifndef TORRENT_DISABLE_GEO_IP
|
||||||
p.inet_as = pi->inet_as ? pi->inet_as->first : 0xffff;
|
p.inet_as = pi->inet_as ? pi->inet_as->first : 0xffff;
|
||||||
|
#else
|
||||||
|
p.inet_as = 0xffff;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -3869,9 +3871,7 @@ namespace libtorrent
|
||||||
p.source = 0;
|
p.source = 0;
|
||||||
p.failcount = 0;
|
p.failcount = 0;
|
||||||
p.num_hashfails = 0;
|
p.num_hashfails = 0;
|
||||||
#ifndef TORRENT_DISABLE_GEO_IP
|
|
||||||
p.inet_as = 0xffff;
|
p.inet_as = 0xffff;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
p.remote_dl_rate = m_remote_dl_rate;
|
p.remote_dl_rate = m_remote_dl_rate;
|
||||||
|
|
|
@ -576,9 +576,6 @@ namespace libtorrent
|
||||||
, m_piece_hashes(t.m_piece_hashes)
|
, m_piece_hashes(t.m_piece_hashes)
|
||||||
, m_comment(t.m_comment)
|
, m_comment(t.m_comment)
|
||||||
, m_created_by(t.m_created_by)
|
, m_created_by(t.m_created_by)
|
||||||
#ifdef TORRENT_USE_OPENSSL
|
|
||||||
, m_ssl_root_cert(t.m_ssl_root_cert)
|
|
||||||
#endif
|
|
||||||
, m_creation_date(t.m_creation_date)
|
, m_creation_date(t.m_creation_date)
|
||||||
, m_info_hash(t.m_info_hash)
|
, m_info_hash(t.m_info_hash)
|
||||||
, m_info_section_size(t.m_info_section_size)
|
, m_info_section_size(t.m_info_section_size)
|
||||||
|
@ -884,9 +881,6 @@ namespace libtorrent
|
||||||
swap(m_creation_date, ti.m_creation_date);
|
swap(m_creation_date, ti.m_creation_date);
|
||||||
m_comment.swap(ti.m_comment);
|
m_comment.swap(ti.m_comment);
|
||||||
m_created_by.swap(ti.m_created_by);
|
m_created_by.swap(ti.m_created_by);
|
||||||
#ifdef TORRENT_USE_OPENSSL
|
|
||||||
m_ssl_root_cert.swap(ti.m_ssl_root_cert);
|
|
||||||
#endif
|
|
||||||
boost::uint32_t tmp;
|
boost::uint32_t tmp;
|
||||||
SWAP(m_multifile, ti.m_multifile);
|
SWAP(m_multifile, ti.m_multifile);
|
||||||
SWAP(m_private, ti.m_private);
|
SWAP(m_private, ti.m_private);
|
||||||
|
@ -901,6 +895,12 @@ namespace libtorrent
|
||||||
|
|
||||||
#undef SWAP
|
#undef SWAP
|
||||||
|
|
||||||
|
std::string torrent_info::ssl_cert() const
|
||||||
|
{
|
||||||
|
if (m_info_dict.type() != lazy_entry::dict_t) return "";
|
||||||
|
return m_info_dict.dict_find_string_value("ssl-cert");
|
||||||
|
}
|
||||||
|
|
||||||
bool torrent_info::parse_info_section(lazy_entry const& info, error_code& ec, int flags)
|
bool torrent_info::parse_info_section(lazy_entry const& info, error_code& ec, int flags)
|
||||||
{
|
{
|
||||||
if (info.type() != lazy_entry::dict_t)
|
if (info.type() != lazy_entry::dict_t)
|
||||||
|
@ -1064,10 +1064,6 @@ namespace libtorrent
|
||||||
|
|
||||||
m_private = info.dict_find_int_value("private", 0);
|
m_private = info.dict_find_int_value("private", 0);
|
||||||
|
|
||||||
#ifdef TORRENT_USE_OPENSSL
|
|
||||||
m_ssl_root_cert = info.dict_find_string_value("ssl-cert");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue