refactor: use nullptr instead of NULL (#1884)
* refactor: use nullptr instead of NULL. No functional changes; just more C++ification
This commit is contained in:
parent
cc204e0b2c
commit
003685b40a
52
cli/cli.cc
52
cli/cli.cc
|
@ -71,28 +71,28 @@ static bool verify = false;
|
|||
static sig_atomic_t gotsig = false;
|
||||
static sig_atomic_t manualUpdate = false;
|
||||
|
||||
static char const* torrentPath = NULL;
|
||||
static char const* torrentPath = nullptr;
|
||||
|
||||
static struct tr_option const options[] = {
|
||||
{ 'b', "blocklist", "Enable peer blocklists", "b", false, NULL },
|
||||
{ 'B', "no-blocklist", "Disable peer blocklists", "B", false, NULL },
|
||||
{ 'b', "blocklist", "Enable peer blocklists", "b", false, nullptr },
|
||||
{ 'B', "no-blocklist", "Disable peer blocklists", "B", false, nullptr },
|
||||
{ 'd', "downlimit", "Set max download speed in " SPEED_K_STR, "d", true, "<speed>" },
|
||||
{ 'D', "no-downlimit", "Don't limit the download speed", "D", false, NULL },
|
||||
{ 910, "encryption-required", "Encrypt all peer connections", "er", false, NULL },
|
||||
{ 911, "encryption-preferred", "Prefer encrypted peer connections", "ep", false, NULL },
|
||||
{ 912, "encryption-tolerated", "Prefer unencrypted peer connections", "et", false, NULL },
|
||||
{ 'D', "no-downlimit", "Don't limit the download speed", "D", false, nullptr },
|
||||
{ 910, "encryption-required", "Encrypt all peer connections", "er", false, nullptr },
|
||||
{ 911, "encryption-preferred", "Prefer encrypted peer connections", "ep", false, nullptr },
|
||||
{ 912, "encryption-tolerated", "Prefer unencrypted peer connections", "et", false, nullptr },
|
||||
{ 'f', "finish", "Run a script when the torrent finishes", "f", true, "<script>" },
|
||||
{ 'g', "config-dir", "Where to find configuration files", "g", true, "<path>" },
|
||||
{ 'm', "portmap", "Enable portmapping via NAT-PMP or UPnP", "m", false, NULL },
|
||||
{ 'M', "no-portmap", "Disable portmapping", "M", false, NULL },
|
||||
{ 'm', "portmap", "Enable portmapping via NAT-PMP or UPnP", "m", false, nullptr },
|
||||
{ 'M', "no-portmap", "Disable portmapping", "M", false, nullptr },
|
||||
{ 'p', "port", "Port for incoming peers (Default: " TR_DEFAULT_PEER_PORT_STR ")", "p", true, "<port>" },
|
||||
{ 't', "tos", "Peer socket TOS (0 to 255, default=" TR_DEFAULT_PEER_SOCKET_TOS_STR ")", "t", true, "<tos>" },
|
||||
{ 'u', "uplimit", "Set max upload speed in " SPEED_K_STR, "u", true, "<speed>" },
|
||||
{ 'U', "no-uplimit", "Don't limit the upload speed", "U", false, NULL },
|
||||
{ 'v', "verify", "Verify the specified torrent", "v", false, NULL },
|
||||
{ 'V', "version", "Show version number and exit", "V", false, NULL },
|
||||
{ 'U', "no-uplimit", "Don't limit the upload speed", "U", false, nullptr },
|
||||
{ 'v', "verify", "Verify the specified torrent", "v", false, nullptr },
|
||||
{ 'V', "version", "Show version number and exit", "V", false, nullptr },
|
||||
{ 'w', "download-dir", "Where to save downloaded data", "w", true, "<path>" },
|
||||
{ 0, NULL, NULL, NULL, false, NULL }
|
||||
{ 0, nullptr, nullptr, nullptr, false, nullptr }
|
||||
};
|
||||
|
||||
static char const* getUsage(void)
|
||||
|
@ -219,7 +219,7 @@ static void getStatusStr(tr_stat const* st, char* buf, size_t buflen)
|
|||
static char const* getConfigDir(int argc, char const** argv)
|
||||
{
|
||||
int c;
|
||||
char const* configDir = NULL;
|
||||
char const* configDir = nullptr;
|
||||
char const* optarg;
|
||||
int const ind = tr_optind;
|
||||
|
||||
|
@ -234,7 +234,7 @@ static char const* getConfigDir(int argc, char const** argv)
|
|||
|
||||
tr_optind = ind;
|
||||
|
||||
if (configDir == NULL)
|
||||
if (configDir == nullptr)
|
||||
{
|
||||
configDir = tr_getDefaultConfigDir(MY_CONFIG_NAME);
|
||||
}
|
||||
|
@ -246,7 +246,7 @@ int tr_main(int argc, char* argv[])
|
|||
{
|
||||
tr_session* h;
|
||||
tr_ctor* ctor;
|
||||
tr_torrent* tor = NULL;
|
||||
tr_torrent* tor = nullptr;
|
||||
tr_variant settings;
|
||||
char const* configDir;
|
||||
uint8_t* fileContents;
|
||||
|
@ -283,15 +283,15 @@ int tr_main(int argc, char* argv[])
|
|||
}
|
||||
|
||||
/* Check the options for validity */
|
||||
if (torrentPath == NULL)
|
||||
if (torrentPath == nullptr)
|
||||
{
|
||||
fprintf(stderr, "No torrent specified!\n");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
if (tr_variantDictFindStr(&settings, TR_KEY_download_dir, &str, NULL) && !tr_sys_path_exists(str, NULL))
|
||||
if (tr_variantDictFindStr(&settings, TR_KEY_download_dir, &str, nullptr) && !tr_sys_path_exists(str, nullptr))
|
||||
{
|
||||
tr_error* error = NULL;
|
||||
tr_error* error = nullptr;
|
||||
|
||||
if (!tr_sys_dir_create(str, TR_SYS_DIR_CREATE_PARENTS, 0700, &error))
|
||||
{
|
||||
|
@ -305,10 +305,10 @@ int tr_main(int argc, char* argv[])
|
|||
|
||||
ctor = tr_ctorNew(h);
|
||||
|
||||
fileContents = tr_loadFile(torrentPath, &fileLength, NULL);
|
||||
fileContents = tr_loadFile(torrentPath, &fileLength, nullptr);
|
||||
tr_ctorSetPaused(ctor, TR_FORCE, false);
|
||||
|
||||
if (fileContents != NULL)
|
||||
if (fileContents != nullptr)
|
||||
{
|
||||
tr_ctorSetMetainfo(ctor, fileContents, fileLength);
|
||||
}
|
||||
|
@ -337,10 +337,10 @@ int tr_main(int argc, char* argv[])
|
|||
|
||||
tr_free(fileContents);
|
||||
|
||||
tor = tr_torrentNew(ctor, NULL, NULL);
|
||||
tor = tr_torrentNew(ctor, nullptr, nullptr);
|
||||
tr_ctorFree(ctor);
|
||||
|
||||
if (tor == NULL)
|
||||
if (tor == nullptr)
|
||||
{
|
||||
fprintf(stderr, "Failed opening torrent file `%s'\n", torrentPath);
|
||||
tr_sessionClose(h);
|
||||
|
@ -356,7 +356,7 @@ int tr_main(int argc, char* argv[])
|
|||
if (verify)
|
||||
{
|
||||
verify = false;
|
||||
tr_torrentVerify(tor, NULL, NULL);
|
||||
tr_torrentVerify(tor, nullptr, nullptr);
|
||||
}
|
||||
|
||||
for (;;)
|
||||
|
@ -364,7 +364,7 @@ int tr_main(int argc, char* argv[])
|
|||
char line[LINEWIDTH];
|
||||
tr_stat const* st;
|
||||
char const* messageName[] = {
|
||||
NULL,
|
||||
nullptr,
|
||||
"Tracker gave a warning:",
|
||||
"Tracker gave an error:",
|
||||
"Error:",
|
||||
|
@ -507,7 +507,7 @@ static int parseCommandLine(tr_variant* d, int argc, char const** argv)
|
|||
break;
|
||||
|
||||
case TR_OPT_UNK:
|
||||
if (torrentPath == NULL)
|
||||
if (torrentPath == nullptr)
|
||||
{
|
||||
torrentPath = optarg;
|
||||
}
|
||||
|
|
|
@ -24,8 +24,8 @@
|
|||
****
|
||||
***/
|
||||
|
||||
static dtr_callbacks const* callbacks = NULL;
|
||||
static void* callback_arg = NULL;
|
||||
static dtr_callbacks const* callbacks = nullptr;
|
||||
static void* callback_arg = nullptr;
|
||||
|
||||
static int signal_pipe[2];
|
||||
|
||||
|
@ -83,7 +83,7 @@ static void* signal_handler_thread_main(void* arg)
|
|||
handle_signal(sig);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
static bool create_signal_pipe(tr_error** error)
|
||||
|
@ -110,7 +110,7 @@ static bool create_signal_handler_thread(pthread_t* thread, tr_error** error)
|
|||
return false;
|
||||
}
|
||||
|
||||
if ((errno = pthread_create(thread, NULL, &signal_handler_thread_main, NULL)) != 0)
|
||||
if ((errno = pthread_create(thread, nullptr, &signal_handler_thread_main, nullptr)) != 0)
|
||||
{
|
||||
set_system_error(error, errno, "pthread_create() failed");
|
||||
destroy_signal_pipe();
|
||||
|
@ -123,7 +123,7 @@ static bool create_signal_handler_thread(pthread_t* thread, tr_error** error)
|
|||
static void destroy_signal_handler_thread(pthread_t thread)
|
||||
{
|
||||
send_signal_to_pipe(0);
|
||||
pthread_join(thread, NULL);
|
||||
pthread_join(thread, nullptr);
|
||||
|
||||
destroy_signal_pipe();
|
||||
}
|
||||
|
|
|
@ -29,15 +29,15 @@
|
|||
#define SERVICE_CONTROL_PRESHUTDOWN 0x0000000F
|
||||
#endif
|
||||
|
||||
static dtr_callbacks const* callbacks = NULL;
|
||||
static void* callback_arg = NULL;
|
||||
static dtr_callbacks const* callbacks = nullptr;
|
||||
static void* callback_arg = nullptr;
|
||||
|
||||
static LPCWSTR const service_name = L"TransmissionDaemon";
|
||||
|
||||
static SERVICE_STATUS_HANDLE status_handle = NULL;
|
||||
static SERVICE_STATUS_HANDLE status_handle = nullptr;
|
||||
static DWORD current_state = SERVICE_STOPPED;
|
||||
static HANDLE service_thread = NULL;
|
||||
static HANDLE service_stop_thread = NULL;
|
||||
static HANDLE service_thread = nullptr;
|
||||
static HANDLE service_stop_thread = nullptr;
|
||||
|
||||
/***
|
||||
****
|
||||
|
@ -128,7 +128,7 @@ static unsigned int __stdcall service_stop_thread_main(void* param)
|
|||
|
||||
static void stop_service(void)
|
||||
{
|
||||
if (service_stop_thread != NULL)
|
||||
if (service_stop_thread != nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -137,9 +137,10 @@ static void stop_service(void)
|
|||
|
||||
update_service_status(SERVICE_STOP_PENDING, NO_ERROR, 0, 1, wait_time);
|
||||
|
||||
service_stop_thread = (HANDLE)_beginthreadex(NULL, 0, &service_stop_thread_main, (LPVOID)(UINT_PTR)wait_time, 0, NULL);
|
||||
service_stop_thread = (HANDLE)
|
||||
_beginthreadex(nullptr, 0, &service_stop_thread_main, (LPVOID)(UINT_PTR)wait_time, 0, nullptr);
|
||||
|
||||
if (service_stop_thread == NULL)
|
||||
if (service_stop_thread == nullptr)
|
||||
{
|
||||
log_system_error(TR_LOG_DEBUG, GetLastError(), "_beginthreadex() failed, trying to stop synchronously");
|
||||
service_stop_thread_main((LPVOID)(UINT_PTR)wait_time);
|
||||
|
@ -184,9 +185,9 @@ static VOID WINAPI service_main(DWORD argc, LPWSTR* argv)
|
|||
TR_UNUSED(argc);
|
||||
TR_UNUSED(argv);
|
||||
|
||||
status_handle = RegisterServiceCtrlHandlerExW(service_name, &handle_service_ctrl, NULL);
|
||||
status_handle = RegisterServiceCtrlHandlerExW(service_name, &handle_service_ctrl, nullptr);
|
||||
|
||||
if (status_handle == NULL)
|
||||
if (status_handle == nullptr)
|
||||
{
|
||||
log_system_error(TR_LOG_ERROR, GetLastError(), "RegisterServiceCtrlHandlerEx() failed");
|
||||
return;
|
||||
|
@ -194,9 +195,9 @@ static VOID WINAPI service_main(DWORD argc, LPWSTR* argv)
|
|||
|
||||
update_service_status(SERVICE_START_PENDING, NO_ERROR, 0, 1, 1000);
|
||||
|
||||
service_thread = (HANDLE)_beginthreadex(NULL, 0, &service_thread_main, NULL, 0, NULL);
|
||||
service_thread = (HANDLE)_beginthreadex(nullptr, 0, &service_thread_main, nullptr, 0, nullptr);
|
||||
|
||||
if (service_thread == NULL)
|
||||
if (service_thread == nullptr)
|
||||
{
|
||||
log_system_error(TR_LOG_ERROR, GetLastError(), "_beginthreadex() failed");
|
||||
return;
|
||||
|
@ -209,7 +210,7 @@ static VOID WINAPI service_main(DWORD argc, LPWSTR* argv)
|
|||
log_system_error(TR_LOG_ERROR, GetLastError(), "WaitForSingleObject() failed");
|
||||
}
|
||||
|
||||
if (service_stop_thread != NULL)
|
||||
if (service_stop_thread != nullptr)
|
||||
{
|
||||
WaitForSingleObject(service_stop_thread, INFINITE);
|
||||
CloseHandle(service_stop_thread);
|
||||
|
@ -252,7 +253,7 @@ bool dtr_daemon(dtr_callbacks const* cb, void* cb_arg, bool foreground, int* exi
|
|||
{
|
||||
SERVICE_TABLE_ENTRY const service_table[] = {
|
||||
{ (LPWSTR)service_name, &service_main },
|
||||
{ NULL, NULL },
|
||||
{ nullptr, nullptr },
|
||||
};
|
||||
|
||||
if (!StartServiceCtrlDispatcherW(service_table))
|
||||
|
|
146
daemon/daemon.cc
146
daemon/daemon.cc
|
@ -78,12 +78,12 @@ static void sd_notifyf(int status, char const* fmt, ...)
|
|||
#define SPEED_T_STR "TB/s"
|
||||
|
||||
static bool seenHUP = false;
|
||||
static char const* logfileName = NULL;
|
||||
static char const* logfileName = nullptr;
|
||||
static tr_sys_file_t logfile = TR_BAD_SYS_FILE;
|
||||
static tr_session* mySession = NULL;
|
||||
static tr_session* mySession = nullptr;
|
||||
static tr_quark key_pidfile = 0;
|
||||
static tr_quark key_watch_dir_force_generic = 0;
|
||||
static struct event_base* ev_base = NULL;
|
||||
static struct event_base* ev_base = nullptr;
|
||||
|
||||
/***
|
||||
**** Config File
|
||||
|
@ -106,36 +106,36 @@ static char const* getUsage(void)
|
|||
|
||||
static struct tr_option const options[] = {
|
||||
{ 'a', "allowed", "Allowed IP addresses. (Default: " TR_DEFAULT_RPC_WHITELIST ")", "a", true, "<list>" },
|
||||
{ 'b', "blocklist", "Enable peer blocklists", "b", false, NULL },
|
||||
{ 'B', "no-blocklist", "Disable peer blocklists", "B", false, NULL },
|
||||
{ 'b', "blocklist", "Enable peer blocklists", "b", false, nullptr },
|
||||
{ 'B', "no-blocklist", "Disable peer blocklists", "B", false, nullptr },
|
||||
{ 'c', "watch-dir", "Where to watch for new .torrent files", "c", true, "<directory>" },
|
||||
{ 'C', "no-watch-dir", "Disable the watch-dir", "C", false, NULL },
|
||||
{ 941, "incomplete-dir", "Where to store new torrents until they're complete", NULL, true, "<directory>" },
|
||||
{ 942, "no-incomplete-dir", "Don't store incomplete torrents in a different location", NULL, false, NULL },
|
||||
{ 'd', "dump-settings", "Dump the settings and exit", "d", false, NULL },
|
||||
{ 'C', "no-watch-dir", "Disable the watch-dir", "C", false, nullptr },
|
||||
{ 941, "incomplete-dir", "Where to store new torrents until they're complete", nullptr, true, "<directory>" },
|
||||
{ 942, "no-incomplete-dir", "Don't store incomplete torrents in a different location", nullptr, false, nullptr },
|
||||
{ 'd', "dump-settings", "Dump the settings and exit", "d", false, nullptr },
|
||||
{ 'e', "logfile", "Dump the log messages to this filename", "e", true, "<filename>" },
|
||||
{ 'f', "foreground", "Run in the foreground instead of daemonizing", "f", false, NULL },
|
||||
{ 'f', "foreground", "Run in the foreground instead of daemonizing", "f", false, nullptr },
|
||||
{ 'g', "config-dir", "Where to look for configuration files", "g", true, "<path>" },
|
||||
{ 'p', "port", "RPC port (Default: " TR_DEFAULT_RPC_PORT_STR ")", "p", true, "<port>" },
|
||||
{ 't', "auth", "Require authentication", "t", false, NULL },
|
||||
{ 'T', "no-auth", "Don't require authentication", "T", false, NULL },
|
||||
{ 't', "auth", "Require authentication", "t", false, nullptr },
|
||||
{ 'T', "no-auth", "Don't require authentication", "T", false, nullptr },
|
||||
{ 'u', "username", "Set username for authentication", "u", true, "<username>" },
|
||||
{ 'v', "password", "Set password for authentication", "v", true, "<password>" },
|
||||
{ 'V', "version", "Show version number and exit", "V", false, NULL },
|
||||
{ 810, "log-error", "Show error messages", NULL, false, NULL },
|
||||
{ 811, "log-info", "Show error and info messages", NULL, false, NULL },
|
||||
{ 812, "log-debug", "Show error, info, and debug messages", NULL, false, NULL },
|
||||
{ 'V', "version", "Show version number and exit", "V", false, nullptr },
|
||||
{ 810, "log-error", "Show error messages", nullptr, false, nullptr },
|
||||
{ 811, "log-info", "Show error and info messages", nullptr, false, nullptr },
|
||||
{ 812, "log-debug", "Show error, info, and debug messages", nullptr, false, nullptr },
|
||||
{ 'w', "download-dir", "Where to save downloaded data", "w", true, "<path>" },
|
||||
{ 800, "paused", "Pause all torrents on startup", NULL, false, NULL },
|
||||
{ 'o', "dht", "Enable distributed hash tables (DHT)", "o", false, NULL },
|
||||
{ 'O', "no-dht", "Disable distributed hash tables (DHT)", "O", false, NULL },
|
||||
{ 'y', "lpd", "Enable local peer discovery (LPD)", "y", false, NULL },
|
||||
{ 'Y', "no-lpd", "Disable local peer discovery (LPD)", "Y", false, NULL },
|
||||
{ 830, "utp", "Enable uTP for peer connections", NULL, false, NULL },
|
||||
{ 831, "no-utp", "Disable uTP for peer connections", NULL, false, NULL },
|
||||
{ 800, "paused", "Pause all torrents on startup", nullptr, false, nullptr },
|
||||
{ 'o', "dht", "Enable distributed hash tables (DHT)", "o", false, nullptr },
|
||||
{ 'O', "no-dht", "Disable distributed hash tables (DHT)", "O", false, nullptr },
|
||||
{ 'y', "lpd", "Enable local peer discovery (LPD)", "y", false, nullptr },
|
||||
{ 'Y', "no-lpd", "Disable local peer discovery (LPD)", "Y", false, nullptr },
|
||||
{ 830, "utp", "Enable uTP for peer connections", nullptr, false, nullptr },
|
||||
{ 831, "no-utp", "Disable uTP for peer connections", nullptr, false, nullptr },
|
||||
{ 'P', "peerport", "Port for incoming peers (Default: " TR_DEFAULT_PEER_PORT_STR ")", "P", true, "<port>" },
|
||||
{ 'm', "portmap", "Enable portmapping via NAT-PMP or UPnP", "m", false, NULL },
|
||||
{ 'M', "no-portmap", "Disable portmapping", "M", false, NULL },
|
||||
{ 'm', "portmap", "Enable portmapping via NAT-PMP or UPnP", "m", false, nullptr },
|
||||
{ 'M', "no-portmap", "Disable portmapping", "M", false, nullptr },
|
||||
{ 'L',
|
||||
"peerlimit-global",
|
||||
"Maximum overall number of peers (Default: " TR_DEFAULT_PEER_LIMIT_GLOBAL_STR ")",
|
||||
|
@ -148,9 +148,9 @@ static struct tr_option const options[] = {
|
|||
"l",
|
||||
true,
|
||||
"<limit>" },
|
||||
{ 910, "encryption-required", "Encrypt all peer connections", "er", false, NULL },
|
||||
{ 911, "encryption-preferred", "Prefer encrypted peer connections", "ep", false, NULL },
|
||||
{ 912, "encryption-tolerated", "Prefer unencrypted peer connections", "et", false, NULL },
|
||||
{ 910, "encryption-required", "Encrypt all peer connections", "er", false, nullptr },
|
||||
{ 911, "encryption-preferred", "Prefer encrypted peer connections", "ep", false, nullptr },
|
||||
{ 912, "encryption-tolerated", "Prefer unencrypted peer connections", "et", false, nullptr },
|
||||
{ 'i', "bind-address-ipv4", "Where to listen for peer connections", "i", true, "<ipv4 addr>" },
|
||||
{ 'I', "bind-address-ipv6", "Where to listen for peer connections", "I", true, "<ipv6 addr>" },
|
||||
{ 'r', "rpc-bind-address", "Where to listen for RPC connections", "r", true, "<ip addr>" },
|
||||
|
@ -165,14 +165,14 @@ static struct tr_option const options[] = {
|
|||
"All torrents, unless overridden by a per-torrent setting, should seed regardless of ratio",
|
||||
"GSR",
|
||||
false,
|
||||
NULL },
|
||||
nullptr },
|
||||
{ 'x', "pid-file", "Enable PID file", "x", true, "<pid-file>" },
|
||||
{ 0, NULL, NULL, NULL, false, NULL }
|
||||
{ 0, nullptr, nullptr, nullptr, false, nullptr }
|
||||
};
|
||||
|
||||
static bool reopen_log_file(char const* filename)
|
||||
{
|
||||
tr_error* error = NULL;
|
||||
tr_error* error = nullptr;
|
||||
tr_sys_file_t const old_log_file = logfile;
|
||||
tr_sys_file_t const new_log_file = tr_sys_file_open(
|
||||
filename,
|
||||
|
@ -191,7 +191,7 @@ static bool reopen_log_file(char const* filename)
|
|||
|
||||
if (old_log_file != TR_BAD_SYS_FILE)
|
||||
{
|
||||
tr_sys_file_close(old_log_file, NULL);
|
||||
tr_sys_file_close(old_log_file, nullptr);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@ -200,7 +200,7 @@ static bool reopen_log_file(char const* filename)
|
|||
static char const* getConfigDir(int argc, char const* const* argv)
|
||||
{
|
||||
int c;
|
||||
char const* configDir = NULL;
|
||||
char const* configDir = nullptr;
|
||||
char const* optstr;
|
||||
int const ind = tr_optind;
|
||||
|
||||
|
@ -215,7 +215,7 @@ static char const* getConfigDir(int argc, char const* const* argv)
|
|||
|
||||
tr_optind = ind;
|
||||
|
||||
if (configDir == NULL)
|
||||
if (configDir == nullptr)
|
||||
{
|
||||
configDir = tr_getDefaultConfigDir(MY_NAME);
|
||||
}
|
||||
|
@ -232,13 +232,13 @@ static tr_watchdir_status onFileAdded(tr_watchdir_t dir, char const* name, void*
|
|||
return TR_WATCHDIR_IGNORE;
|
||||
}
|
||||
|
||||
char* filename = tr_buildPath(tr_watchdir_get_path(dir), name, NULL);
|
||||
char* filename = tr_buildPath(tr_watchdir_get_path(dir), name, nullptr);
|
||||
tr_ctor* ctor = tr_ctorNew(session);
|
||||
int err = tr_ctorSetMetainfoFromFile(ctor, filename);
|
||||
|
||||
if (err == 0)
|
||||
{
|
||||
tr_torrentNew(ctor, &err, NULL);
|
||||
tr_torrentNew(ctor, &err, nullptr);
|
||||
|
||||
if (err == TR_PARSE_ERR)
|
||||
{
|
||||
|
@ -253,7 +253,7 @@ static tr_watchdir_status onFileAdded(tr_watchdir_t dir, char const* name, void*
|
|||
|
||||
if (test && trash)
|
||||
{
|
||||
tr_error* error = NULL;
|
||||
tr_error* error = nullptr;
|
||||
|
||||
tr_logAddInfo("Deleting input .torrent file \"%s\"", name);
|
||||
|
||||
|
@ -266,7 +266,7 @@ static tr_watchdir_status onFileAdded(tr_watchdir_t dir, char const* name, void*
|
|||
else
|
||||
{
|
||||
char* new_filename = tr_strdup_printf("%s.added", filename);
|
||||
tr_sys_path_rename(filename, new_filename, NULL);
|
||||
tr_sys_path_rename(filename, new_filename, nullptr);
|
||||
tr_free(new_filename);
|
||||
}
|
||||
}
|
||||
|
@ -289,13 +289,21 @@ static void printMessage(tr_sys_file_t file, int level, char const* name, char c
|
|||
char timestr[64];
|
||||
tr_logGetTimeStr(timestr, sizeof(timestr));
|
||||
|
||||
if (name != NULL)
|
||||
if (name != nullptr)
|
||||
{
|
||||
tr_sys_file_write_fmt(file, "[%s] %s %s (%s:%d)" TR_NATIVE_EOL_STR, NULL, timestr, name, message, filename, line);
|
||||
tr_sys_file_write_fmt(
|
||||
file,
|
||||
"[%s] %s %s (%s:%d)" TR_NATIVE_EOL_STR,
|
||||
nullptr,
|
||||
timestr,
|
||||
name,
|
||||
message,
|
||||
filename,
|
||||
line);
|
||||
}
|
||||
else
|
||||
{
|
||||
tr_sys_file_write_fmt(file, "[%s] %s (%s:%d)" TR_NATIVE_EOL_STR, NULL, timestr, message, filename, line);
|
||||
tr_sys_file_write_fmt(file, "[%s] %s (%s:%d)" TR_NATIVE_EOL_STR, nullptr, timestr, message, filename, line);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -321,7 +329,7 @@ static void printMessage(tr_sys_file_t file, int level, char const* name, char c
|
|||
break;
|
||||
}
|
||||
|
||||
if (name != NULL)
|
||||
if (name != nullptr)
|
||||
{
|
||||
syslog(priority, "%s %s (%s:%d)", name, message, filename, line);
|
||||
}
|
||||
|
@ -342,14 +350,14 @@ static void pumpLogMessages(tr_sys_file_t file)
|
|||
{
|
||||
tr_log_message* list = tr_logGetQueue();
|
||||
|
||||
for (tr_log_message const* l = list; l != NULL; l = l->next)
|
||||
for (tr_log_message const* l = list; l != nullptr; l = l->next)
|
||||
{
|
||||
printMessage(file, l->level, l->name, l->message, l->file, l->line);
|
||||
}
|
||||
|
||||
if (file != TR_BAD_SYS_FILE)
|
||||
{
|
||||
tr_sys_file_flush(file, NULL);
|
||||
tr_sys_file_flush(file, nullptr);
|
||||
}
|
||||
|
||||
tr_logFreeQueue(list);
|
||||
|
@ -392,7 +400,7 @@ static tr_rpc_callback_status on_rpc_callback(
|
|||
|
||||
if (type == TR_RPC_SESSION_CLOSE)
|
||||
{
|
||||
event_base_loopexit(ev_base, NULL);
|
||||
event_base_loopexit(ev_base, nullptr);
|
||||
}
|
||||
|
||||
return TR_RPC_OK;
|
||||
|
@ -617,7 +625,7 @@ static void daemon_reconfigure(void* arg)
|
|||
{
|
||||
TR_UNUSED(arg);
|
||||
|
||||
if (mySession == NULL)
|
||||
if (mySession == nullptr)
|
||||
{
|
||||
tr_logAddInfo("Deferring reload until session is fully started.");
|
||||
seenHUP = true;
|
||||
|
@ -628,7 +636,7 @@ static void daemon_reconfigure(void* arg)
|
|||
char const* configDir;
|
||||
|
||||
/* reopen the logfile to allow for log rotation */
|
||||
if (logfileName != NULL)
|
||||
if (logfileName != nullptr)
|
||||
{
|
||||
reopen_log_file(logfileName);
|
||||
}
|
||||
|
@ -648,7 +656,7 @@ static void daemon_stop(void* arg)
|
|||
{
|
||||
TR_UNUSED(arg);
|
||||
|
||||
event_base_loopexit(ev_base, NULL);
|
||||
event_base_loopexit(ev_base, nullptr);
|
||||
}
|
||||
|
||||
static int daemon_start(void* varg, bool foreground)
|
||||
|
@ -660,9 +668,9 @@ static int daemon_start(void* varg, bool foreground)
|
|||
bool boolVal;
|
||||
char const* pid_filename;
|
||||
bool pidfile_created = false;
|
||||
tr_session* session = NULL;
|
||||
struct event* status_ev = NULL;
|
||||
tr_watchdir_t watchdir = NULL;
|
||||
tr_session* session = nullptr;
|
||||
struct event* status_ev = nullptr;
|
||||
tr_watchdir_t watchdir = nullptr;
|
||||
|
||||
auto* arg = static_cast<daemon_data*>(varg);
|
||||
tr_variant* const settings = &arg->settings;
|
||||
|
@ -676,7 +684,7 @@ static int daemon_start(void* varg, bool foreground)
|
|||
/* setup event state */
|
||||
ev_base = event_base_new();
|
||||
|
||||
if (ev_base == NULL)
|
||||
if (ev_base == nullptr)
|
||||
{
|
||||
char buf[256];
|
||||
tr_snprintf(buf, sizeof(buf), "Failed to init daemon event state: %s", tr_strerror(errno));
|
||||
|
@ -689,15 +697,15 @@ static int daemon_start(void* varg, bool foreground)
|
|||
tr_formatter_size_init(DISK_K, DISK_K_STR, DISK_M_STR, DISK_G_STR, DISK_T_STR);
|
||||
tr_formatter_speed_init(SPEED_K, SPEED_K_STR, SPEED_M_STR, SPEED_G_STR, SPEED_T_STR);
|
||||
session = tr_sessionInit(configDir, true, settings);
|
||||
tr_sessionSetRPCCallback(session, on_rpc_callback, NULL);
|
||||
tr_logAddNamedInfo(NULL, "Using settings from \"%s\"", configDir);
|
||||
tr_sessionSetRPCCallback(session, on_rpc_callback, nullptr);
|
||||
tr_logAddNamedInfo(nullptr, "Using settings from \"%s\"", configDir);
|
||||
tr_sessionSaveSettings(session, configDir, settings);
|
||||
|
||||
pid_filename = NULL;
|
||||
(void)tr_variantDictFindStr(settings, key_pidfile, &pid_filename, NULL);
|
||||
pid_filename = nullptr;
|
||||
(void)tr_variantDictFindStr(settings, key_pidfile, &pid_filename, nullptr);
|
||||
if (!tr_str_is_empty(pid_filename))
|
||||
{
|
||||
tr_error* error = NULL;
|
||||
tr_error* error = nullptr;
|
||||
tr_sys_file_t fp = tr_sys_file_open(
|
||||
pid_filename,
|
||||
TR_SYS_FILE_WRITE | TR_SYS_FILE_CREATE | TR_SYS_FILE_TRUNCATE,
|
||||
|
@ -706,8 +714,8 @@ static int daemon_start(void* varg, bool foreground)
|
|||
|
||||
if (fp != TR_BAD_SYS_FILE)
|
||||
{
|
||||
tr_sys_file_write_fmt(fp, "%d", NULL, (int)getpid());
|
||||
tr_sys_file_close(fp, NULL);
|
||||
tr_sys_file_write_fmt(fp, "%d", nullptr, (int)getpid());
|
||||
tr_sys_file_close(fp, nullptr);
|
||||
tr_logAddInfo("Saved pidfile \"%s\"", pid_filename);
|
||||
pidfile_created = true;
|
||||
}
|
||||
|
@ -742,11 +750,11 @@ static int daemon_start(void* varg, bool foreground)
|
|||
force_generic = false;
|
||||
}
|
||||
|
||||
if (tr_variantDictFindStr(settings, TR_KEY_watch_dir, &dir, NULL) && !tr_str_is_empty(dir))
|
||||
if (tr_variantDictFindStr(settings, TR_KEY_watch_dir, &dir, nullptr) && !tr_str_is_empty(dir))
|
||||
{
|
||||
tr_logAddInfo("Watching \"%s\" for new .torrent files", dir);
|
||||
|
||||
if ((watchdir = tr_watchdir_new(dir, &onFileAdded, mySession, ev_base, force_generic)) == NULL)
|
||||
if ((watchdir = tr_watchdir_new(dir, &onFileAdded, mySession, ev_base, force_generic)) == nullptr)
|
||||
{
|
||||
goto CLEANUP;
|
||||
}
|
||||
|
@ -763,7 +771,7 @@ static int daemon_start(void* varg, bool foreground)
|
|||
tr_ctorSetPaused(ctor, TR_FORCE, true);
|
||||
}
|
||||
|
||||
torrents = tr_sessionLoadTorrents(mySession, ctor, NULL);
|
||||
torrents = tr_sessionLoadTorrents(mySession, ctor, nullptr);
|
||||
tr_free(torrents);
|
||||
tr_ctorFree(ctor);
|
||||
}
|
||||
|
@ -780,9 +788,9 @@ static int daemon_start(void* varg, bool foreground)
|
|||
/* Create new timer event to report daemon status */
|
||||
{
|
||||
constexpr auto one_sec = timeval{ 1, 0 }; // 1 second
|
||||
status_ev = event_new(ev_base, -1, EV_PERSIST, &periodicUpdate, NULL);
|
||||
status_ev = event_new(ev_base, -1, EV_PERSIST, &periodicUpdate, nullptr);
|
||||
|
||||
if (status_ev == NULL)
|
||||
if (status_ev == nullptr)
|
||||
{
|
||||
tr_logAddError("Failed to create status event %s", tr_strerror(errno));
|
||||
goto CLEANUP;
|
||||
|
@ -810,7 +818,7 @@ CLEANUP:
|
|||
|
||||
tr_watchdir_free(watchdir);
|
||||
|
||||
if (status_ev != NULL)
|
||||
if (status_ev != nullptr)
|
||||
{
|
||||
event_del(status_ev);
|
||||
event_free(status_ev);
|
||||
|
@ -837,7 +845,7 @@ CLEANUP:
|
|||
/* cleanup */
|
||||
if (pidfile_created)
|
||||
{
|
||||
tr_sys_path_remove(pid_filename, NULL);
|
||||
tr_sys_path_remove(pid_filename, nullptr);
|
||||
}
|
||||
|
||||
sd_notify(0, "STATUS=\n");
|
||||
|
@ -866,7 +874,7 @@ static bool init_daemon_data(int argc, char* argv[], struct daemon_data* data, b
|
|||
|
||||
if (*foreground && logfile == TR_BAD_SYS_FILE)
|
||||
{
|
||||
logfile = tr_sys_file_get_std(TR_STD_SYS_FILE_ERR, NULL);
|
||||
logfile = tr_sys_file_get_std(TR_STD_SYS_FILE_ERR, nullptr);
|
||||
}
|
||||
|
||||
if (!loaded)
|
||||
|
@ -878,7 +886,7 @@ static bool init_daemon_data(int argc, char* argv[], struct daemon_data* data, b
|
|||
|
||||
if (dumpSettings)
|
||||
{
|
||||
char* str = tr_variantToStr(&data->settings, TR_VARIANT_FMT_JSON, NULL);
|
||||
char* str = tr_variantToStr(&data->settings, TR_VARIANT_FMT_JSON, nullptr);
|
||||
fprintf(stderr, "%s", str);
|
||||
tr_free(str);
|
||||
goto EXIT_EARLY;
|
||||
|
@ -911,7 +919,7 @@ int tr_main(int argc, char* argv[])
|
|||
&daemon_reconfigure,
|
||||
};
|
||||
|
||||
tr_error* error = NULL;
|
||||
tr_error* error = nullptr;
|
||||
|
||||
if (!dtr_daemon(&cb, &data, foreground, &ret, &error))
|
||||
{
|
||||
|
|
148
gtk/actions.cc
148
gtk/actions.cc
|
@ -18,8 +18,8 @@
|
|||
#include "tr-core.h"
|
||||
#include "tr-prefs.h"
|
||||
|
||||
static TrCore* myCore = NULL;
|
||||
static GtkActionGroup* myGroup = NULL;
|
||||
static TrCore* myCore = nullptr;
|
||||
static GtkActionGroup* myGroup = nullptr;
|
||||
|
||||
static void action_cb(GtkAction* a, gpointer user_data)
|
||||
{
|
||||
|
@ -27,15 +27,15 @@ static void action_cb(GtkAction* a, gpointer user_data)
|
|||
}
|
||||
|
||||
static GtkRadioActionEntry sort_radio_entries[] = {
|
||||
{ "sort-by-activity", NULL, N_("Sort by _Activity"), NULL, NULL, 0 },
|
||||
{ "sort-by-name", NULL, N_("Sort by _Name"), NULL, NULL, 1 },
|
||||
{ "sort-by-progress", NULL, N_("Sort by _Progress"), NULL, NULL, 2 },
|
||||
{ "sort-by-queue", NULL, N_("Sort by _Queue"), NULL, NULL, 3 },
|
||||
{ "sort-by-ratio", NULL, N_("Sort by Rati_o"), NULL, NULL, 4 },
|
||||
{ "sort-by-state", NULL, N_("Sort by Stat_e"), NULL, NULL, 5 },
|
||||
{ "sort-by-age", NULL, N_("Sort by A_ge"), NULL, NULL, 6 },
|
||||
{ "sort-by-time-left", NULL, N_("Sort by Time _Left"), NULL, NULL, 7 },
|
||||
{ "sort-by-size", NULL, N_("Sort by Si_ze"), NULL, NULL, 8 },
|
||||
{ "sort-by-activity", nullptr, N_("Sort by _Activity"), nullptr, nullptr, 0 },
|
||||
{ "sort-by-name", nullptr, N_("Sort by _Name"), nullptr, nullptr, 1 },
|
||||
{ "sort-by-progress", nullptr, N_("Sort by _Progress"), nullptr, nullptr, 2 },
|
||||
{ "sort-by-queue", nullptr, N_("Sort by _Queue"), nullptr, nullptr, 3 },
|
||||
{ "sort-by-ratio", nullptr, N_("Sort by Rati_o"), nullptr, nullptr, 4 },
|
||||
{ "sort-by-state", nullptr, N_("Sort by Stat_e"), nullptr, nullptr, 5 },
|
||||
{ "sort-by-age", nullptr, N_("Sort by A_ge"), nullptr, nullptr, 6 },
|
||||
{ "sort-by-time-left", nullptr, N_("Sort by Time _Left"), nullptr, nullptr, 7 },
|
||||
{ "sort-by-size", nullptr, N_("Sort by Si_ze"), nullptr, nullptr, 8 },
|
||||
};
|
||||
|
||||
static void sort_changed_cb(GtkAction* action, GtkRadioAction* current, gpointer user_data)
|
||||
|
@ -51,8 +51,8 @@ static void sort_changed_cb(GtkAction* action, GtkRadioAction* current, gpointer
|
|||
}
|
||||
|
||||
static GtkToggleActionEntry show_toggle_entries[] = {
|
||||
{ "toggle-main-window", NULL, N_("_Show Transmission"), NULL, NULL, G_CALLBACK(action_cb), TRUE },
|
||||
{ "toggle-message-log", NULL, N_("Message _Log"), NULL, NULL, G_CALLBACK(action_cb), FALSE },
|
||||
{ "toggle-main-window", nullptr, N_("_Show Transmission"), nullptr, nullptr, G_CALLBACK(action_cb), TRUE },
|
||||
{ "toggle-message-log", nullptr, N_("Message _Log"), nullptr, nullptr, G_CALLBACK(action_cb), FALSE },
|
||||
};
|
||||
|
||||
static void toggle_pref_cb(GtkToggleAction* action, gpointer user_data)
|
||||
|
@ -66,26 +66,32 @@ static void toggle_pref_cb(GtkToggleAction* action, gpointer user_data)
|
|||
}
|
||||
|
||||
static GtkToggleActionEntry pref_toggle_entries[] = {
|
||||
{ "alt-speed-enabled", NULL, N_("Enable Alternative Speed _Limits"), NULL, NULL, G_CALLBACK(toggle_pref_cb), FALSE },
|
||||
{ "compact-view", NULL, N_("_Compact View"), "<alt>C", NULL, G_CALLBACK(toggle_pref_cb), FALSE },
|
||||
{ "sort-reversed", NULL, N_("Re_verse Sort Order"), NULL, NULL, G_CALLBACK(toggle_pref_cb), FALSE },
|
||||
{ "show-filterbar", NULL, N_("_Filterbar"), NULL, NULL, G_CALLBACK(toggle_pref_cb), FALSE },
|
||||
{ "show-statusbar", NULL, N_("_Statusbar"), NULL, NULL, G_CALLBACK(toggle_pref_cb), FALSE },
|
||||
{ "show-toolbar", NULL, N_("_Toolbar"), NULL, NULL, G_CALLBACK(toggle_pref_cb), FALSE },
|
||||
{ "alt-speed-enabled",
|
||||
nullptr,
|
||||
N_("Enable Alternative Speed _Limits"),
|
||||
nullptr,
|
||||
nullptr,
|
||||
G_CALLBACK(toggle_pref_cb),
|
||||
FALSE },
|
||||
{ "compact-view", nullptr, N_("_Compact View"), "<alt>C", nullptr, G_CALLBACK(toggle_pref_cb), FALSE },
|
||||
{ "sort-reversed", nullptr, N_("Re_verse Sort Order"), nullptr, nullptr, G_CALLBACK(toggle_pref_cb), FALSE },
|
||||
{ "show-filterbar", nullptr, N_("_Filterbar"), nullptr, nullptr, G_CALLBACK(toggle_pref_cb), FALSE },
|
||||
{ "show-statusbar", nullptr, N_("_Statusbar"), nullptr, nullptr, G_CALLBACK(toggle_pref_cb), FALSE },
|
||||
{ "show-toolbar", nullptr, N_("_Toolbar"), nullptr, nullptr, G_CALLBACK(toggle_pref_cb), FALSE },
|
||||
};
|
||||
|
||||
static GtkActionEntry entries[] = {
|
||||
{ "file-menu", NULL, N_("_File"), NULL, NULL, NULL },
|
||||
{ "torrent-menu", NULL, N_("_Torrent"), NULL, NULL, NULL },
|
||||
{ "view-menu", NULL, N_("_View"), NULL, NULL, NULL },
|
||||
{ "sort-menu", NULL, N_("_Sort Torrents By"), NULL, NULL, NULL },
|
||||
{ "queue-menu", NULL, N_("_Queue"), NULL, NULL, NULL },
|
||||
{ "edit-menu", NULL, N_("_Edit"), NULL, NULL, NULL },
|
||||
{ "help-menu", NULL, N_("_Help"), NULL, NULL, NULL },
|
||||
{ "copy-magnet-link-to-clipboard", "edit-copy", N_("Copy _Magnet Link to Clipboard"), "", NULL, G_CALLBACK(action_cb) },
|
||||
{ "file-menu", nullptr, N_("_File"), nullptr, nullptr, nullptr },
|
||||
{ "torrent-menu", nullptr, N_("_Torrent"), nullptr, nullptr, nullptr },
|
||||
{ "view-menu", nullptr, N_("_View"), nullptr, nullptr, nullptr },
|
||||
{ "sort-menu", nullptr, N_("_Sort Torrents By"), nullptr, nullptr, nullptr },
|
||||
{ "queue-menu", nullptr, N_("_Queue"), nullptr, nullptr, nullptr },
|
||||
{ "edit-menu", nullptr, N_("_Edit"), nullptr, nullptr, nullptr },
|
||||
{ "help-menu", nullptr, N_("_Help"), nullptr, nullptr, nullptr },
|
||||
{ "copy-magnet-link-to-clipboard", "edit-copy", N_("Copy _Magnet Link to Clipboard"), "", nullptr, G_CALLBACK(action_cb) },
|
||||
{ "open-torrent-from-url", "document-open", N_("Open _URL…"), "<control>U", N_("Open URL…"), G_CALLBACK(action_cb) },
|
||||
{ "open-torrent-toolbar", "document-open", N_("_Open"), NULL, N_("Open a torrent"), G_CALLBACK(action_cb) },
|
||||
{ "open-torrent-menu", "document-open", N_("_Open"), NULL, N_("Open a torrent"), G_CALLBACK(action_cb) },
|
||||
{ "open-torrent-toolbar", "document-open", N_("_Open"), nullptr, N_("Open a torrent"), G_CALLBACK(action_cb) },
|
||||
{ "open-torrent-menu", "document-open", N_("_Open"), nullptr, N_("Open a torrent"), G_CALLBACK(action_cb) },
|
||||
{ "torrent-start", "media-playback-start", N_("_Start"), "<control>S", N_("Start torrent"), G_CALLBACK(action_cb) },
|
||||
{ "torrent-start-now",
|
||||
"media-playback-start",
|
||||
|
@ -93,35 +99,45 @@ static GtkActionEntry entries[] = {
|
|||
"<shift><control>S",
|
||||
N_("Start torrent now"),
|
||||
G_CALLBACK(action_cb) },
|
||||
{ "show-stats", NULL, N_("_Statistics"), NULL, NULL, G_CALLBACK(action_cb) },
|
||||
{ "donate", NULL, N_("_Donate"), NULL, NULL, G_CALLBACK(action_cb) },
|
||||
{ "torrent-verify", NULL, N_("_Verify Local Data"), "<control>V", NULL, G_CALLBACK(action_cb) },
|
||||
{ "show-stats", nullptr, N_("_Statistics"), nullptr, nullptr, G_CALLBACK(action_cb) },
|
||||
{ "donate", nullptr, N_("_Donate"), nullptr, nullptr, G_CALLBACK(action_cb) },
|
||||
{ "torrent-verify", nullptr, N_("_Verify Local Data"), "<control>V", nullptr, G_CALLBACK(action_cb) },
|
||||
{ "torrent-stop", "media-playback-pause", N_("_Pause"), "<control>P", N_("Pause torrent"), G_CALLBACK(action_cb) },
|
||||
{ "pause-all-torrents", "media-playback-pause", N_("_Pause All"), NULL, N_("Pause all torrents"), G_CALLBACK(action_cb) },
|
||||
{ "start-all-torrents", "media-playback-start", N_("_Start All"), NULL, N_("Start all torrents"), G_CALLBACK(action_cb) },
|
||||
{ "relocate-torrent", NULL, N_("Set _Location…"), NULL, NULL, G_CALLBACK(action_cb) },
|
||||
{ "remove-torrent", "list-remove", N_("Remove torrent"), "Delete", NULL, G_CALLBACK(action_cb) },
|
||||
{ "delete-torrent", "edit-delete", N_("_Delete Files and Remove"), "<shift>Delete", NULL, G_CALLBACK(action_cb) },
|
||||
{ "new-torrent", "document-new", N_("_New…"), NULL, N_("Create a torrent"), G_CALLBACK(action_cb) },
|
||||
{ "quit", "application-exit", N_("_Quit"), NULL, NULL, G_CALLBACK(action_cb) },
|
||||
{ "select-all", "edit-select-all", N_("Select _All"), "<control>A", NULL, G_CALLBACK(action_cb) },
|
||||
{ "deselect-all", NULL, N_("Dese_lect All"), "<shift><control>A", NULL, G_CALLBACK(action_cb) },
|
||||
{ "edit-preferences", "preferences-system", N_("_Preferences"), NULL, NULL, G_CALLBACK(action_cb) },
|
||||
{ "pause-all-torrents",
|
||||
"media-playback-pause",
|
||||
N_("_Pause All"),
|
||||
nullptr,
|
||||
N_("Pause all torrents"),
|
||||
G_CALLBACK(action_cb) },
|
||||
{ "start-all-torrents",
|
||||
"media-playback-start",
|
||||
N_("_Start All"),
|
||||
nullptr,
|
||||
N_("Start all torrents"),
|
||||
G_CALLBACK(action_cb) },
|
||||
{ "relocate-torrent", nullptr, N_("Set _Location…"), nullptr, nullptr, G_CALLBACK(action_cb) },
|
||||
{ "remove-torrent", "list-remove", N_("Remove torrent"), "Delete", nullptr, G_CALLBACK(action_cb) },
|
||||
{ "delete-torrent", "edit-delete", N_("_Delete Files and Remove"), "<shift>Delete", nullptr, G_CALLBACK(action_cb) },
|
||||
{ "new-torrent", "document-new", N_("_New…"), nullptr, N_("Create a torrent"), G_CALLBACK(action_cb) },
|
||||
{ "quit", "application-exit", N_("_Quit"), nullptr, nullptr, G_CALLBACK(action_cb) },
|
||||
{ "select-all", "edit-select-all", N_("Select _All"), "<control>A", nullptr, G_CALLBACK(action_cb) },
|
||||
{ "deselect-all", nullptr, N_("Dese_lect All"), "<shift><control>A", nullptr, G_CALLBACK(action_cb) },
|
||||
{ "edit-preferences", "preferences-system", N_("_Preferences"), nullptr, nullptr, G_CALLBACK(action_cb) },
|
||||
{ "show-torrent-properties",
|
||||
"document-properties",
|
||||
N_("_Properties"),
|
||||
"<alt>Return",
|
||||
N_("Torrent properties"),
|
||||
G_CALLBACK(action_cb) },
|
||||
{ "open-torrent-folder", "document-open", N_("Open Fold_er"), "<control>E", NULL, G_CALLBACK(action_cb) },
|
||||
{ "show-about-dialog", "help-about", N_("_About"), NULL, NULL, G_CALLBACK(action_cb) },
|
||||
{ "help", "help-browser", N_("_Contents"), "F1", NULL, G_CALLBACK(action_cb) },
|
||||
{ "torrent-reannounce", "network-workgroup", N_("Ask Tracker for _More Peers"), NULL, NULL, G_CALLBACK(action_cb) },
|
||||
{ "queue-move-top", "go-top", N_("Move to _Top"), NULL, NULL, G_CALLBACK(action_cb) },
|
||||
{ "queue-move-up", "go-up", N_("Move _Up"), "<control>Up", NULL, G_CALLBACK(action_cb) },
|
||||
{ "queue-move-down", "go-down", N_("Move _Down"), "<control>Down", NULL, G_CALLBACK(action_cb) },
|
||||
{ "queue-move-bottom", "go-bottom", N_("Move to _Bottom"), NULL, NULL, G_CALLBACK(action_cb) },
|
||||
{ "present-main-window", NULL, N_("Present Main Window"), NULL, NULL, G_CALLBACK(action_cb) },
|
||||
{ "open-torrent-folder", "document-open", N_("Open Fold_er"), "<control>E", nullptr, G_CALLBACK(action_cb) },
|
||||
{ "show-about-dialog", "help-about", N_("_About"), nullptr, nullptr, G_CALLBACK(action_cb) },
|
||||
{ "help", "help-browser", N_("_Contents"), "F1", nullptr, G_CALLBACK(action_cb) },
|
||||
{ "torrent-reannounce", "network-workgroup", N_("Ask Tracker for _More Peers"), nullptr, nullptr, G_CALLBACK(action_cb) },
|
||||
{ "queue-move-top", "go-top", N_("Move to _Top"), nullptr, nullptr, G_CALLBACK(action_cb) },
|
||||
{ "queue-move-up", "go-up", N_("Move _Up"), "<control>Up", nullptr, G_CALLBACK(action_cb) },
|
||||
{ "queue-move-down", "go-down", N_("Move _Down"), "<control>Down", nullptr, G_CALLBACK(action_cb) },
|
||||
{ "queue-move-bottom", "go-bottom", N_("Move to _Bottom"), nullptr, nullptr, G_CALLBACK(action_cb) },
|
||||
{ "present-main-window", nullptr, N_("Present Main Window"), nullptr, nullptr, G_CALLBACK(action_cb) },
|
||||
};
|
||||
|
||||
typedef struct
|
||||
|
@ -157,11 +173,11 @@ static void register_my_icons(void)
|
|||
GdkPixbuf* p;
|
||||
gchar* resource_path = g_strdup_printf(TR_RESOURCE_PATH "icons/%s.png", my_fallback_icons[i].filename);
|
||||
|
||||
p = gdk_pixbuf_new_from_resource(resource_path, NULL);
|
||||
p = gdk_pixbuf_new_from_resource(resource_path, nullptr);
|
||||
|
||||
g_free(resource_path);
|
||||
|
||||
if (p != NULL)
|
||||
if (p != nullptr)
|
||||
{
|
||||
int width;
|
||||
GtkIconSet* icon_set;
|
||||
|
@ -181,7 +197,7 @@ static void register_my_icons(void)
|
|||
g_object_unref(G_OBJECT(factory));
|
||||
}
|
||||
|
||||
static GtkUIManager* myUIManager = NULL;
|
||||
static GtkUIManager* myUIManager = nullptr;
|
||||
|
||||
void gtr_actions_set_core(TrCore* core)
|
||||
{
|
||||
|
@ -200,7 +216,7 @@ void gtr_actions_init(GtkUIManager* ui_manager, gpointer callback_user_data)
|
|||
register_my_icons();
|
||||
|
||||
action_group = myGroup = gtk_action_group_new("Actions");
|
||||
gtk_action_group_set_translation_domain(action_group, NULL);
|
||||
gtk_action_group_set_translation_domain(action_group, nullptr);
|
||||
|
||||
match = gtr_pref_string_get(TR_KEY_sort_mode);
|
||||
|
||||
|
@ -218,7 +234,7 @@ void gtr_actions_init(GtkUIManager* ui_manager, gpointer callback_user_data)
|
|||
G_N_ELEMENTS(sort_radio_entries),
|
||||
active,
|
||||
G_CALLBACK(sort_changed_cb),
|
||||
NULL);
|
||||
nullptr);
|
||||
|
||||
gtk_action_group_add_toggle_actions(
|
||||
action_group,
|
||||
|
@ -247,23 +263,23 @@ void gtr_actions_init(GtkUIManager* ui_manager, gpointer callback_user_data)
|
|||
*****
|
||||
****/
|
||||
|
||||
static GHashTable* key_to_action = NULL;
|
||||
static GHashTable* key_to_action = nullptr;
|
||||
|
||||
static void ensure_action_map_loaded(GtkUIManager* uim)
|
||||
{
|
||||
if (key_to_action != NULL)
|
||||
if (key_to_action != nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
key_to_action = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
|
||||
key_to_action = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, nullptr);
|
||||
|
||||
for (GList* l = gtk_ui_manager_get_action_groups(uim); l != NULL; l = l->next)
|
||||
for (GList* l = gtk_ui_manager_get_action_groups(uim); l != nullptr; l = l->next)
|
||||
{
|
||||
GtkActionGroup* action_group = GTK_ACTION_GROUP(l->data);
|
||||
GList* actions = gtk_action_group_list_actions(action_group);
|
||||
|
||||
for (GList* ait = actions; ait != NULL; ait = ait->next)
|
||||
for (GList* ait = actions; ait != nullptr; ait = ait->next)
|
||||
{
|
||||
GtkAction* action = GTK_ACTION(ait->data);
|
||||
char const* name = gtk_action_get_name(action);
|
||||
|
@ -284,7 +300,7 @@ void gtr_action_activate(char const* name)
|
|||
{
|
||||
GtkAction* action = get_action(name);
|
||||
|
||||
g_assert(action != NULL);
|
||||
g_assert(action != nullptr);
|
||||
gtk_action_activate(action);
|
||||
}
|
||||
|
||||
|
@ -292,16 +308,16 @@ void gtr_action_set_sensitive(char const* name, gboolean b)
|
|||
{
|
||||
GtkAction* action = get_action(name);
|
||||
|
||||
g_assert(action != NULL);
|
||||
g_object_set(action, "sensitive", b, NULL);
|
||||
g_assert(action != nullptr);
|
||||
g_object_set(action, "sensitive", b, nullptr);
|
||||
}
|
||||
|
||||
void gtr_action_set_important(char const* name, gboolean b)
|
||||
{
|
||||
GtkAction* action = get_action(name);
|
||||
|
||||
g_assert(action != NULL);
|
||||
g_object_set(action, "is-important", b, NULL);
|
||||
g_assert(action != nullptr);
|
||||
g_object_set(action, "is-important", b, nullptr);
|
||||
}
|
||||
|
||||
void gtr_action_set_toggled(char const* name, gboolean b)
|
||||
|
|
16
gtk/conf.cc
16
gtk/conf.cc
|
@ -40,7 +40,7 @@
|
|||
|
||||
#define MY_CONFIG_NAME "transmission"
|
||||
|
||||
static char* gl_confdir = NULL;
|
||||
static char* gl_confdir = nullptr;
|
||||
|
||||
void gtr_pref_init(char const* config_dir)
|
||||
{
|
||||
|
@ -63,12 +63,12 @@ static void tr_prefs_init_defaults(tr_variant* d)
|
|||
|
||||
dir = g_get_user_special_dir(G_USER_DIRECTORY_DOWNLOAD);
|
||||
|
||||
if (dir == NULL)
|
||||
if (dir == nullptr)
|
||||
{
|
||||
dir = g_get_user_special_dir(G_USER_DIRECTORY_DESKTOP);
|
||||
}
|
||||
|
||||
if (dir == NULL)
|
||||
if (dir == nullptr)
|
||||
{
|
||||
dir = tr_getDefaultDownloadDir();
|
||||
}
|
||||
|
@ -109,7 +109,7 @@ static void tr_prefs_init_defaults(tr_variant* d)
|
|||
static void ensure_sound_cmd_is_a_list(tr_variant* dict)
|
||||
{
|
||||
tr_quark key = TR_KEY_torrent_complete_sound_command;
|
||||
tr_variant* list = NULL;
|
||||
tr_variant* list = nullptr;
|
||||
if (tr_variantDictFindList(dict, key, &list))
|
||||
{
|
||||
return;
|
||||
|
@ -196,9 +196,9 @@ void gtr_pref_flag_set(tr_quark const key, gboolean value)
|
|||
|
||||
char** gtr_pref_strv_get(tr_quark const key)
|
||||
{
|
||||
char** ret = NULL;
|
||||
char** ret = nullptr;
|
||||
|
||||
tr_variant* list = NULL;
|
||||
tr_variant* list = nullptr;
|
||||
if (tr_variantDictFindList(getPrefs(), key, &list))
|
||||
{
|
||||
size_t out = 0;
|
||||
|
@ -207,7 +207,7 @@ char** gtr_pref_strv_get(tr_quark const key)
|
|||
|
||||
for (size_t i = 0; i < n; ++i)
|
||||
{
|
||||
char const* str = NULL;
|
||||
char const* str = nullptr;
|
||||
size_t len = 0;
|
||||
if (tr_variantGetStr(tr_variantListChild(list, i), &str, &len))
|
||||
{
|
||||
|
@ -223,7 +223,7 @@ char const* gtr_pref_string_get(tr_quark const key)
|
|||
{
|
||||
char const* str;
|
||||
|
||||
return tr_variantDictFindStr(getPrefs(), key, &str, NULL) ? str : NULL;
|
||||
return tr_variantDictFindStr(getPrefs(), key, &str, nullptr) ? str : nullptr;
|
||||
}
|
||||
|
||||
void gtr_pref_string_set(tr_quark const key, char const* value)
|
||||
|
|
253
gtk/details.cc
253
gtk/details.cc
|
@ -110,9 +110,9 @@ static tr_torrent** getTorrents(struct DetailsImpl* d, int* setmeCount)
|
|||
int const n = g_slist_length(d->ids);
|
||||
tr_torrent** torrents = g_new(tr_torrent*, n);
|
||||
|
||||
for (GSList* l = d->ids; l != NULL; l = l->next)
|
||||
for (GSList* l = d->ids; l != nullptr; l = l->next)
|
||||
{
|
||||
if ((torrents[torrentCount] = gtr_core_find_torrent(d->core, GPOINTER_TO_INT(l->data))) != NULL)
|
||||
if ((torrents[torrentCount] = gtr_core_find_torrent(d->core, GPOINTER_TO_INT(l->data))) != nullptr)
|
||||
{
|
||||
++torrentCount;
|
||||
}
|
||||
|
@ -365,7 +365,7 @@ static void torrent_set_bool(struct DetailsImpl* di, tr_quark const key, gboolea
|
|||
tr_variantDictAddBool(args, key, value);
|
||||
tr_variant* const ids = tr_variantDictAddList(args, TR_KEY_ids, g_slist_length(di->ids));
|
||||
|
||||
for (GSList* l = di->ids; l != NULL; l = l->next)
|
||||
for (GSList* l = di->ids; l != nullptr; l = l->next)
|
||||
{
|
||||
tr_variantListAddInt(ids, GPOINTER_TO_INT(l->data));
|
||||
}
|
||||
|
@ -384,7 +384,7 @@ static void torrent_set_int(struct DetailsImpl* di, tr_quark const key, int valu
|
|||
tr_variantDictAddInt(args, key, value);
|
||||
tr_variant* const ids = tr_variantDictAddList(args, TR_KEY_ids, g_slist_length(di->ids));
|
||||
|
||||
for (GSList* l = di->ids; l != NULL; l = l->next)
|
||||
for (GSList* l = di->ids; l != nullptr; l = l->next)
|
||||
{
|
||||
tr_variantListAddInt(ids, GPOINTER_TO_INT(l->data));
|
||||
}
|
||||
|
@ -403,7 +403,7 @@ static void torrent_set_real(struct DetailsImpl* di, tr_quark const key, double
|
|||
tr_variantDictAddReal(args, key, value);
|
||||
tr_variant* const ids = tr_variantDictAddList(args, TR_KEY_ids, g_slist_length(di->ids));
|
||||
|
||||
for (GSList* l = di->ids; l != NULL; l = l->next)
|
||||
for (GSList* l = di->ids; l != nullptr; l = l->next)
|
||||
{
|
||||
tr_variantListAddInt(ids, GPOINTER_TO_INT(l->data));
|
||||
}
|
||||
|
@ -480,7 +480,7 @@ static GtkWidget* ratio_combo_new(void)
|
|||
TR_ARG_TUPLE(_("Use global settings"), TR_RATIOLIMIT_GLOBAL),
|
||||
TR_ARG_TUPLE(_("Seed regardless of ratio"), TR_RATIOLIMIT_UNLIMITED),
|
||||
TR_ARG_TUPLE(_("Stop seeding at ratio:"), TR_RATIOLIMIT_SINGLE),
|
||||
NULL);
|
||||
nullptr);
|
||||
g_object_set_qdata(G_OBJECT(w), ARG_KEY, GINT_TO_POINTER(TR_KEY_seedRatioMode));
|
||||
return w;
|
||||
}
|
||||
|
@ -491,7 +491,7 @@ static GtkWidget* idle_combo_new(void)
|
|||
TR_ARG_TUPLE(_("Use global settings"), TR_IDLELIMIT_GLOBAL),
|
||||
TR_ARG_TUPLE(_("Seed regardless of activity"), TR_IDLELIMIT_UNLIMITED),
|
||||
TR_ARG_TUPLE(_("Stop seeding if idle for N minutes:"), TR_IDLELIMIT_SINGLE),
|
||||
NULL);
|
||||
nullptr);
|
||||
g_object_set_qdata(G_OBJECT(w), ARG_KEY, GINT_TO_POINTER(TR_KEY_seedIdleMode));
|
||||
return w;
|
||||
}
|
||||
|
@ -525,7 +525,7 @@ static GtkWidget* options_page_new(struct DetailsImpl* d)
|
|||
w = gtk_spin_button_new_with_range(0, INT_MAX, 5);
|
||||
tag = g_signal_connect(w, "value-changed", G_CALLBACK(down_speed_spun_cb), d);
|
||||
d->down_limit_spin_tag = tag;
|
||||
hig_workarea_add_row_w(t, &row, tb, w, NULL);
|
||||
hig_workarea_add_row_w(t, &row, tb, w, nullptr);
|
||||
d->down_limit_spin = w;
|
||||
|
||||
g_snprintf(buf, sizeof(buf), _("Limit _upload speed (%s):"), _(speed_K_str));
|
||||
|
@ -537,11 +537,11 @@ static GtkWidget* options_page_new(struct DetailsImpl* d)
|
|||
w = gtk_spin_button_new_with_range(0, INT_MAX, 5);
|
||||
tag = g_signal_connect(w, "value-changed", G_CALLBACK(up_speed_spun_cb), d);
|
||||
d->up_limit_spin_tag = tag;
|
||||
hig_workarea_add_row_w(t, &row, tb, w, NULL);
|
||||
hig_workarea_add_row_w(t, &row, tb, w, nullptr);
|
||||
d->up_limit_sping = w;
|
||||
|
||||
w = new_priority_combo(d);
|
||||
hig_workarea_add_row(t, &row, _("Torrent _priority:"), w, NULL);
|
||||
hig_workarea_add_row(t, &row, _("Torrent _priority:"), w, nullptr);
|
||||
d->bandwidth_combo = w;
|
||||
|
||||
hig_workarea_add_section_divider(t, &row);
|
||||
|
@ -555,7 +555,7 @@ static GtkWidget* options_page_new(struct DetailsImpl* d)
|
|||
gtk_entry_set_width_chars(GTK_ENTRY(w), 7);
|
||||
d->ratio_spin_tag = g_signal_connect(w, "value-changed", G_CALLBACK(ratio_spun_cb), d);
|
||||
gtk_box_pack_start(GTK_BOX(h), w, FALSE, FALSE, 0);
|
||||
hig_workarea_add_row(t, &row, _("_Ratio:"), h, NULL);
|
||||
hig_workarea_add_row(t, &row, _("_Ratio:"), h, nullptr);
|
||||
|
||||
h = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, GUI_PAD);
|
||||
w = d->idle_combo = idle_combo_new();
|
||||
|
@ -564,7 +564,7 @@ static GtkWidget* options_page_new(struct DetailsImpl* d)
|
|||
w = d->idle_spin = gtk_spin_button_new_with_range(1, 40320, 5);
|
||||
d->idle_spin_tag = g_signal_connect(w, "value-changed", G_CALLBACK(idle_spun_cb), d);
|
||||
gtk_box_pack_start(GTK_BOX(h), w, FALSE, FALSE, 0);
|
||||
hig_workarea_add_row(t, &row, _("_Idle:"), h, NULL);
|
||||
hig_workarea_add_row(t, &row, _("_Idle:"), h, nullptr);
|
||||
|
||||
hig_workarea_add_section_divider(t, &row);
|
||||
hig_workarea_add_section_title(t, &row, _("Peer Connections"));
|
||||
|
@ -617,7 +617,7 @@ static char const* activityString(int activity, bool finished)
|
|||
* This way if the user has text selected, refreshing won't deselect it */
|
||||
static void gtr_text_buffer_set_text(GtkTextBuffer* b, char const* str)
|
||||
{
|
||||
if (str == NULL)
|
||||
if (str == nullptr)
|
||||
{
|
||||
str = "";
|
||||
}
|
||||
|
@ -627,7 +627,7 @@ static void gtr_text_buffer_set_text(GtkTextBuffer* b, char const* str)
|
|||
gtk_text_buffer_get_bounds(b, &start, &end);
|
||||
char* old_str = gtk_text_buffer_get_text(b, &start, &end, FALSE);
|
||||
|
||||
if (old_str == NULL || g_strcmp0(old_str, str) != 0)
|
||||
if (old_str == nullptr || g_strcmp0(old_str, str) != 0)
|
||||
{
|
||||
gtk_text_buffer_set_text(b, str, -1);
|
||||
}
|
||||
|
@ -647,7 +647,7 @@ static char* get_short_date_string(time_t t)
|
|||
|
||||
tr_localtime_r(&t, &tm);
|
||||
strftime(buf, sizeof(buf), "%d %b %Y", &tm);
|
||||
return g_locale_to_utf8(buf, -1, NULL, NULL, NULL);
|
||||
return g_locale_to_utf8(buf, -1, nullptr, nullptr, nullptr);
|
||||
}
|
||||
|
||||
static void refreshInfo(struct DetailsImpl* di, tr_torrent** torrents, int n)
|
||||
|
@ -701,7 +701,7 @@ static void refreshInfo(struct DetailsImpl* di, tr_torrent** torrents, int n)
|
|||
}
|
||||
else
|
||||
{
|
||||
char const* creator = infos[0]->creator != NULL ? infos[0]->creator : "";
|
||||
char const* creator = infos[0]->creator != nullptr ? infos[0]->creator : "";
|
||||
time_t const date = infos[0]->dateCreated;
|
||||
char* datestr = get_short_date_string(date);
|
||||
gboolean mixed_creator = FALSE;
|
||||
|
@ -709,7 +709,7 @@ static void refreshInfo(struct DetailsImpl* di, tr_torrent** torrents, int n)
|
|||
|
||||
for (int i = 1; i < n; ++i)
|
||||
{
|
||||
mixed_creator |= g_strcmp0(creator, infos[i]->creator != NULL ? infos[i]->creator : "") != 0;
|
||||
mixed_creator |= g_strcmp0(creator, infos[i]->creator != nullptr ? infos[i]->creator : "") != 0;
|
||||
mixed_date |= date != infos[i]->dateCreated;
|
||||
}
|
||||
|
||||
|
@ -754,12 +754,12 @@ static void refreshInfo(struct DetailsImpl* di, tr_torrent** torrents, int n)
|
|||
}
|
||||
else
|
||||
{
|
||||
char const* baseline = infos[0]->comment != NULL ? infos[0]->comment : "";
|
||||
char const* baseline = infos[0]->comment != nullptr ? infos[0]->comment : "";
|
||||
bool is_uniform = true;
|
||||
|
||||
for (int i = 1; is_uniform && i < n; ++i)
|
||||
{
|
||||
is_uniform = g_strcmp0(baseline, infos[i]->comment != NULL ? infos[i]->comment : "") == 0;
|
||||
is_uniform = g_strcmp0(baseline, infos[i]->comment != nullptr ? infos[i]->comment : "") == 0;
|
||||
}
|
||||
|
||||
str = is_uniform ? baseline : mixed;
|
||||
|
@ -839,7 +839,7 @@ static void refreshInfo(struct DetailsImpl* di, tr_torrent** torrents, int n)
|
|||
}
|
||||
else
|
||||
{
|
||||
str = tr_strltime(buf, time(NULL) - baseline, sizeof(buf));
|
||||
str = tr_strltime(buf, time(nullptr) - baseline, sizeof(buf));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1112,7 +1112,7 @@ static void refreshInfo(struct DetailsImpl* di, tr_torrent** torrents, int n)
|
|||
}
|
||||
else
|
||||
{
|
||||
time_t const period = time(NULL) - latest;
|
||||
time_t const period = time(nullptr) - latest;
|
||||
|
||||
if (period < 5)
|
||||
{
|
||||
|
@ -1148,88 +1148,88 @@ static GtkWidget* info_page_new(struct DetailsImpl* di)
|
|||
hig_workarea_add_section_title(t, &row, _("Activity"));
|
||||
|
||||
/* size */
|
||||
l = di->size_lb = gtk_label_new(NULL);
|
||||
l = di->size_lb = gtk_label_new(nullptr);
|
||||
gtk_label_set_single_line_mode(GTK_LABEL(l), TRUE);
|
||||
hig_workarea_add_row(t, &row, _("Torrent size:"), l, NULL);
|
||||
hig_workarea_add_row(t, &row, _("Torrent size:"), l, nullptr);
|
||||
|
||||
/* have */
|
||||
l = di->have_lb = gtk_label_new(NULL);
|
||||
l = di->have_lb = gtk_label_new(nullptr);
|
||||
gtk_label_set_single_line_mode(GTK_LABEL(l), TRUE);
|
||||
hig_workarea_add_row(t, &row, _("Have:"), l, NULL);
|
||||
hig_workarea_add_row(t, &row, _("Have:"), l, nullptr);
|
||||
|
||||
/* uploaded */
|
||||
l = di->ul_lb = gtk_label_new(NULL);
|
||||
l = di->ul_lb = gtk_label_new(nullptr);
|
||||
gtk_label_set_single_line_mode(GTK_LABEL(l), TRUE);
|
||||
hig_workarea_add_row(t, &row, _("Uploaded:"), l, NULL);
|
||||
hig_workarea_add_row(t, &row, _("Uploaded:"), l, nullptr);
|
||||
|
||||
/* downloaded */
|
||||
l = di->dl_lb = gtk_label_new(NULL);
|
||||
l = di->dl_lb = gtk_label_new(nullptr);
|
||||
gtk_label_set_single_line_mode(GTK_LABEL(l), TRUE);
|
||||
hig_workarea_add_row(t, &row, _("Downloaded:"), l, NULL);
|
||||
hig_workarea_add_row(t, &row, _("Downloaded:"), l, nullptr);
|
||||
|
||||
/* state */
|
||||
l = di->state_lb = gtk_label_new(NULL);
|
||||
l = di->state_lb = gtk_label_new(nullptr);
|
||||
gtk_label_set_single_line_mode(GTK_LABEL(l), TRUE);
|
||||
hig_workarea_add_row(t, &row, _("State:"), l, NULL);
|
||||
hig_workarea_add_row(t, &row, _("State:"), l, nullptr);
|
||||
|
||||
/* running for */
|
||||
l = di->date_started_lb = gtk_label_new(NULL);
|
||||
l = di->date_started_lb = gtk_label_new(nullptr);
|
||||
gtk_label_set_single_line_mode(GTK_LABEL(l), TRUE);
|
||||
hig_workarea_add_row(t, &row, _("Running time:"), l, NULL);
|
||||
hig_workarea_add_row(t, &row, _("Running time:"), l, nullptr);
|
||||
|
||||
/* eta */
|
||||
l = di->eta_lb = gtk_label_new(NULL);
|
||||
l = di->eta_lb = gtk_label_new(nullptr);
|
||||
gtk_label_set_single_line_mode(GTK_LABEL(l), TRUE);
|
||||
hig_workarea_add_row(t, &row, _("Remaining time:"), l, NULL);
|
||||
hig_workarea_add_row(t, &row, _("Remaining time:"), l, nullptr);
|
||||
|
||||
/* last activity */
|
||||
l = di->last_activity_lb = gtk_label_new(NULL);
|
||||
l = di->last_activity_lb = gtk_label_new(nullptr);
|
||||
gtk_label_set_single_line_mode(GTK_LABEL(l), TRUE);
|
||||
hig_workarea_add_row(t, &row, _("Last activity:"), l, NULL);
|
||||
hig_workarea_add_row(t, &row, _("Last activity:"), l, nullptr);
|
||||
|
||||
/* error */
|
||||
l = static_cast<GtkWidget*>(g_object_new(GTK_TYPE_LABEL, "selectable", TRUE, "ellipsize", PANGO_ELLIPSIZE_END, NULL));
|
||||
hig_workarea_add_row(t, &row, _("Error:"), l, NULL);
|
||||
l = static_cast<GtkWidget*>(g_object_new(GTK_TYPE_LABEL, "selectable", TRUE, "ellipsize", PANGO_ELLIPSIZE_END, nullptr));
|
||||
hig_workarea_add_row(t, &row, _("Error:"), l, nullptr);
|
||||
di->error_lb = l;
|
||||
|
||||
hig_workarea_add_section_divider(t, &row);
|
||||
hig_workarea_add_section_title(t, &row, _("Details"));
|
||||
|
||||
/* destination */
|
||||
l = static_cast<GtkWidget*>(g_object_new(GTK_TYPE_LABEL, "selectable", TRUE, "ellipsize", PANGO_ELLIPSIZE_END, NULL));
|
||||
hig_workarea_add_row(t, &row, _("Location:"), l, NULL);
|
||||
l = static_cast<GtkWidget*>(g_object_new(GTK_TYPE_LABEL, "selectable", TRUE, "ellipsize", PANGO_ELLIPSIZE_END, nullptr));
|
||||
hig_workarea_add_row(t, &row, _("Location:"), l, nullptr);
|
||||
di->destination_lb = l;
|
||||
|
||||
/* hash */
|
||||
l = static_cast<GtkWidget*>(g_object_new(GTK_TYPE_LABEL, "selectable", TRUE, "ellipsize", PANGO_ELLIPSIZE_END, NULL));
|
||||
hig_workarea_add_row(t, &row, _("Hash:"), l, NULL);
|
||||
l = static_cast<GtkWidget*>(g_object_new(GTK_TYPE_LABEL, "selectable", TRUE, "ellipsize", PANGO_ELLIPSIZE_END, nullptr));
|
||||
hig_workarea_add_row(t, &row, _("Hash:"), l, nullptr);
|
||||
di->hash_lb = l;
|
||||
|
||||
/* privacy */
|
||||
l = gtk_label_new(NULL);
|
||||
l = gtk_label_new(nullptr);
|
||||
gtk_label_set_single_line_mode(GTK_LABEL(l), TRUE);
|
||||
hig_workarea_add_row(t, &row, _("Privacy:"), l, NULL);
|
||||
hig_workarea_add_row(t, &row, _("Privacy:"), l, nullptr);
|
||||
di->privacy_lb = l;
|
||||
|
||||
/* origins */
|
||||
l = static_cast<GtkWidget*>(g_object_new(GTK_TYPE_LABEL, "selectable", TRUE, "ellipsize", PANGO_ELLIPSIZE_END, NULL));
|
||||
hig_workarea_add_row(t, &row, _("Origin:"), l, NULL);
|
||||
l = static_cast<GtkWidget*>(g_object_new(GTK_TYPE_LABEL, "selectable", TRUE, "ellipsize", PANGO_ELLIPSIZE_END, nullptr));
|
||||
hig_workarea_add_row(t, &row, _("Origin:"), l, nullptr);
|
||||
di->origin_lb = l;
|
||||
|
||||
/* comment */
|
||||
b = di->comment_buffer = gtk_text_buffer_new(NULL);
|
||||
b = di->comment_buffer = gtk_text_buffer_new(nullptr);
|
||||
w = gtk_text_view_new_with_buffer(b);
|
||||
gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(w), GTK_WRAP_WORD);
|
||||
gtk_text_view_set_editable(GTK_TEXT_VIEW(w), FALSE);
|
||||
sw = gtk_scrolled_window_new(NULL, NULL);
|
||||
sw = gtk_scrolled_window_new(nullptr, nullptr);
|
||||
gtk_widget_set_size_request(sw, 350, 36);
|
||||
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
|
||||
gtk_container_add(GTK_CONTAINER(sw), w);
|
||||
fr = gtk_frame_new(NULL);
|
||||
fr = gtk_frame_new(nullptr);
|
||||
gtk_frame_set_shadow_type(GTK_FRAME(fr), GTK_SHADOW_IN);
|
||||
gtk_container_add(GTK_CONTAINER(fr), sw);
|
||||
w = hig_workarea_add_tall_row(t, &row, _("Comment:"), fr, NULL);
|
||||
g_object_set(w, "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_START, NULL);
|
||||
w = hig_workarea_add_tall_row(t, &row, _("Comment:"), fr, nullptr);
|
||||
g_object_set(w, "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_START, nullptr);
|
||||
|
||||
hig_workarea_add_section_divider(t, &row);
|
||||
return t;
|
||||
|
@ -1399,10 +1399,10 @@ static void initPeerRow(
|
|||
char const* torrentName,
|
||||
tr_peer_stat const* peer)
|
||||
{
|
||||
g_return_if_fail(peer != NULL);
|
||||
g_return_if_fail(peer != nullptr);
|
||||
|
||||
char const* client = peer->client;
|
||||
if (client == NULL || g_strcmp0(client, "Unknown Client") == 0)
|
||||
if (client == nullptr || g_strcmp0(client, "Unknown Client") == 0)
|
||||
{
|
||||
client = "";
|
||||
}
|
||||
|
@ -1424,7 +1424,7 @@ static void initPeerRow(
|
|||
TR_ARG_TUPLE(PEER_COL_ADDRESS, peer->addr),
|
||||
TR_ARG_TUPLE(PEER_COL_ADDRESS_COLLATED, collated_name),
|
||||
TR_ARG_TUPLE(PEER_COL_CLIENT, client),
|
||||
TR_ARG_TUPLE(PEER_COL_ENCRYPTION_STOCK_ID, peer->isEncrypted ? "transmission-lock" : NULL),
|
||||
TR_ARG_TUPLE(PEER_COL_ENCRYPTION_STOCK_ID, peer->isEncrypted ? "transmission-lock" : nullptr),
|
||||
TR_ARG_TUPLE(PEER_COL_KEY, key),
|
||||
TR_ARG_TUPLE(PEER_COL_TORRENT_NAME, torrentName),
|
||||
-1);
|
||||
|
@ -1441,7 +1441,7 @@ static void refreshPeerRow(GtkListStore* store, GtkTreeIter* iter, tr_peer_stat
|
|||
char cancelled_by_peer[64] = { '\0' };
|
||||
char cancelled_by_client[64] = { '\0' };
|
||||
|
||||
g_return_if_fail(peer != NULL);
|
||||
g_return_if_fail(peer != nullptr);
|
||||
|
||||
if (peer->rateToPeer_KBps > 0.01)
|
||||
{
|
||||
|
@ -1526,7 +1526,7 @@ static void refreshPeerList(struct DetailsImpl* di, tr_torrent** torrents, int n
|
|||
/* step 2: mark all the peers in the list as not-updated */
|
||||
GtkTreeModel* const model = GTK_TREE_MODEL(store);
|
||||
|
||||
if (gtk_tree_model_iter_nth_child(model, &iter, NULL, 0))
|
||||
if (gtk_tree_model_iter_nth_child(model, &iter, nullptr, 0))
|
||||
{
|
||||
do
|
||||
{
|
||||
|
@ -1546,7 +1546,7 @@ static void refreshPeerList(struct DetailsImpl* di, tr_torrent** torrents, int n
|
|||
|
||||
g_snprintf(key, sizeof(key), "%d.%s", tr_torrentId(tor), s->addr);
|
||||
|
||||
if (g_hash_table_lookup(hash, key) == NULL)
|
||||
if (g_hash_table_lookup(hash, key) == nullptr)
|
||||
{
|
||||
GtkTreePath* p;
|
||||
gtk_list_store_append(store, &iter);
|
||||
|
@ -1579,7 +1579,7 @@ static void refreshPeerList(struct DetailsImpl* di, tr_torrent** torrents, int n
|
|||
}
|
||||
|
||||
/* step 5: remove peers that have disappeared */
|
||||
if (gtk_tree_model_iter_nth_child(model, &iter, NULL, 0))
|
||||
if (gtk_tree_model_iter_nth_child(model, &iter, nullptr, 0))
|
||||
{
|
||||
gboolean more = TRUE;
|
||||
|
||||
|
@ -1622,7 +1622,7 @@ static void refreshWebseedList(struct DetailsImpl* di, tr_torrent** torrents, in
|
|||
GtkTreeModel* model = GTK_TREE_MODEL(store);
|
||||
|
||||
/* step 1: mark all webseeds as not-updated */
|
||||
if (gtk_tree_model_iter_nth_child(model, &iter, NULL, 0))
|
||||
if (gtk_tree_model_iter_nth_child(model, &iter, nullptr, 0))
|
||||
{
|
||||
do
|
||||
{
|
||||
|
@ -1644,7 +1644,7 @@ static void refreshWebseedList(struct DetailsImpl* di, tr_torrent** torrents, in
|
|||
char const* url = inf->webseeds[j];
|
||||
g_snprintf(key, sizeof(key), "%d.%s", tr_torrentId(tor), url);
|
||||
|
||||
if (g_hash_table_lookup(hash, key) == NULL)
|
||||
if (g_hash_table_lookup(hash, key) == nullptr)
|
||||
{
|
||||
GtkTreePath* p;
|
||||
gtk_list_store_append(store, &iter);
|
||||
|
@ -1694,7 +1694,7 @@ static void refreshWebseedList(struct DetailsImpl* di, tr_torrent** torrents, in
|
|||
}
|
||||
|
||||
/* step 4: remove webseeds that have disappeared */
|
||||
if (gtk_tree_model_iter_nth_child(model, &iter, NULL, 0))
|
||||
if (gtk_tree_model_iter_nth_child(model, &iter, nullptr, 0))
|
||||
{
|
||||
gboolean more = TRUE;
|
||||
|
||||
|
@ -1712,7 +1712,7 @@ static void refreshWebseedList(struct DetailsImpl* di, tr_torrent** torrents, in
|
|||
char* key;
|
||||
gtk_tree_model_get(model, &iter, WEBSEED_COL_KEY, &key, -1);
|
||||
|
||||
if (key != NULL)
|
||||
if (key != nullptr)
|
||||
{
|
||||
g_hash_table_remove(hash, key);
|
||||
}
|
||||
|
@ -1746,11 +1746,11 @@ static gboolean onPeerViewQueryTooltip(
|
|||
GtkTreeModel* model;
|
||||
gboolean show_tip = FALSE;
|
||||
|
||||
if (gtk_tree_view_get_tooltip_context(GTK_TREE_VIEW(widget), &x, &y, keyboard_tip, &model, NULL, &iter))
|
||||
if (gtk_tree_view_get_tooltip_context(GTK_TREE_VIEW(widget), &x, &y, keyboard_tip, &model, nullptr, &iter))
|
||||
{
|
||||
char* name = NULL;
|
||||
char* addr = NULL;
|
||||
char* flagstr = NULL;
|
||||
char* name = nullptr;
|
||||
char* addr = nullptr;
|
||||
char* flagstr = nullptr;
|
||||
auto* di = static_cast<DetailsImpl*>(gdi);
|
||||
GString* gstr = di->gstr;
|
||||
|
||||
|
@ -1769,7 +1769,7 @@ static gboolean onPeerViewQueryTooltip(
|
|||
|
||||
for (char const* pch = flagstr; !tr_str_is_empty(pch); ++pch)
|
||||
{
|
||||
char const* s = NULL;
|
||||
char const* s = nullptr;
|
||||
|
||||
switch (*pch)
|
||||
{
|
||||
|
@ -1822,7 +1822,7 @@ static gboolean onPeerViewQueryTooltip(
|
|||
break;
|
||||
}
|
||||
|
||||
if (s != NULL)
|
||||
if (s != nullptr)
|
||||
{
|
||||
g_string_append_printf(gstr, "%c: %s\n", *pch, s);
|
||||
}
|
||||
|
@ -1894,7 +1894,7 @@ static void setPeerViewColumns(GtkTreeView* peer_view)
|
|||
view_columns[n++] = PEER_COL_CLIENT;
|
||||
|
||||
/* remove any existing columns */
|
||||
while ((c = gtk_tree_view_get_column(peer_view, 0)) != NULL)
|
||||
while ((c = gtk_tree_view_get_column(peer_view, 0)) != nullptr)
|
||||
{
|
||||
gtk_tree_view_remove_column(peer_view, c);
|
||||
}
|
||||
|
@ -1909,77 +1909,77 @@ static void setPeerViewColumns(GtkTreeView* peer_view)
|
|||
{
|
||||
case PEER_COL_ADDRESS:
|
||||
r = gtk_cell_renderer_text_new();
|
||||
c = gtk_tree_view_column_new_with_attributes(t, r, "text", col, NULL);
|
||||
c = gtk_tree_view_column_new_with_attributes(t, r, "text", col, nullptr);
|
||||
sort_col = PEER_COL_ADDRESS_COLLATED;
|
||||
break;
|
||||
|
||||
case PEER_COL_PROGRESS:
|
||||
r = gtk_cell_renderer_progress_new();
|
||||
c = gtk_tree_view_column_new_with_attributes(t, r, "value", PEER_COL_PROGRESS, NULL);
|
||||
c = gtk_tree_view_column_new_with_attributes(t, r, "value", PEER_COL_PROGRESS, nullptr);
|
||||
break;
|
||||
|
||||
case PEER_COL_ENCRYPTION_STOCK_ID:
|
||||
r = gtk_cell_renderer_pixbuf_new();
|
||||
g_object_set(r, "xalign", (gfloat)0.0, "yalign", (gfloat)0.5, NULL);
|
||||
c = gtk_tree_view_column_new_with_attributes(t, r, "stock-id", PEER_COL_ENCRYPTION_STOCK_ID, NULL);
|
||||
g_object_set(r, "xalign", (gfloat)0.0, "yalign", (gfloat)0.5, nullptr);
|
||||
c = gtk_tree_view_column_new_with_attributes(t, r, "stock-id", PEER_COL_ENCRYPTION_STOCK_ID, nullptr);
|
||||
gtk_tree_view_column_set_sizing(c, GTK_TREE_VIEW_COLUMN_FIXED);
|
||||
gtk_tree_view_column_set_fixed_width(c, 20);
|
||||
break;
|
||||
|
||||
case PEER_COL_DOWNLOAD_REQUEST_COUNT_STRING:
|
||||
r = gtk_cell_renderer_text_new();
|
||||
c = gtk_tree_view_column_new_with_attributes(t, r, "text", col, NULL);
|
||||
c = gtk_tree_view_column_new_with_attributes(t, r, "text", col, nullptr);
|
||||
sort_col = PEER_COL_DOWNLOAD_REQUEST_COUNT_INT;
|
||||
break;
|
||||
|
||||
case PEER_COL_UPLOAD_REQUEST_COUNT_STRING:
|
||||
r = gtk_cell_renderer_text_new();
|
||||
c = gtk_tree_view_column_new_with_attributes(t, r, "text", col, NULL);
|
||||
c = gtk_tree_view_column_new_with_attributes(t, r, "text", col, nullptr);
|
||||
sort_col = PEER_COL_UPLOAD_REQUEST_COUNT_INT;
|
||||
break;
|
||||
|
||||
case PEER_COL_BLOCKS_DOWNLOADED_COUNT_STRING:
|
||||
r = gtk_cell_renderer_text_new();
|
||||
c = gtk_tree_view_column_new_with_attributes(t, r, "text", col, NULL);
|
||||
c = gtk_tree_view_column_new_with_attributes(t, r, "text", col, nullptr);
|
||||
sort_col = PEER_COL_BLOCKS_DOWNLOADED_COUNT_INT;
|
||||
break;
|
||||
|
||||
case PEER_COL_BLOCKS_UPLOADED_COUNT_STRING:
|
||||
r = gtk_cell_renderer_text_new();
|
||||
c = gtk_tree_view_column_new_with_attributes(t, r, "text", col, NULL);
|
||||
c = gtk_tree_view_column_new_with_attributes(t, r, "text", col, nullptr);
|
||||
sort_col = PEER_COL_BLOCKS_UPLOADED_COUNT_INT;
|
||||
break;
|
||||
|
||||
case PEER_COL_REQS_CANCELLED_BY_CLIENT_COUNT_STRING:
|
||||
r = gtk_cell_renderer_text_new();
|
||||
c = gtk_tree_view_column_new_with_attributes(t, r, "text", col, NULL);
|
||||
c = gtk_tree_view_column_new_with_attributes(t, r, "text", col, nullptr);
|
||||
sort_col = PEER_COL_REQS_CANCELLED_BY_CLIENT_COUNT_INT;
|
||||
break;
|
||||
|
||||
case PEER_COL_REQS_CANCELLED_BY_PEER_COUNT_STRING:
|
||||
r = gtk_cell_renderer_text_new();
|
||||
c = gtk_tree_view_column_new_with_attributes(t, r, "text", col, NULL);
|
||||
c = gtk_tree_view_column_new_with_attributes(t, r, "text", col, nullptr);
|
||||
sort_col = PEER_COL_REQS_CANCELLED_BY_PEER_COUNT_INT;
|
||||
break;
|
||||
|
||||
case PEER_COL_DOWNLOAD_RATE_STRING:
|
||||
r = gtk_cell_renderer_text_new();
|
||||
g_object_set(G_OBJECT(r), "xalign", 1.0F, NULL);
|
||||
c = gtk_tree_view_column_new_with_attributes(t, r, "text", col, NULL);
|
||||
g_object_set(G_OBJECT(r), "xalign", 1.0F, nullptr);
|
||||
c = gtk_tree_view_column_new_with_attributes(t, r, "text", col, nullptr);
|
||||
sort_col = PEER_COL_DOWNLOAD_RATE_DOUBLE;
|
||||
break;
|
||||
|
||||
case PEER_COL_UPLOAD_RATE_STRING:
|
||||
r = gtk_cell_renderer_text_new();
|
||||
g_object_set(G_OBJECT(r), "xalign", 1.0F, NULL);
|
||||
c = gtk_tree_view_column_new_with_attributes(t, r, "text", col, NULL);
|
||||
g_object_set(G_OBJECT(r), "xalign", 1.0F, nullptr);
|
||||
c = gtk_tree_view_column_new_with_attributes(t, r, "text", col, nullptr);
|
||||
sort_col = PEER_COL_UPLOAD_RATE_DOUBLE;
|
||||
break;
|
||||
|
||||
case PEER_COL_CLIENT:
|
||||
case PEER_COL_FLAGS:
|
||||
r = gtk_cell_renderer_text_new();
|
||||
c = gtk_tree_view_column_new_with_attributes(t, r, "text", col, NULL);
|
||||
c = gtk_tree_view_column_new_with_attributes(t, r, "text", col, nullptr);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -2019,7 +2019,7 @@ static GtkWidget* peer_page_new(struct DetailsImpl* di)
|
|||
GtkWidget* ret;
|
||||
GtkWidget* sw;
|
||||
GtkWidget* vbox;
|
||||
GtkWidget* webtree = NULL;
|
||||
GtkWidget* webtree = nullptr;
|
||||
GtkTreeModel* m;
|
||||
GtkTreeViewColumn* c;
|
||||
GtkCellRenderer* r;
|
||||
|
@ -2028,24 +2028,24 @@ static GtkWidget* peer_page_new(struct DetailsImpl* di)
|
|||
|
||||
store = di->webseed_store = webseed_model_new();
|
||||
v = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
|
||||
g_signal_connect(v, "button-release-event", G_CALLBACK(on_tree_view_button_released), NULL);
|
||||
g_signal_connect(v, "button-release-event", G_CALLBACK(on_tree_view_button_released), nullptr);
|
||||
g_object_unref(store);
|
||||
|
||||
str = getWebseedColumnNames(WEBSEED_COL_URL);
|
||||
r = gtk_cell_renderer_text_new();
|
||||
g_object_set(G_OBJECT(r), "ellipsize", PANGO_ELLIPSIZE_END, NULL);
|
||||
c = gtk_tree_view_column_new_with_attributes(str, r, "text", WEBSEED_COL_URL, NULL);
|
||||
g_object_set(G_OBJECT(c), "expand", TRUE, NULL);
|
||||
g_object_set(G_OBJECT(r), "ellipsize", PANGO_ELLIPSIZE_END, nullptr);
|
||||
c = gtk_tree_view_column_new_with_attributes(str, r, "text", WEBSEED_COL_URL, nullptr);
|
||||
g_object_set(G_OBJECT(c), "expand", TRUE, nullptr);
|
||||
gtk_tree_view_column_set_sort_column_id(c, WEBSEED_COL_URL);
|
||||
gtk_tree_view_append_column(GTK_TREE_VIEW(v), c);
|
||||
|
||||
str = getWebseedColumnNames(WEBSEED_COL_DOWNLOAD_RATE_STRING);
|
||||
r = gtk_cell_renderer_text_new();
|
||||
c = gtk_tree_view_column_new_with_attributes(str, r, "text", WEBSEED_COL_DOWNLOAD_RATE_STRING, NULL);
|
||||
c = gtk_tree_view_column_new_with_attributes(str, r, "text", WEBSEED_COL_DOWNLOAD_RATE_STRING, nullptr);
|
||||
gtk_tree_view_column_set_sort_column_id(c, WEBSEED_COL_DOWNLOAD_RATE_DOUBLE);
|
||||
gtk_tree_view_append_column(GTK_TREE_VIEW(v), c);
|
||||
|
||||
w = gtk_scrolled_window_new(NULL, NULL);
|
||||
w = gtk_scrolled_window_new(nullptr, nullptr);
|
||||
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(w), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
|
||||
gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(w), GTK_SHADOW_IN);
|
||||
gtk_container_add(GTK_CONTAINER(w), v);
|
||||
|
@ -2058,16 +2058,16 @@ static GtkWidget* peer_page_new(struct DetailsImpl* di)
|
|||
store = di->peer_store = peer_store_new();
|
||||
m = gtk_tree_model_sort_new_with_model(GTK_TREE_MODEL(store));
|
||||
gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(m), PEER_COL_PROGRESS, GTK_SORT_DESCENDING);
|
||||
v = GTK_WIDGET(g_object_new(GTK_TYPE_TREE_VIEW, "model", m, "rules-hint", TRUE, "has-tooltip", TRUE, NULL));
|
||||
v = GTK_WIDGET(g_object_new(GTK_TYPE_TREE_VIEW, "model", m, "rules-hint", TRUE, "has-tooltip", TRUE, nullptr));
|
||||
di->peer_view = v;
|
||||
|
||||
g_signal_connect(v, "query-tooltip", G_CALLBACK(onPeerViewQueryTooltip), di);
|
||||
g_object_unref(store);
|
||||
g_signal_connect(v, "button-release-event", G_CALLBACK(on_tree_view_button_released), NULL);
|
||||
g_signal_connect(v, "button-release-event", G_CALLBACK(on_tree_view_button_released), nullptr);
|
||||
|
||||
setPeerViewColumns(GTK_TREE_VIEW(v));
|
||||
|
||||
w = sw = gtk_scrolled_window_new(NULL, NULL);
|
||||
w = sw = gtk_scrolled_window_new(nullptr, nullptr);
|
||||
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(w), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
|
||||
gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(w), GTK_SHADOW_IN);
|
||||
gtk_container_add(GTK_CONTAINER(w), v);
|
||||
|
@ -2254,14 +2254,15 @@ static void buildTrackerSummary(GString* gstr, char const* key, tr_tracker_stat
|
|||
{
|
||||
// hostname
|
||||
g_string_append(gstr, st->isBackup ? "<i>" : "<b>");
|
||||
char* const str = key != NULL ? g_markup_printf_escaped("%s - %s", st->host, key) : g_markup_printf_escaped("%s", st->host);
|
||||
char* const str = key != nullptr ? g_markup_printf_escaped("%s - %s", st->host, key) :
|
||||
g_markup_printf_escaped("%s", st->host);
|
||||
g_string_append(gstr, str);
|
||||
g_free(str);
|
||||
g_string_append(gstr, st->isBackup ? "</i>" : "</b>");
|
||||
|
||||
if (!st->isBackup)
|
||||
{
|
||||
time_t const now = time(NULL);
|
||||
time_t const now = time(nullptr);
|
||||
|
||||
appendAnnounceInfo(st, now, gstr);
|
||||
|
||||
|
@ -2337,7 +2338,7 @@ static void favicon_ready_cb(gpointer pixbuf, gpointer vreference)
|
|||
GtkTreeIter iter;
|
||||
auto* reference = static_cast<GtkTreeRowReference*>(vreference);
|
||||
|
||||
if (pixbuf != NULL)
|
||||
if (pixbuf != nullptr)
|
||||
{
|
||||
GtkTreePath* const path = gtk_tree_row_reference_get_path(reference);
|
||||
GtkTreeModel* const model = gtk_tree_row_reference_get_model(reference);
|
||||
|
@ -2375,7 +2376,7 @@ static void refreshTracker(struct DetailsImpl* di, tr_torrent** torrents, int n)
|
|||
/* step 2: mark all the trackers in the list as not-updated */
|
||||
GtkTreeModel* const model = GTK_TREE_MODEL(store);
|
||||
|
||||
if (gtk_tree_model_iter_nth_child(model, &iter, NULL, 0))
|
||||
if (gtk_tree_model_iter_nth_child(model, &iter, nullptr, 0))
|
||||
{
|
||||
do
|
||||
{
|
||||
|
@ -2398,7 +2399,7 @@ static void refreshTracker(struct DetailsImpl* di, tr_torrent** torrents, int n)
|
|||
g_string_truncate(gstr, 0);
|
||||
g_string_append_printf(gstr, "%d\t%d\t%s", torrent_id, st->tier, st->announce);
|
||||
|
||||
if (g_hash_table_lookup(hash, gstr->str) == NULL)
|
||||
if (g_hash_table_lookup(hash, gstr->str) == nullptr)
|
||||
{
|
||||
gtk_list_store_insert_with_values(
|
||||
store,
|
||||
|
@ -2423,7 +2424,7 @@ static void refreshTracker(struct DetailsImpl* di, tr_torrent** torrents, int n)
|
|||
for (int i = 0; i < n; ++i)
|
||||
{
|
||||
tr_torrent const* tor = torrents[i];
|
||||
char const* summary_name = n > 1 ? tr_torrentName(tor) : NULL;
|
||||
char const* summary_name = n > 1 ? tr_torrentName(tor) : nullptr;
|
||||
|
||||
for (int j = 0; j < statCount[i]; ++j)
|
||||
{
|
||||
|
@ -2454,7 +2455,7 @@ static void refreshTracker(struct DetailsImpl* di, tr_torrent** torrents, int n)
|
|||
}
|
||||
|
||||
/* step 5: remove trackers that have disappeared */
|
||||
if (gtk_tree_model_iter_nth_child(model, &iter, NULL, 0))
|
||||
if (gtk_tree_model_iter_nth_child(model, &iter, nullptr, 0))
|
||||
{
|
||||
gboolean more = TRUE;
|
||||
|
||||
|
@ -2517,7 +2518,7 @@ static void on_edit_trackers_response(GtkDialog* dialog, int response, gpointer
|
|||
auto* const text_buffer = static_cast<GtkTextBuffer*>(g_object_get_qdata(G_OBJECT(dialog), TEXT_BUFFER_KEY));
|
||||
tr_torrent* const tor = gtr_core_find_torrent(di->core, torrent_id);
|
||||
|
||||
if (tor != NULL)
|
||||
if (tor != nullptr)
|
||||
{
|
||||
/* build the array of trackers */
|
||||
GtkTextIter start;
|
||||
|
@ -2530,7 +2531,7 @@ static void on_edit_trackers_response(GtkDialog* dialog, int response, gpointer
|
|||
int n = 0;
|
||||
int tier = 0;
|
||||
|
||||
for (int i = 0; tracker_strings[i] != NULL; ++i)
|
||||
for (int i = 0; tracker_strings[i] != nullptr; ++i)
|
||||
{
|
||||
char* const str = tracker_strings[i];
|
||||
|
||||
|
@ -2612,7 +2613,7 @@ static void on_edit_trackers(GtkButton* button, gpointer data)
|
|||
auto* di = static_cast<DetailsImpl*>(data);
|
||||
tr_torrent const* tor = tracker_list_get_current_torrent(di);
|
||||
|
||||
if (tor != NULL)
|
||||
if (tor != nullptr)
|
||||
{
|
||||
guint row;
|
||||
GtkWidget* w;
|
||||
|
@ -2633,29 +2634,29 @@ static void on_edit_trackers(GtkButton* button, gpointer data)
|
|||
GtkDialogFlags(GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT),
|
||||
TR_ARG_TUPLE(_("_Cancel"), GTK_RESPONSE_CANCEL),
|
||||
TR_ARG_TUPLE(_("_Save"), GTK_RESPONSE_ACCEPT),
|
||||
NULL);
|
||||
nullptr);
|
||||
g_signal_connect(d, "response", G_CALLBACK(on_edit_trackers_response), data);
|
||||
|
||||
row = 0;
|
||||
t = hig_workarea_create();
|
||||
hig_workarea_add_section_title(t, &row, _("Tracker Announce URLs"));
|
||||
|
||||
l = gtk_label_new(NULL);
|
||||
l = gtk_label_new(nullptr);
|
||||
gtk_label_set_markup(
|
||||
GTK_LABEL(l),
|
||||
_("To add a backup URL, add it on the line after the primary URL.\n"
|
||||
"To add another primary URL, add it after a blank line."));
|
||||
gtk_label_set_justify(GTK_LABEL(l), GTK_JUSTIFY_LEFT);
|
||||
g_object_set(l, "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, NULL);
|
||||
g_object_set(l, "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, nullptr);
|
||||
hig_workarea_add_wide_control(t, &row, l);
|
||||
|
||||
w = gtk_text_view_new();
|
||||
g_string_truncate(gstr, 0);
|
||||
get_editable_tracker_list(gstr, tor);
|
||||
gtk_text_buffer_set_text(gtk_text_view_get_buffer(GTK_TEXT_VIEW(w)), gstr->str, -1);
|
||||
fr = gtk_frame_new(NULL);
|
||||
fr = gtk_frame_new(nullptr);
|
||||
gtk_frame_set_shadow_type(GTK_FRAME(fr), GTK_SHADOW_IN);
|
||||
sw = gtk_scrolled_window_new(NULL, NULL);
|
||||
sw = gtk_scrolled_window_new(nullptr, nullptr);
|
||||
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
|
||||
gtk_container_add(GTK_CONTAINER(sw), w);
|
||||
gtk_container_add(GTK_CONTAINER(fr), sw);
|
||||
|
@ -2677,8 +2678,8 @@ static void on_tracker_list_selection_changed(GtkTreeSelection* sel, gpointer gd
|
|||
tr_torrent const* tor = tracker_list_get_current_torrent(di);
|
||||
|
||||
gtk_widget_set_sensitive(di->remove_tracker_button, n > 0);
|
||||
gtk_widget_set_sensitive(di->add_tracker_button, tor != NULL);
|
||||
gtk_widget_set_sensitive(di->edit_trackers_button, tor != NULL);
|
||||
gtk_widget_set_sensitive(di->add_tracker_button, tor != nullptr);
|
||||
gtk_widget_set_sensitive(di->edit_trackers_button, tor != nullptr);
|
||||
}
|
||||
|
||||
static void on_add_tracker_response(GtkDialog* dialog, int response, gpointer gdi)
|
||||
|
@ -2736,7 +2737,7 @@ static void on_tracker_list_add_button_clicked(GtkButton const* button, gpointer
|
|||
auto* di = static_cast<DetailsImpl*>(gdi);
|
||||
tr_torrent const* tor = tracker_list_get_current_torrent(di);
|
||||
|
||||
if (tor != NULL)
|
||||
if (tor != nullptr)
|
||||
{
|
||||
guint row;
|
||||
GtkWidget* e;
|
||||
|
@ -2752,7 +2753,7 @@ static void on_tracker_list_add_button_clicked(GtkButton const* button, gpointer
|
|||
GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
TR_ARG_TUPLE(_("_Cancel"), GTK_RESPONSE_CANCEL),
|
||||
TR_ARG_TUPLE(_("_Add"), GTK_RESPONSE_ACCEPT),
|
||||
NULL);
|
||||
nullptr);
|
||||
g_signal_connect(w, "response", G_CALLBACK(on_add_tracker_response), gdi);
|
||||
|
||||
row = 0;
|
||||
|
@ -2763,7 +2764,7 @@ static void on_tracker_list_add_button_clicked(GtkButton const* button, gpointer
|
|||
gtr_paste_clipboard_url_into_entry(e);
|
||||
g_object_set_qdata(G_OBJECT(w), URL_ENTRY_KEY, e);
|
||||
g_object_set_qdata(G_OBJECT(w), TORRENT_ID_KEY, GINT_TO_POINTER(tr_torrentId(tor)));
|
||||
hig_workarea_add_row(t, &row, _("_Announce URL:"), e, NULL);
|
||||
hig_workarea_add_row(t, &row, _("_Announce URL:"), e, nullptr);
|
||||
gtr_dialog_set_content(GTK_DIALOG(w), t);
|
||||
gtk_widget_show_all(w);
|
||||
}
|
||||
|
@ -2840,16 +2841,16 @@ static GtkWidget* tracker_page_new(struct DetailsImpl* di)
|
|||
(GDestroyNotify)g_free,
|
||||
(GDestroyNotify)gtk_tree_row_reference_free);
|
||||
|
||||
di->trackers_filtered = gtk_tree_model_filter_new(GTK_TREE_MODEL(di->tracker_store), NULL);
|
||||
gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(di->trackers_filtered), trackerVisibleFunc, di, NULL);
|
||||
di->trackers_filtered = gtk_tree_model_filter_new(GTK_TREE_MODEL(di->tracker_store), nullptr);
|
||||
gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(di->trackers_filtered), trackerVisibleFunc, di, nullptr);
|
||||
|
||||
hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, GUI_PAD_BIG);
|
||||
|
||||
v = di->tracker_view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(di->trackers_filtered));
|
||||
g_object_unref(di->trackers_filtered);
|
||||
gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(v), FALSE);
|
||||
g_signal_connect(v, "button-press-event", G_CALLBACK(on_tree_view_button_pressed), NULL);
|
||||
g_signal_connect(v, "button-release-event", G_CALLBACK(on_tree_view_button_released), NULL);
|
||||
g_signal_connect(v, "button-press-event", G_CALLBACK(on_tree_view_button_pressed), nullptr);
|
||||
g_signal_connect(v, "button-release-event", G_CALLBACK(on_tree_view_button_released), nullptr);
|
||||
|
||||
sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(v));
|
||||
g_signal_connect(sel, "changed", G_CALLBACK(on_tracker_list_selection_changed), di);
|
||||
|
@ -2859,19 +2860,19 @@ static GtkWidget* tracker_page_new(struct DetailsImpl* di)
|
|||
gtk_tree_view_append_column(GTK_TREE_VIEW(v), c);
|
||||
|
||||
r = gtk_cell_renderer_pixbuf_new();
|
||||
g_object_set(r, "width", 20 + (GUI_PAD_SMALL * 2), "xpad", GUI_PAD_SMALL, "ypad", pad, "yalign", 0.0F, NULL);
|
||||
g_object_set(r, "width", 20 + (GUI_PAD_SMALL * 2), "xpad", GUI_PAD_SMALL, "ypad", pad, "yalign", 0.0F, nullptr);
|
||||
gtk_tree_view_column_pack_start(c, r, FALSE);
|
||||
gtk_tree_view_column_add_attribute(c, r, "pixbuf", TRACKER_COL_FAVICON);
|
||||
|
||||
r = gtk_cell_renderer_text_new();
|
||||
g_object_set(G_OBJECT(r), "ellipsize", PANGO_ELLIPSIZE_END, "xpad", GUI_PAD_SMALL, "ypad", pad, NULL);
|
||||
g_object_set(G_OBJECT(r), "ellipsize", PANGO_ELLIPSIZE_END, "xpad", GUI_PAD_SMALL, "ypad", pad, nullptr);
|
||||
gtk_tree_view_column_pack_start(c, r, TRUE);
|
||||
gtk_tree_view_column_add_attribute(c, r, "markup", TRACKER_COL_TEXT);
|
||||
|
||||
sw = gtk_scrolled_window_new(NULL, NULL);
|
||||
sw = gtk_scrolled_window_new(nullptr, nullptr);
|
||||
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
|
||||
gtk_container_add(GTK_CONTAINER(sw), v);
|
||||
w = gtk_frame_new(NULL);
|
||||
w = gtk_frame_new(nullptr);
|
||||
gtk_frame_set_shadow_type(GTK_FRAME(w), GTK_SHADOW_IN);
|
||||
gtk_container_add(GTK_CONTAINER(w), sw);
|
||||
|
||||
|
@ -2989,8 +2990,8 @@ GtkWidget* gtr_torrent_details_dialog_new(GtkWindow* parent, TrCore* core)
|
|||
|
||||
/* create the dialog */
|
||||
di->core = core;
|
||||
di->gstr = g_string_new(NULL);
|
||||
d = gtk_dialog_new_with_buttons(NULL, parent, {}, TR_ARG_TUPLE(_("_Close"), GTK_RESPONSE_CLOSE), NULL);
|
||||
di->gstr = g_string_new(nullptr);
|
||||
d = gtk_dialog_new_with_buttons(nullptr, parent, {}, TR_ARG_TUPLE(_("_Close"), GTK_RESPONSE_CLOSE), nullptr);
|
||||
di->dialog = d;
|
||||
gtk_window_set_role(GTK_WINDOW(d), "tr-info");
|
||||
|
||||
|
@ -2999,7 +3000,7 @@ GtkWidget* gtr_torrent_details_dialog_new(GtkWindow* parent, TrCore* core)
|
|||
GTK_WINDOW(d),
|
||||
(gint)gtr_pref_int_get(TR_KEY_details_window_width),
|
||||
(gint)gtr_pref_int_get(TR_KEY_details_window_height));
|
||||
g_signal_connect(d, "size-allocate", G_CALLBACK(on_details_window_size_allocated), NULL);
|
||||
g_signal_connect(d, "size-allocate", G_CALLBACK(on_details_window_size_allocated), nullptr);
|
||||
|
||||
g_signal_connect_swapped(d, "response", G_CALLBACK(gtk_widget_destroy), d);
|
||||
gtk_container_set_border_width(GTK_CONTAINER(d), GUI_PAD);
|
||||
|
|
|
@ -45,7 +45,7 @@ static void on_remove_dialog_response(GtkDialog* dialog, gint response, gpointer
|
|||
|
||||
if (response == GTK_RESPONSE_ACCEPT)
|
||||
{
|
||||
for (GSList* l = dd->torrent_ids; l != NULL; l = l->next)
|
||||
for (GSList* l = dd->torrent_ids; l != nullptr; l = l->next)
|
||||
{
|
||||
gtr_core_remove_torrent(dd->core, GPOINTER_TO_INT(l->data), dd->delete_files);
|
||||
}
|
||||
|
@ -76,7 +76,7 @@ void gtr_confirm_remove(GtkWindow* parent, TrCore* core, GSList* torrent_ids, gb
|
|||
dd->torrent_ids = torrent_ids;
|
||||
dd->delete_files = delete_files;
|
||||
|
||||
for (GSList* l = torrent_ids; l != NULL; l = l->next)
|
||||
for (GSList* l = torrent_ids; l != nullptr; l = l->next)
|
||||
{
|
||||
int const id = GPOINTER_TO_INT(l->data);
|
||||
tr_torrent* tor = gtr_core_find_torrent(core, id);
|
||||
|
@ -93,7 +93,7 @@ void gtr_confirm_remove(GtkWindow* parent, TrCore* core, GSList* torrent_ids, gb
|
|||
}
|
||||
}
|
||||
|
||||
primary_text = g_string_new(NULL);
|
||||
primary_text = g_string_new(nullptr);
|
||||
|
||||
if (!delete_files)
|
||||
{
|
||||
|
@ -107,7 +107,7 @@ void gtr_confirm_remove(GtkWindow* parent, TrCore* core, GSList* torrent_ids, gb
|
|||
count);
|
||||
}
|
||||
|
||||
secondary_text = g_string_new(NULL);
|
||||
secondary_text = g_string_new(nullptr);
|
||||
|
||||
if (incomplete == 0 && connected == 0)
|
||||
{
|
||||
|
@ -175,7 +175,7 @@ void gtr_confirm_remove(GtkWindow* parent, TrCore* core, GSList* torrent_ids, gb
|
|||
GTK_DIALOG(d),
|
||||
TR_ARG_TUPLE(_("_Cancel"), GTK_RESPONSE_CANCEL),
|
||||
TR_ARG_TUPLE(delete_files ? _("_Delete") : _("_Remove"), GTK_RESPONSE_ACCEPT),
|
||||
NULL);
|
||||
nullptr);
|
||||
gtk_dialog_set_default_response(GTK_DIALOG(d), GTK_RESPONSE_CANCEL);
|
||||
g_signal_connect(d, "response", G_CALLBACK(on_remove_dialog_response), dd);
|
||||
gtk_widget_show_all(d);
|
||||
|
|
|
@ -36,11 +36,11 @@ static char* get_url(char const* host, int image_type)
|
|||
|
||||
static char* favicon_get_cache_dir(void)
|
||||
{
|
||||
static char* dir = NULL;
|
||||
static char* dir = nullptr;
|
||||
|
||||
if (dir == NULL)
|
||||
if (dir == nullptr)
|
||||
{
|
||||
dir = g_build_filename(g_get_user_cache_dir(), "transmission", "favicons", NULL);
|
||||
dir = g_build_filename(g_get_user_cache_dir(), "transmission", "favicons", nullptr);
|
||||
g_mkdir_with_parents(dir, 0777);
|
||||
}
|
||||
|
||||
|
@ -49,22 +49,22 @@ static char* favicon_get_cache_dir(void)
|
|||
|
||||
static char* favicon_get_cache_filename(char const* host)
|
||||
{
|
||||
return g_build_filename(favicon_get_cache_dir(), host, NULL);
|
||||
return g_build_filename(favicon_get_cache_dir(), host, nullptr);
|
||||
}
|
||||
|
||||
static void favicon_save_to_cache(char const* host, void const* data, size_t len)
|
||||
{
|
||||
char* filename = favicon_get_cache_filename(host);
|
||||
g_file_set_contents(filename, static_cast<gchar const*>(data), len, NULL);
|
||||
g_file_set_contents(filename, static_cast<gchar const*>(data), len, nullptr);
|
||||
g_free(filename);
|
||||
}
|
||||
|
||||
static GdkPixbuf* favicon_load_from_cache(char const* host)
|
||||
{
|
||||
char* filename = favicon_get_cache_filename(host);
|
||||
GdkPixbuf* pixbuf = gdk_pixbuf_new_from_file_at_size(filename, 16, 16, NULL);
|
||||
GdkPixbuf* pixbuf = gdk_pixbuf_new_from_file_at_size(filename, 16, 16, nullptr);
|
||||
|
||||
if (pixbuf == NULL) /* bad file */
|
||||
if (pixbuf == nullptr) /* bad file */
|
||||
{
|
||||
g_remove(filename);
|
||||
}
|
||||
|
@ -77,7 +77,7 @@ static void favicon_web_done_cb(tr_session*, bool, bool, long, void const*, size
|
|||
|
||||
static gboolean favicon_web_done_idle_cb(gpointer vfav)
|
||||
{
|
||||
GdkPixbuf* pixbuf = NULL;
|
||||
GdkPixbuf* pixbuf = nullptr;
|
||||
gboolean finished = FALSE;
|
||||
auto* fav = static_cast<favicon_data*>(vfav);
|
||||
|
||||
|
@ -85,7 +85,7 @@ static gboolean favicon_web_done_idle_cb(gpointer vfav)
|
|||
{
|
||||
favicon_save_to_cache(fav->host, fav->contents, fav->len);
|
||||
pixbuf = favicon_load_from_cache(fav->host);
|
||||
finished = pixbuf != NULL;
|
||||
finished = pixbuf != nullptr;
|
||||
}
|
||||
|
||||
if (!finished) /* no pixbuf yet... */
|
||||
|
@ -99,7 +99,7 @@ static gboolean favicon_web_done_idle_cb(gpointer vfav)
|
|||
char* url = get_url(fav->host, fav->type);
|
||||
|
||||
g_free(fav->contents);
|
||||
fav->contents = NULL;
|
||||
fav->contents = nullptr;
|
||||
fav->len = 0;
|
||||
|
||||
tr_webRun(fav->session, url, favicon_web_done_cb, fav);
|
||||
|
@ -143,7 +143,7 @@ void gtr_get_favicon(tr_session* session, char const* host, GFunc pixbuf_ready_f
|
|||
{
|
||||
GdkPixbuf* pixbuf = favicon_load_from_cache(host);
|
||||
|
||||
if (pixbuf != NULL)
|
||||
if (pixbuf != nullptr)
|
||||
{
|
||||
pixbuf_ready_func(pixbuf, pixbuf_ready_func_data);
|
||||
}
|
||||
|
|
|
@ -246,9 +246,9 @@ static void gtr_tree_model_foreach_postorder_subtree(
|
|||
} while (gtk_tree_model_iter_next(model, &child));
|
||||
}
|
||||
|
||||
if (parent != NULL)
|
||||
if (parent != nullptr)
|
||||
{
|
||||
func(model, NULL, parent, data);
|
||||
func(model, nullptr, parent, data);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -256,7 +256,7 @@ static void gtr_tree_model_foreach_postorder(GtkTreeModel* model, GtkTreeModelFo
|
|||
{
|
||||
GtkTreeIter iter;
|
||||
|
||||
if (gtk_tree_model_iter_nth_child(model, &iter, NULL, 0))
|
||||
if (gtk_tree_model_iter_nth_child(model, &iter, nullptr, 0))
|
||||
{
|
||||
do
|
||||
{
|
||||
|
@ -269,7 +269,7 @@ static void refresh(FileData* data)
|
|||
{
|
||||
tr_torrent* tor = gtr_core_find_torrent(data->core, data->torrentId);
|
||||
|
||||
if (tor == NULL)
|
||||
if (tor == nullptr)
|
||||
{
|
||||
gtr_file_list_clear(data->top);
|
||||
}
|
||||
|
@ -455,7 +455,7 @@ static void buildTree(GNode* node, gpointer gdata)
|
|||
GtkTreeIter child_iter;
|
||||
auto* build = static_cast<build_data*>(gdata);
|
||||
auto* child_data = static_cast<row_struct*>(node->data);
|
||||
gboolean const isLeaf = node->children == NULL;
|
||||
gboolean const isLeaf = node->children == nullptr;
|
||||
|
||||
char const* mime_type = isLeaf ? gtr_get_mime_type_from_filename(child_data->name) : DIRECTORY_MIME_TYPE;
|
||||
GdkPixbuf* icon = gtr_get_mime_type_icon(mime_type, GTK_ICON_SIZE_MENU, build->w);
|
||||
|
@ -500,7 +500,7 @@ static GNode* find_child(GNode* parent, char const* name)
|
|||
{
|
||||
GNode* child = parent->children;
|
||||
|
||||
while (child != NULL)
|
||||
while (child != nullptr)
|
||||
{
|
||||
auto const* child_data = static_cast<row_struct const*>(child->data);
|
||||
|
||||
|
@ -540,8 +540,8 @@ void gtr_file_list_set_torrent(GtkWidget* w, int torrentId)
|
|||
data->torrentId = torrentId;
|
||||
|
||||
/* populate the model */
|
||||
tr_torrent* const tor = torrentId > 0 ? gtr_core_find_torrent(data->core, torrentId) : NULL;
|
||||
if (tor != NULL)
|
||||
tr_torrent* const tor = torrentId > 0 ? gtr_core_find_torrent(data->core, torrentId) : nullptr;
|
||||
if (tor != nullptr)
|
||||
{
|
||||
// build a GNode tree of the files
|
||||
struct row_struct* const root_data = g_new0(struct row_struct, 1);
|
||||
|
@ -558,13 +558,13 @@ void gtr_file_list_set_torrent(GtkWidget* w, int torrentId)
|
|||
tr_file const* const file = &inf->files[i];
|
||||
char** const tokens = g_strsplit(file->name, G_DIR_SEPARATOR_S, 0);
|
||||
|
||||
for (int j = 0; tokens[j] != NULL; ++j)
|
||||
for (int j = 0; tokens[j] != nullptr; ++j)
|
||||
{
|
||||
gboolean const isLeaf = tokens[j + 1] == NULL;
|
||||
gboolean const isLeaf = tokens[j + 1] == nullptr;
|
||||
char const* const name = tokens[j];
|
||||
GNode* node = find_child(parent, name);
|
||||
|
||||
if (node == NULL)
|
||||
if (node == nullptr)
|
||||
{
|
||||
struct row_struct* row = g_new(struct row_struct, 1);
|
||||
row->name = g_strdup(name);
|
||||
|
@ -585,7 +585,7 @@ void gtr_file_list_set_torrent(GtkWidget* w, int torrentId)
|
|||
build.w = w;
|
||||
build.tor = tor;
|
||||
build.store = data->store;
|
||||
build.iter = NULL;
|
||||
build.iter = nullptr;
|
||||
g_node_children_foreach(root, G_TRAVERSE_ALL, buildTree, &build);
|
||||
|
||||
// cleanup
|
||||
|
@ -625,7 +625,7 @@ static void renderDownload(
|
|||
|
||||
gboolean enabled;
|
||||
gtk_tree_model_get(model, iter, FC_ENABLED, &enabled, -1);
|
||||
g_object_set(renderer, "inconsistent", enabled == MIXED, "active", enabled == TRUE, NULL);
|
||||
g_object_set(renderer, "inconsistent", enabled == MIXED, "active", enabled == TRUE, nullptr);
|
||||
}
|
||||
|
||||
static void renderPriority(
|
||||
|
@ -661,7 +661,7 @@ static void renderPriority(
|
|||
break;
|
||||
}
|
||||
|
||||
g_object_set(renderer, "text", text, NULL);
|
||||
g_object_set(renderer, "text", text, nullptr);
|
||||
}
|
||||
|
||||
/* build a filename from tr_torrentGetCurrentDir() + the model's FC_LABELs */
|
||||
|
@ -692,7 +692,7 @@ static gboolean onRowActivated(GtkTreeView* view, GtkTreePath* path, GtkTreeView
|
|||
auto* data = static_cast<FileData*>(gdata);
|
||||
tr_torrent const* tor = gtr_core_find_torrent(data->core, data->torrentId);
|
||||
|
||||
if (tor != NULL)
|
||||
if (tor != nullptr)
|
||||
{
|
||||
GtkTreeIter iter;
|
||||
GtkTreeModel* model = gtk_tree_view_get_model(view);
|
||||
|
@ -705,7 +705,7 @@ static gboolean onRowActivated(GtkTreeView* view, GtkTreePath* path, GtkTreeView
|
|||
|
||||
/* if the file's not done, walk up the directory tree until we find
|
||||
* an ancestor that exists, and open that instead */
|
||||
if (filename != NULL && (prog < 100 || !g_file_test(filename, G_FILE_TEST_EXISTS)))
|
||||
if (filename != nullptr && (prog < 100 || !g_file_test(filename, G_FILE_TEST_EXISTS)))
|
||||
{
|
||||
do
|
||||
{
|
||||
|
@ -731,7 +731,7 @@ static gboolean onViewPathToggled(GtkTreeView* view, GtkTreeViewColumn* col, Gtk
|
|||
tr_torrent* tor;
|
||||
gboolean handled = FALSE;
|
||||
|
||||
if (col == NULL || path == NULL)
|
||||
if (col == nullptr || path == nullptr)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -739,7 +739,7 @@ static gboolean onViewPathToggled(GtkTreeView* view, GtkTreeViewColumn* col, Gtk
|
|||
cid = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(col), TR_COLUMN_ID_KEY));
|
||||
tor = gtr_core_find_torrent(data->core, data->torrentId);
|
||||
|
||||
if (tor != NULL && (cid == FC_PRIORITY || cid == FC_ENABLED))
|
||||
if (tor != nullptr && (cid == FC_PRIORITY || cid == FC_ENABLED))
|
||||
{
|
||||
GtkTreeIter iter;
|
||||
tr_file_index_t* const indexBuf = g_new0(tr_file_index_t, tr_torrentInfo(tor)->fileCount);
|
||||
|
@ -788,7 +788,7 @@ static gboolean onViewPathToggled(GtkTreeView* view, GtkTreeViewColumn* col, Gtk
|
|||
}
|
||||
|
||||
/**
|
||||
* @note 'col' and 'path' are assumed not to be NULL.
|
||||
* @note 'col' and 'path' are assumed not to be nullptr.
|
||||
*/
|
||||
static gboolean getAndSelectEventPath(
|
||||
GtkTreeView* treeview,
|
||||
|
@ -798,7 +798,7 @@ static gboolean getAndSelectEventPath(
|
|||
{
|
||||
GtkTreeSelection* sel;
|
||||
|
||||
if (gtk_tree_view_get_path_at_pos(treeview, event->x, event->y, path, col, NULL, NULL))
|
||||
if (gtk_tree_view_get_path_at_pos(treeview, event->x, event->y, path, col, nullptr, nullptr))
|
||||
{
|
||||
sel = gtk_tree_view_get_selection(treeview);
|
||||
|
||||
|
@ -817,7 +817,7 @@ static gboolean getAndSelectEventPath(
|
|||
static gboolean onViewButtonPressed(GtkWidget* w, GdkEventButton const* event, gpointer gdata)
|
||||
{
|
||||
GtkTreeViewColumn* col;
|
||||
GtkTreePath* path = NULL;
|
||||
GtkTreePath* path = nullptr;
|
||||
gboolean handled = FALSE;
|
||||
GtkTreeView* treeview = GTK_TREE_VIEW(w);
|
||||
auto* data = static_cast<FileData*>(gdata);
|
||||
|
@ -827,7 +827,7 @@ static gboolean onViewButtonPressed(GtkWidget* w, GdkEventButton const* event, g
|
|||
{
|
||||
handled = onViewPathToggled(treeview, col, path, data);
|
||||
|
||||
if (path != NULL)
|
||||
if (path != nullptr)
|
||||
{
|
||||
gtk_tree_path_free(path);
|
||||
}
|
||||
|
@ -907,7 +907,7 @@ static void cell_edited_callback(
|
|||
{
|
||||
tr_torrent* const tor = gtr_core_find_torrent(data->core, data->torrentId);
|
||||
|
||||
if (tor == NULL)
|
||||
if (tor == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -919,11 +919,11 @@ static void cell_edited_callback(
|
|||
}
|
||||
|
||||
/* build oldpath */
|
||||
GString* oldpath = g_string_new(NULL);
|
||||
GString* oldpath = g_string_new(nullptr);
|
||||
|
||||
for (;;)
|
||||
{
|
||||
char* token = NULL;
|
||||
char* token = nullptr;
|
||||
GtkTreeIter child;
|
||||
gtk_tree_model_get(data->model, &iter, FC_LABEL, &token, -1);
|
||||
g_string_prepend(oldpath, token);
|
||||
|
@ -975,7 +975,7 @@ GtkWidget* gtr_file_list_new(TrCore* core, int torrentId)
|
|||
gtk_container_set_border_width(GTK_CONTAINER(view), GUI_PAD_BIG);
|
||||
g_signal_connect(view, "button-press-event", G_CALLBACK(onViewButtonPressed), data);
|
||||
g_signal_connect(view, "row_activated", G_CALLBACK(onRowActivated), data);
|
||||
g_signal_connect(view, "button-release-event", G_CALLBACK(on_tree_view_button_released), NULL);
|
||||
g_signal_connect(view, "button-release-event", G_CALLBACK(on_tree_view_button_released), nullptr);
|
||||
|
||||
pango_context = gtk_widget_create_pango_context(view);
|
||||
pango_font_description = pango_font_description_copy(pango_context_get_font_description(pango_context));
|
||||
|
@ -990,18 +990,18 @@ GtkWidget* gtr_file_list_new(TrCore* core, int torrentId)
|
|||
gtk_tree_view_set_search_column(tree_view, FC_LABEL);
|
||||
|
||||
/* add file column */
|
||||
col = GTK_TREE_VIEW_COLUMN(g_object_new(GTK_TYPE_TREE_VIEW_COLUMN, "expand", TRUE, "title", _("Name"), NULL));
|
||||
col = GTK_TREE_VIEW_COLUMN(g_object_new(GTK_TYPE_TREE_VIEW_COLUMN, "expand", TRUE, "title", _("Name"), nullptr));
|
||||
gtk_tree_view_column_set_resizable(col, TRUE);
|
||||
rend = gtk_cell_renderer_pixbuf_new();
|
||||
gtk_tree_view_column_pack_start(col, rend, FALSE);
|
||||
gtk_tree_view_column_add_attribute(col, rend, "pixbuf", FC_ICON);
|
||||
/* add text renderer */
|
||||
rend = gtk_cell_renderer_text_new();
|
||||
g_object_set(rend, "editable", TRUE, NULL);
|
||||
g_object_set(rend, "ellipsize", PANGO_ELLIPSIZE_END, "font-desc", pango_font_description, NULL);
|
||||
g_object_set(rend, "editable", TRUE, nullptr);
|
||||
g_object_set(rend, "ellipsize", PANGO_ELLIPSIZE_END, "font-desc", pango_font_description, nullptr);
|
||||
g_signal_connect(rend, "edited", (GCallback)cell_edited_callback, data);
|
||||
gtk_tree_view_column_pack_start(col, rend, TRUE);
|
||||
gtk_tree_view_column_set_attributes(col, rend, "text", FC_LABEL, NULL);
|
||||
gtk_tree_view_column_set_attributes(col, rend, "text", FC_LABEL, nullptr);
|
||||
gtk_tree_view_column_set_sort_column_id(col, FC_LABEL);
|
||||
gtk_tree_view_append_column(tree_view, col);
|
||||
|
||||
|
@ -1015,21 +1015,21 @@ GtkWidget* gtr_file_list_new(TrCore* core, int torrentId)
|
|||
TR_ARG_TUPLE("xpad", GUI_PAD),
|
||||
TR_ARG_TUPLE("xalign", 1.0F),
|
||||
TR_ARG_TUPLE("yalign", 0.5F),
|
||||
NULL);
|
||||
col = gtk_tree_view_column_new_with_attributes(title, rend, NULL);
|
||||
nullptr);
|
||||
col = gtk_tree_view_column_new_with_attributes(title, rend, nullptr);
|
||||
gtk_tree_view_column_set_sizing(col, GTK_TREE_VIEW_COLUMN_GROW_ONLY);
|
||||
gtk_tree_view_column_set_sort_column_id(col, FC_SIZE);
|
||||
gtk_tree_view_column_set_attributes(col, rend, "text", FC_SIZE_STR, NULL);
|
||||
gtk_tree_view_column_set_attributes(col, rend, "text", FC_SIZE_STR, nullptr);
|
||||
gtk_tree_view_append_column(tree_view, col);
|
||||
|
||||
/* add "progress" column */
|
||||
title = _("Have");
|
||||
pango_layout = gtk_widget_create_pango_layout(view, title);
|
||||
pango_layout_get_pixel_size(pango_layout, &width, NULL);
|
||||
pango_layout_get_pixel_size(pango_layout, &width, nullptr);
|
||||
width += 30; /* room for the sort indicator */
|
||||
g_object_unref(G_OBJECT(pango_layout));
|
||||
rend = gtk_cell_renderer_progress_new();
|
||||
col = gtk_tree_view_column_new_with_attributes(title, rend, "value", FC_PROG, NULL);
|
||||
col = gtk_tree_view_column_new_with_attributes(title, rend, "value", FC_PROG, nullptr);
|
||||
gtk_tree_view_column_set_fixed_width(col, width);
|
||||
gtk_tree_view_column_set_sizing(col, GTK_TREE_VIEW_COLUMN_FIXED);
|
||||
gtk_tree_view_column_set_sort_column_id(col, FC_PROG);
|
||||
|
@ -1038,39 +1038,39 @@ GtkWidget* gtr_file_list_new(TrCore* core, int torrentId)
|
|||
/* add "enabled" column */
|
||||
title = _("Download");
|
||||
pango_layout = gtk_widget_create_pango_layout(view, title);
|
||||
pango_layout_get_pixel_size(pango_layout, &width, NULL);
|
||||
pango_layout_get_pixel_size(pango_layout, &width, nullptr);
|
||||
width += 30; /* room for the sort indicator */
|
||||
g_object_unref(G_OBJECT(pango_layout));
|
||||
rend = gtk_cell_renderer_toggle_new();
|
||||
col = gtk_tree_view_column_new_with_attributes(title, rend, NULL);
|
||||
col = gtk_tree_view_column_new_with_attributes(title, rend, nullptr);
|
||||
g_object_set_data(G_OBJECT(col), TR_COLUMN_ID_KEY, GINT_TO_POINTER(FC_ENABLED));
|
||||
gtk_tree_view_column_set_fixed_width(col, width);
|
||||
gtk_tree_view_column_set_sizing(col, GTK_TREE_VIEW_COLUMN_FIXED);
|
||||
gtk_tree_view_column_set_cell_data_func(col, rend, renderDownload, NULL, NULL);
|
||||
gtk_tree_view_column_set_cell_data_func(col, rend, renderDownload, nullptr, nullptr);
|
||||
gtk_tree_view_column_set_sort_column_id(col, FC_ENABLED);
|
||||
gtk_tree_view_append_column(tree_view, col);
|
||||
|
||||
/* add priority column */
|
||||
title = _("Priority");
|
||||
pango_layout = gtk_widget_create_pango_layout(view, title);
|
||||
pango_layout_get_pixel_size(pango_layout, &width, NULL);
|
||||
pango_layout_get_pixel_size(pango_layout, &width, nullptr);
|
||||
width += 30; /* room for the sort indicator */
|
||||
g_object_unref(G_OBJECT(pango_layout));
|
||||
rend = gtk_cell_renderer_text_new();
|
||||
g_object_set(rend, "xalign", (gfloat)0.5, "yalign", (gfloat)0.5, NULL);
|
||||
col = gtk_tree_view_column_new_with_attributes(title, rend, NULL);
|
||||
g_object_set(rend, "xalign", (gfloat)0.5, "yalign", (gfloat)0.5, nullptr);
|
||||
col = gtk_tree_view_column_new_with_attributes(title, rend, nullptr);
|
||||
g_object_set_data(G_OBJECT(col), TR_COLUMN_ID_KEY, GINT_TO_POINTER(FC_PRIORITY));
|
||||
gtk_tree_view_column_set_fixed_width(col, width);
|
||||
gtk_tree_view_column_set_sizing(col, GTK_TREE_VIEW_COLUMN_FIXED);
|
||||
gtk_tree_view_column_set_sort_column_id(col, FC_PRIORITY);
|
||||
gtk_tree_view_column_set_cell_data_func(col, rend, renderPriority, NULL, NULL);
|
||||
gtk_tree_view_column_set_cell_data_func(col, rend, renderPriority, nullptr, nullptr);
|
||||
gtk_tree_view_append_column(tree_view, col);
|
||||
|
||||
/* add tooltip to tree */
|
||||
gtk_tree_view_set_tooltip_column(tree_view, FC_LABEL_ESC);
|
||||
|
||||
/* create the scrolled window and stick the view in it */
|
||||
scroll = gtk_scrolled_window_new(NULL, NULL);
|
||||
scroll = gtk_scrolled_window_new(nullptr, nullptr);
|
||||
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
|
||||
gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scroll), GTK_SHADOW_IN);
|
||||
gtk_container_add(GTK_CONTAINER(scroll), view);
|
||||
|
|
|
@ -63,7 +63,7 @@ static char* get_name_from_host(char const* host)
|
|||
{
|
||||
name = g_strdup(host);
|
||||
}
|
||||
else if (dot != NULL)
|
||||
else if (dot != nullptr)
|
||||
{
|
||||
name = g_strndup(host, dot - host);
|
||||
}
|
||||
|
@ -94,7 +94,7 @@ static void favicon_ready_cb(gpointer pixbuf, gpointer vreference)
|
|||
GtkTreeIter iter;
|
||||
auto* reference = static_cast<GtkTreeRowReference*>(vreference);
|
||||
|
||||
if (pixbuf != NULL)
|
||||
if (pixbuf != nullptr)
|
||||
{
|
||||
GtkTreePath* path = gtk_tree_row_reference_get_path(reference);
|
||||
GtkTreeModel* model = gtk_tree_row_reference_get_model(reference);
|
||||
|
@ -123,10 +123,10 @@ static gboolean tracker_filter_model_update(gpointer gstore)
|
|||
int num_torrents = 0;
|
||||
GPtrArray* hosts = g_ptr_array_new();
|
||||
GStringChunk* strings = g_string_chunk_new(4096);
|
||||
GHashTable* hosts_hash = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, g_free);
|
||||
GHashTable* hosts_hash = g_hash_table_new_full(g_str_hash, g_str_equal, nullptr, g_free);
|
||||
GtkTreeModel* tmodel = GTK_TREE_MODEL(g_object_get_qdata(o, TORRENT_MODEL_KEY));
|
||||
GtkTreeIter iter;
|
||||
if (gtk_tree_model_iter_nth_child(tmodel, &iter, NULL, 0))
|
||||
if (gtk_tree_model_iter_nth_child(tmodel, &iter, nullptr, 0))
|
||||
{
|
||||
do
|
||||
{
|
||||
|
@ -144,7 +144,7 @@ static gboolean tracker_filter_model_update(gpointer gstore)
|
|||
char* const key = g_string_chunk_insert_const(strings, name);
|
||||
|
||||
auto* count = static_cast<int*>(g_hash_table_lookup(hosts_hash, key));
|
||||
if (count == NULL)
|
||||
if (count == nullptr)
|
||||
{
|
||||
count = tr_new0(int, 1);
|
||||
g_hash_table_insert(hosts_hash, key, count);
|
||||
|
@ -181,7 +181,7 @@ static gboolean tracker_filter_model_update(gpointer gstore)
|
|||
// update the "all" count
|
||||
GtkTreeStore* store = GTK_TREE_STORE(gstore);
|
||||
GtkTreeModel* model = GTK_TREE_MODEL(gstore);
|
||||
if (gtk_tree_model_iter_children(model, &iter, NULL))
|
||||
if (gtk_tree_model_iter_children(model, &iter, nullptr))
|
||||
{
|
||||
tracker_model_update_count(store, &iter, num_torrents);
|
||||
}
|
||||
|
@ -192,7 +192,7 @@ static gboolean tracker_filter_model_update(gpointer gstore)
|
|||
{
|
||||
// are we done yet?
|
||||
gboolean const new_hosts_done = i >= hosts->len;
|
||||
gboolean const old_hosts_done = !gtk_tree_model_iter_nth_child(model, &iter, NULL, store_pos);
|
||||
gboolean const old_hosts_done = !gtk_tree_model_iter_nth_child(model, &iter, nullptr, store_pos);
|
||||
if (new_hosts_done && old_hosts_done)
|
||||
{
|
||||
break;
|
||||
|
@ -244,7 +244,7 @@ static gboolean tracker_filter_model_update(gpointer gstore)
|
|||
gtk_tree_store_insert_with_values(
|
||||
store,
|
||||
&add,
|
||||
NULL,
|
||||
nullptr,
|
||||
store_pos,
|
||||
TR_ARG_TUPLE(TRACKER_FILTER_COL_HOST, host),
|
||||
TR_ARG_TUPLE(TRACKER_FILTER_COL_NAME, name),
|
||||
|
@ -288,16 +288,16 @@ static GtkTreeModel* tracker_filter_model_new(GtkTreeModel* tmodel)
|
|||
|
||||
gtk_tree_store_insert_with_values(
|
||||
store,
|
||||
NULL,
|
||||
NULL,
|
||||
nullptr,
|
||||
nullptr,
|
||||
-1,
|
||||
TR_ARG_TUPLE(TRACKER_FILTER_COL_NAME, _("All")),
|
||||
TR_ARG_TUPLE(TRACKER_FILTER_COL_TYPE, TRACKER_FILTER_TYPE_ALL),
|
||||
-1);
|
||||
gtk_tree_store_insert_with_values(
|
||||
store,
|
||||
NULL,
|
||||
NULL,
|
||||
nullptr,
|
||||
nullptr,
|
||||
-1,
|
||||
TR_ARG_TUPLE(TRACKER_FILTER_COL_TYPE, TRACKER_FILTER_TYPE_SEPARATOR),
|
||||
-1);
|
||||
|
@ -319,7 +319,7 @@ static gboolean is_it_a_separator(GtkTreeModel* m, GtkTreeIter* iter, gpointer d
|
|||
static void tracker_model_update_idle(gpointer tracker_model)
|
||||
{
|
||||
GObject* o = G_OBJECT(tracker_model);
|
||||
gboolean const pending = g_object_get_qdata(o, DIRTY_KEY) != NULL;
|
||||
gboolean const pending = g_object_get_qdata(o, DIRTY_KEY) != nullptr;
|
||||
|
||||
if (!pending)
|
||||
{
|
||||
|
@ -361,7 +361,7 @@ static void render_pixbuf_func(
|
|||
|
||||
gtk_tree_model_get(tree_model, iter, TRACKER_FILTER_COL_TYPE, &type, -1);
|
||||
width = (type == TRACKER_FILTER_TYPE_HOST) ? 20 : 0;
|
||||
g_object_set(cell_renderer, "width", width, NULL);
|
||||
g_object_set(cell_renderer, "width", width, nullptr);
|
||||
}
|
||||
|
||||
static void render_number_func(
|
||||
|
@ -388,7 +388,7 @@ static void render_number_func(
|
|||
*buf = '\0';
|
||||
}
|
||||
|
||||
g_object_set(cell_renderer, "text", buf, NULL);
|
||||
g_object_set(cell_renderer, "text", buf, nullptr);
|
||||
}
|
||||
|
||||
static GtkCellRenderer* number_renderer_new(void)
|
||||
|
@ -401,7 +401,7 @@ static GtkCellRenderer* number_renderer_new(void)
|
|||
TR_ARG_TUPLE("weight", PANGO_WEIGHT_ULTRALIGHT),
|
||||
TR_ARG_TUPLE("xalign", 1.0),
|
||||
TR_ARG_TUPLE("xpad", GUI_PAD),
|
||||
NULL);
|
||||
nullptr);
|
||||
|
||||
return r;
|
||||
}
|
||||
|
@ -425,21 +425,21 @@ static GtkWidget* tracker_combo_box_new(GtkTreeModel* tmodel)
|
|||
c = gtk_combo_box_new_with_model(cat_model);
|
||||
c_combo_box = GTK_COMBO_BOX(c);
|
||||
c_cell_layout = GTK_CELL_LAYOUT(c);
|
||||
gtk_combo_box_set_row_separator_func(c_combo_box, is_it_a_separator, NULL, NULL);
|
||||
gtk_combo_box_set_row_separator_func(c_combo_box, is_it_a_separator, nullptr, nullptr);
|
||||
gtk_combo_box_set_active(c_combo_box, 0);
|
||||
|
||||
r = gtk_cell_renderer_pixbuf_new();
|
||||
gtk_cell_layout_pack_start(c_cell_layout, r, FALSE);
|
||||
gtk_cell_layout_set_cell_data_func(c_cell_layout, r, render_pixbuf_func, NULL, NULL);
|
||||
gtk_cell_layout_set_attributes(c_cell_layout, r, "pixbuf", TRACKER_FILTER_COL_PIXBUF, NULL);
|
||||
gtk_cell_layout_set_cell_data_func(c_cell_layout, r, render_pixbuf_func, nullptr, nullptr);
|
||||
gtk_cell_layout_set_attributes(c_cell_layout, r, "pixbuf", TRACKER_FILTER_COL_PIXBUF, nullptr);
|
||||
|
||||
r = gtk_cell_renderer_text_new();
|
||||
gtk_cell_layout_pack_start(c_cell_layout, r, FALSE);
|
||||
gtk_cell_layout_set_attributes(c_cell_layout, r, "text", TRACKER_FILTER_COL_NAME, NULL);
|
||||
gtk_cell_layout_set_attributes(c_cell_layout, r, "text", TRACKER_FILTER_COL_NAME, nullptr);
|
||||
|
||||
r = number_renderer_new();
|
||||
gtk_cell_layout_pack_end(c_cell_layout, r, TRUE);
|
||||
gtk_cell_layout_set_cell_data_func(c_cell_layout, r, render_number_func, NULL, NULL);
|
||||
gtk_cell_layout_set_cell_data_func(c_cell_layout, r, render_number_func, nullptr, nullptr);
|
||||
|
||||
g_object_weak_ref(G_OBJECT(cat_model), disconnect_cat_model_callbacks, tmodel);
|
||||
g_signal_connect(tmodel, "row-changed", G_CALLBACK(torrent_model_row_changed), cat_model);
|
||||
|
@ -562,7 +562,7 @@ static gboolean activity_filter_model_update(gpointer gstore)
|
|||
|
||||
g_object_steal_qdata(o, DIRTY_KEY);
|
||||
|
||||
if (gtk_tree_model_iter_nth_child(model, &iter, NULL, 0))
|
||||
if (gtk_tree_model_iter_nth_child(model, &iter, nullptr, 0))
|
||||
{
|
||||
do
|
||||
{
|
||||
|
@ -574,7 +574,7 @@ static gboolean activity_filter_model_update(gpointer gstore)
|
|||
|
||||
hits = 0;
|
||||
|
||||
if (gtk_tree_model_iter_nth_child(tmodel, &torrent_iter, NULL, 0))
|
||||
if (gtk_tree_model_iter_nth_child(tmodel, &torrent_iter, nullptr, 0))
|
||||
{
|
||||
do
|
||||
{
|
||||
|
@ -604,25 +604,26 @@ static GtkTreeModel* activity_filter_model_new(GtkTreeModel* tmodel)
|
|||
char const* name;
|
||||
char const* icon_name;
|
||||
} types[] = {
|
||||
{ ACTIVITY_FILTER_ALL, NULL, N_("All"), NULL },
|
||||
{ ACTIVITY_FILTER_SEPARATOR, NULL, NULL, NULL },
|
||||
{ ACTIVITY_FILTER_ACTIVE, NULL, N_("Active"), "system-run" },
|
||||
{ ACTIVITY_FILTER_ALL, nullptr, N_("All"), nullptr },
|
||||
{ ACTIVITY_FILTER_SEPARATOR, nullptr, nullptr, nullptr },
|
||||
{ ACTIVITY_FILTER_ACTIVE, nullptr, N_("Active"), "system-run" },
|
||||
{ ACTIVITY_FILTER_DOWNLOADING, "Verb", NC_("Verb", "Downloading"), "network-receive" },
|
||||
{ ACTIVITY_FILTER_SEEDING, "Verb", NC_("Verb", "Seeding"), "network-transmit" },
|
||||
{ ACTIVITY_FILTER_PAUSED, NULL, N_("Paused"), "media-playback-pause" },
|
||||
{ ACTIVITY_FILTER_FINISHED, NULL, N_("Finished"), "media-playback-stop" },
|
||||
{ ACTIVITY_FILTER_PAUSED, nullptr, N_("Paused"), "media-playback-pause" },
|
||||
{ ACTIVITY_FILTER_FINISHED, nullptr, N_("Finished"), "media-playback-stop" },
|
||||
{ ACTIVITY_FILTER_VERIFYING, "Verb", NC_("Verb", "Verifying"), "view-refresh" },
|
||||
{ ACTIVITY_FILTER_ERROR, NULL, N_("Error"), "dialog-error" },
|
||||
{ ACTIVITY_FILTER_ERROR, nullptr, N_("Error"), "dialog-error" },
|
||||
};
|
||||
|
||||
GtkListStore* store = gtk_list_store_new(ACTIVITY_FILTER_N_COLS, G_TYPE_STRING, G_TYPE_INT, G_TYPE_INT, G_TYPE_STRING);
|
||||
|
||||
for (size_t i = 0; i < G_N_ELEMENTS(types); ++i)
|
||||
{
|
||||
char const* name = types[i].context != NULL ? g_dpgettext2(NULL, types[i].context, types[i].name) : _(types[i].name);
|
||||
char const* name = types[i].context != nullptr ? g_dpgettext2(nullptr, types[i].context, types[i].name) :
|
||||
_(types[i].name);
|
||||
gtk_list_store_insert_with_values(
|
||||
store,
|
||||
NULL,
|
||||
nullptr,
|
||||
-1,
|
||||
TR_ARG_TUPLE(ACTIVITY_FILTER_COL_NAME, name),
|
||||
TR_ARG_TUPLE(ACTIVITY_FILTER_COL_TYPE, types[i].type),
|
||||
|
@ -653,13 +654,13 @@ static void render_activity_pixbuf_func(
|
|||
width = type == ACTIVITY_FILTER_ALL ? 0 : 20;
|
||||
ypad = type == ACTIVITY_FILTER_ALL ? 0 : 2;
|
||||
|
||||
g_object_set(cell_renderer, "width", width, "ypad", ypad, NULL);
|
||||
g_object_set(cell_renderer, "width", width, "ypad", ypad, nullptr);
|
||||
}
|
||||
|
||||
static void activity_model_update_idle(gpointer activity_model)
|
||||
{
|
||||
GObject* o = G_OBJECT(activity_model);
|
||||
gboolean const pending = g_object_get_qdata(o, DIRTY_KEY) != NULL;
|
||||
gboolean const pending = g_object_get_qdata(o, DIRTY_KEY) != nullptr;
|
||||
|
||||
if (!pending)
|
||||
{
|
||||
|
@ -708,21 +709,21 @@ static GtkWidget* activity_combo_box_new(GtkTreeModel* tmodel)
|
|||
c = gtk_combo_box_new_with_model(activity_model);
|
||||
c_combo_box = GTK_COMBO_BOX(c);
|
||||
c_cell_layout = GTK_CELL_LAYOUT(c);
|
||||
gtk_combo_box_set_row_separator_func(c_combo_box, activity_is_it_a_separator, NULL, NULL);
|
||||
gtk_combo_box_set_row_separator_func(c_combo_box, activity_is_it_a_separator, nullptr, nullptr);
|
||||
gtk_combo_box_set_active(c_combo_box, 0);
|
||||
|
||||
r = gtk_cell_renderer_pixbuf_new();
|
||||
gtk_cell_layout_pack_start(c_cell_layout, r, FALSE);
|
||||
gtk_cell_layout_set_attributes(c_cell_layout, r, TR_ARG_TUPLE("icon-name", ACTIVITY_FILTER_COL_ICON_NAME), NULL);
|
||||
gtk_cell_layout_set_cell_data_func(c_cell_layout, r, render_activity_pixbuf_func, NULL, NULL);
|
||||
gtk_cell_layout_set_attributes(c_cell_layout, r, TR_ARG_TUPLE("icon-name", ACTIVITY_FILTER_COL_ICON_NAME), nullptr);
|
||||
gtk_cell_layout_set_cell_data_func(c_cell_layout, r, render_activity_pixbuf_func, nullptr, nullptr);
|
||||
|
||||
r = gtk_cell_renderer_text_new();
|
||||
gtk_cell_layout_pack_start(c_cell_layout, r, TRUE);
|
||||
gtk_cell_layout_set_attributes(c_cell_layout, r, TR_ARG_TUPLE("text", ACTIVITY_FILTER_COL_NAME), NULL);
|
||||
gtk_cell_layout_set_attributes(c_cell_layout, r, TR_ARG_TUPLE("text", ACTIVITY_FILTER_COL_NAME), nullptr);
|
||||
|
||||
r = number_renderer_new();
|
||||
gtk_cell_layout_pack_end(c_cell_layout, r, TRUE);
|
||||
gtk_cell_layout_set_cell_data_func(c_cell_layout, r, render_number_func, NULL, NULL);
|
||||
gtk_cell_layout_set_cell_data_func(c_cell_layout, r, render_number_func, nullptr, nullptr);
|
||||
|
||||
g_object_weak_ref(G_OBJECT(activity_model), disconnect_activity_model_callbacks, tmodel);
|
||||
g_signal_connect(tmodel, "row-changed", G_CALLBACK(activity_torrent_model_row_changed), activity_model);
|
||||
|
@ -752,14 +753,14 @@ static gboolean testText(tr_torrent const* tor, char const* key)
|
|||
|
||||
/* test the torrent name... */
|
||||
char* pch = g_utf8_casefold(tr_torrentName(tor), -1);
|
||||
ret = key == NULL || strstr(pch, key) != NULL;
|
||||
ret = key == nullptr || strstr(pch, key) != nullptr;
|
||||
g_free(pch);
|
||||
|
||||
/* test the files... */
|
||||
for (tr_file_index_t i = 0; i < inf->fileCount && !ret; ++i)
|
||||
{
|
||||
pch = g_utf8_casefold(inf->files[i].name, -1);
|
||||
ret = key == NULL || strstr(pch, key) != NULL;
|
||||
ret = key == nullptr || strstr(pch, key) != nullptr;
|
||||
g_free(pch);
|
||||
}
|
||||
}
|
||||
|
@ -815,7 +816,7 @@ static gboolean is_row_visible(GtkTreeModel* model, GtkTreeIter* iter, gpointer
|
|||
|
||||
text = (char const*)g_object_get_qdata(o, TEXT_KEY);
|
||||
|
||||
return tor != NULL && test_tracker(tor, data->active_tracker_type, data->active_tracker_host) &&
|
||||
return tor != nullptr && test_tracker(tor, data->active_tracker_type, data->active_tracker_host) &&
|
||||
test_torrent_activity(tor, data->active_activity_type) && testText(tor, text);
|
||||
}
|
||||
|
||||
|
@ -858,7 +859,7 @@ static void selection_changed_cb(GtkComboBox* combo, gpointer vdata)
|
|||
else
|
||||
{
|
||||
type = TRACKER_FILTER_TYPE_ALL;
|
||||
host = NULL;
|
||||
host = nullptr;
|
||||
}
|
||||
|
||||
g_free(data->active_tracker_host);
|
||||
|
@ -885,7 +886,7 @@ static gboolean update_count_label(gpointer gdata)
|
|||
auto* data = static_cast<filter_data*>(gdata);
|
||||
|
||||
/* get the visible count */
|
||||
visibleCount = gtk_tree_model_iter_n_children(data->filter_model, NULL);
|
||||
visibleCount = gtk_tree_model_iter_n_children(data->filter_model, nullptr);
|
||||
|
||||
/* get the tracker count */
|
||||
combo = GTK_COMBO_BOX(data->tracker);
|
||||
|
@ -932,7 +933,7 @@ static gboolean update_count_label(gpointer gdata)
|
|||
static void update_count_label_idle(struct filter_data* data)
|
||||
{
|
||||
GObject* o = G_OBJECT(data->show_lb);
|
||||
gboolean const pending = g_object_get_qdata(o, DIRTY_KEY) != NULL;
|
||||
gboolean const pending = g_object_get_qdata(o, DIRTY_KEY) != nullptr;
|
||||
|
||||
if (!pending)
|
||||
{
|
||||
|
@ -984,14 +985,14 @@ GtkWidget* gtr_filter_bar_new(tr_session* session, GtkTreeModel* tmodel, GtkTree
|
|||
TORRENT_MODEL_KEY = g_quark_from_static_string("tr-filter-torrent-model-key");
|
||||
|
||||
data = g_new0(struct filter_data, 1);
|
||||
data->show_lb = gtk_label_new(NULL);
|
||||
data->show_lb = gtk_label_new(nullptr);
|
||||
data->activity = activity = activity_combo_box_new(tmodel);
|
||||
data->tracker = tracker = tracker_combo_box_new(tmodel);
|
||||
data->filter_model = gtk_tree_model_filter_new(tmodel, NULL);
|
||||
data->filter_model = gtk_tree_model_filter_new(tmodel, nullptr);
|
||||
g_signal_connect(data->filter_model, "row-deleted", G_CALLBACK(on_filter_model_row_deleted), data);
|
||||
g_signal_connect(data->filter_model, "row-inserted", G_CALLBACK(on_filter_model_row_inserted), data);
|
||||
|
||||
g_object_set(G_OBJECT(data->tracker), "width-request", 170, NULL);
|
||||
g_object_set(G_OBJECT(data->tracker), "width-request", 170, nullptr);
|
||||
g_object_set_qdata(G_OBJECT(gtk_combo_box_get_model(GTK_COMBO_BOX(data->tracker))), SESSION_KEY, session);
|
||||
|
||||
gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(data->filter_model), is_row_visible, data, g_free);
|
||||
|
@ -1026,11 +1027,11 @@ GtkWidget* gtr_filter_bar_new(tr_session* session, GtkTreeModel* tmodel, GtkTree
|
|||
/* add the entry field */
|
||||
s = gtk_entry_new();
|
||||
gtk_entry_set_icon_from_icon_name(GTK_ENTRY(s), GTK_ENTRY_ICON_SECONDARY, "edit-clear");
|
||||
g_signal_connect(s, "icon-release", G_CALLBACK(entry_clear), NULL);
|
||||
g_signal_connect(s, "icon-release", G_CALLBACK(entry_clear), nullptr);
|
||||
gtk_box_pack_start(h_box, s, TRUE, TRUE, 0);
|
||||
|
||||
g_signal_connect(s, "changed", G_CALLBACK(filter_entry_changed), data->filter_model);
|
||||
selection_changed_cb(NULL, data);
|
||||
selection_changed_cb(nullptr, data);
|
||||
|
||||
*filter_model = data->filter_model;
|
||||
update_count_label(data);
|
||||
|
|
10
gtk/hig.cc
10
gtk/hig.cc
|
@ -46,7 +46,7 @@ void hig_workarea_add_section_title(GtkWidget* t, guint* row, char const* sectio
|
|||
|
||||
g_snprintf(buf, sizeof(buf), "<b>%s</b>", section_title);
|
||||
l = gtk_label_new(buf);
|
||||
g_object_set(l, "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, NULL);
|
||||
g_object_set(l, "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, nullptr);
|
||||
gtk_label_set_use_markup(GTK_LABEL(l), TRUE);
|
||||
hig_workarea_add_section_title_widget(t, row, l);
|
||||
}
|
||||
|
@ -94,7 +94,7 @@ void hig_workarea_add_label_w(GtkWidget* t, guint row, GtkWidget* w)
|
|||
TR_ARG_TUPLE("halign", GTK_ALIGN_START),
|
||||
TR_ARG_TUPLE("valign", GTK_ALIGN_CENTER),
|
||||
TR_ARG_TUPLE("use-markup", TRUE),
|
||||
NULL);
|
||||
nullptr);
|
||||
}
|
||||
|
||||
gtk_grid_attach(GTK_GRID(t), w, 0, row, 1, 1);
|
||||
|
@ -104,10 +104,10 @@ static void hig_workarea_add_tall_control(GtkWidget* t, guint row, GtkWidget* co
|
|||
{
|
||||
if (GTK_IS_LABEL(control))
|
||||
{
|
||||
g_object_set(control, TR_ARG_TUPLE("halign", GTK_ALIGN_START), TR_ARG_TUPLE("valign", GTK_ALIGN_CENTER), NULL);
|
||||
g_object_set(control, TR_ARG_TUPLE("halign", GTK_ALIGN_START), TR_ARG_TUPLE("valign", GTK_ALIGN_CENTER), nullptr);
|
||||
}
|
||||
|
||||
g_object_set(control, "expand", TRUE, NULL);
|
||||
g_object_set(control, "expand", TRUE, nullptr);
|
||||
gtk_grid_attach(GTK_GRID(t), control, 1, row, 1, 1);
|
||||
}
|
||||
|
||||
|
@ -115,7 +115,7 @@ static void hig_workarea_add_control(GtkWidget* t, guint row, GtkWidget* control
|
|||
{
|
||||
if (GTK_IS_LABEL(control))
|
||||
{
|
||||
g_object_set(control, TR_ARG_TUPLE("halign", GTK_ALIGN_START), TR_ARG_TUPLE("valign", GTK_ALIGN_CENTER), NULL);
|
||||
g_object_set(control, TR_ARG_TUPLE("halign", GTK_ALIGN_START), TR_ARG_TUPLE("valign", GTK_ALIGN_CENTER), nullptr);
|
||||
}
|
||||
|
||||
gtk_widget_set_hexpand(control, TRUE);
|
||||
|
|
50
gtk/icons.cc
50
gtk/icons.cc
|
@ -14,14 +14,14 @@
|
|||
|
||||
static char const* get_static_string(char const* s)
|
||||
{
|
||||
static GStringChunk* static_strings = NULL;
|
||||
static GStringChunk* static_strings = nullptr;
|
||||
|
||||
if (s == NULL)
|
||||
if (s == nullptr)
|
||||
{
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (static_strings == NULL)
|
||||
if (static_strings == nullptr)
|
||||
{
|
||||
static_strings = g_string_chunk_new(1024);
|
||||
}
|
||||
|
@ -36,7 +36,7 @@ typedef struct
|
|||
GHashTable* cache;
|
||||
} IconCache;
|
||||
|
||||
static IconCache* icon_cache[7] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL };
|
||||
static IconCache* icon_cache[7] = { nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr };
|
||||
|
||||
static GdkPixbuf* create_void_pixbuf(int width, int height)
|
||||
{
|
||||
|
@ -58,12 +58,12 @@ static int get_size_in_pixels(GtkIconSize icon_size)
|
|||
|
||||
static IconCache* icon_cache_new(GtkWidget* for_widget, GtkIconSize icon_size)
|
||||
{
|
||||
g_return_val_if_fail(for_widget != NULL, NULL);
|
||||
g_return_val_if_fail(for_widget != nullptr, nullptr);
|
||||
|
||||
IconCache* icons = g_new0(IconCache, 1);
|
||||
icons->icon_theme = gtk_icon_theme_get_for_screen(gtk_widget_get_screen(for_widget));
|
||||
icons->icon_size = get_size_in_pixels(icon_size);
|
||||
icons->cache = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, g_object_unref);
|
||||
icons->cache = g_hash_table_new_full(g_str_hash, g_str_equal, nullptr, g_object_unref);
|
||||
|
||||
g_hash_table_insert(icons->cache, (void*)VOID_PIXBUF_KEY, create_void_pixbuf(icons->icon_size, icons->icon_size));
|
||||
|
||||
|
@ -72,14 +72,14 @@ static IconCache* icon_cache_new(GtkWidget* for_widget, GtkIconSize icon_size)
|
|||
|
||||
static char const* _icon_cache_get_icon_key(GIcon* icon)
|
||||
{
|
||||
char const* key = NULL;
|
||||
char const* key = nullptr;
|
||||
|
||||
if (G_IS_THEMED_ICON(icon))
|
||||
{
|
||||
char** icon_names;
|
||||
char* name;
|
||||
|
||||
g_object_get(icon, "names", &icon_names, NULL);
|
||||
g_object_get(icon, "names", &icon_names, nullptr);
|
||||
name = g_strjoinv(",", icon_names);
|
||||
|
||||
key = get_static_string(name);
|
||||
|
@ -106,25 +106,25 @@ static char const* _icon_cache_get_icon_key(GIcon* icon)
|
|||
|
||||
static GdkPixbuf* get_themed_icon_pixbuf(GThemedIcon* icon, int size, GtkIconTheme* icon_theme)
|
||||
{
|
||||
char** icon_names = NULL;
|
||||
char** icon_names = nullptr;
|
||||
GtkIconInfo* icon_info;
|
||||
GdkPixbuf* pixbuf;
|
||||
GError* error = NULL;
|
||||
GError* error = nullptr;
|
||||
|
||||
g_object_get(icon, "names", &icon_names, NULL);
|
||||
g_object_get(icon, "names", &icon_names, nullptr);
|
||||
|
||||
icon_info = gtk_icon_theme_choose_icon(icon_theme, (char const**)icon_names, size, {});
|
||||
|
||||
if (icon_info == NULL)
|
||||
if (icon_info == nullptr)
|
||||
{
|
||||
icon_info = gtk_icon_theme_lookup_icon(icon_theme, "text-x-generic", size, GTK_ICON_LOOKUP_USE_BUILTIN);
|
||||
}
|
||||
|
||||
pixbuf = gtk_icon_info_load_icon(icon_info, &error);
|
||||
|
||||
if (pixbuf == NULL)
|
||||
if (pixbuf == nullptr)
|
||||
{
|
||||
if (error != NULL && error->message != NULL)
|
||||
if (error != nullptr && error->message != nullptr)
|
||||
{
|
||||
g_warning("could not load icon pixbuf: %s\n", error->message);
|
||||
}
|
||||
|
@ -151,7 +151,7 @@ static GdkPixbuf* get_file_icon_pixbuf(GFileIcon* icon, int size)
|
|||
|
||||
file = g_file_icon_get_file(icon);
|
||||
filename = g_file_get_path(file);
|
||||
pixbuf = gdk_pixbuf_new_from_file_at_size(filename, size, -1, NULL);
|
||||
pixbuf = gdk_pixbuf_new_from_file_at_size(filename, size, -1, nullptr);
|
||||
g_free(filename);
|
||||
g_object_unref(file);
|
||||
|
||||
|
@ -160,9 +160,9 @@ static GdkPixbuf* get_file_icon_pixbuf(GFileIcon* icon, int size)
|
|||
|
||||
static GdkPixbuf* _get_icon_pixbuf(GIcon* icon, int size, GtkIconTheme* theme)
|
||||
{
|
||||
if (icon == NULL)
|
||||
if (icon == nullptr)
|
||||
{
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (G_IS_THEMED_ICON(icon))
|
||||
|
@ -175,21 +175,21 @@ static GdkPixbuf* _get_icon_pixbuf(GIcon* icon, int size, GtkIconTheme* theme)
|
|||
return get_file_icon_pixbuf(G_FILE_ICON(icon), size);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
static GdkPixbuf* icon_cache_get_mime_type_icon(IconCache* icons, char const* mime_type)
|
||||
{
|
||||
GIcon* icon = g_content_type_get_icon(mime_type);
|
||||
char const* key = _icon_cache_get_icon_key(icon);
|
||||
if (key == NULL)
|
||||
if (key == nullptr)
|
||||
{
|
||||
key = VOID_PIXBUF_KEY;
|
||||
}
|
||||
|
||||
g_return_val_if_fail(icons != NULL, NULL);
|
||||
g_return_val_if_fail(icons != nullptr, nullptr);
|
||||
auto* pixbuf = static_cast<GdkPixbuf*>(g_hash_table_lookup(icons->cache, key));
|
||||
if (pixbuf != NULL)
|
||||
if (pixbuf != nullptr)
|
||||
{
|
||||
g_object_ref(pixbuf);
|
||||
g_object_unref(G_OBJECT(icon));
|
||||
|
@ -198,7 +198,7 @@ static GdkPixbuf* icon_cache_get_mime_type_icon(IconCache* icons, char const* mi
|
|||
|
||||
pixbuf = _get_icon_pixbuf(icon, icons->icon_size, icons->icon_theme);
|
||||
|
||||
if (pixbuf != NULL)
|
||||
if (pixbuf != nullptr)
|
||||
{
|
||||
g_hash_table_insert(icons->cache, (gpointer)key, g_object_ref(pixbuf));
|
||||
}
|
||||
|
@ -243,7 +243,7 @@ GdkPixbuf* gtr_get_mime_type_icon(char const* mime_type, GtkIconSize icon_size,
|
|||
break;
|
||||
}
|
||||
|
||||
if (icon_cache[n] == NULL)
|
||||
if (icon_cache[n] == nullptr)
|
||||
{
|
||||
icon_cache[n] = icon_cache_new(for_widget, icon_size);
|
||||
}
|
||||
|
@ -253,7 +253,7 @@ GdkPixbuf* gtr_get_mime_type_icon(char const* mime_type, GtkIconSize icon_size,
|
|||
|
||||
char const* gtr_get_mime_type_from_filename(char const* file)
|
||||
{
|
||||
char* tmp = g_content_type_guess(file, NULL, 0, NULL);
|
||||
char* tmp = g_content_type_guess(file, nullptr, 0, nullptr);
|
||||
char const* ret = get_static_string(tmp);
|
||||
g_free(tmp);
|
||||
return ret;
|
||||
|
|
160
gtk/main.cc
160
gtk/main.cc
|
@ -114,9 +114,9 @@ static int compare_integers(gconstpointer a, gconstpointer b)
|
|||
static char* get_details_dialog_key(GSList* id_list)
|
||||
{
|
||||
GSList* tmp = g_slist_sort(g_slist_copy(id_list), compare_integers);
|
||||
GString* gstr = g_string_new(NULL);
|
||||
GString* gstr = g_string_new(nullptr);
|
||||
|
||||
for (GSList* l = tmp; l != NULL; l = l->next)
|
||||
for (GSList* l = tmp; l != nullptr; l = l->next)
|
||||
{
|
||||
g_string_append_printf(gstr, "%d ", GPOINTER_TO_INT(l->data));
|
||||
}
|
||||
|
@ -137,7 +137,7 @@ static void get_selected_torrent_ids_foreach(GtkTreeModel* model, GtkTreePath* p
|
|||
|
||||
static GSList* get_selected_torrent_ids(struct cbdata* data)
|
||||
{
|
||||
GSList* ids = NULL;
|
||||
GSList* ids = nullptr;
|
||||
gtk_tree_selection_selected_foreach(data->sel, get_selected_torrent_ids_foreach, &ids);
|
||||
return ids;
|
||||
}
|
||||
|
@ -151,11 +151,11 @@ static void on_details_dialog_closed(gpointer gdata, GObject* dead)
|
|||
|
||||
static void show_details_dialog_for_selected_torrents(struct cbdata* data)
|
||||
{
|
||||
GtkWidget* dialog = NULL;
|
||||
GtkWidget* dialog = nullptr;
|
||||
GSList* ids = get_selected_torrent_ids(data);
|
||||
char* key = get_details_dialog_key(ids);
|
||||
|
||||
for (GSList* l = data->details; dialog == NULL && l != NULL; l = l->next)
|
||||
for (GSList* l = data->details; dialog == nullptr && l != nullptr; l = l->next)
|
||||
{
|
||||
if (g_strcmp0(key, static_cast<char const*>(g_object_get_data(static_cast<GObject*>(l->data), "key"))) == 0)
|
||||
{
|
||||
|
@ -163,7 +163,7 @@ static void show_details_dialog_for_selected_torrents(struct cbdata* data)
|
|||
}
|
||||
}
|
||||
|
||||
if (dialog == NULL)
|
||||
if (dialog == nullptr)
|
||||
{
|
||||
dialog = gtr_torrent_details_dialog_new(GTK_WINDOW(data->wind), data->core);
|
||||
gtr_torrent_details_dialog_set_torrents(dialog, ids);
|
||||
|
@ -241,7 +241,7 @@ static gboolean refresh_actions(gpointer gdata)
|
|||
struct counts_data sel_counts;
|
||||
size_t const total = gtr_core_get_torrent_count(data->core);
|
||||
size_t const active = gtr_core_get_active_torrent_count(data->core);
|
||||
int const torrent_count = gtk_tree_model_iter_n_children(gtr_core_model(data->core), NULL);
|
||||
int const torrent_count = gtk_tree_model_iter_n_children(gtr_core_model(data->core), nullptr);
|
||||
bool has_selection;
|
||||
|
||||
get_selected_torrent_counts(data, &sel_counts);
|
||||
|
@ -300,7 +300,7 @@ static void on_selection_changed(GtkTreeSelection const* s, gpointer gdata)
|
|||
static gboolean has_magnet_link_handler(void)
|
||||
{
|
||||
GAppInfo* app_info = g_app_info_get_default_for_uri_scheme("magnet");
|
||||
gboolean const has_handler = app_info != NULL;
|
||||
gboolean const has_handler = app_info != nullptr;
|
||||
g_clear_object(&app_info);
|
||||
return has_handler;
|
||||
}
|
||||
|
@ -311,11 +311,11 @@ static void register_magnet_link_handler(void)
|
|||
GAppInfo* app;
|
||||
char const* const content_type = "x-scheme-handler/magnet";
|
||||
|
||||
error = NULL;
|
||||
error = nullptr;
|
||||
app = g_app_info_create_from_commandline("transmission-gtk", "transmission-gtk", G_APP_INFO_CREATE_SUPPORTS_URIS, &error);
|
||||
g_app_info_set_as_default_for_type(app, content_type, &error);
|
||||
|
||||
if (error != NULL)
|
||||
if (error != nullptr)
|
||||
{
|
||||
g_warning(_("Error registering Transmission as a %s handler: %s"), content_type, error->message);
|
||||
g_error_free(error);
|
||||
|
@ -338,7 +338,7 @@ static void on_main_window_size_allocated(GtkWidget* gtk_window, GtkAllocation c
|
|||
TR_UNUSED(gdata);
|
||||
|
||||
GdkWindow* gdk_window = gtk_widget_get_window(gtk_window);
|
||||
gboolean const isMaximized = gdk_window != NULL && (gdk_window_get_state(gdk_window) & GDK_WINDOW_STATE_MAXIMIZED) != 0;
|
||||
gboolean const isMaximized = gdk_window != nullptr && (gdk_window_get_state(gdk_window) & GDK_WINDOW_STATE_MAXIMIZED) != 0;
|
||||
|
||||
gtr_pref_int_set(TR_KEY_main_window_is_maximized, isMaximized);
|
||||
|
||||
|
@ -380,7 +380,7 @@ static gboolean on_rpc_changed_idle(gpointer gdata)
|
|||
break;
|
||||
|
||||
case TR_RPC_TORRENT_ADDED:
|
||||
if ((tor = gtr_core_find_torrent(data->core, data->torrent_id)) != NULL)
|
||||
if ((tor = gtr_core_find_torrent(data->core, data->torrent_id)) != nullptr)
|
||||
{
|
||||
gtr_core_add_torrent(data->core, tor, true);
|
||||
}
|
||||
|
@ -401,7 +401,7 @@ static gboolean on_rpc_changed_idle(gpointer gdata)
|
|||
tr_variant* newval;
|
||||
tr_variant* oldvals = gtr_pref_get_all();
|
||||
tr_quark key;
|
||||
GSList* changed_keys = NULL;
|
||||
GSList* changed_keys = nullptr;
|
||||
tr_session* session = gtr_core_session(data->core);
|
||||
tr_variantInitDict(&tmp, 100);
|
||||
tr_sessionGetSettings(session, &tmp);
|
||||
|
@ -411,14 +411,14 @@ static gboolean on_rpc_changed_idle(gpointer gdata)
|
|||
bool changed;
|
||||
tr_variant const* oldval = tr_variantDictFind(oldvals, key);
|
||||
|
||||
if (oldval == NULL)
|
||||
if (oldval == nullptr)
|
||||
{
|
||||
changed = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
char* a = tr_variantToStr(oldval, TR_VARIANT_FMT_BENC, NULL);
|
||||
char* b = tr_variantToStr(newval, TR_VARIANT_FMT_BENC, NULL);
|
||||
char* a = tr_variantToStr(oldval, TR_VARIANT_FMT_BENC, nullptr);
|
||||
char* b = tr_variantToStr(newval, TR_VARIANT_FMT_BENC, nullptr);
|
||||
changed = g_strcmp0(a, b) != 0;
|
||||
tr_free(b);
|
||||
tr_free(a);
|
||||
|
@ -432,7 +432,7 @@ static gboolean on_rpc_changed_idle(gpointer gdata)
|
|||
|
||||
tr_sessionGetSettings(session, oldvals);
|
||||
|
||||
for (GSList* l = changed_keys; l != NULL; l = l->next)
|
||||
for (GSList* l = changed_keys; l != nullptr; l = l->next)
|
||||
{
|
||||
gtr_core_pref_changed(data->core, GPOINTER_TO_INT(l->data));
|
||||
}
|
||||
|
@ -516,12 +516,12 @@ static void on_startup(GApplication* application, gpointer user_data)
|
|||
sighandler_cbdata = cbdata;
|
||||
|
||||
/* ensure the directories are created */
|
||||
if ((str = gtr_pref_string_get(TR_KEY_download_dir)) != NULL)
|
||||
if ((str = gtr_pref_string_get(TR_KEY_download_dir)) != nullptr)
|
||||
{
|
||||
g_mkdir_with_parents(str, 0777);
|
||||
}
|
||||
|
||||
if ((str = gtr_pref_string_get(TR_KEY_incomplete_dir)) != NULL)
|
||||
if ((str = gtr_pref_string_get(TR_KEY_incomplete_dir)) != nullptr)
|
||||
{
|
||||
g_mkdir_with_parents(str, 0777);
|
||||
}
|
||||
|
@ -534,7 +534,7 @@ static void on_startup(GApplication* application, gpointer user_data)
|
|||
cbdata->core = gtr_core_new(session);
|
||||
|
||||
/* init the ui manager */
|
||||
error = NULL;
|
||||
error = nullptr;
|
||||
ui_manager = gtk_ui_manager_new();
|
||||
gtr_actions_init(ui_manager, cbdata);
|
||||
gtk_ui_manager_add_ui_from_resource(ui_manager, TR_RESOURCE_PATH "transmission-ui.xml", &error);
|
||||
|
@ -554,7 +554,7 @@ static void on_startup(GApplication* application, gpointer user_data)
|
|||
{
|
||||
int64_t const last_time = gtr_pref_int_get(TR_KEY_blocklist_date);
|
||||
int const SECONDS_IN_A_WEEK = 7 * 24 * 60 * 60;
|
||||
time_t const now = time(NULL);
|
||||
time_t const now = time(nullptr);
|
||||
|
||||
if (last_time + SECONDS_IN_A_WEEK < now)
|
||||
{
|
||||
|
@ -598,7 +598,7 @@ static void on_open(GApplication const* application, GFile** f, gint file_count,
|
|||
TR_UNUSED(application);
|
||||
TR_UNUSED(hint);
|
||||
|
||||
GSList* files = NULL;
|
||||
GSList* files = nullptr;
|
||||
|
||||
for (gint i = 0; i < file_count; i++)
|
||||
{
|
||||
|
@ -622,15 +622,21 @@ int main(int argc, char** argv)
|
|||
GtkApplication* app;
|
||||
GOptionContext* option_context;
|
||||
bool show_version = false;
|
||||
GError* error = NULL;
|
||||
GError* error = nullptr;
|
||||
struct cbdata cbdata;
|
||||
|
||||
GOptionEntry option_entries[] = {
|
||||
{ "config-dir", 'g', 0, G_OPTION_ARG_FILENAME, &cbdata.config_dir, _("Where to look for configuration files"), NULL },
|
||||
{ "paused", 'p', 0, G_OPTION_ARG_NONE, &cbdata.start_paused, _("Start with all torrents paused"), NULL },
|
||||
{ "minimized", 'm', 0, G_OPTION_ARG_NONE, &cbdata.is_iconified, _("Start minimized in notification area"), NULL },
|
||||
{ "version", 'v', 0, G_OPTION_ARG_NONE, &show_version, _("Show version number and exit"), NULL },
|
||||
{ NULL, 0, 0, {}, NULL, NULL, NULL }
|
||||
{ "config-dir",
|
||||
'g',
|
||||
0,
|
||||
G_OPTION_ARG_FILENAME,
|
||||
&cbdata.config_dir,
|
||||
_("Where to look for configuration files"),
|
||||
nullptr },
|
||||
{ "paused", 'p', 0, G_OPTION_ARG_NONE, &cbdata.start_paused, _("Start with all torrents paused"), nullptr },
|
||||
{ "minimized", 'm', 0, G_OPTION_ARG_NONE, &cbdata.is_iconified, _("Start minimized in notification area"), nullptr },
|
||||
{ "version", 'v', 0, G_OPTION_ARG_NONE, &show_version, _("Show version number and exit"), nullptr },
|
||||
{ nullptr, 0, 0, {}, nullptr, nullptr, nullptr }
|
||||
};
|
||||
|
||||
/* default settings */
|
||||
|
@ -752,7 +758,7 @@ static void app_setup(GtkWindow* wind, struct cbdata* cbdata)
|
|||
}
|
||||
else
|
||||
{
|
||||
gtk_window_set_skip_taskbar_hint(cbdata->wind, cbdata->icon != NULL);
|
||||
gtk_window_set_skip_taskbar_hint(cbdata->wind, cbdata->icon != nullptr);
|
||||
cbdata->is_iconified = FALSE; // ensure that the next toggle iconifies
|
||||
gtr_action_set_toggled("toggle-main-window", FALSE);
|
||||
}
|
||||
|
@ -844,7 +850,7 @@ static gboolean winclose(GtkWidget const* w, GdkEvent const* event, gpointer gda
|
|||
|
||||
auto* cbdata = static_cast<struct cbdata*>(gdata);
|
||||
|
||||
if (cbdata->icon != NULL)
|
||||
if (cbdata->icon != nullptr)
|
||||
{
|
||||
gtr_action_activate("toggle-main-window");
|
||||
}
|
||||
|
@ -886,7 +892,7 @@ static void on_drag_data_received(
|
|||
|
||||
char** uris = gtk_selection_data_get_uris(selection_data);
|
||||
guint const file_count = g_strv_length(uris);
|
||||
GSList* files = NULL;
|
||||
GSList* files = nullptr;
|
||||
|
||||
for (guint i = 0; i < file_count; ++i)
|
||||
{
|
||||
|
@ -896,7 +902,7 @@ static void on_drag_data_received(
|
|||
open_files(files, gdata);
|
||||
|
||||
/* cleanup */
|
||||
g_slist_foreach(files, (GFunc)(GCallback)g_object_unref, NULL);
|
||||
g_slist_foreach(files, (GFunc)(GCallback)g_object_unref, nullptr);
|
||||
g_slist_free(files);
|
||||
g_strfreev(uris);
|
||||
|
||||
|
@ -909,7 +915,7 @@ static void main_window_setup(struct cbdata* cbdata, GtkWindow* wind)
|
|||
GtkTreeModel* model;
|
||||
GtkTreeSelection* sel;
|
||||
|
||||
g_assert(NULL == cbdata->wind);
|
||||
g_assert(nullptr == cbdata->wind);
|
||||
cbdata->wind = wind;
|
||||
cbdata->sel = sel = GTK_TREE_SELECTION(gtr_window_get_selection(cbdata->wind));
|
||||
|
||||
|
@ -922,7 +928,7 @@ static void main_window_setup(struct cbdata* cbdata, GtkWindow* wind)
|
|||
|
||||
/* register to handle URIs that get dragged onto our main window */
|
||||
w = GTK_WIDGET(wind);
|
||||
gtk_drag_dest_set(w, GTK_DEST_DEFAULT_ALL, NULL, 0, GDK_ACTION_COPY);
|
||||
gtk_drag_dest_set(w, GTK_DEST_DEFAULT_ALL, nullptr, 0, GDK_ACTION_COPY);
|
||||
gtk_drag_dest_add_uri_targets(w);
|
||||
g_signal_connect(w, "drag-data-received", G_CALLBACK(on_drag_data_received), cbdata);
|
||||
}
|
||||
|
@ -933,29 +939,29 @@ static gboolean on_session_closed(gpointer gdata)
|
|||
auto* cbdata = static_cast<struct cbdata*>(gdata);
|
||||
|
||||
tmp = g_slist_copy(cbdata->details);
|
||||
g_slist_foreach(tmp, (GFunc)(GCallback)gtk_widget_destroy, NULL);
|
||||
g_slist_foreach(tmp, (GFunc)(GCallback)gtk_widget_destroy, nullptr);
|
||||
g_slist_free(tmp);
|
||||
|
||||
if (cbdata->prefs != NULL)
|
||||
if (cbdata->prefs != nullptr)
|
||||
{
|
||||
gtk_widget_destroy(GTK_WIDGET(cbdata->prefs));
|
||||
}
|
||||
|
||||
if (cbdata->wind != NULL)
|
||||
if (cbdata->wind != nullptr)
|
||||
{
|
||||
gtk_widget_destroy(GTK_WIDGET(cbdata->wind));
|
||||
}
|
||||
|
||||
g_object_unref(cbdata->core);
|
||||
|
||||
if (cbdata->icon != NULL)
|
||||
if (cbdata->icon != nullptr)
|
||||
{
|
||||
g_object_unref(cbdata->icon);
|
||||
}
|
||||
|
||||
g_slist_foreach(cbdata->error_list, (GFunc)(GCallback)g_free, NULL);
|
||||
g_slist_foreach(cbdata->error_list, (GFunc)(GCallback)g_free, nullptr);
|
||||
g_slist_free(cbdata->error_list);
|
||||
g_slist_foreach(cbdata->duplicates_list, (GFunc)(GCallback)g_free, NULL);
|
||||
g_slist_foreach(cbdata->duplicates_list, (GFunc)(GCallback)g_free, nullptr);
|
||||
g_slist_free(cbdata->duplicates_list);
|
||||
|
||||
return G_SOURCE_REMOVE;
|
||||
|
@ -976,7 +982,7 @@ static gpointer session_close_threadfunc(gpointer gdata)
|
|||
tr_sessionClose(data->session);
|
||||
gdk_threads_add_idle(on_session_closed, data->cbdata);
|
||||
g_free(data);
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
static void exit_now_cb()
|
||||
|
@ -1021,24 +1027,24 @@ static void on_app_exit(gpointer vdata)
|
|||
TR_ARG_TUPLE("column-spacing", GUI_PAD_BIG),
|
||||
TR_ARG_TUPLE("halign", GTK_ALIGN_CENTER),
|
||||
TR_ARG_TUPLE("valign", GTK_ALIGN_CENTER),
|
||||
NULL));
|
||||
nullptr));
|
||||
gtk_container_add(GTK_CONTAINER(c), p);
|
||||
|
||||
w = gtk_image_new_from_icon_name("network-workgroup", GTK_ICON_SIZE_DIALOG);
|
||||
gtk_grid_attach(GTK_GRID(p), w, 0, 0, 1, 2);
|
||||
|
||||
w = gtk_label_new(NULL);
|
||||
w = gtk_label_new(nullptr);
|
||||
gtk_label_set_markup(GTK_LABEL(w), _("<b>Closing Connections</b>"));
|
||||
g_object_set(w, "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, NULL);
|
||||
g_object_set(w, "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, nullptr);
|
||||
gtk_grid_attach(GTK_GRID(p), w, 1, 0, 1, 1);
|
||||
|
||||
w = gtk_label_new(_("Sending upload/download totals to tracker…"));
|
||||
g_object_set(w, "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, NULL);
|
||||
g_object_set(w, "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, nullptr);
|
||||
gtk_grid_attach(GTK_GRID(p), w, 1, 1, 1, 1);
|
||||
|
||||
w = gtk_button_new_with_mnemonic(_("_Quit Now"));
|
||||
g_object_set(w, "margin-top", GUI_PAD, "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_END, NULL);
|
||||
g_signal_connect(w, "clicked", G_CALLBACK(exit_now_cb), NULL);
|
||||
g_object_set(w, "margin-top", GUI_PAD, "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_END, nullptr);
|
||||
g_signal_connect(w, "clicked", G_CALLBACK(exit_now_cb), nullptr);
|
||||
gtk_grid_attach(GTK_GRID(p), w, 1, 2, 1, 1);
|
||||
|
||||
gtk_widget_show_all(p);
|
||||
|
@ -1062,10 +1068,10 @@ static void on_app_exit(gpointer vdata)
|
|||
static void show_torrent_errors(GtkWindow* window, char const* primary, GSList** files)
|
||||
{
|
||||
GtkWidget* w;
|
||||
GString* s = g_string_new(NULL);
|
||||
GString* s = g_string_new(nullptr);
|
||||
char const* leader = g_slist_length(*files) > 1 ? gtr_get_unicode_string(GTR_UNICODE_BULLET) : "";
|
||||
|
||||
for (GSList* l = *files; l != NULL; l = l->next)
|
||||
for (GSList* l = *files; l != nullptr; l = l->next)
|
||||
{
|
||||
g_string_append_printf(s, "%s %s\n", leader, (char const*)l->data);
|
||||
}
|
||||
|
@ -1076,14 +1082,14 @@ static void show_torrent_errors(GtkWindow* window, char const* primary, GSList**
|
|||
gtk_widget_show(w);
|
||||
g_string_free(s, TRUE);
|
||||
|
||||
g_slist_foreach(*files, (GFunc)(GCallback)g_free, NULL);
|
||||
g_slist_foreach(*files, (GFunc)(GCallback)g_free, nullptr);
|
||||
g_slist_free(*files);
|
||||
*files = NULL;
|
||||
*files = nullptr;
|
||||
}
|
||||
|
||||
static void flush_torrent_errors(struct cbdata* cbdata)
|
||||
{
|
||||
if (cbdata->error_list != NULL)
|
||||
if (cbdata->error_list != nullptr)
|
||||
{
|
||||
show_torrent_errors(
|
||||
cbdata->wind,
|
||||
|
@ -1091,7 +1097,7 @@ static void flush_torrent_errors(struct cbdata* cbdata)
|
|||
&cbdata->error_list);
|
||||
}
|
||||
|
||||
if (cbdata->duplicates_list != NULL)
|
||||
if (cbdata->duplicates_list != nullptr)
|
||||
{
|
||||
show_torrent_errors(
|
||||
cbdata->wind,
|
||||
|
@ -1134,7 +1140,7 @@ static gboolean on_main_window_focus_in(GtkWidget const* widget, GdkEventFocus c
|
|||
|
||||
auto* cbdata = static_cast<struct cbdata*>(gdata);
|
||||
|
||||
if (cbdata->wind != NULL)
|
||||
if (cbdata->wind != nullptr)
|
||||
{
|
||||
gtk_window_set_urgency_hint(cbdata->wind, FALSE);
|
||||
}
|
||||
|
@ -1149,7 +1155,7 @@ static void on_add_torrent(TrCore* core, tr_ctor* ctor, gpointer gdata)
|
|||
|
||||
g_signal_connect(w, "focus-in-event", G_CALLBACK(on_main_window_focus_in), cbdata);
|
||||
|
||||
if (cbdata->wind != NULL)
|
||||
if (cbdata->wind != nullptr)
|
||||
{
|
||||
gtk_window_set_urgency_hint(cbdata->wind, TRUE);
|
||||
}
|
||||
|
@ -1194,11 +1200,11 @@ static void on_prefs_changed(TrCore const* core, tr_quark const key, gpointer da
|
|||
{
|
||||
bool const show = gtr_pref_flag_get(key);
|
||||
|
||||
if (show && cbdata->icon == NULL)
|
||||
if (show && cbdata->icon == nullptr)
|
||||
{
|
||||
cbdata->icon = gtr_icon_new(cbdata->core);
|
||||
}
|
||||
else if (!show && cbdata->icon != NULL)
|
||||
else if (!show && cbdata->icon != nullptr)
|
||||
{
|
||||
g_clear_object(&cbdata->icon);
|
||||
}
|
||||
|
@ -1310,7 +1316,7 @@ static void on_prefs_changed(TrCore const* core, tr_quark const key, gpointer da
|
|||
{
|
||||
bool const b = gtr_pref_flag_get(key);
|
||||
tr_sessionUseAltSpeed(tr, b);
|
||||
gtr_action_set_toggled(tr_quark_get_string(key, NULL), b);
|
||||
gtr_action_set_toggled(tr_quark_get_string(key, nullptr), b);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1371,7 +1377,7 @@ static gboolean update_model_once(gpointer gdata)
|
|||
gtr_core_update(data->core);
|
||||
|
||||
/* refresh the main window's statusbar and toolbar buttons */
|
||||
if (data->wind != NULL)
|
||||
if (data->wind != nullptr)
|
||||
{
|
||||
gtr_window_refresh(data->wind);
|
||||
}
|
||||
|
@ -1380,7 +1386,7 @@ static gboolean update_model_once(gpointer gdata)
|
|||
refresh_actions(data);
|
||||
|
||||
/* update the status tray icon */
|
||||
if (data->icon != NULL)
|
||||
if (data->icon != nullptr)
|
||||
{
|
||||
gtr_icon_refresh(data->icon);
|
||||
}
|
||||
|
@ -1418,7 +1424,7 @@ static void show_about_dialog(GtkWindow* parent)
|
|||
"Charles Kerr (Backend; GTK+)",
|
||||
"Mitchell Livingston (Backend; OS X)",
|
||||
"Mike Gelfand",
|
||||
NULL,
|
||||
nullptr,
|
||||
};
|
||||
|
||||
gtk_show_about_dialog(
|
||||
|
@ -1439,14 +1445,14 @@ static void show_about_dialog(GtkWindow* parent)
|
|||
TR_ARG_TUPLE("license", LICENSE),
|
||||
TR_ARG_TUPLE("wrap-license", TRUE),
|
||||
#endif
|
||||
NULL);
|
||||
nullptr);
|
||||
}
|
||||
|
||||
static void append_id_to_benc_list(GtkTreeModel* m, GtkTreePath* path, GtkTreeIter* iter, gpointer list)
|
||||
{
|
||||
TR_UNUSED(path);
|
||||
|
||||
tr_torrent* tor = NULL;
|
||||
tr_torrent* tor = nullptr;
|
||||
gtk_tree_model_get(m, iter, MC_TORRENT, &tor, -1);
|
||||
tr_variantListAddInt(static_cast<tr_variant*>(list), tr_torrentId(tor));
|
||||
}
|
||||
|
@ -1468,7 +1474,7 @@ static gboolean call_rpc_for_selected_torrents(struct cbdata* data, char const*
|
|||
|
||||
if (tr_variantListSize(ids) != 0)
|
||||
{
|
||||
tr_rpc_request_exec_json(session, &top, NULL, NULL);
|
||||
tr_rpc_request_exec_json(session, &top, nullptr, nullptr);
|
||||
invoked = TRUE;
|
||||
}
|
||||
|
||||
|
@ -1504,11 +1510,11 @@ static void accumulate_selected_torrents(GtkTreeModel* model, GtkTreePath* path,
|
|||
|
||||
static void remove_selected(struct cbdata* data, gboolean delete_files)
|
||||
{
|
||||
GSList* l = NULL;
|
||||
GSList* l = nullptr;
|
||||
|
||||
gtk_tree_selection_selected_foreach(data->sel, accumulate_selected_torrents, &l);
|
||||
|
||||
if (l != NULL)
|
||||
if (l != nullptr)
|
||||
{
|
||||
gtr_confirm_remove(data->wind, data->core, l, delete_files);
|
||||
}
|
||||
|
@ -1521,7 +1527,7 @@ static void start_all_torrents(struct cbdata* data)
|
|||
|
||||
tr_variantInitDict(&request, 1);
|
||||
tr_variantDictAddStr(&request, TR_KEY_method, "torrent-start");
|
||||
tr_rpc_request_exec_json(session, &request, NULL, NULL);
|
||||
tr_rpc_request_exec_json(session, &request, nullptr, nullptr);
|
||||
tr_variantFree(&request);
|
||||
}
|
||||
|
||||
|
@ -1532,17 +1538,17 @@ static void pause_all_torrents(struct cbdata* data)
|
|||
|
||||
tr_variantInitDict(&request, 1);
|
||||
tr_variantDictAddStr(&request, TR_KEY_method, "torrent-stop");
|
||||
tr_rpc_request_exec_json(session, &request, NULL, NULL);
|
||||
tr_rpc_request_exec_json(session, &request, nullptr, nullptr);
|
||||
tr_variantFree(&request);
|
||||
}
|
||||
|
||||
static tr_torrent* get_first_selected_torrent(struct cbdata* data)
|
||||
{
|
||||
tr_torrent* tor = NULL;
|
||||
tr_torrent* tor = nullptr;
|
||||
GtkTreeModel* m;
|
||||
GList* l = gtk_tree_selection_get_selected_rows(data->sel, &m);
|
||||
|
||||
if (l != NULL)
|
||||
if (l != nullptr)
|
||||
{
|
||||
auto* p = static_cast<GtkTreePath*>(l->data);
|
||||
GtkTreeIter i;
|
||||
|
@ -1553,7 +1559,7 @@ static tr_torrent* get_first_selected_torrent(struct cbdata* data)
|
|||
}
|
||||
}
|
||||
|
||||
g_list_foreach(l, (GFunc)(GCallback)gtk_tree_path_free, NULL);
|
||||
g_list_foreach(l, (GFunc)(GCallback)gtk_tree_path_free, nullptr);
|
||||
g_list_free(l);
|
||||
return tor;
|
||||
}
|
||||
|
@ -1615,7 +1621,7 @@ void gtr_actions_handler(char const* action_name, gpointer user_data)
|
|||
{
|
||||
tr_torrent* tor = get_first_selected_torrent(data);
|
||||
|
||||
if (tor != NULL)
|
||||
if (tor != nullptr)
|
||||
{
|
||||
copy_magnet_link_to_clipboard(GTK_WIDGET(data->wind), tor);
|
||||
}
|
||||
|
@ -1624,7 +1630,7 @@ void gtr_actions_handler(char const* action_name, gpointer user_data)
|
|||
{
|
||||
GSList* ids = get_selected_torrent_ids(data);
|
||||
|
||||
if (ids != NULL)
|
||||
if (ids != nullptr)
|
||||
{
|
||||
GtkWindow* parent = data->wind;
|
||||
GtkWidget* w = gtr_relocate_dialog_new(parent, data->core, ids);
|
||||
|
@ -1675,7 +1681,7 @@ void gtr_actions_handler(char const* action_name, gpointer user_data)
|
|||
}
|
||||
else if (g_strcmp0(action_name, "edit-preferences") == 0)
|
||||
{
|
||||
if (data->prefs == NULL)
|
||||
if (data->prefs == nullptr)
|
||||
{
|
||||
data->prefs = gtr_prefs_dialog_new(data->wind, G_OBJECT(data->core));
|
||||
g_signal_connect(data->prefs, "destroy", G_CALLBACK(gtk_widget_destroyed), &data->prefs);
|
||||
|
@ -1685,17 +1691,17 @@ void gtr_actions_handler(char const* action_name, gpointer user_data)
|
|||
}
|
||||
else if (g_strcmp0(action_name, "toggle-message-log") == 0)
|
||||
{
|
||||
if (data->msgwin == NULL)
|
||||
if (data->msgwin == nullptr)
|
||||
{
|
||||
GtkWidget* win = gtr_message_log_window_new(data->wind, data->core);
|
||||
g_signal_connect(win, "destroy", G_CALLBACK(on_message_window_closed), NULL);
|
||||
g_signal_connect(win, "destroy", G_CALLBACK(on_message_window_closed), nullptr);
|
||||
data->msgwin = win;
|
||||
}
|
||||
else
|
||||
{
|
||||
gtr_action_set_toggled("toggle-message-log", FALSE);
|
||||
gtk_widget_destroy(data->msgwin);
|
||||
data->msgwin = NULL;
|
||||
data->msgwin = nullptr;
|
||||
}
|
||||
}
|
||||
else if (g_strcmp0(action_name, "show-about-dialog") == 0)
|
||||
|
|
|
@ -55,7 +55,7 @@ static void freeMetaUI(gpointer p)
|
|||
|
||||
static gboolean onProgressDialogRefresh(gpointer data)
|
||||
{
|
||||
char* str = NULL;
|
||||
char* str = nullptr;
|
||||
auto* ui = static_cast<MakeMetaUI*>(data);
|
||||
tr_metainfo_builder const* b = ui->builder;
|
||||
GtkDialog* d = GTK_DIALOG(ui->progress_dialog);
|
||||
|
@ -93,7 +93,7 @@ static gboolean onProgressDialogRefresh(gpointer data)
|
|||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
if (str != NULL)
|
||||
if (str != nullptr)
|
||||
{
|
||||
gtr_label_set_text(GTK_LABEL(ui->progress_label), str);
|
||||
g_free(str);
|
||||
|
@ -188,18 +188,18 @@ static void makeProgressDialog(GtkWidget* parent, MakeMetaUI* ui)
|
|||
TR_ARG_TUPLE(_("_Cancel"), GTK_RESPONSE_CANCEL),
|
||||
TR_ARG_TUPLE(_("_Close"), GTK_RESPONSE_CLOSE),
|
||||
TR_ARG_TUPLE(_("_Add"), GTK_RESPONSE_ACCEPT),
|
||||
NULL);
|
||||
nullptr);
|
||||
ui->progress_dialog = d;
|
||||
g_signal_connect(d, "response", G_CALLBACK(onProgressDialogResponse), ui);
|
||||
|
||||
fr = gtk_frame_new(NULL);
|
||||
fr = gtk_frame_new(nullptr);
|
||||
gtk_container_set_border_width(GTK_CONTAINER(fr), GUI_PAD_BIG);
|
||||
gtk_frame_set_shadow_type(GTK_FRAME(fr), GTK_SHADOW_NONE);
|
||||
v = gtk_box_new(GTK_ORIENTATION_VERTICAL, GUI_PAD);
|
||||
gtk_container_add(GTK_CONTAINER(fr), v);
|
||||
|
||||
l = gtk_label_new(_("Creating torrent…"));
|
||||
g_object_set(l, "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, NULL);
|
||||
g_object_set(l, "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, nullptr);
|
||||
gtk_label_set_justify(GTK_LABEL(l), GTK_JUSTIFY_LEFT);
|
||||
ui->progress_label = l;
|
||||
gtk_box_pack_start(GTK_BOX(v), l, FALSE, FALSE, 0);
|
||||
|
@ -222,7 +222,7 @@ static void onResponse(GtkDialog* d, int response, gpointer user_data)
|
|||
|
||||
if (response == GTK_RESPONSE_ACCEPT)
|
||||
{
|
||||
if (ui->builder != NULL)
|
||||
if (ui->builder != nullptr)
|
||||
{
|
||||
int n;
|
||||
int tier;
|
||||
|
@ -255,7 +255,7 @@ static void onResponse(GtkDialog* d, int response, gpointer user_data)
|
|||
n = 0;
|
||||
tier = 0;
|
||||
|
||||
for (int i = 0; tracker_strings[i] != NULL; ++i)
|
||||
for (int i = 0; tracker_strings[i] != nullptr; ++i)
|
||||
{
|
||||
char* const str = tracker_strings[i];
|
||||
|
||||
|
@ -273,7 +273,7 @@ static void onResponse(GtkDialog* d, int response, gpointer user_data)
|
|||
|
||||
/* build the .torrent */
|
||||
makeProgressDialog(GTK_WIDGET(d), ui);
|
||||
tr_makeMetaInfo(ui->builder, ui->target, trackers, n, useComment ? comment : NULL, isPrivate);
|
||||
tr_makeMetaInfo(ui->builder, ui->target, trackers, n, useComment ? comment : nullptr, isPrivate);
|
||||
|
||||
/* cleanup */
|
||||
g_free(trackers);
|
||||
|
@ -301,12 +301,12 @@ static void onSourceToggled(GtkToggleButton* tb, gpointer user_data)
|
|||
static void updatePiecesLabel(MakeMetaUI* ui)
|
||||
{
|
||||
tr_metainfo_builder const* builder = ui->builder;
|
||||
char const* filename = builder != NULL ? builder->top : NULL;
|
||||
GString* gstr = g_string_new(NULL);
|
||||
char const* filename = builder != nullptr ? builder->top : nullptr;
|
||||
GString* gstr = g_string_new(nullptr);
|
||||
|
||||
g_string_append(gstr, "<i>");
|
||||
|
||||
if (filename == NULL)
|
||||
if (filename == nullptr)
|
||||
{
|
||||
g_string_append(gstr, _("No source selected"));
|
||||
}
|
||||
|
@ -336,10 +336,10 @@ static void updatePiecesLabel(MakeMetaUI* ui)
|
|||
|
||||
static void setFilename(MakeMetaUI* ui, char const* filename)
|
||||
{
|
||||
if (ui->builder != NULL)
|
||||
if (ui->builder != nullptr)
|
||||
{
|
||||
tr_metaInfoBuilderFree(ui->builder);
|
||||
ui->builder = NULL;
|
||||
ui->builder = nullptr;
|
||||
}
|
||||
|
||||
if (filename)
|
||||
|
@ -366,13 +366,13 @@ static void onSourceToggled2(GtkToggleButton* tb, GtkWidget* chooser, MakeMetaUI
|
|||
{
|
||||
if (gtk_toggle_button_get_active(tb))
|
||||
{
|
||||
if (g_object_get_data(G_OBJECT(chooser), FILE_CHOSEN_KEY) != NULL)
|
||||
if (g_object_get_data(G_OBJECT(chooser), FILE_CHOSEN_KEY) != nullptr)
|
||||
{
|
||||
onChooserChosen(GTK_FILE_CHOOSER(chooser), ui);
|
||||
}
|
||||
else
|
||||
{
|
||||
setFilename(ui, NULL);
|
||||
setFilename(ui, nullptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -413,10 +413,10 @@ static void on_drag_data_received(
|
|||
auto* ui = static_cast<MakeMetaUI*>(user_data);
|
||||
char** uris = gtk_selection_data_get_uris(selection_data);
|
||||
|
||||
if (uris != NULL && uris[0] != NULL)
|
||||
if (uris != nullptr && uris[0] != nullptr)
|
||||
{
|
||||
char const* uri = uris[0];
|
||||
gchar* filename = g_filename_from_uri(uri, NULL, NULL);
|
||||
gchar* filename = g_filename_from_uri(uri, nullptr, nullptr);
|
||||
|
||||
if (g_file_test(filename, G_FILE_TEST_IS_DIR))
|
||||
{
|
||||
|
@ -462,7 +462,7 @@ GtkWidget* gtr_torrent_creation_dialog_new(GtkWindow* parent, TrCore* core)
|
|||
GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
TR_ARG_TUPLE(_("_Close"), GTK_RESPONSE_CLOSE),
|
||||
TR_ARG_TUPLE(_("_New"), GTK_RESPONSE_ACCEPT),
|
||||
NULL);
|
||||
nullptr);
|
||||
ui->dialog = d;
|
||||
g_signal_connect(d, "response", G_CALLBACK(onResponse), ui);
|
||||
g_object_set_data_full(G_OBJECT(d), "ui", ui, freeMetaUI);
|
||||
|
@ -472,62 +472,62 @@ GtkWidget* gtr_torrent_creation_dialog_new(GtkWindow* parent, TrCore* core)
|
|||
hig_workarea_add_section_title(t, &row, _("Files"));
|
||||
|
||||
str = _("Sa_ve to:");
|
||||
w = gtk_file_chooser_button_new(NULL, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
|
||||
w = gtk_file_chooser_button_new(nullptr, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
|
||||
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(w), getDefaultSavePath());
|
||||
ui->destination_chooser = w;
|
||||
hig_workarea_add_row(t, &row, str, w, NULL);
|
||||
hig_workarea_add_row(t, &row, str, w, nullptr);
|
||||
|
||||
l = gtk_radio_button_new_with_mnemonic(NULL, _("Source F_older:"));
|
||||
l = gtk_radio_button_new_with_mnemonic(nullptr, _("Source F_older:"));
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(l), FALSE);
|
||||
w = gtk_file_chooser_button_new(NULL, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
|
||||
w = gtk_file_chooser_button_new(nullptr, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
|
||||
g_signal_connect(l, "toggled", G_CALLBACK(onFolderToggled), ui);
|
||||
g_signal_connect(l, "toggled", G_CALLBACK(onSourceToggled), w);
|
||||
g_signal_connect(w, "selection-changed", G_CALLBACK(onChooserChosen), ui);
|
||||
ui->folder_radio = l;
|
||||
ui->folder_chooser = w;
|
||||
gtk_widget_set_sensitive(GTK_WIDGET(w), FALSE);
|
||||
hig_workarea_add_row_w(t, &row, l, w, NULL);
|
||||
hig_workarea_add_row_w(t, &row, l, w, nullptr);
|
||||
|
||||
slist = gtk_radio_button_get_group(GTK_RADIO_BUTTON(l));
|
||||
l = gtk_radio_button_new_with_mnemonic(slist, _("Source _File:"));
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(l), TRUE);
|
||||
w = gtk_file_chooser_button_new(NULL, GTK_FILE_CHOOSER_ACTION_OPEN);
|
||||
w = gtk_file_chooser_button_new(nullptr, GTK_FILE_CHOOSER_ACTION_OPEN);
|
||||
g_signal_connect(l, "toggled", G_CALLBACK(onFileToggled), ui);
|
||||
g_signal_connect(l, "toggled", G_CALLBACK(onSourceToggled), w);
|
||||
g_signal_connect(w, "selection-changed", G_CALLBACK(onChooserChosen), ui);
|
||||
ui->file_radio = l;
|
||||
ui->file_chooser = w;
|
||||
hig_workarea_add_row_w(t, &row, l, w, NULL);
|
||||
hig_workarea_add_row_w(t, &row, l, w, nullptr);
|
||||
|
||||
w = gtk_label_new(NULL);
|
||||
w = gtk_label_new(nullptr);
|
||||
ui->pieces_lb = w;
|
||||
gtk_label_set_markup(GTK_LABEL(w), _("<i>No source selected</i>"));
|
||||
hig_workarea_add_row(t, &row, NULL, w, NULL);
|
||||
hig_workarea_add_row(t, &row, nullptr, w, nullptr);
|
||||
|
||||
hig_workarea_add_section_divider(t, &row);
|
||||
hig_workarea_add_section_title(t, &row, _("Properties"));
|
||||
|
||||
str = _("_Trackers:");
|
||||
v = gtk_box_new(GTK_ORIENTATION_VERTICAL, GUI_PAD_SMALL);
|
||||
ui->announce_text_buffer = gtk_text_buffer_new(NULL);
|
||||
ui->announce_text_buffer = gtk_text_buffer_new(nullptr);
|
||||
w = gtk_text_view_new_with_buffer(ui->announce_text_buffer);
|
||||
gtk_widget_set_size_request(w, -1, 80);
|
||||
sw = gtk_scrolled_window_new(NULL, NULL);
|
||||
sw = gtk_scrolled_window_new(nullptr, nullptr);
|
||||
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
|
||||
gtk_container_add(GTK_CONTAINER(sw), w);
|
||||
fr = gtk_frame_new(NULL);
|
||||
fr = gtk_frame_new(nullptr);
|
||||
gtk_frame_set_shadow_type(GTK_FRAME(fr), GTK_SHADOW_IN);
|
||||
gtk_container_add(GTK_CONTAINER(fr), sw);
|
||||
gtk_box_pack_start(GTK_BOX(v), fr, TRUE, TRUE, 0);
|
||||
l = gtk_label_new(NULL);
|
||||
l = gtk_label_new(nullptr);
|
||||
gtk_label_set_markup(
|
||||
GTK_LABEL(l),
|
||||
_("To add a backup URL, add it on the line after the primary URL.\n"
|
||||
"To add another primary URL, add it after a blank line."));
|
||||
gtk_label_set_justify(GTK_LABEL(l), GTK_JUSTIFY_LEFT);
|
||||
g_object_set(l, "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, NULL);
|
||||
g_object_set(l, "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, nullptr);
|
||||
gtk_box_pack_start(GTK_BOX(v), l, FALSE, FALSE, 0);
|
||||
hig_workarea_add_tall_row(t, &row, str, v, NULL);
|
||||
hig_workarea_add_tall_row(t, &row, str, v, nullptr);
|
||||
|
||||
l = gtk_check_button_new_with_mnemonic(_("Co_mment:"));
|
||||
ui->comment_check = l;
|
||||
|
@ -536,14 +536,14 @@ GtkWidget* gtr_torrent_creation_dialog_new(GtkWindow* parent, TrCore* core)
|
|||
ui->comment_entry = w;
|
||||
gtk_widget_set_sensitive(GTK_WIDGET(w), FALSE);
|
||||
g_signal_connect(l, "toggled", G_CALLBACK(onSourceToggled), w);
|
||||
hig_workarea_add_row_w(t, &row, l, w, NULL);
|
||||
hig_workarea_add_row_w(t, &row, l, w, nullptr);
|
||||
|
||||
w = hig_workarea_add_wide_checkbutton(t, &row, _("_Private torrent"), FALSE);
|
||||
ui->private_check = w;
|
||||
|
||||
gtr_dialog_set_content(GTK_DIALOG(d), t);
|
||||
|
||||
gtk_drag_dest_set(d, GTK_DEST_DEFAULT_ALL, NULL, 0, GDK_ACTION_COPY);
|
||||
gtk_drag_dest_set(d, GTK_DEST_DEFAULT_ALL, nullptr, 0, GDK_ACTION_COPY);
|
||||
gtk_drag_dest_add_uri_targets(d);
|
||||
g_signal_connect(d, "drag-data-received", G_CALLBACK(on_drag_data_received), ui);
|
||||
|
||||
|
|
|
@ -44,8 +44,8 @@ struct MsgData
|
|||
guint refresh_tag;
|
||||
};
|
||||
|
||||
static struct tr_log_message* myTail = NULL;
|
||||
static struct tr_log_message* myHead = NULL;
|
||||
static struct tr_log_message* myTail = nullptr;
|
||||
static struct tr_log_message* myHead = nullptr;
|
||||
|
||||
/****
|
||||
*****
|
||||
|
@ -56,7 +56,7 @@ static gboolean is_pinned_to_new(struct MsgData* data)
|
|||
{
|
||||
gboolean pinned_to_new = FALSE;
|
||||
|
||||
if (data->view == NULL)
|
||||
if (data->view == nullptr)
|
||||
{
|
||||
pinned_to_new = TRUE;
|
||||
}
|
||||
|
@ -64,12 +64,12 @@ static gboolean is_pinned_to_new(struct MsgData* data)
|
|||
{
|
||||
GtkTreePath* last_visible;
|
||||
|
||||
if (gtk_tree_view_get_visible_range(data->view, NULL, &last_visible))
|
||||
if (gtk_tree_view_get_visible_range(data->view, nullptr, &last_visible))
|
||||
{
|
||||
GtkTreeIter iter;
|
||||
int const row_count = gtk_tree_model_iter_n_children(data->sort, NULL);
|
||||
int const row_count = gtk_tree_model_iter_n_children(data->sort, nullptr);
|
||||
|
||||
if (gtk_tree_model_iter_nth_child(data->sort, &iter, NULL, row_count - 1))
|
||||
if (gtk_tree_model_iter_nth_child(data->sort, &iter, nullptr, row_count - 1))
|
||||
{
|
||||
GtkTreePath* last_row = gtk_tree_model_get_path(data->sort, &iter);
|
||||
pinned_to_new = !gtk_tree_path_compare(last_visible, last_row);
|
||||
|
@ -85,15 +85,15 @@ static gboolean is_pinned_to_new(struct MsgData* data)
|
|||
|
||||
static void scroll_to_bottom(struct MsgData* data)
|
||||
{
|
||||
if (data->sort != NULL)
|
||||
if (data->sort != nullptr)
|
||||
{
|
||||
GtkTreeIter iter;
|
||||
int const row_count = gtk_tree_model_iter_n_children(data->sort, NULL);
|
||||
int const row_count = gtk_tree_model_iter_n_children(data->sort, nullptr);
|
||||
|
||||
if (gtk_tree_model_iter_nth_child(data->sort, &iter, NULL, row_count - 1))
|
||||
if (gtk_tree_model_iter_nth_child(data->sort, &iter, nullptr, row_count - 1))
|
||||
{
|
||||
GtkTreePath* last_row = gtk_tree_model_get_path(data->sort, &iter);
|
||||
gtk_tree_view_scroll_to_cell(data->view, last_row, NULL, TRUE, 1, 0);
|
||||
gtk_tree_view_scroll_to_cell(data->view, last_row, nullptr, TRUE, 1, 0);
|
||||
gtk_tree_path_free(last_row);
|
||||
}
|
||||
}
|
||||
|
@ -133,7 +133,7 @@ static void doSave(GtkWindow* parent, struct MsgData* data, char const* filename
|
|||
{
|
||||
FILE* fp = fopen(filename, "w+");
|
||||
|
||||
if (fp == NULL)
|
||||
if (fp == nullptr)
|
||||
{
|
||||
GtkWidget*
|
||||
w = gtk_message_dialog_new(parent, {}, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, _("Couldn't save \"%s\""), filename);
|
||||
|
@ -146,7 +146,7 @@ static void doSave(GtkWindow* parent, struct MsgData* data, char const* filename
|
|||
GtkTreeIter iter;
|
||||
GtkTreeModel* model = GTK_TREE_MODEL(data->sort);
|
||||
|
||||
if (gtk_tree_model_iter_children(model, &iter, NULL))
|
||||
if (gtk_tree_model_iter_children(model, &iter, nullptr))
|
||||
{
|
||||
do
|
||||
{
|
||||
|
@ -176,8 +176,8 @@ static void doSave(GtkWindow* parent, struct MsgData* data, char const* filename
|
|||
"%s\t%s\t%s\t%s\n",
|
||||
date,
|
||||
levelStr,
|
||||
node->name != NULL ? node->name : "",
|
||||
node->message != NULL ? node->message : "");
|
||||
node->name != nullptr ? node->name : "",
|
||||
node->message != nullptr ? node->message : "");
|
||||
g_free(date);
|
||||
} while (gtk_tree_model_iter_next(model, &iter));
|
||||
}
|
||||
|
@ -207,7 +207,7 @@ static void onSaveRequest(GtkWidget* w, gpointer data)
|
|||
GTK_FILE_CHOOSER_ACTION_SAVE,
|
||||
TR_ARG_TUPLE(_("_Cancel"), GTK_RESPONSE_CANCEL),
|
||||
TR_ARG_TUPLE(_("_Save"), GTK_RESPONSE_ACCEPT),
|
||||
NULL);
|
||||
nullptr);
|
||||
|
||||
g_signal_connect(d, "response", G_CALLBACK(onSaveDialogResponse), data);
|
||||
gtk_widget_show(d);
|
||||
|
@ -221,7 +221,7 @@ static void onClearRequest(GtkWidget* w, gpointer gdata)
|
|||
|
||||
gtk_list_store_clear(data->store);
|
||||
tr_logFreeQueue(myHead);
|
||||
myHead = myTail = NULL;
|
||||
myHead = myTail = nullptr;
|
||||
}
|
||||
|
||||
static void onPauseToggled(GtkToggleToolButton* w, gpointer gdata)
|
||||
|
@ -260,11 +260,19 @@ static void renderText(
|
|||
TR_UNUSED(column);
|
||||
|
||||
int const col = GPOINTER_TO_INT(gcol);
|
||||
char* str = NULL;
|
||||
char* str = nullptr;
|
||||
struct tr_log_message const* node;
|
||||
|
||||
gtk_tree_model_get(tree_model, iter, col, &str, COL_TR_MSG, &node, -1);
|
||||
g_object_set(renderer, "text", str, "foreground", getForegroundColor(node->level), "ellipsize", PANGO_ELLIPSIZE_END, NULL);
|
||||
g_object_set(
|
||||
renderer,
|
||||
"text",
|
||||
str,
|
||||
"foreground",
|
||||
getForegroundColor(node->level),
|
||||
"ellipsize",
|
||||
PANGO_ELLIPSIZE_END,
|
||||
nullptr);
|
||||
}
|
||||
|
||||
static void renderTime(
|
||||
|
@ -281,7 +289,7 @@ static void renderTime(
|
|||
gtk_tree_model_get(tree_model, iter, COL_TR_MSG, &node, -1);
|
||||
GDateTime* date_time = g_date_time_new_from_unix_local(node->when);
|
||||
gchar* buf = g_date_time_format(date_time, "%T");
|
||||
g_object_set(renderer, "text", buf, "foreground", getForegroundColor(node->level), NULL);
|
||||
g_object_set(renderer, "text", buf, "foreground", getForegroundColor(node->level), nullptr);
|
||||
g_free(buf);
|
||||
g_date_time_unref(date_time);
|
||||
}
|
||||
|
@ -290,7 +298,7 @@ static void appendColumn(GtkTreeView* view, int col)
|
|||
{
|
||||
GtkCellRenderer* r;
|
||||
GtkTreeViewColumn* c;
|
||||
char const* title = NULL;
|
||||
char const* title = nullptr;
|
||||
|
||||
switch (col)
|
||||
{
|
||||
|
@ -316,8 +324,8 @@ static void appendColumn(GtkTreeView* view, int col)
|
|||
{
|
||||
case COL_NAME:
|
||||
r = gtk_cell_renderer_text_new();
|
||||
c = gtk_tree_view_column_new_with_attributes(title, r, NULL);
|
||||
gtk_tree_view_column_set_cell_data_func(c, r, renderText, GINT_TO_POINTER(col), NULL);
|
||||
c = gtk_tree_view_column_new_with_attributes(title, r, nullptr);
|
||||
gtk_tree_view_column_set_cell_data_func(c, r, renderText, GINT_TO_POINTER(col), nullptr);
|
||||
gtk_tree_view_column_set_sizing(c, GTK_TREE_VIEW_COLUMN_FIXED);
|
||||
gtk_tree_view_column_set_fixed_width(c, 200);
|
||||
gtk_tree_view_column_set_resizable(c, TRUE);
|
||||
|
@ -325,8 +333,8 @@ static void appendColumn(GtkTreeView* view, int col)
|
|||
|
||||
case COL_MESSAGE:
|
||||
r = gtk_cell_renderer_text_new();
|
||||
c = gtk_tree_view_column_new_with_attributes(title, r, NULL);
|
||||
gtk_tree_view_column_set_cell_data_func(c, r, renderText, GINT_TO_POINTER(col), NULL);
|
||||
c = gtk_tree_view_column_new_with_attributes(title, r, nullptr);
|
||||
gtk_tree_view_column_set_cell_data_func(c, r, renderText, GINT_TO_POINTER(col), nullptr);
|
||||
gtk_tree_view_column_set_sizing(c, GTK_TREE_VIEW_COLUMN_FIXED);
|
||||
gtk_tree_view_column_set_fixed_width(c, 500);
|
||||
gtk_tree_view_column_set_resizable(c, TRUE);
|
||||
|
@ -334,8 +342,8 @@ static void appendColumn(GtkTreeView* view, int col)
|
|||
|
||||
case COL_SEQUENCE:
|
||||
r = gtk_cell_renderer_text_new();
|
||||
c = gtk_tree_view_column_new_with_attributes(title, r, NULL);
|
||||
gtk_tree_view_column_set_cell_data_func(c, r, renderTime, NULL, NULL);
|
||||
c = gtk_tree_view_column_new_with_attributes(title, r, nullptr);
|
||||
gtk_tree_view_column_set_cell_data_func(c, r, renderTime, nullptr, nullptr);
|
||||
gtk_tree_view_column_set_resizable(c, TRUE);
|
||||
break;
|
||||
|
||||
|
@ -374,13 +382,13 @@ static tr_log_message* addMessages(GtkListStore* store, struct tr_log_message* h
|
|||
static unsigned int sequence = 0;
|
||||
char const* default_name = g_get_application_name();
|
||||
|
||||
for (i = head; i != NULL && i->next != NULL; i = i->next)
|
||||
for (i = head; i != nullptr && i->next != nullptr; i = i->next)
|
||||
{
|
||||
char const* name = i->name != NULL ? i->name : default_name;
|
||||
char const* name = i->name != nullptr ? i->name : default_name;
|
||||
|
||||
gtk_list_store_insert_with_values(
|
||||
store,
|
||||
NULL,
|
||||
nullptr,
|
||||
0,
|
||||
TR_ARG_TUPLE(COL_TR_MSG, i),
|
||||
TR_ARG_TUPLE(COL_NAME, name),
|
||||
|
@ -394,7 +402,7 @@ static tr_log_message* addMessages(GtkListStore* store, struct tr_log_message* h
|
|||
GString* gstr = g_string_sized_new(512);
|
||||
g_string_append_printf(gstr, "%s:%d %s", i->file, i->line, i->message);
|
||||
|
||||
if (i->name != NULL)
|
||||
if (i->name != nullptr)
|
||||
{
|
||||
g_string_append_printf(gstr, " (%s)", i->name);
|
||||
}
|
||||
|
@ -416,13 +424,13 @@ static gboolean onRefresh(gpointer gdata)
|
|||
{
|
||||
tr_log_message* msgs = tr_logGetQueue();
|
||||
|
||||
if (msgs != NULL)
|
||||
if (msgs != nullptr)
|
||||
{
|
||||
/* add the new messages and append them to the end of
|
||||
* our persistent list */
|
||||
tr_log_message* tail = addMessages(data->store, msgs);
|
||||
|
||||
if (myTail != NULL)
|
||||
if (myTail != nullptr)
|
||||
{
|
||||
myTail->next = msgs;
|
||||
}
|
||||
|
@ -449,7 +457,7 @@ static GtkWidget* debug_level_combo_new(void)
|
|||
TR_ARG_TUPLE(_("Error"), TR_LOG_ERROR),
|
||||
TR_ARG_TUPLE(_("Information"), TR_LOG_INFO),
|
||||
TR_ARG_TUPLE(_("Debug"), TR_LOG_DEBUG),
|
||||
NULL);
|
||||
nullptr);
|
||||
gtr_combo_box_set_active_enum(GTK_COMBO_BOX(w), gtr_pref_int_get(TR_KEY_message_level));
|
||||
return w;
|
||||
}
|
||||
|
@ -486,25 +494,25 @@ GtkWidget* gtr_message_log_window_new(GtkWindow* parent, TrCore* core)
|
|||
gtk_toolbar_set_style(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_BOTH_HORIZ);
|
||||
gtk_style_context_add_class(gtk_widget_get_style_context(toolbar), GTK_STYLE_CLASS_PRIMARY_TOOLBAR);
|
||||
|
||||
item = gtk_tool_button_new(NULL, NULL);
|
||||
item = gtk_tool_button_new(nullptr, nullptr);
|
||||
g_object_set(
|
||||
item,
|
||||
TR_ARG_TUPLE("icon-name", "document-save-as"),
|
||||
TR_ARG_TUPLE("is-important", TRUE),
|
||||
TR_ARG_TUPLE("label", _("Save _As")),
|
||||
TR_ARG_TUPLE("use-underline", TRUE),
|
||||
NULL);
|
||||
nullptr);
|
||||
g_signal_connect(item, "clicked", G_CALLBACK(onSaveRequest), data);
|
||||
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
|
||||
|
||||
item = gtk_tool_button_new(NULL, NULL);
|
||||
item = gtk_tool_button_new(nullptr, nullptr);
|
||||
g_object_set(
|
||||
item,
|
||||
TR_ARG_TUPLE("icon-name", "edit-clear"),
|
||||
TR_ARG_TUPLE("is-important", TRUE),
|
||||
TR_ARG_TUPLE("label", _("Clear")),
|
||||
TR_ARG_TUPLE("use-underline", TRUE),
|
||||
NULL);
|
||||
nullptr);
|
||||
g_signal_connect(item, "clicked", G_CALLBACK(onClearRequest), data);
|
||||
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
|
||||
|
||||
|
@ -518,7 +526,7 @@ GtkWidget* gtr_message_log_window_new(GtkWindow* parent, TrCore* core)
|
|||
TR_ARG_TUPLE("is-important", TRUE),
|
||||
TR_ARG_TUPLE("label", _("P_ause")),
|
||||
TR_ARG_TUPLE("use-underline", TRUE),
|
||||
NULL);
|
||||
nullptr);
|
||||
g_signal_connect(item, "toggled", G_CALLBACK(onPauseToggled), data);
|
||||
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
|
||||
|
||||
|
@ -526,7 +534,7 @@ GtkWidget* gtr_message_log_window_new(GtkWindow* parent, TrCore* core)
|
|||
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
|
||||
|
||||
w = gtk_label_new(_("Level"));
|
||||
g_object_set(w, "margin", GUI_PAD, NULL);
|
||||
g_object_set(w, "margin", GUI_PAD, nullptr);
|
||||
item = gtk_tool_item_new();
|
||||
gtk_container_add(GTK_CONTAINER(item), w);
|
||||
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
|
||||
|
@ -553,21 +561,21 @@ GtkWidget* gtr_message_log_window_new(GtkWindow* parent, TrCore* core)
|
|||
addMessages(data->store, myHead);
|
||||
onRefresh(data); /* much faster to populate *before* it has listeners */
|
||||
|
||||
data->filter = gtk_tree_model_filter_new(GTK_TREE_MODEL(data->store), NULL);
|
||||
data->filter = gtk_tree_model_filter_new(GTK_TREE_MODEL(data->store), nullptr);
|
||||
data->sort = gtk_tree_model_sort_new_with_model(data->filter);
|
||||
g_object_unref(data->filter);
|
||||
gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(data->sort), COL_SEQUENCE, GTK_SORT_ASCENDING);
|
||||
data->maxLevel = static_cast<tr_log_level>(gtr_pref_int_get(TR_KEY_message_level));
|
||||
gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(data->filter), isRowVisible, data, NULL);
|
||||
gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(data->filter), isRowVisible, data, nullptr);
|
||||
|
||||
view = gtk_tree_view_new_with_model(data->sort);
|
||||
g_object_unref(data->sort);
|
||||
g_signal_connect(view, "button-release-event", G_CALLBACK(on_tree_view_button_released), NULL);
|
||||
g_signal_connect(view, "button-release-event", G_CALLBACK(on_tree_view_button_released), nullptr);
|
||||
data->view = GTK_TREE_VIEW(view);
|
||||
appendColumn(data->view, COL_SEQUENCE);
|
||||
appendColumn(data->view, COL_NAME);
|
||||
appendColumn(data->view, COL_MESSAGE);
|
||||
w = gtk_scrolled_window_new(NULL, NULL);
|
||||
w = gtk_scrolled_window_new(nullptr, nullptr);
|
||||
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(w), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
|
||||
gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(w), GTK_SHADOW_IN);
|
||||
gtk_container_add(GTK_CONTAINER(w), view);
|
||||
|
|
|
@ -18,8 +18,8 @@
|
|||
#define NOTIFICATIONS_DBUS_CORE_OBJECT "/org/freedesktop/Notifications"
|
||||
#define NOTIFICATIONS_DBUS_CORE_INTERFACE "org.freedesktop.Notifications"
|
||||
|
||||
static GDBusProxy* proxy = NULL;
|
||||
static GHashTable* active_notifications = NULL;
|
||||
static GDBusProxy* proxy = nullptr;
|
||||
static GHashTable* active_notifications = nullptr;
|
||||
static gboolean server_supports_actions = FALSE;
|
||||
|
||||
typedef struct TrNotification
|
||||
|
@ -32,7 +32,7 @@ static void tr_notification_free(gpointer data)
|
|||
{
|
||||
auto* n = static_cast<TrNotification*>(data);
|
||||
|
||||
if (n->core != NULL)
|
||||
if (n->core != nullptr)
|
||||
{
|
||||
g_object_unref(G_OBJECT(n->core));
|
||||
}
|
||||
|
@ -47,11 +47,11 @@ static void get_capabilities_callback(GObject* source, GAsyncResult* res, gpoint
|
|||
char** caps;
|
||||
GVariant* result;
|
||||
|
||||
result = g_dbus_proxy_call_finish(G_DBUS_PROXY(source), res, NULL);
|
||||
result = g_dbus_proxy_call_finish(G_DBUS_PROXY(source), res, nullptr);
|
||||
|
||||
if (result == NULL || !g_variant_is_of_type(result, G_VARIANT_TYPE("(as)")))
|
||||
if (result == nullptr || !g_variant_is_of_type(result, G_VARIANT_TYPE("(as)")))
|
||||
{
|
||||
if (result != NULL)
|
||||
if (result != nullptr)
|
||||
{
|
||||
g_variant_unref(result);
|
||||
}
|
||||
|
@ -61,7 +61,7 @@ static void get_capabilities_callback(GObject* source, GAsyncResult* res, gpoint
|
|||
|
||||
g_variant_get(result, "(^a&s)", &caps);
|
||||
|
||||
for (int i = 0; caps[i] != NULL; i++)
|
||||
for (int i = 0; caps[i] != nullptr; i++)
|
||||
{
|
||||
if (g_strcmp0(caps[i], "actions") == 0)
|
||||
{
|
||||
|
@ -88,10 +88,10 @@ static void g_signal_callback(
|
|||
g_return_if_fail(g_variant_is_of_type(params, G_VARIANT_TYPE("(u*)")));
|
||||
|
||||
guint id;
|
||||
g_variant_get(params, "(u*)", &id, NULL);
|
||||
g_variant_get(params, "(u*)", &id, nullptr);
|
||||
auto* n = static_cast<TrNotification*>(g_hash_table_lookup(active_notifications, GUINT_TO_POINTER(id)));
|
||||
|
||||
if (n == NULL)
|
||||
if (n == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -103,13 +103,13 @@ static void g_signal_callback(
|
|||
else if (g_strcmp0(signal_name, "ActionInvoked") == 0 && g_variant_is_of_type(params, G_VARIANT_TYPE("(us)")))
|
||||
{
|
||||
tr_torrent const* tor = gtr_core_find_torrent(n->core, n->torrent_id);
|
||||
if (tor == NULL)
|
||||
if (tor == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
char* action = NULL;
|
||||
g_variant_get(params, "(u&s)", NULL, &action);
|
||||
char* action = nullptr;
|
||||
g_variant_get(params, "(u&s)", nullptr, &action);
|
||||
|
||||
if (g_strcmp0(action, "folder") == 0)
|
||||
{
|
||||
|
@ -119,7 +119,7 @@ static void g_signal_callback(
|
|||
{
|
||||
tr_info const* inf = tr_torrentInfo(tor);
|
||||
char const* dir = tr_torrentGetDownloadDir(tor);
|
||||
char* path = g_build_filename(dir, inf->files[0].name, NULL);
|
||||
char* path = g_build_filename(dir, inf->files[0].name, nullptr);
|
||||
gtr_open_file(path);
|
||||
g_free(path);
|
||||
}
|
||||
|
@ -131,39 +131,39 @@ static void dbus_proxy_ready_callback(GObject* source, GAsyncResult* res, gpoint
|
|||
TR_UNUSED(source);
|
||||
TR_UNUSED(user_data);
|
||||
|
||||
proxy = g_dbus_proxy_new_for_bus_finish(res, NULL);
|
||||
proxy = g_dbus_proxy_new_for_bus_finish(res, nullptr);
|
||||
|
||||
if (proxy == NULL)
|
||||
if (proxy == nullptr)
|
||||
{
|
||||
g_warning("Failed to create proxy for %s", NOTIFICATIONS_DBUS_NAME);
|
||||
return;
|
||||
}
|
||||
|
||||
g_signal_connect(proxy, "g-signal", G_CALLBACK(g_signal_callback), NULL);
|
||||
g_signal_connect(proxy, "g-signal", G_CALLBACK(g_signal_callback), nullptr);
|
||||
g_dbus_proxy_call(
|
||||
proxy,
|
||||
"GetCapabilities",
|
||||
g_variant_new("()"),
|
||||
G_DBUS_CALL_FLAGS_NONE,
|
||||
-1,
|
||||
NULL,
|
||||
nullptr,
|
||||
get_capabilities_callback,
|
||||
NULL);
|
||||
nullptr);
|
||||
}
|
||||
|
||||
void gtr_notify_init(void)
|
||||
{
|
||||
active_notifications = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, tr_notification_free);
|
||||
active_notifications = g_hash_table_new_full(g_direct_hash, g_direct_equal, nullptr, tr_notification_free);
|
||||
g_dbus_proxy_new_for_bus(
|
||||
G_BUS_TYPE_SESSION,
|
||||
G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES,
|
||||
NULL,
|
||||
nullptr,
|
||||
NOTIFICATIONS_DBUS_NAME,
|
||||
NOTIFICATIONS_DBUS_CORE_OBJECT,
|
||||
NOTIFICATIONS_DBUS_CORE_INTERFACE,
|
||||
NULL,
|
||||
nullptr,
|
||||
dbus_proxy_ready_callback,
|
||||
NULL);
|
||||
nullptr);
|
||||
}
|
||||
|
||||
static void notify_callback(GObject* source, GAsyncResult* res, gpointer user_data)
|
||||
|
@ -171,11 +171,11 @@ static void notify_callback(GObject* source, GAsyncResult* res, gpointer user_da
|
|||
GVariant* result;
|
||||
auto* n = static_cast<TrNotification*>(user_data);
|
||||
|
||||
result = g_dbus_proxy_call_finish(G_DBUS_PROXY(source), res, NULL);
|
||||
result = g_dbus_proxy_call_finish(G_DBUS_PROXY(source), res, nullptr);
|
||||
|
||||
if (result == NULL || !g_variant_is_of_type(result, G_VARIANT_TYPE("(u)")))
|
||||
if (result == nullptr || !g_variant_is_of_type(result, G_VARIANT_TYPE("(u)")))
|
||||
{
|
||||
if (result != NULL)
|
||||
if (result != nullptr)
|
||||
{
|
||||
g_variant_unref(result);
|
||||
}
|
||||
|
@ -197,14 +197,14 @@ void gtr_notify_torrent_completed(TrCore* core, int torrent_id)
|
|||
{
|
||||
char** argv = gtr_pref_strv_get(TR_KEY_torrent_complete_sound_command);
|
||||
g_spawn_async(
|
||||
NULL /*cwd*/,
|
||||
nullptr /*cwd*/,
|
||||
argv,
|
||||
NULL /*envp*/,
|
||||
nullptr /*envp*/,
|
||||
G_SPAWN_SEARCH_PATH,
|
||||
NULL /*GSpawnChildSetupFunc*/,
|
||||
NULL /*user_data*/,
|
||||
NULL /*child_pid*/,
|
||||
NULL);
|
||||
nullptr /*GSpawnChildSetupFunc*/,
|
||||
nullptr /*user_data*/,
|
||||
nullptr /*child_pid*/,
|
||||
nullptr);
|
||||
g_strfreev(argv);
|
||||
}
|
||||
|
||||
|
@ -259,7 +259,7 @@ void gtr_notify_torrent_completed(TrCore* core, int torrent_id)
|
|||
-1),
|
||||
G_DBUS_CALL_FLAGS_NONE,
|
||||
-1,
|
||||
NULL,
|
||||
nullptr,
|
||||
notify_callback,
|
||||
n);
|
||||
}
|
||||
|
@ -279,10 +279,10 @@ void gtr_notify_torrent_added(char const* name)
|
|||
g_dbus_proxy_call(
|
||||
proxy,
|
||||
"Notify",
|
||||
g_variant_new("(susssasa{sv}i)", "Transmission", 0, "transmission", _("Torrent Added"), name, NULL, NULL, -1),
|
||||
g_variant_new("(susssasa{sv}i)", "Transmission", 0, "transmission", _("Torrent Added"), name, nullptr, nullptr, -1),
|
||||
G_DBUS_CALL_FLAGS_NONE,
|
||||
-1,
|
||||
NULL,
|
||||
nullptr,
|
||||
notify_callback,
|
||||
n);
|
||||
}
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
static GSList* get_recent_destinations(void)
|
||||
{
|
||||
GSList* list = NULL;
|
||||
GSList* list = nullptr;
|
||||
|
||||
for (int i = 0; i < N_RECENT; ++i)
|
||||
{
|
||||
|
@ -37,7 +37,7 @@ static GSList* get_recent_destinations(void)
|
|||
char const* val;
|
||||
g_snprintf(key, sizeof(key), "recent-download-dir-%d", i + 1);
|
||||
|
||||
if ((val = gtr_pref_string_get(tr_quark_new(key, TR_BAD_SIZE))) != NULL)
|
||||
if ((val = gtr_pref_string_get(tr_quark_new(key, TR_BAD_SIZE))) != nullptr)
|
||||
{
|
||||
list = g_slist_append(list, (void*)val);
|
||||
}
|
||||
|
@ -52,13 +52,13 @@ static void save_recent_destination(TrCore* core, char const* dir)
|
|||
GSList* l;
|
||||
GSList* list = get_recent_destinations();
|
||||
|
||||
if (dir == NULL)
|
||||
if (dir == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/* if it was already in the list, remove it */
|
||||
if ((l = g_slist_find_custom(list, dir, (GCompareFunc)g_strcmp0)) != NULL)
|
||||
if ((l = g_slist_find_custom(list, dir, (GCompareFunc)g_strcmp0)) != nullptr)
|
||||
{
|
||||
list = g_slist_delete_link(list, l);
|
||||
}
|
||||
|
@ -68,13 +68,13 @@ static void save_recent_destination(TrCore* core, char const* dir)
|
|||
|
||||
/* make local copies of the strings that aren't
|
||||
* invalidated by gtr_pref_string_set() */
|
||||
for (l = list; l != NULL; l = l->next)
|
||||
for (l = list; l != nullptr; l = l->next)
|
||||
{
|
||||
l->data = g_strdup(static_cast<char const*>(l->data));
|
||||
}
|
||||
|
||||
/* save the first N_RECENT directories */
|
||||
for (l = list, i = 0; l != NULL && i < N_RECENT; ++i, l = l->next)
|
||||
for (l = list, i = 0; l != nullptr && i < N_RECENT; ++i, l = l->next)
|
||||
{
|
||||
char key[64];
|
||||
g_snprintf(key, sizeof(key), "recent-download-dir-%d", i + 1);
|
||||
|
@ -84,7 +84,7 @@ static void save_recent_destination(TrCore* core, char const* dir)
|
|||
gtr_pref_save(gtr_core_session(core));
|
||||
|
||||
/* cleanup */
|
||||
g_slist_foreach(list, (GFunc)(GCallback)g_free, NULL);
|
||||
g_slist_foreach(list, (GFunc)(GCallback)g_free, nullptr);
|
||||
g_slist_free(list);
|
||||
}
|
||||
|
||||
|
@ -108,11 +108,11 @@ struct OpenData
|
|||
|
||||
static void removeOldTorrent(struct OpenData* o)
|
||||
{
|
||||
if (o->tor != NULL)
|
||||
if (o->tor != nullptr)
|
||||
{
|
||||
gtr_file_list_clear(o->file_list);
|
||||
tr_torrentRemove(o->tor, FALSE, NULL);
|
||||
o->tor = NULL;
|
||||
tr_torrentRemove(o->tor, FALSE, nullptr);
|
||||
o->tor = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -120,7 +120,7 @@ static void addResponseCB(GtkDialog* dialog, gint response, gpointer gdata)
|
|||
{
|
||||
auto* o = static_cast<OpenData*>(gdata);
|
||||
|
||||
if (o->tor != NULL)
|
||||
if (o->tor != nullptr)
|
||||
{
|
||||
if (response != GTK_RESPONSE_ACCEPT)
|
||||
{
|
||||
|
@ -139,7 +139,7 @@ static void addResponseCB(GtkDialog* dialog, gint response, gpointer gdata)
|
|||
|
||||
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(o->trash_check)))
|
||||
{
|
||||
gtr_file_trash_or_remove(o->filename, NULL);
|
||||
gtr_file_trash_or_remove(o->filename, nullptr);
|
||||
}
|
||||
|
||||
save_recent_destination(o->core, o->downloadDir);
|
||||
|
@ -155,10 +155,10 @@ static void addResponseCB(GtkDialog* dialog, gint response, gpointer gdata)
|
|||
|
||||
static void updateTorrent(struct OpenData* o)
|
||||
{
|
||||
gboolean const isLocalFile = tr_ctorGetSourceFile(o->ctor) != NULL;
|
||||
gboolean const isLocalFile = tr_ctorGetSourceFile(o->ctor) != nullptr;
|
||||
gtk_widget_set_sensitive(o->trash_check, isLocalFile);
|
||||
|
||||
if (o->tor == NULL)
|
||||
if (o->tor == nullptr)
|
||||
{
|
||||
gtr_file_list_clear(o->file_list);
|
||||
gtk_widget_set_sensitive(o->file_list, FALSE);
|
||||
|
@ -168,14 +168,14 @@ static void updateTorrent(struct OpenData* o)
|
|||
tr_torrentSetDownloadDir(o->tor, o->downloadDir);
|
||||
gtk_widget_set_sensitive(o->file_list, tr_torrentHasMetadata(o->tor));
|
||||
gtr_file_list_set_torrent(o->file_list, tr_torrentId(o->tor));
|
||||
tr_torrentVerify(o->tor, NULL, NULL);
|
||||
tr_torrentVerify(o->tor, nullptr, nullptr);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* When the source .torrent file is deleted
|
||||
* (such as, if it was a temp file that a web browser passed to us),
|
||||
* gtk invokes this callback and `filename' will be NULL.
|
||||
* gtk invokes this callback and `filename' will be nullptr.
|
||||
* The `filename' tests here are to prevent us from losing the current
|
||||
* metadata when that happens.
|
||||
*/
|
||||
|
@ -185,14 +185,14 @@ static void sourceChanged(GtkFileChooserButton* b, gpointer gdata)
|
|||
char* filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(b));
|
||||
|
||||
/* maybe instantiate a torrent */
|
||||
if (filename != NULL || o->tor == NULL)
|
||||
if (filename != nullptr || o->tor == nullptr)
|
||||
{
|
||||
int err = 0;
|
||||
bool new_file = false;
|
||||
int duplicate_id = 0;
|
||||
tr_torrent* torrent;
|
||||
|
||||
if (filename != NULL && (o->filename == NULL || !tr_sys_path_is_same(filename, o->filename, NULL)))
|
||||
if (filename != nullptr && (o->filename == nullptr || !tr_sys_path_is_same(filename, o->filename, nullptr)))
|
||||
{
|
||||
g_free(o->filename);
|
||||
o->filename = g_strdup(filename);
|
||||
|
@ -204,7 +204,7 @@ static void sourceChanged(GtkFileChooserButton* b, gpointer gdata)
|
|||
tr_ctorSetPaused(o->ctor, TR_FORCE, TRUE);
|
||||
tr_ctorSetDeleteSource(o->ctor, FALSE);
|
||||
|
||||
if ((torrent = tr_torrentNew(o->ctor, &err, &duplicate_id)) != NULL)
|
||||
if ((torrent = tr_torrentNew(o->ctor, &err, &duplicate_id)) != nullptr)
|
||||
{
|
||||
removeOldTorrent(o);
|
||||
o->tor = torrent;
|
||||
|
@ -219,7 +219,7 @@ static void sourceChanged(GtkFileChooserButton* b, gpointer gdata)
|
|||
}
|
||||
else
|
||||
{
|
||||
tor = NULL;
|
||||
tor = nullptr;
|
||||
}
|
||||
|
||||
gtr_add_torrent_error_dialog(GTK_WIDGET(b), err, tor, o->filename);
|
||||
|
@ -236,7 +236,7 @@ static void downloadDirChanged(GtkFileChooserButton* b, gpointer gdata)
|
|||
auto* data = static_cast<OpenData*>(gdata);
|
||||
char* fname = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(b));
|
||||
|
||||
if (fname != NULL && (data->downloadDir == NULL || !tr_sys_path_is_same(fname, data->downloadDir, NULL)))
|
||||
if (fname != nullptr && (data->downloadDir == nullptr || !tr_sys_path_is_same(fname, data->downloadDir, nullptr)))
|
||||
{
|
||||
g_free(data->downloadDir);
|
||||
data->downloadDir = g_strdup(fname);
|
||||
|
@ -287,7 +287,7 @@ GtkWidget* gtr_torrent_options_dialog_new(GtkWindow* parent, TrCore* core, tr_ct
|
|||
GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
TR_ARG_TUPLE(_("_Cancel"), GTK_RESPONSE_CANCEL),
|
||||
TR_ARG_TUPLE(_("_Open"), GTK_RESPONSE_ACCEPT),
|
||||
NULL);
|
||||
nullptr);
|
||||
gtk_dialog_set_default_response(GTK_DIALOG(d), GTK_RESPONSE_ACCEPT);
|
||||
|
||||
if (!tr_ctorGetDownloadDir(ctor, TR_FORCE, &str))
|
||||
|
@ -321,7 +321,7 @@ GtkWidget* gtr_torrent_options_dialog_new(GtkWindow* parent, TrCore* core, tr_ct
|
|||
|
||||
/* "torrent file" row */
|
||||
l = gtk_label_new_with_mnemonic(_("_Torrent file:"));
|
||||
g_object_set(l, "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, NULL);
|
||||
g_object_set(l, "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, nullptr);
|
||||
gtk_grid_attach(grid, l, 0, row, 1, 1);
|
||||
w = gtk_file_chooser_button_new(_("Select Source File"), GTK_FILE_CHOOSER_ACTION_OPEN);
|
||||
source_chooser = w;
|
||||
|
@ -334,7 +334,7 @@ GtkWidget* gtr_torrent_options_dialog_new(GtkWindow* parent, TrCore* core, tr_ct
|
|||
/* "destination folder" row */
|
||||
row++;
|
||||
l = gtk_label_new_with_mnemonic(_("_Destination folder:"));
|
||||
g_object_set(l, "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, NULL);
|
||||
g_object_set(l, "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, nullptr);
|
||||
gtk_grid_attach(grid, l, 0, row, 1, 1);
|
||||
w = gtk_file_chooser_button_new(_("Select Destination Folder"), GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
|
||||
|
||||
|
@ -345,9 +345,9 @@ GtkWidget* gtr_torrent_options_dialog_new(GtkWindow* parent, TrCore* core, tr_ct
|
|||
|
||||
list = get_recent_destinations();
|
||||
|
||||
for (GSList* walk = list; walk != NULL; walk = walk->next)
|
||||
for (GSList* walk = list; walk != nullptr; walk = walk->next)
|
||||
{
|
||||
gtk_file_chooser_add_shortcut_folder(GTK_FILE_CHOOSER(w), static_cast<char const*>(walk->data), NULL);
|
||||
gtk_file_chooser_add_shortcut_folder(GTK_FILE_CHOOSER(w), static_cast<char const*>(walk->data), nullptr);
|
||||
}
|
||||
|
||||
g_slist_free(list);
|
||||
|
@ -358,7 +358,7 @@ GtkWidget* gtr_torrent_options_dialog_new(GtkWindow* parent, TrCore* core, tr_ct
|
|||
row++;
|
||||
l = data->freespace_label = gtr_freespace_label_new(core, data->downloadDir);
|
||||
gtk_widget_set_margin_bottom(l, GUI_PAD_BIG);
|
||||
g_object_set(l, "halign", GTK_ALIGN_END, "valign", GTK_ALIGN_CENTER, NULL);
|
||||
g_object_set(l, "halign", GTK_ALIGN_END, "valign", GTK_ALIGN_CENTER, nullptr);
|
||||
gtk_grid_attach(grid, l, 0, row, 2, 1);
|
||||
|
||||
/* file list row */
|
||||
|
@ -371,7 +371,7 @@ GtkWidget* gtr_torrent_options_dialog_new(GtkWindow* parent, TrCore* core, tr_ct
|
|||
/* torrent priority row */
|
||||
row++;
|
||||
l = gtk_label_new_with_mnemonic(_("Torrent _priority:"));
|
||||
g_object_set(l, "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, NULL);
|
||||
g_object_set(l, "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, nullptr);
|
||||
gtk_grid_attach(grid, l, 0, row, 1, 1);
|
||||
w = data->priority_combo;
|
||||
gtk_label_set_mnemonic_widget(GTK_LABEL(l), w);
|
||||
|
@ -405,7 +405,7 @@ GtkWidget* gtr_torrent_options_dialog_new(GtkWindow* parent, TrCore* core, tr_ct
|
|||
* so that it creates the tor/gtor objects */
|
||||
w = source_chooser;
|
||||
|
||||
if (data->filename != NULL)
|
||||
if (data->filename != nullptr)
|
||||
{
|
||||
gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(w), data->filename);
|
||||
}
|
||||
|
@ -444,7 +444,7 @@ static void onOpenDialogResponse(GtkDialog* dialog, int response, gpointer core)
|
|||
GSList* files = gtk_file_chooser_get_files(chooser);
|
||||
|
||||
gtr_core_add_files(static_cast<TrCore*>(core), files, do_start, do_prompt, do_notify);
|
||||
g_slist_foreach(files, (GFunc)(GCallback)g_object_unref, NULL);
|
||||
g_slist_foreach(files, (GFunc)(GCallback)g_object_unref, nullptr);
|
||||
g_slist_free(files);
|
||||
}
|
||||
|
||||
|
@ -463,12 +463,12 @@ GtkWidget* gtr_torrent_open_from_file_dialog_new(GtkWindow* parent, TrCore* core
|
|||
GTK_FILE_CHOOSER_ACTION_OPEN,
|
||||
TR_ARG_TUPLE(_("_Cancel"), GTK_RESPONSE_CANCEL),
|
||||
TR_ARG_TUPLE(_("_Open"), GTK_RESPONSE_ACCEPT),
|
||||
NULL);
|
||||
nullptr);
|
||||
gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(w), TRUE);
|
||||
addTorrentFilters(GTK_FILE_CHOOSER(w));
|
||||
g_signal_connect(w, "response", G_CALLBACK(onOpenDialogResponse), core);
|
||||
|
||||
if ((folder = gtr_pref_string_get(TR_KEY_open_dialog_dir)) != NULL)
|
||||
if ((folder = gtr_pref_string_get(TR_KEY_open_dialog_dir)) != nullptr)
|
||||
{
|
||||
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(w), folder);
|
||||
}
|
||||
|
@ -495,7 +495,7 @@ static void onOpenURLResponse(GtkDialog* dialog, int response, gpointer user_dat
|
|||
char* url = g_strdup(gtk_entry_get_text(GTK_ENTRY(e)));
|
||||
g_strstrip(url);
|
||||
|
||||
if (url != NULL)
|
||||
if (url != nullptr)
|
||||
{
|
||||
handled = gtr_core_add_from_url(static_cast<TrCore*>(user_data), url);
|
||||
|
||||
|
@ -531,7 +531,7 @@ GtkWidget* gtr_torrent_open_from_url_dialog_new(GtkWindow* parent, TrCore* core)
|
|||
GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
TR_ARG_TUPLE(_("_Cancel"), GTK_RESPONSE_CANCEL),
|
||||
TR_ARG_TUPLE(_("_Open"), GTK_RESPONSE_ACCEPT),
|
||||
NULL);
|
||||
nullptr);
|
||||
g_signal_connect(w, "response", G_CALLBACK(onOpenURLResponse), core);
|
||||
|
||||
row = 0;
|
||||
|
@ -541,7 +541,7 @@ GtkWidget* gtr_torrent_open_from_url_dialog_new(GtkWindow* parent, TrCore* core)
|
|||
gtk_widget_set_size_request(e, 400, -1);
|
||||
gtr_paste_clipboard_url_into_entry(e);
|
||||
g_object_set_data(G_OBJECT(w), "url-entry", e);
|
||||
hig_workarea_add_row(t, &row, _("_URL"), e, NULL);
|
||||
hig_workarea_add_row(t, &row, _("_URL"), e, nullptr);
|
||||
|
||||
gtr_dialog_set_content(GTK_DIALOG(w), t);
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
|
||||
#define DATA_KEY "gtr-relocate-data"
|
||||
|
||||
static char* previousLocation = NULL;
|
||||
static char* previousLocation = nullptr;
|
||||
|
||||
struct relocate_dialog_data
|
||||
{
|
||||
|
@ -50,9 +50,9 @@ static void startMovingNextTorrent(struct relocate_dialog_data* data)
|
|||
|
||||
tr_torrent* tor = gtr_core_find_torrent(data->core, id);
|
||||
|
||||
if (tor != NULL)
|
||||
if (tor != nullptr)
|
||||
{
|
||||
tr_torrentSetLocation(tor, previousLocation, data->do_move, NULL, &data->done);
|
||||
tr_torrentSetLocation(tor, previousLocation, data->do_move, nullptr, &data->done);
|
||||
}
|
||||
|
||||
data->torrent_ids = g_slist_delete_link(data->torrent_ids, data->torrent_ids);
|
||||
|
@ -84,7 +84,7 @@ static gboolean onTimer(gpointer gdata)
|
|||
}
|
||||
else if (done == TR_LOC_DONE)
|
||||
{
|
||||
if (data->torrent_ids != NULL)
|
||||
if (data->torrent_ids != nullptr)
|
||||
{
|
||||
startMovingNextTorrent(data);
|
||||
}
|
||||
|
@ -118,7 +118,7 @@ static void onResponse(GtkDialog* dialog, int response, gconstpointer user_data)
|
|||
GtkDialogFlags(GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL),
|
||||
GTK_MESSAGE_INFO,
|
||||
GTK_BUTTONS_CLOSE,
|
||||
NULL);
|
||||
nullptr);
|
||||
gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(w), _("This may take a moment…"));
|
||||
gtk_dialog_set_response_sensitive(GTK_DIALOG(w), GTK_RESPONSE_CLOSE, FALSE);
|
||||
gtk_widget_show(w);
|
||||
|
@ -153,15 +153,15 @@ GtkWidget* gtr_relocate_dialog_new(GtkWindow* parent, TrCore* core, GSList* torr
|
|||
GtkDialogFlags(GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL),
|
||||
TR_ARG_TUPLE(_("_Cancel"), GTK_RESPONSE_CANCEL),
|
||||
TR_ARG_TUPLE(_("_Apply"), GTK_RESPONSE_APPLY),
|
||||
NULL);
|
||||
nullptr);
|
||||
gtk_dialog_set_default_response(GTK_DIALOG(d), GTK_RESPONSE_CANCEL);
|
||||
g_signal_connect(d, "response", G_CALLBACK(onResponse), NULL);
|
||||
g_signal_connect(d, "response", G_CALLBACK(onResponse), nullptr);
|
||||
|
||||
row = 0;
|
||||
t = hig_workarea_create();
|
||||
hig_workarea_add_section_title(t, &row, _("Location"));
|
||||
|
||||
if (previousLocation == NULL)
|
||||
if (previousLocation == nullptr)
|
||||
{
|
||||
previousLocation = g_strdup(gtr_pref_string_get(TR_KEY_download_dir));
|
||||
}
|
||||
|
@ -169,8 +169,8 @@ GtkWidget* gtr_relocate_dialog_new(GtkWindow* parent, TrCore* core, GSList* torr
|
|||
w = gtk_file_chooser_button_new(_("Set Torrent Location"), GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
|
||||
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(w), previousLocation);
|
||||
g_object_set_data(G_OBJECT(d), "chooser", w);
|
||||
hig_workarea_add_row(t, &row, _("Torrent _location:"), w, NULL);
|
||||
w = gtk_radio_button_new_with_mnemonic(NULL, _("_Move from the current folder"));
|
||||
hig_workarea_add_row(t, &row, _("Torrent _location:"), w, nullptr);
|
||||
w = gtk_radio_button_new_with_mnemonic(nullptr, _("_Move from the current folder"));
|
||||
g_object_set_data(G_OBJECT(d), "move_rb", w);
|
||||
hig_workarea_add_wide_control(t, &row, w);
|
||||
w = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(w), _("Local data is _already there"));
|
||||
|
|
36
gtk/stats.cc
36
gtk/stats.cc
|
@ -99,7 +99,7 @@ static void dialogResponse(GtkDialog* dialog, gint response, gpointer gdata)
|
|||
GTK_DIALOG(w),
|
||||
TR_ARG_TUPLE(_("_Cancel"), GTK_RESPONSE_CANCEL),
|
||||
TR_ARG_TUPLE(_("_Reset"), TR_RESPONSE_RESET),
|
||||
NULL);
|
||||
nullptr);
|
||||
gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(w), "%s", secondary);
|
||||
|
||||
if (gtk_dialog_run(GTK_DIALOG(w)) == TR_RESPONSE_RESET)
|
||||
|
@ -132,28 +132,28 @@ GtkWidget* gtr_stats_dialog_new(GtkWindow* parent, TrCore* core)
|
|||
GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
TR_ARG_TUPLE(_("_Reset"), TR_RESPONSE_RESET),
|
||||
TR_ARG_TUPLE(_("_Close"), GTK_RESPONSE_CLOSE),
|
||||
NULL);
|
||||
nullptr);
|
||||
gtk_dialog_set_default_response(GTK_DIALOG(d), GTK_RESPONSE_CLOSE);
|
||||
t = hig_workarea_create();
|
||||
ui->core = core;
|
||||
|
||||
hig_workarea_add_section_title(t, &row, _("Current Session"));
|
||||
l = gtk_label_new(NULL);
|
||||
l = gtk_label_new(nullptr);
|
||||
ui->one_up_lb = GTK_LABEL(l);
|
||||
gtk_label_set_single_line_mode(ui->one_up_lb, TRUE);
|
||||
hig_workarea_add_row(t, &row, _("Uploaded:"), l, NULL);
|
||||
l = gtk_label_new(NULL);
|
||||
hig_workarea_add_row(t, &row, _("Uploaded:"), l, nullptr);
|
||||
l = gtk_label_new(nullptr);
|
||||
ui->one_down_lb = GTK_LABEL(l);
|
||||
gtk_label_set_single_line_mode(ui->one_down_lb, TRUE);
|
||||
hig_workarea_add_row(t, &row, _("Downloaded:"), l, NULL);
|
||||
l = gtk_label_new(NULL);
|
||||
hig_workarea_add_row(t, &row, _("Downloaded:"), l, nullptr);
|
||||
l = gtk_label_new(nullptr);
|
||||
ui->one_ratio_lb = GTK_LABEL(l);
|
||||
gtk_label_set_single_line_mode(ui->one_ratio_lb, TRUE);
|
||||
hig_workarea_add_row(t, &row, _("Ratio:"), l, NULL);
|
||||
l = gtk_label_new(NULL);
|
||||
hig_workarea_add_row(t, &row, _("Ratio:"), l, nullptr);
|
||||
l = gtk_label_new(nullptr);
|
||||
ui->one_time_lb = GTK_LABEL(l);
|
||||
gtk_label_set_single_line_mode(ui->one_time_lb, TRUE);
|
||||
hig_workarea_add_row(t, &row, _("Duration:"), l, NULL);
|
||||
hig_workarea_add_row(t, &row, _("Duration:"), l, nullptr);
|
||||
|
||||
hig_workarea_add_section_divider(t, &row);
|
||||
|
||||
|
@ -163,22 +163,22 @@ GtkWidget* gtr_stats_dialog_new(GtkWindow* parent, TrCore* core)
|
|||
gtk_label_set_single_line_mode(ui->all_sessions_lb, TRUE);
|
||||
hig_workarea_add_label_w(t, row, l);
|
||||
++row;
|
||||
l = gtk_label_new(NULL);
|
||||
l = gtk_label_new(nullptr);
|
||||
ui->all_up_lb = GTK_LABEL(l);
|
||||
gtk_label_set_single_line_mode(ui->all_up_lb, TRUE);
|
||||
hig_workarea_add_row(t, &row, _("Uploaded:"), l, NULL);
|
||||
l = gtk_label_new(NULL);
|
||||
hig_workarea_add_row(t, &row, _("Uploaded:"), l, nullptr);
|
||||
l = gtk_label_new(nullptr);
|
||||
ui->all_down_lb = GTK_LABEL(l);
|
||||
gtk_label_set_single_line_mode(ui->all_down_lb, TRUE);
|
||||
hig_workarea_add_row(t, &row, _("Downloaded:"), l, NULL);
|
||||
l = gtk_label_new(NULL);
|
||||
hig_workarea_add_row(t, &row, _("Downloaded:"), l, nullptr);
|
||||
l = gtk_label_new(nullptr);
|
||||
ui->all_ratio_lb = GTK_LABEL(l);
|
||||
gtk_label_set_single_line_mode(ui->all_ratio_lb, TRUE);
|
||||
hig_workarea_add_row(t, &row, _("Ratio:"), l, NULL);
|
||||
l = gtk_label_new(NULL);
|
||||
hig_workarea_add_row(t, &row, _("Ratio:"), l, nullptr);
|
||||
l = gtk_label_new(nullptr);
|
||||
ui->all_time_lb = GTK_LABEL(l);
|
||||
gtk_label_set_single_line_mode(ui->all_time_lb, TRUE);
|
||||
hig_workarea_add_row(t, &row, _("Duration:"), l, NULL);
|
||||
hig_workarea_add_row(t, &row, _("Duration:"), l, nullptr);
|
||||
|
||||
gtr_dialog_set_content(GTK_DIALOG(d), t);
|
||||
|
||||
|
|
|
@ -255,7 +255,7 @@ static void getStatusString(
|
|||
if (st->error != 0)
|
||||
{
|
||||
char const* fmt[] = {
|
||||
NULL,
|
||||
nullptr,
|
||||
N_("Tracker gave a warning: \"%s\""),
|
||||
N_("Tracker gave an error: \"%s\""),
|
||||
N_("Error: %s"),
|
||||
|
@ -393,7 +393,7 @@ static GdkPixbuf* get_icon(tr_torrent const* tor, GtkIconSize icon_size, GtkWidg
|
|||
{
|
||||
mime_type = DIRECTORY_MIME_TYPE;
|
||||
}
|
||||
else if (strchr(info->files[0].name, '/') != NULL)
|
||||
else if (strchr(info->files[0].name, '/') != nullptr)
|
||||
{
|
||||
mime_type = DIRECTORY_MIME_TYPE;
|
||||
}
|
||||
|
@ -440,12 +440,12 @@ static void get_size_compact(TorrentCellRenderer* cell, GtkWidget* widget, gint*
|
|||
gtk_cell_renderer_get_padding(GTK_CELL_RENDERER(cell), &xpad, &ypad);
|
||||
|
||||
/* get the idealized cell dimensions */
|
||||
g_object_set(p->icon_renderer, "pixbuf", icon, NULL);
|
||||
gtr_cell_renderer_get_preferred_size(p->icon_renderer, widget, NULL, &icon_size);
|
||||
g_object_set(p->text_renderer, "text", name, "ellipsize", PANGO_ELLIPSIZE_NONE, "scale", 1.0, NULL);
|
||||
gtr_cell_renderer_get_preferred_size(p->text_renderer, widget, NULL, &name_size);
|
||||
g_object_set(p->text_renderer, "text", gstr_stat->str, "scale", SMALL_SCALE, NULL);
|
||||
gtr_cell_renderer_get_preferred_size(p->text_renderer, widget, NULL, &stat_size);
|
||||
g_object_set(p->icon_renderer, "pixbuf", icon, nullptr);
|
||||
gtr_cell_renderer_get_preferred_size(p->icon_renderer, widget, nullptr, &icon_size);
|
||||
g_object_set(p->text_renderer, "text", name, "ellipsize", PANGO_ELLIPSIZE_NONE, "scale", 1.0, nullptr);
|
||||
gtr_cell_renderer_get_preferred_size(p->text_renderer, widget, nullptr, &name_size);
|
||||
g_object_set(p->text_renderer, "text", gstr_stat->str, "scale", SMALL_SCALE, nullptr);
|
||||
gtr_cell_renderer_get_preferred_size(p->text_renderer, widget, nullptr, &stat_size);
|
||||
|
||||
/**
|
||||
*** LAYOUT
|
||||
|
@ -453,12 +453,12 @@ static void get_size_compact(TorrentCellRenderer* cell, GtkWidget* widget, gint*
|
|||
|
||||
#define BAR_WIDTH 50
|
||||
|
||||
if (width != NULL)
|
||||
if (width != nullptr)
|
||||
{
|
||||
*width = xpad * 2 + icon_size.width + GUI_PAD + BAR_WIDTH + GUI_PAD + stat_size.width;
|
||||
}
|
||||
|
||||
if (height != NULL)
|
||||
if (height != nullptr)
|
||||
{
|
||||
*height = ypad * 2 + MAX(name_size.height, p->bar_height);
|
||||
}
|
||||
|
@ -494,31 +494,31 @@ static void get_size_full(TorrentCellRenderer* cell, GtkWidget* widget, gint* wi
|
|||
gtk_cell_renderer_get_padding(GTK_CELL_RENDERER(cell), &xpad, &ypad);
|
||||
|
||||
/* get the idealized cell dimensions */
|
||||
g_object_set(p->icon_renderer, "pixbuf", icon, NULL);
|
||||
gtr_cell_renderer_get_preferred_size(p->icon_renderer, widget, NULL, &icon_size);
|
||||
g_object_set(p->icon_renderer, "pixbuf", icon, nullptr);
|
||||
gtr_cell_renderer_get_preferred_size(p->icon_renderer, widget, nullptr, &icon_size);
|
||||
g_object_set(
|
||||
p->text_renderer,
|
||||
TR_ARG_TUPLE("text", name),
|
||||
TR_ARG_TUPLE("weight", PANGO_WEIGHT_BOLD),
|
||||
TR_ARG_TUPLE("scale", 1.0),
|
||||
TR_ARG_TUPLE("ellipsize", PANGO_ELLIPSIZE_NONE),
|
||||
NULL);
|
||||
gtr_cell_renderer_get_preferred_size(p->text_renderer, widget, NULL, &name_size);
|
||||
g_object_set(p->text_renderer, "text", gstr_prog->str, "weight", PANGO_WEIGHT_NORMAL, "scale", SMALL_SCALE, NULL);
|
||||
gtr_cell_renderer_get_preferred_size(p->text_renderer, widget, NULL, &prog_size);
|
||||
g_object_set(p->text_renderer, "text", gstr_stat->str, NULL);
|
||||
gtr_cell_renderer_get_preferred_size(p->text_renderer, widget, NULL, &stat_size);
|
||||
nullptr);
|
||||
gtr_cell_renderer_get_preferred_size(p->text_renderer, widget, nullptr, &name_size);
|
||||
g_object_set(p->text_renderer, "text", gstr_prog->str, "weight", PANGO_WEIGHT_NORMAL, "scale", SMALL_SCALE, nullptr);
|
||||
gtr_cell_renderer_get_preferred_size(p->text_renderer, widget, nullptr, &prog_size);
|
||||
g_object_set(p->text_renderer, "text", gstr_stat->str, nullptr);
|
||||
gtr_cell_renderer_get_preferred_size(p->text_renderer, widget, nullptr, &stat_size);
|
||||
|
||||
/**
|
||||
*** LAYOUT
|
||||
**/
|
||||
|
||||
if (width != NULL)
|
||||
if (width != nullptr)
|
||||
{
|
||||
*width = xpad * 2 + icon_size.width + GUI_PAD + MAX(prog_size.width, stat_size.width);
|
||||
}
|
||||
|
||||
if (height != NULL)
|
||||
if (height != nullptr)
|
||||
{
|
||||
*height = ypad * 2 + name_size.height + prog_size.height + GUI_PAD_SMALL + p->bar_height + GUI_PAD_SMALL +
|
||||
stat_size.height;
|
||||
|
@ -539,7 +539,7 @@ static void torrent_cell_renderer_get_size(
|
|||
{
|
||||
TorrentCellRenderer const* const self = TORRENT_CELL_RENDERER(cell);
|
||||
|
||||
if (self != NULL && self->priv->tor != NULL)
|
||||
if (self != nullptr && self->priv->tor != nullptr)
|
||||
{
|
||||
int w;
|
||||
int h;
|
||||
|
@ -554,22 +554,22 @@ static void torrent_cell_renderer_get_size(
|
|||
get_size_full(TORRENT_CELL_RENDERER(cell), widget, &w, &h);
|
||||
}
|
||||
|
||||
if (width != NULL)
|
||||
if (width != nullptr)
|
||||
{
|
||||
*width = w;
|
||||
}
|
||||
|
||||
if (height != NULL)
|
||||
if (height != nullptr)
|
||||
{
|
||||
*height = h;
|
||||
}
|
||||
|
||||
if (x_offset != NULL)
|
||||
if (x_offset != nullptr)
|
||||
{
|
||||
*x_offset = cell_area ? cell_area->x : 0;
|
||||
}
|
||||
|
||||
if (y_offset != NULL)
|
||||
if (y_offset != nullptr)
|
||||
{
|
||||
int xpad;
|
||||
int ypad;
|
||||
|
@ -676,14 +676,14 @@ static void render_compact(
|
|||
fill_area.height -= ypad * 2;
|
||||
icon_area = name_area = stat_area = prog_area = fill_area;
|
||||
|
||||
g_object_set(p->icon_renderer, "pixbuf", icon, NULL);
|
||||
gtr_cell_renderer_get_preferred_size(p->icon_renderer, widget, NULL, &size);
|
||||
g_object_set(p->icon_renderer, "pixbuf", icon, nullptr);
|
||||
gtr_cell_renderer_get_preferred_size(p->icon_renderer, widget, nullptr, &size);
|
||||
icon_area.width = size.width;
|
||||
g_object_set(p->text_renderer, "text", name, "ellipsize", PANGO_ELLIPSIZE_NONE, "scale", 1.0, NULL);
|
||||
gtr_cell_renderer_get_preferred_size(p->text_renderer, widget, NULL, &size);
|
||||
g_object_set(p->text_renderer, "text", name, "ellipsize", PANGO_ELLIPSIZE_NONE, "scale", 1.0, nullptr);
|
||||
gtr_cell_renderer_get_preferred_size(p->text_renderer, widget, nullptr, &size);
|
||||
name_area.width = size.width;
|
||||
g_object_set(p->text_renderer, "text", gstr_stat->str, "scale", SMALL_SCALE, NULL);
|
||||
gtr_cell_renderer_get_preferred_size(p->text_renderer, widget, NULL, &size);
|
||||
g_object_set(p->text_renderer, "text", gstr_stat->str, "scale", SMALL_SCALE, nullptr);
|
||||
gtr_cell_renderer_get_preferred_size(p->text_renderer, widget, nullptr, &size);
|
||||
stat_area.width = size.width;
|
||||
|
||||
icon_area.x = fill_area.x;
|
||||
|
@ -698,9 +698,9 @@ static void render_compact(
|
|||
*** RENDER
|
||||
**/
|
||||
|
||||
g_object_set(p->icon_renderer, "pixbuf", icon, "sensitive", sensitive, NULL);
|
||||
g_object_set(p->icon_renderer, "pixbuf", icon, "sensitive", sensitive, nullptr);
|
||||
gtr_cell_renderer_render(p->icon_renderer, window, widget, &icon_area, flags);
|
||||
g_object_set(p->progress_renderer, "value", (int)(percentDone * 100.0), "text", NULL, "sensitive", sensitive, NULL);
|
||||
g_object_set(p->progress_renderer, "value", (int)(percentDone * 100.0), "text", nullptr, "sensitive", sensitive, nullptr);
|
||||
gtr_cell_renderer_render(p->progress_renderer, window, widget, &prog_area, flags);
|
||||
g_object_set(
|
||||
p->text_renderer,
|
||||
|
@ -708,9 +708,9 @@ static void render_compact(
|
|||
TR_ARG_TUPLE("scale", SMALL_SCALE),
|
||||
TR_ARG_TUPLE("ellipsize", PANGO_ELLIPSIZE_END),
|
||||
TR_ARG_TUPLE(FOREGROUND_COLOR_KEY, &text_color),
|
||||
NULL);
|
||||
nullptr);
|
||||
gtr_cell_renderer_render(p->text_renderer, window, widget, &stat_area, flags);
|
||||
g_object_set(p->text_renderer, "text", name, "scale", 1.0, FOREGROUND_COLOR_KEY, &text_color, NULL);
|
||||
g_object_set(p->text_renderer, "text", name, "scale", 1.0, FOREGROUND_COLOR_KEY, &text_color, nullptr);
|
||||
gtr_cell_renderer_render(p->text_renderer, window, widget, &name_area, flags);
|
||||
|
||||
/* cleanup */
|
||||
|
@ -762,8 +762,8 @@ static void render_full(
|
|||
get_text_color(widget, st, &text_color);
|
||||
|
||||
/* get the idealized cell dimensions */
|
||||
g_object_set(p->icon_renderer, "pixbuf", icon, NULL);
|
||||
gtr_cell_renderer_get_preferred_size(p->icon_renderer, widget, NULL, &size);
|
||||
g_object_set(p->icon_renderer, "pixbuf", icon, nullptr);
|
||||
gtr_cell_renderer_get_preferred_size(p->icon_renderer, widget, nullptr, &size);
|
||||
icon_area.width = size.width;
|
||||
icon_area.height = size.height;
|
||||
g_object_set(
|
||||
|
@ -772,16 +772,16 @@ static void render_full(
|
|||
TR_ARG_TUPLE("weight", PANGO_WEIGHT_BOLD),
|
||||
TR_ARG_TUPLE("ellipsize", PANGO_ELLIPSIZE_NONE),
|
||||
TR_ARG_TUPLE("scale", 1.0),
|
||||
NULL);
|
||||
gtr_cell_renderer_get_preferred_size(p->text_renderer, widget, NULL, &size);
|
||||
nullptr);
|
||||
gtr_cell_renderer_get_preferred_size(p->text_renderer, widget, nullptr, &size);
|
||||
name_area.width = size.width;
|
||||
name_area.height = size.height;
|
||||
g_object_set(p->text_renderer, "text", gstr_prog->str, "weight", PANGO_WEIGHT_NORMAL, "scale", SMALL_SCALE, NULL);
|
||||
gtr_cell_renderer_get_preferred_size(p->text_renderer, widget, NULL, &size);
|
||||
g_object_set(p->text_renderer, "text", gstr_prog->str, "weight", PANGO_WEIGHT_NORMAL, "scale", SMALL_SCALE, nullptr);
|
||||
gtr_cell_renderer_get_preferred_size(p->text_renderer, widget, nullptr, &size);
|
||||
prog_area.width = size.width;
|
||||
prog_area.height = size.height;
|
||||
g_object_set(p->text_renderer, "text", gstr_stat->str, NULL);
|
||||
gtr_cell_renderer_get_preferred_size(p->text_renderer, widget, NULL, &size);
|
||||
g_object_set(p->text_renderer, "text", gstr_stat->str, nullptr);
|
||||
gtr_cell_renderer_get_preferred_size(p->text_renderer, widget, nullptr, &size);
|
||||
stat_area.width = size.width;
|
||||
stat_area.height = size.height;
|
||||
|
||||
|
@ -824,7 +824,7 @@ static void render_full(
|
|||
*** RENDER
|
||||
**/
|
||||
|
||||
g_object_set(p->icon_renderer, "pixbuf", icon, "sensitive", sensitive, NULL);
|
||||
g_object_set(p->icon_renderer, "pixbuf", icon, "sensitive", sensitive, nullptr);
|
||||
gtr_cell_renderer_render(p->icon_renderer, window, widget, &icon_area, flags);
|
||||
g_object_set(
|
||||
p->text_renderer,
|
||||
|
@ -833,13 +833,13 @@ static void render_full(
|
|||
TR_ARG_TUPLE(FOREGROUND_COLOR_KEY, &text_color),
|
||||
TR_ARG_TUPLE("ellipsize", PANGO_ELLIPSIZE_END),
|
||||
TR_ARG_TUPLE("weight", PANGO_WEIGHT_BOLD),
|
||||
NULL);
|
||||
nullptr);
|
||||
gtr_cell_renderer_render(p->text_renderer, window, widget, &name_area, flags);
|
||||
g_object_set(p->text_renderer, "text", gstr_prog->str, "scale", SMALL_SCALE, "weight", PANGO_WEIGHT_NORMAL, NULL);
|
||||
g_object_set(p->text_renderer, "text", gstr_prog->str, "scale", SMALL_SCALE, "weight", PANGO_WEIGHT_NORMAL, nullptr);
|
||||
gtr_cell_renderer_render(p->text_renderer, window, widget, &prog_area, flags);
|
||||
g_object_set(p->progress_renderer, "value", (int)(percentDone * 100.0), "text", "", "sensitive", sensitive, NULL);
|
||||
g_object_set(p->progress_renderer, "value", (int)(percentDone * 100.0), "text", "", "sensitive", sensitive, nullptr);
|
||||
gtr_cell_renderer_render(p->progress_renderer, window, widget, &prct_area, flags);
|
||||
g_object_set(p->text_renderer, "text", gstr_stat->str, FOREGROUND_COLOR_KEY, &text_color, NULL);
|
||||
g_object_set(p->text_renderer, "text", gstr_stat->str, FOREGROUND_COLOR_KEY, &text_color, nullptr);
|
||||
gtr_cell_renderer_render(p->text_renderer, window, widget, &stat_area, flags);
|
||||
|
||||
/* cleanup */
|
||||
|
@ -861,7 +861,7 @@ static void torrent_cell_renderer_render(
|
|||
gtk_widget_set_direction(widget, GTK_TEXT_DIR_RTL);
|
||||
#endif
|
||||
|
||||
if (self != NULL && self->priv->tor != NULL)
|
||||
if (self != nullptr && self->priv->tor != nullptr)
|
||||
{
|
||||
struct TorrentCellRendererPrivate const* const p = self->priv;
|
||||
|
||||
|
@ -952,14 +952,14 @@ static void torrent_cell_renderer_dispose(GObject* o)
|
|||
{
|
||||
TorrentCellRenderer* r = TORRENT_CELL_RENDERER(o);
|
||||
|
||||
if (r != NULL && r->priv != NULL)
|
||||
if (r != nullptr && r->priv != nullptr)
|
||||
{
|
||||
g_string_free(r->priv->gstr1, TRUE);
|
||||
g_string_free(r->priv->gstr2, TRUE);
|
||||
g_object_unref(G_OBJECT(r->priv->text_renderer));
|
||||
g_object_unref(G_OBJECT(r->priv->progress_renderer));
|
||||
g_object_unref(G_OBJECT(r->priv->icon_renderer));
|
||||
r->priv = NULL;
|
||||
r->priv = nullptr;
|
||||
}
|
||||
|
||||
G_OBJECT_CLASS(torrent_cell_renderer_parent_class)->dispose(o);
|
||||
|
@ -979,27 +979,34 @@ static void torrent_cell_renderer_class_init(TorrentCellRendererClass* klass)
|
|||
g_object_class_install_property(
|
||||
gobject_class,
|
||||
P_TORRENT,
|
||||
g_param_spec_pointer("torrent", NULL, "tr_torrent*", G_PARAM_READWRITE));
|
||||
g_param_spec_pointer("torrent", nullptr, "tr_torrent*", G_PARAM_READWRITE));
|
||||
|
||||
g_object_class_install_property(
|
||||
gobject_class,
|
||||
P_UPLOAD_SPEED,
|
||||
g_param_spec_double("piece-upload-speed", NULL, "tr_stat.pieceUploadSpeed_KBps", 0, INT_MAX, 0, G_PARAM_READWRITE));
|
||||
g_param_spec_double("piece-upload-speed", nullptr, "tr_stat.pieceUploadSpeed_KBps", 0, INT_MAX, 0, G_PARAM_READWRITE));
|
||||
|
||||
g_object_class_install_property(
|
||||
gobject_class,
|
||||
P_DOWNLOAD_SPEED,
|
||||
g_param_spec_double("piece-download-speed", NULL, "tr_stat.pieceDownloadSpeed_KBps", 0, INT_MAX, 0, G_PARAM_READWRITE));
|
||||
g_param_spec_double(
|
||||
"piece-download-speed",
|
||||
nullptr,
|
||||
"tr_stat.pieceDownloadSpeed_KBps",
|
||||
0,
|
||||
INT_MAX,
|
||||
0,
|
||||
G_PARAM_READWRITE));
|
||||
|
||||
g_object_class_install_property(
|
||||
gobject_class,
|
||||
P_BAR_HEIGHT,
|
||||
g_param_spec_int("bar-height", NULL, "Bar Height", 1, INT_MAX, DEFAULT_BAR_HEIGHT, G_PARAM_READWRITE));
|
||||
g_param_spec_int("bar-height", nullptr, "Bar Height", 1, INT_MAX, DEFAULT_BAR_HEIGHT, G_PARAM_READWRITE));
|
||||
|
||||
g_object_class_install_property(
|
||||
gobject_class,
|
||||
P_COMPACT,
|
||||
g_param_spec_boolean("compact", NULL, "Compact Mode", FALSE, G_PARAM_READWRITE));
|
||||
g_param_spec_boolean("compact", nullptr, "Compact Mode", FALSE, G_PARAM_READWRITE));
|
||||
}
|
||||
|
||||
static void torrent_cell_renderer_init(TorrentCellRenderer* self)
|
||||
|
@ -1012,11 +1019,11 @@ static void torrent_cell_renderer_init(TorrentCellRenderer* self)
|
|||
p = self->priv = G_TYPE_INSTANCE_GET_PRIVATE(self, TORRENT_CELL_RENDERER_TYPE, struct TorrentCellRendererPrivate);
|
||||
#endif
|
||||
|
||||
p->tor = NULL;
|
||||
p->gstr1 = g_string_new(NULL);
|
||||
p->gstr2 = g_string_new(NULL);
|
||||
p->tor = nullptr;
|
||||
p->gstr1 = g_string_new(nullptr);
|
||||
p->gstr2 = g_string_new(nullptr);
|
||||
p->text_renderer = gtk_cell_renderer_text_new();
|
||||
g_object_set(p->text_renderer, "xpad", 0, "ypad", 0, NULL);
|
||||
g_object_set(p->text_renderer, "xpad", 0, "ypad", 0, nullptr);
|
||||
p->progress_renderer = gtk_cell_renderer_progress_new();
|
||||
p->icon_renderer = gtk_cell_renderer_pixbuf_new();
|
||||
g_object_ref_sink(p->text_renderer);
|
||||
|
@ -1028,5 +1035,5 @@ static void torrent_cell_renderer_init(TorrentCellRenderer* self)
|
|||
|
||||
GtkCellRenderer* torrent_cell_renderer_new(void)
|
||||
{
|
||||
return (GtkCellRenderer*)g_object_new(TORRENT_CELL_RENDERER_TYPE, NULL);
|
||||
return (GtkCellRenderer*)g_object_new(TORRENT_CELL_RENDERER_TYPE, nullptr);
|
||||
}
|
||||
|
|
200
gtk/tr-core.cc
200
gtk/tr-core.cc
|
@ -83,7 +83,7 @@ typedef struct TrCorePrivate
|
|||
|
||||
static int core_is_disposed(TrCore const* core)
|
||||
{
|
||||
return core == NULL || core->priv->sorted_model == NULL;
|
||||
return core == nullptr || core->priv->sorted_model == nullptr;
|
||||
}
|
||||
|
||||
G_DEFINE_TYPE_WITH_CODE(TrCore, tr_core, G_TYPE_OBJECT, G_ADD_PRIVATE(TrCore))
|
||||
|
@ -92,11 +92,11 @@ static void core_dispose(GObject* o)
|
|||
{
|
||||
TrCore* core = TR_CORE(o);
|
||||
|
||||
if (core->priv->sorted_model != NULL)
|
||||
if (core->priv->sorted_model != nullptr)
|
||||
{
|
||||
g_object_unref(core->priv->sorted_model);
|
||||
core->priv->sorted_model = NULL;
|
||||
core->priv->raw_model = NULL;
|
||||
core->priv->sorted_model = nullptr;
|
||||
core->priv->raw_model = nullptr;
|
||||
}
|
||||
|
||||
G_OBJECT_CLASS(tr_core_parent_class)->dispose(o);
|
||||
|
@ -125,8 +125,8 @@ static void tr_core_class_init(TrCoreClass* core_class)
|
|||
core_type,
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET(TrCoreClass, add_error),
|
||||
NULL,
|
||||
NULL,
|
||||
nullptr,
|
||||
nullptr,
|
||||
g_cclosure_marshal_VOID__UINT_POINTER,
|
||||
G_TYPE_NONE,
|
||||
2,
|
||||
|
@ -138,8 +138,8 @@ static void tr_core_class_init(TrCoreClass* core_class)
|
|||
core_type,
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET(TrCoreClass, add_prompt),
|
||||
NULL,
|
||||
NULL,
|
||||
nullptr,
|
||||
nullptr,
|
||||
g_cclosure_marshal_VOID__POINTER,
|
||||
G_TYPE_NONE,
|
||||
1,
|
||||
|
@ -150,8 +150,8 @@ static void tr_core_class_init(TrCoreClass* core_class)
|
|||
core_type,
|
||||
G_SIGNAL_RUN_FIRST,
|
||||
G_STRUCT_OFFSET(TrCoreClass, busy),
|
||||
NULL,
|
||||
NULL,
|
||||
nullptr,
|
||||
nullptr,
|
||||
g_cclosure_marshal_VOID__BOOLEAN,
|
||||
G_TYPE_NONE,
|
||||
1,
|
||||
|
@ -162,8 +162,8 @@ static void tr_core_class_init(TrCoreClass* core_class)
|
|||
core_type,
|
||||
G_SIGNAL_RUN_FIRST,
|
||||
G_STRUCT_OFFSET(TrCoreClass, blocklist_updated),
|
||||
NULL,
|
||||
NULL,
|
||||
nullptr,
|
||||
nullptr,
|
||||
g_cclosure_marshal_VOID__INT,
|
||||
G_TYPE_NONE,
|
||||
1,
|
||||
|
@ -174,8 +174,8 @@ static void tr_core_class_init(TrCoreClass* core_class)
|
|||
core_type,
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET(TrCoreClass, port_tested),
|
||||
NULL,
|
||||
NULL,
|
||||
nullptr,
|
||||
nullptr,
|
||||
g_cclosure_marshal_VOID__BOOLEAN,
|
||||
G_TYPE_NONE,
|
||||
1,
|
||||
|
@ -186,8 +186,8 @@ static void tr_core_class_init(TrCoreClass* core_class)
|
|||
core_type,
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET(TrCoreClass, prefs_changed),
|
||||
NULL,
|
||||
NULL,
|
||||
nullptr,
|
||||
nullptr,
|
||||
g_cclosure_marshal_VOID__INT,
|
||||
G_TYPE_NONE,
|
||||
1,
|
||||
|
@ -271,17 +271,17 @@ void gtr_core_pref_changed(TrCore* core, tr_quark const key)
|
|||
|
||||
static GtkTreeModel* core_raw_model(TrCore* core)
|
||||
{
|
||||
return core_is_disposed(core) ? NULL : core->priv->raw_model;
|
||||
return core_is_disposed(core) ? nullptr : core->priv->raw_model;
|
||||
}
|
||||
|
||||
GtkTreeModel* gtr_core_model(TrCore* core)
|
||||
{
|
||||
return core_is_disposed(core) ? NULL : core->priv->sorted_model;
|
||||
return core_is_disposed(core) ? nullptr : core->priv->sorted_model;
|
||||
}
|
||||
|
||||
tr_session* gtr_core_session(TrCore* core)
|
||||
{
|
||||
return core_is_disposed(core) ? NULL : core->priv->session;
|
||||
return core_is_disposed(core) ? nullptr : core->priv->session;
|
||||
}
|
||||
|
||||
/***
|
||||
|
@ -709,7 +709,7 @@ static void core_set_sort_mode(TrCore* core, char const* mode, gboolean is_rever
|
|||
type = is_reversed ? GTK_SORT_DESCENDING : GTK_SORT_ASCENDING;
|
||||
}
|
||||
|
||||
gtk_tree_sortable_set_sort_func(sortable, col, sort_func, NULL, NULL);
|
||||
gtk_tree_sortable_set_sort_func(sortable, col, sort_func, nullptr, nullptr);
|
||||
gtk_tree_sortable_set_sort_column_id(sortable, col, type);
|
||||
}
|
||||
|
||||
|
@ -724,9 +724,9 @@ static time_t get_file_mtime(GFile* file)
|
|||
GFileInfo* info;
|
||||
time_t mtime = 0;
|
||||
|
||||
info = g_file_query_info(file, G_FILE_ATTRIBUTE_TIME_MODIFIED, {}, NULL, NULL);
|
||||
info = g_file_query_info(file, G_FILE_ATTRIBUTE_TIME_MODIFIED, {}, nullptr, nullptr);
|
||||
|
||||
if (info != NULL)
|
||||
if (info != nullptr)
|
||||
{
|
||||
mtime = g_file_info_get_attribute_uint64(info, G_FILE_ATTRIBUTE_TIME_MODIFIED);
|
||||
g_object_unref(G_OBJECT(info));
|
||||
|
@ -739,26 +739,26 @@ static void rename_torrent_and_unref_file(GFile* file)
|
|||
{
|
||||
GFileInfo* info;
|
||||
|
||||
info = g_file_query_info(file, G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME, {}, NULL, NULL);
|
||||
info = g_file_query_info(file, G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME, {}, nullptr, nullptr);
|
||||
|
||||
if (info != NULL)
|
||||
if (info != nullptr)
|
||||
{
|
||||
GError* error = NULL;
|
||||
GError* error = nullptr;
|
||||
char const* old_name;
|
||||
char* new_name;
|
||||
GFile* new_file;
|
||||
|
||||
old_name = g_file_info_get_attribute_string(info, G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME);
|
||||
new_name = g_strdup_printf("%s.added", old_name);
|
||||
new_file = g_file_set_display_name(file, new_name, NULL, &error);
|
||||
new_file = g_file_set_display_name(file, new_name, nullptr, &error);
|
||||
|
||||
if (error != NULL)
|
||||
if (error != nullptr)
|
||||
{
|
||||
g_message("Unable to rename \"%s\" as \"%s\": %s", old_name, new_name, error->message);
|
||||
g_error_free(error);
|
||||
}
|
||||
|
||||
if (new_file != NULL)
|
||||
if (new_file != nullptr)
|
||||
{
|
||||
g_object_unref(G_OBJECT(new_file));
|
||||
}
|
||||
|
@ -772,14 +772,14 @@ static void rename_torrent_and_unref_file(GFile* file)
|
|||
|
||||
static gboolean core_watchdir_idle(gpointer gcore)
|
||||
{
|
||||
GSList* changing = NULL;
|
||||
GSList* unchanging = NULL;
|
||||
GSList* changing = nullptr;
|
||||
GSList* unchanging = nullptr;
|
||||
TrCore* core = TR_CORE(gcore);
|
||||
time_t const now = tr_time();
|
||||
struct TrCorePrivate* p = core->priv;
|
||||
|
||||
/* separate the files into two lists: changing and unchanging */
|
||||
for (GSList* l = p->monitor_files; l != NULL; l = l->next)
|
||||
for (GSList* l = p->monitor_files; l != nullptr; l = l->next)
|
||||
{
|
||||
auto* file = static_cast<GFile*>(l->data);
|
||||
time_t const mtime = get_file_mtime(file);
|
||||
|
@ -795,14 +795,14 @@ static gboolean core_watchdir_idle(gpointer gcore)
|
|||
}
|
||||
|
||||
/* add the files that have stopped changing */
|
||||
if (unchanging != NULL)
|
||||
if (unchanging != nullptr)
|
||||
{
|
||||
gboolean const do_start = gtr_pref_flag_get(TR_KEY_start_added_torrents);
|
||||
gboolean const do_prompt = gtr_pref_flag_get(TR_KEY_show_options_window);
|
||||
|
||||
core->priv->adding_from_watch_dir = TRUE;
|
||||
gtr_core_add_files(core, unchanging, do_start, do_prompt, TRUE);
|
||||
g_slist_foreach(unchanging, (GFunc)(GCallback)rename_torrent_and_unref_file, NULL);
|
||||
g_slist_foreach(unchanging, (GFunc)(GCallback)rename_torrent_and_unref_file, nullptr);
|
||||
g_slist_free(unchanging);
|
||||
core->priv->adding_from_watch_dir = FALSE;
|
||||
}
|
||||
|
@ -833,7 +833,7 @@ static void core_watchdir_monitor_file(TrCore* core, GFile* file)
|
|||
bool found = false;
|
||||
|
||||
/* if we're not already watching this file, start watching it now */
|
||||
for (GSList* l = p->monitor_files; !found && l != NULL; l = l->next)
|
||||
for (GSList* l = p->monitor_files; !found && l != nullptr; l = l->next)
|
||||
{
|
||||
found = g_file_equal(file, static_cast<GFile*>(l->data));
|
||||
}
|
||||
|
@ -874,15 +874,15 @@ static void on_file_changed_in_watchdir(
|
|||
static void core_watchdir_scan(TrCore* core)
|
||||
{
|
||||
char const* dirname = gtr_pref_string_get(TR_KEY_watch_dir);
|
||||
GDir* dir = g_dir_open(dirname, 0, NULL);
|
||||
GDir* dir = g_dir_open(dirname, 0, nullptr);
|
||||
|
||||
if (dir != NULL)
|
||||
if (dir != nullptr)
|
||||
{
|
||||
char const* name;
|
||||
|
||||
while ((name = g_dir_read_name(dir)) != NULL)
|
||||
while ((name = g_dir_read_name(dir)) != nullptr)
|
||||
{
|
||||
char* filename = g_build_filename(dirname, name, NULL);
|
||||
char* filename = g_build_filename(dirname, name, nullptr);
|
||||
GFile* file = g_file_new_for_path(filename);
|
||||
core_watchdir_monitor_file(core, file);
|
||||
g_object_unref(file);
|
||||
|
@ -899,21 +899,21 @@ static void core_watchdir_update(TrCore* core)
|
|||
GFile* dir = g_file_new_for_path(gtr_pref_string_get(TR_KEY_watch_dir));
|
||||
struct TrCorePrivate* p = core->priv;
|
||||
|
||||
if (p->monitor != NULL && (!is_enabled || !g_file_equal(dir, p->monitor_dir)))
|
||||
if (p->monitor != nullptr && (!is_enabled || !g_file_equal(dir, p->monitor_dir)))
|
||||
{
|
||||
g_signal_handler_disconnect(p->monitor, p->monitor_tag);
|
||||
g_file_monitor_cancel(p->monitor);
|
||||
g_object_unref(p->monitor);
|
||||
g_object_unref(p->monitor_dir);
|
||||
|
||||
p->monitor_dir = NULL;
|
||||
p->monitor = NULL;
|
||||
p->monitor_dir = nullptr;
|
||||
p->monitor = nullptr;
|
||||
p->monitor_tag = 0;
|
||||
}
|
||||
|
||||
if (is_enabled && p->monitor == NULL)
|
||||
if (is_enabled && p->monitor == nullptr)
|
||||
{
|
||||
GFileMonitor* m = g_file_monitor_directory(dir, {}, NULL, NULL);
|
||||
GFileMonitor* m = g_file_monitor_directory(dir, {}, nullptr, nullptr);
|
||||
core_watchdir_scan(core);
|
||||
|
||||
g_object_ref(dir);
|
||||
|
@ -972,17 +972,17 @@ static void on_pref_changed(TrCore* core, tr_quark const key, gpointer data)
|
|||
|
||||
TrCore* gtr_core_new(tr_session* session)
|
||||
{
|
||||
TrCore* core = TR_CORE(g_object_new(TR_CORE_TYPE, NULL));
|
||||
TrCore* core = TR_CORE(g_object_new(TR_CORE_TYPE, nullptr));
|
||||
|
||||
core->priv->session = session;
|
||||
|
||||
/* init from prefs & listen to pref changes */
|
||||
on_pref_changed(core, TR_KEY_sort_mode, NULL);
|
||||
on_pref_changed(core, TR_KEY_sort_reversed, NULL);
|
||||
on_pref_changed(core, TR_KEY_watch_dir_enabled, NULL);
|
||||
on_pref_changed(core, TR_KEY_peer_limit_global, NULL);
|
||||
on_pref_changed(core, TR_KEY_inhibit_desktop_hibernation, NULL);
|
||||
g_signal_connect(core, "prefs-changed", G_CALLBACK(on_pref_changed), NULL);
|
||||
on_pref_changed(core, TR_KEY_sort_mode, nullptr);
|
||||
on_pref_changed(core, TR_KEY_sort_reversed, nullptr);
|
||||
on_pref_changed(core, TR_KEY_watch_dir_enabled, nullptr);
|
||||
on_pref_changed(core, TR_KEY_peer_limit_global, nullptr);
|
||||
on_pref_changed(core, TR_KEY_inhibit_desktop_hibernation, nullptr);
|
||||
g_signal_connect(core, "prefs-changed", G_CALLBACK(on_pref_changed), nullptr);
|
||||
|
||||
return core;
|
||||
}
|
||||
|
@ -991,9 +991,9 @@ tr_session* gtr_core_close(TrCore* core)
|
|||
{
|
||||
tr_session* session = gtr_core_session(core);
|
||||
|
||||
if (session != NULL)
|
||||
if (session != nullptr)
|
||||
{
|
||||
core->priv->session = NULL;
|
||||
core->priv->session = nullptr;
|
||||
gtr_pref_save(session);
|
||||
}
|
||||
|
||||
|
@ -1059,7 +1059,7 @@ static gboolean find_row_from_torrent_id(GtkTreeModel* model, int id, GtkTreeIte
|
|||
GtkTreeIter iter;
|
||||
gboolean match = FALSE;
|
||||
|
||||
if (gtk_tree_model_iter_children(model, &iter, NULL))
|
||||
if (gtk_tree_model_iter_children(model, &iter, nullptr))
|
||||
{
|
||||
do
|
||||
{
|
||||
|
@ -1084,7 +1084,7 @@ static gboolean on_torrent_metadata_changed_idle(gpointer gdata)
|
|||
tr_torrent const* const tor = tr_torrentFindFromId(session, data->torrent_id);
|
||||
|
||||
/* update the torrent's collated name */
|
||||
if (tor != NULL)
|
||||
if (tor != nullptr)
|
||||
{
|
||||
GtkTreeIter iter;
|
||||
GtkTreeModel* const model = core_raw_model(data->core);
|
||||
|
@ -1143,7 +1143,7 @@ static gboolean is_torrent_active(tr_stat const* st)
|
|||
|
||||
void gtr_core_add_torrent(TrCore* core, tr_torrent* tor, gboolean do_notify)
|
||||
{
|
||||
if (tor != NULL)
|
||||
if (tor != nullptr)
|
||||
{
|
||||
GtkTreeIter unused;
|
||||
tr_stat const* st = tr_torrentStat(tor);
|
||||
|
@ -1190,21 +1190,21 @@ static tr_torrent* core_create_new_torrent(TrCore* core, tr_ctor* ctor)
|
|||
* doesn't have any concept of the glib trash API */
|
||||
tr_ctorGetDeleteSource(ctor, &do_trash);
|
||||
tr_ctorSetDeleteSource(ctor, FALSE);
|
||||
tr_torrent* const tor = tr_torrentNew(ctor, NULL, NULL);
|
||||
tr_torrent* const tor = tr_torrentNew(ctor, nullptr, nullptr);
|
||||
|
||||
if (tor != NULL && do_trash)
|
||||
if (tor != nullptr && do_trash)
|
||||
{
|
||||
char const* config = tr_sessionGetConfigDir(session);
|
||||
char const* source = tr_ctorGetSourceFile(ctor);
|
||||
|
||||
if (source != NULL)
|
||||
if (source != nullptr)
|
||||
{
|
||||
/* #1294: don't delete the .torrent file if it's our internal copy */
|
||||
bool const is_internal = strstr(source, config) == source;
|
||||
|
||||
if (!is_internal)
|
||||
{
|
||||
gtr_file_trash_or_remove(source, NULL);
|
||||
gtr_file_trash_or_remove(source, nullptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1226,7 +1226,7 @@ static int core_add_ctor(TrCore* core, tr_ctor* ctor, gboolean do_prompt, gboole
|
|||
/* don't complain about .torrent files in the watch directory
|
||||
* that have already been added... that gets annoying and we
|
||||
* don't want to be nagging users to clean up their watch dirs */
|
||||
if (tr_ctorGetSourceFile(ctor) == NULL || !core->priv->adding_from_watch_dir)
|
||||
if (tr_ctorGetSourceFile(ctor) == nullptr || !core->priv->adding_from_watch_dir)
|
||||
{
|
||||
core_emit_err(core, static_cast<tr_core_err>(err), inf.name);
|
||||
}
|
||||
|
@ -1255,22 +1255,22 @@ static int core_add_ctor(TrCore* core, tr_ctor* ctor, gboolean do_prompt, gboole
|
|||
|
||||
static void core_apply_defaults(tr_ctor* ctor)
|
||||
{
|
||||
if (!tr_ctorGetPaused(ctor, TR_FORCE, NULL))
|
||||
if (!tr_ctorGetPaused(ctor, TR_FORCE, nullptr))
|
||||
{
|
||||
tr_ctorSetPaused(ctor, TR_FORCE, !gtr_pref_flag_get(TR_KEY_start_added_torrents));
|
||||
}
|
||||
|
||||
if (!tr_ctorGetDeleteSource(ctor, NULL))
|
||||
if (!tr_ctorGetDeleteSource(ctor, nullptr))
|
||||
{
|
||||
tr_ctorSetDeleteSource(ctor, gtr_pref_flag_get(TR_KEY_trash_original_torrent_files));
|
||||
}
|
||||
|
||||
if (!tr_ctorGetPeerLimit(ctor, TR_FORCE, NULL))
|
||||
if (!tr_ctorGetPeerLimit(ctor, TR_FORCE, nullptr))
|
||||
{
|
||||
tr_ctorSetPeerLimit(ctor, TR_FORCE, gtr_pref_int_get(TR_KEY_peer_limit_per_torrent));
|
||||
}
|
||||
|
||||
if (!tr_ctorGetDownloadDir(ctor, TR_FORCE, NULL))
|
||||
if (!tr_ctorGetDownloadDir(ctor, TR_FORCE, nullptr))
|
||||
{
|
||||
tr_ctorSetDownloadDir(ctor, TR_FORCE, gtr_pref_string_get(TR_KEY_download_dir));
|
||||
}
|
||||
|
@ -1300,10 +1300,10 @@ static void add_file_async_callback(GObject* file, GAsyncResult* result, gpointe
|
|||
{
|
||||
gsize length;
|
||||
char* contents;
|
||||
GError* error = NULL;
|
||||
GError* error = nullptr;
|
||||
auto* data = static_cast<add_from_url_data*>(gdata);
|
||||
|
||||
if (!g_file_load_contents_finish(G_FILE(file), result, &contents, &length, NULL, &error))
|
||||
if (!g_file_load_contents_finish(G_FILE(file), result, &contents, &length, nullptr, &error))
|
||||
{
|
||||
g_message(_("Couldn't read \"%s\": %s"), g_file_get_parse_name(G_FILE(file)), error->message);
|
||||
g_error_free(error);
|
||||
|
@ -1326,7 +1326,7 @@ static bool add_file(TrCore* core, GFile* file, gboolean do_start, gboolean do_p
|
|||
bool handled = false;
|
||||
tr_session const* const session = gtr_core_session(core);
|
||||
|
||||
if (session != NULL)
|
||||
if (session != nullptr)
|
||||
{
|
||||
tr_ctor* ctor;
|
||||
bool tried = false;
|
||||
|
@ -1341,7 +1341,7 @@ static bool add_file(TrCore* core, GFile* file, gboolean do_start, gboolean do_p
|
|||
{
|
||||
char* str = g_file_get_path(file);
|
||||
|
||||
if ((tried = (str != NULL) && g_file_test(str, G_FILE_TEST_EXISTS)))
|
||||
if ((tried = (str != nullptr) && g_file_test(str, G_FILE_TEST_EXISTS)))
|
||||
{
|
||||
loaded = !tr_ctorSetMetainfoFromFile(ctor, str);
|
||||
}
|
||||
|
@ -1396,7 +1396,7 @@ static bool add_file(TrCore* core, GFile* file, gboolean do_start, gboolean do_p
|
|||
|
||||
handled = true;
|
||||
core_inc_busy(core);
|
||||
g_file_load_contents_async(file, NULL, add_file_async_callback, data);
|
||||
g_file_load_contents_async(file, nullptr, add_file_async_callback, data);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1425,7 +1425,7 @@ bool gtr_core_add_from_url(TrCore* core, char const* uri)
|
|||
|
||||
void gtr_core_add_files(TrCore* core, GSList* files, gboolean do_start, gboolean do_prompt, gboolean do_notify)
|
||||
{
|
||||
for (GSList* l = files; l != NULL; l = l->next)
|
||||
for (GSList* l = files; l != nullptr; l = l->next)
|
||||
{
|
||||
add_file(core, static_cast<GFile*>(l->data), do_start, do_prompt, do_notify);
|
||||
}
|
||||
|
@ -1436,7 +1436,7 @@ void gtr_core_add_files(TrCore* core, GSList* files, gboolean do_start, gboolean
|
|||
void gtr_core_torrents_added(TrCore* self)
|
||||
{
|
||||
gtr_core_update(self);
|
||||
core_emit_err(self, TR_CORE_ERR_NO_MORE_TORRENTS, NULL);
|
||||
core_emit_err(self, TR_CORE_ERR_NO_MORE_TORRENTS, nullptr);
|
||||
}
|
||||
|
||||
void gtr_core_torrent_changed(TrCore* self, int id)
|
||||
|
@ -1455,7 +1455,7 @@ void gtr_core_remove_torrent(TrCore* core, int id, gboolean delete_local_data)
|
|||
{
|
||||
tr_torrent* tor = gtr_core_find_torrent(core, id);
|
||||
|
||||
if (tor != NULL)
|
||||
if (tor != nullptr)
|
||||
{
|
||||
/* remove from the gui */
|
||||
GtkTreeIter iter;
|
||||
|
@ -1632,7 +1632,7 @@ void gtr_core_update(TrCore* core)
|
|||
/* update the model */
|
||||
model = core_raw_model(core);
|
||||
|
||||
if (gtk_tree_model_iter_nth_child(model, &iter, NULL, 0))
|
||||
if (gtk_tree_model_iter_nth_child(model, &iter, nullptr, 0))
|
||||
{
|
||||
do
|
||||
{
|
||||
|
@ -1657,13 +1657,13 @@ static gboolean gtr_inhibit_hibernation(guint* cookie)
|
|||
gboolean success;
|
||||
GVariant* response;
|
||||
GDBusConnection* connection;
|
||||
GError* err = NULL;
|
||||
GError* err = nullptr;
|
||||
char const* application = "Transmission BitTorrent Client";
|
||||
char const* reason = "BitTorrent Activity";
|
||||
int const toplevel_xid = 0;
|
||||
int const flags = 4; /* Inhibit suspending the session or computer */
|
||||
|
||||
connection = g_bus_get_sync(G_BUS_TYPE_SESSION, NULL, &err);
|
||||
connection = g_bus_get_sync(G_BUS_TYPE_SESSION, nullptr, &err);
|
||||
|
||||
response = g_dbus_connection_call_sync(
|
||||
connection,
|
||||
|
@ -1672,18 +1672,18 @@ static gboolean gtr_inhibit_hibernation(guint* cookie)
|
|||
SESSION_MANAGER_INTERFACE,
|
||||
"Inhibit",
|
||||
g_variant_new("(susu)", application, toplevel_xid, reason, flags),
|
||||
NULL,
|
||||
nullptr,
|
||||
G_DBUS_CALL_FLAGS_NONE,
|
||||
1000,
|
||||
NULL,
|
||||
nullptr,
|
||||
&err);
|
||||
|
||||
if (response != NULL)
|
||||
if (response != nullptr)
|
||||
{
|
||||
*cookie = g_variant_get_uint32(g_variant_get_child_value(response, 0));
|
||||
}
|
||||
|
||||
success = response != NULL && err == NULL;
|
||||
success = response != nullptr && err == nullptr;
|
||||
|
||||
/* logging */
|
||||
if (success)
|
||||
|
@ -1697,12 +1697,12 @@ static gboolean gtr_inhibit_hibernation(guint* cookie)
|
|||
}
|
||||
|
||||
/* cleanup */
|
||||
if (response != NULL)
|
||||
if (response != nullptr)
|
||||
{
|
||||
g_variant_unref(response);
|
||||
}
|
||||
|
||||
if (connection != NULL)
|
||||
if (connection != nullptr)
|
||||
{
|
||||
g_object_unref(connection);
|
||||
}
|
||||
|
@ -1714,9 +1714,9 @@ static void gtr_uninhibit_hibernation(guint inhibit_cookie)
|
|||
{
|
||||
GVariant* response;
|
||||
GDBusConnection* connection;
|
||||
GError* err = NULL;
|
||||
GError* err = nullptr;
|
||||
|
||||
connection = g_bus_get_sync(G_BUS_TYPE_SESSION, NULL, &err);
|
||||
connection = g_bus_get_sync(G_BUS_TYPE_SESSION, nullptr, &err);
|
||||
|
||||
response = g_dbus_connection_call_sync(
|
||||
connection,
|
||||
|
@ -1725,14 +1725,14 @@ static void gtr_uninhibit_hibernation(guint inhibit_cookie)
|
|||
SESSION_MANAGER_INTERFACE,
|
||||
"Uninhibit",
|
||||
g_variant_new("(u)", inhibit_cookie),
|
||||
NULL,
|
||||
nullptr,
|
||||
G_DBUS_CALL_FLAGS_NONE,
|
||||
1000,
|
||||
NULL,
|
||||
nullptr,
|
||||
&err);
|
||||
|
||||
/* logging */
|
||||
if (err == NULL)
|
||||
if (err == nullptr)
|
||||
{
|
||||
tr_logAddInfo("%s", _("Allowing desktop hibernation"));
|
||||
}
|
||||
|
@ -1848,7 +1848,7 @@ struct pending_request_data
|
|||
gpointer response_func_user_data;
|
||||
};
|
||||
|
||||
static GHashTable* pendingRequests = NULL;
|
||||
static GHashTable* pendingRequests = nullptr;
|
||||
|
||||
static gboolean core_read_rpc_response_idle(void* vresponse)
|
||||
{
|
||||
|
@ -1860,9 +1860,9 @@ static gboolean core_read_rpc_response_idle(void* vresponse)
|
|||
int const tag = (int)intVal;
|
||||
auto* data = static_cast<pending_request_data*>(g_hash_table_lookup(pendingRequests, &tag));
|
||||
|
||||
if (data != NULL)
|
||||
if (data != nullptr)
|
||||
{
|
||||
if (data->response_func != NULL)
|
||||
if (data->response_func != nullptr)
|
||||
{
|
||||
(*data->response_func)(data->core, response, data->response_func_user_data);
|
||||
}
|
||||
|
@ -1898,12 +1898,12 @@ static void core_send_rpc_request(
|
|||
{
|
||||
tr_session* session = gtr_core_session(core);
|
||||
|
||||
if (pendingRequests == NULL)
|
||||
if (pendingRequests == nullptr)
|
||||
{
|
||||
pendingRequests = g_hash_table_new_full(g_int_hash, g_int_equal, g_free, g_free);
|
||||
}
|
||||
|
||||
if (session == NULL)
|
||||
if (session == nullptr)
|
||||
{
|
||||
g_error("GTK+ client doesn't support connections to remote servers yet.");
|
||||
}
|
||||
|
@ -1960,7 +1960,7 @@ void gtr_core_port_test(TrCore* core)
|
|||
tr_variantInitDict(&request, 2);
|
||||
tr_variantDictAddStr(&request, TR_KEY_method, "port-test");
|
||||
tr_variantDictAddInt(&request, TR_KEY_tag, tag);
|
||||
core_send_rpc_request(core, &request, tag, on_port_test_response, NULL);
|
||||
core_send_rpc_request(core, &request, tag, on_port_test_response, nullptr);
|
||||
tr_variantFree(&request);
|
||||
}
|
||||
|
||||
|
@ -1998,7 +1998,7 @@ void gtr_core_blocklist_update(TrCore* core)
|
|||
tr_variantInitDict(&request, 2);
|
||||
tr_variantDictAddStr(&request, TR_KEY_method, "blocklist-update");
|
||||
tr_variantDictAddInt(&request, TR_KEY_tag, tag);
|
||||
core_send_rpc_request(core, &request, tag, on_blocklist_response, NULL);
|
||||
core_send_rpc_request(core, &request, tag, on_blocklist_response, nullptr);
|
||||
tr_variantFree(&request);
|
||||
}
|
||||
|
||||
|
@ -2011,7 +2011,7 @@ void gtr_core_exec(TrCore* core, tr_variant const* top)
|
|||
int const tag = nextTag;
|
||||
++nextTag;
|
||||
|
||||
core_send_rpc_request(core, top, tag, NULL, NULL);
|
||||
core_send_rpc_request(core, top, tag, nullptr, nullptr);
|
||||
}
|
||||
|
||||
/***
|
||||
|
@ -2020,7 +2020,7 @@ void gtr_core_exec(TrCore* core, tr_variant const* top)
|
|||
|
||||
size_t gtr_core_get_torrent_count(TrCore* core)
|
||||
{
|
||||
return gtk_tree_model_iter_n_children(core_raw_model(core), NULL);
|
||||
return gtk_tree_model_iter_n_children(core_raw_model(core), nullptr);
|
||||
}
|
||||
|
||||
size_t gtr_core_get_active_torrent_count(TrCore* core)
|
||||
|
@ -2029,7 +2029,7 @@ size_t gtr_core_get_active_torrent_count(TrCore* core)
|
|||
size_t activeCount = 0;
|
||||
GtkTreeModel* model = core_raw_model(core);
|
||||
|
||||
if (gtk_tree_model_iter_nth_child(model, &iter, NULL, 0))
|
||||
if (gtk_tree_model_iter_nth_child(model, &iter, nullptr, 0))
|
||||
{
|
||||
do
|
||||
{
|
||||
|
@ -2049,9 +2049,9 @@ size_t gtr_core_get_active_torrent_count(TrCore* core)
|
|||
tr_torrent* gtr_core_find_torrent(TrCore* core, int id)
|
||||
{
|
||||
tr_session* session;
|
||||
tr_torrent* tor = NULL;
|
||||
tr_torrent* tor = nullptr;
|
||||
|
||||
if ((session = gtr_core_session(core)) != NULL)
|
||||
if ((session = gtr_core_session(core)) != nullptr)
|
||||
{
|
||||
tor = tr_torrentFindFromId(session, id);
|
||||
}
|
||||
|
@ -2063,7 +2063,7 @@ void gtr_core_open_folder(TrCore* core, int torrent_id)
|
|||
{
|
||||
tr_torrent const* tor = gtr_core_find_torrent(core, torrent_id);
|
||||
|
||||
if (tor != NULL)
|
||||
if (tor != nullptr)
|
||||
{
|
||||
gboolean const single = tr_torrentInfo(tor)->fileCount == 1;
|
||||
char const* currentDir = tr_torrentGetCurrentDir(tor);
|
||||
|
@ -2074,7 +2074,7 @@ void gtr_core_open_folder(TrCore* core, int torrent_id)
|
|||
}
|
||||
else
|
||||
{
|
||||
char* path = g_build_filename(currentDir, tr_torrentName(tor), NULL);
|
||||
char* path = g_build_filename(currentDir, tr_torrentName(tor), nullptr);
|
||||
gtr_open_file(path);
|
||||
g_free(path);
|
||||
}
|
||||
|
|
|
@ -45,13 +45,13 @@ static void popup(GtkStatusIcon* self, guint button, guint when, gpointer data)
|
|||
GtkWidget* w = gtr_action_get_widget("/icon-popup");
|
||||
|
||||
#if GTK_CHECK_VERSION(3, 22, 0)
|
||||
gtk_menu_popup_at_pointer(GTK_MENU(w), NULL);
|
||||
gtk_menu_popup_at_pointer(GTK_MENU(w), nullptr);
|
||||
|
||||
TR_UNUSED(self);
|
||||
TR_UNUSED(button);
|
||||
TR_UNUSED(when);
|
||||
#else
|
||||
gtk_menu_popup(GTK_MENU(w), NULL, NULL, gtk_status_icon_position_menu, self, button, when);
|
||||
gtk_menu_popup(GTK_MENU(w), nullptr, nullptr, gtk_status_icon_position_menu, self, button, when);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -138,7 +138,7 @@ static char const* getIconName(void)
|
|||
else
|
||||
{
|
||||
GtkIconInfo* icon_info = gtk_icon_theme_lookup_icon(theme, TRAY_ICON, 48, GTK_ICON_LOOKUP_USE_BUILTIN);
|
||||
gboolean const icon_is_builtin = gtk_icon_info_get_filename(icon_info) == NULL;
|
||||
gboolean const icon_is_builtin = gtk_icon_info_get_filename(icon_info) == nullptr;
|
||||
|
||||
#if GTK_CHECK_VERSION(3, 8, 0)
|
||||
g_object_unref(icon_info);
|
||||
|
@ -170,8 +170,8 @@ gpointer gtr_icon_new(TrCore* core)
|
|||
|
||||
char const* icon_name = getIconName();
|
||||
GtkStatusIcon* icon = gtk_status_icon_new_from_icon_name(icon_name);
|
||||
g_signal_connect(icon, "activate", G_CALLBACK(activated), NULL);
|
||||
g_signal_connect(icon, "popup-menu", G_CALLBACK(popup), NULL);
|
||||
g_signal_connect(icon, "activate", G_CALLBACK(activated), nullptr);
|
||||
g_signal_connect(icon, "popup-menu", G_CALLBACK(popup), nullptr);
|
||||
g_object_set_qdata(G_OBJECT(icon), core_quark(), core);
|
||||
return icon;
|
||||
|
||||
|
|
124
gtk/tr-prefs.cc
124
gtk/tr-prefs.cc
|
@ -48,7 +48,7 @@ static void response_cb(GtkDialog* dialog, int response, gpointer user_data)
|
|||
|
||||
if (response == GTK_RESPONSE_HELP)
|
||||
{
|
||||
char* uri = g_strconcat(gtr_get_help_uri(), "/html/preferences.html", NULL);
|
||||
char* uri = g_strconcat(gtr_get_help_uri(), "/html/preferences.html", nullptr);
|
||||
gtr_open_uri(uri);
|
||||
g_free(uri);
|
||||
}
|
||||
|
@ -100,7 +100,7 @@ static gboolean spun_cb_idle(gpointer spin)
|
|||
auto* data = static_cast<spin_idle_data*>(g_object_get_data(o, IDLE_DATA));
|
||||
|
||||
/* has the user stopped making changes? */
|
||||
if (g_timer_elapsed(data->last_change, NULL) > 0.33)
|
||||
if (g_timer_elapsed(data->last_change, nullptr) > 0.33)
|
||||
{
|
||||
/* update the core */
|
||||
tr_quark const key = GPOINTER_TO_INT(g_object_get_data(o, PREF_KEY));
|
||||
|
@ -117,7 +117,7 @@ static gboolean spun_cb_idle(gpointer spin)
|
|||
}
|
||||
|
||||
/* cleanup */
|
||||
g_object_set_data(o, IDLE_DATA, NULL);
|
||||
g_object_set_data(o, IDLE_DATA, nullptr);
|
||||
keep_waiting = FALSE;
|
||||
g_object_unref(G_OBJECT(o));
|
||||
}
|
||||
|
@ -132,7 +132,7 @@ static void spun_cb(GtkSpinButton* w, gpointer core, gboolean isDouble)
|
|||
GObject* o = G_OBJECT(w);
|
||||
auto* data = static_cast<spin_idle_data*>(g_object_get_data(o, IDLE_DATA));
|
||||
|
||||
if (data == NULL)
|
||||
if (data == nullptr)
|
||||
{
|
||||
data = g_new(struct spin_idle_data, 1);
|
||||
data->core = core;
|
||||
|
@ -189,7 +189,7 @@ static GtkWidget* new_entry(tr_quark const key, gpointer core)
|
|||
GtkWidget* w = gtk_entry_new();
|
||||
char const* value = gtr_pref_string_get(key);
|
||||
|
||||
if (value != NULL)
|
||||
if (value != nullptr)
|
||||
{
|
||||
gtk_entry_set_text(GTK_ENTRY(w), value);
|
||||
}
|
||||
|
@ -209,11 +209,11 @@ static void chosen_cb(GtkFileChooser* w, gpointer core)
|
|||
|
||||
static GtkWidget* new_path_chooser_button(tr_quark const key, gpointer core)
|
||||
{
|
||||
GtkWidget* w = gtk_file_chooser_button_new(NULL, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
|
||||
GtkWidget* w = gtk_file_chooser_button_new(nullptr, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
|
||||
char const* path = gtr_pref_string_get(key);
|
||||
g_object_set_data(G_OBJECT(w), PREF_KEY, GINT_TO_POINTER(key));
|
||||
|
||||
if (path != NULL)
|
||||
if (path != nullptr)
|
||||
{
|
||||
gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(w), path);
|
||||
}
|
||||
|
@ -224,11 +224,11 @@ static GtkWidget* new_path_chooser_button(tr_quark const key, gpointer core)
|
|||
|
||||
static GtkWidget* new_file_chooser_button(tr_quark const key, gpointer core)
|
||||
{
|
||||
GtkWidget* w = gtk_file_chooser_button_new(NULL, GTK_FILE_CHOOSER_ACTION_OPEN);
|
||||
GtkWidget* w = gtk_file_chooser_button_new(nullptr, GTK_FILE_CHOOSER_ACTION_OPEN);
|
||||
char const* path = gtr_pref_string_get(key);
|
||||
g_object_set_data(G_OBJECT(w), PREF_KEY, GINT_TO_POINTER(key));
|
||||
|
||||
if (path != NULL)
|
||||
if (path != nullptr)
|
||||
{
|
||||
gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(w), path);
|
||||
}
|
||||
|
@ -264,7 +264,7 @@ static GtkWidget* downloadingPage(GObject* core, struct prefs_dialog_data* data)
|
|||
w = new_path_chooser_button(TR_KEY_watch_dir, core);
|
||||
gtk_widget_set_sensitive(GTK_WIDGET(w), gtr_pref_flag_get(TR_KEY_watch_dir_enabled));
|
||||
g_signal_connect(l, "toggled", G_CALLBACK(target_cb), w);
|
||||
hig_workarea_add_row_w(t, &row, l, w, NULL);
|
||||
hig_workarea_add_row_w(t, &row, l, w, nullptr);
|
||||
|
||||
s = _("Show the Torrent Options _dialog");
|
||||
w = new_check_button(s, TR_KEY_show_options_window, core);
|
||||
|
@ -279,10 +279,10 @@ static GtkWidget* downloadingPage(GObject* core, struct prefs_dialog_data* data)
|
|||
hig_workarea_add_wide_control(t, &row, w);
|
||||
|
||||
w = new_path_chooser_button(TR_KEY_download_dir, core);
|
||||
hig_workarea_add_row(t, &row, _("Save to _Location:"), w, NULL);
|
||||
hig_workarea_add_row(t, &row, _("Save to _Location:"), w, nullptr);
|
||||
|
||||
l = data->freespace_label = gtr_freespace_label_new(TR_CORE(core), NULL);
|
||||
g_object_set(l, "halign", GTK_ALIGN_END, "valign", GTK_ALIGN_CENTER, NULL);
|
||||
l = data->freespace_label = gtr_freespace_label_new(TR_CORE(core), nullptr);
|
||||
g_object_set(l, "halign", GTK_ALIGN_END, "valign", GTK_ALIGN_CENTER, nullptr);
|
||||
hig_workarea_add_wide_control(t, &row, l);
|
||||
|
||||
hig_workarea_add_section_divider(t, &row);
|
||||
|
@ -290,11 +290,11 @@ static GtkWidget* downloadingPage(GObject* core, struct prefs_dialog_data* data)
|
|||
|
||||
s = _("Ma_ximum active downloads:");
|
||||
w = new_spin_button(TR_KEY_download_queue_size, core, 0, INT_MAX, 1);
|
||||
hig_workarea_add_row(t, &row, s, w, NULL);
|
||||
hig_workarea_add_row(t, &row, s, w, nullptr);
|
||||
|
||||
s = _("Downloads sharing data in the last _N minutes are active:");
|
||||
w = new_spin_button(TR_KEY_queue_stalled_minutes, core, 1, INT_MAX, 15);
|
||||
hig_workarea_add_row(t, &row, s, w, NULL);
|
||||
hig_workarea_add_row(t, &row, s, w, nullptr);
|
||||
|
||||
hig_workarea_add_section_divider(t, &row);
|
||||
hig_workarea_add_section_title(t, &row, _("Incomplete"));
|
||||
|
@ -308,14 +308,14 @@ static GtkWidget* downloadingPage(GObject* core, struct prefs_dialog_data* data)
|
|||
w = new_path_chooser_button(TR_KEY_incomplete_dir, core);
|
||||
gtk_widget_set_sensitive(GTK_WIDGET(w), gtr_pref_flag_get(TR_KEY_incomplete_dir_enabled));
|
||||
g_signal_connect(l, "toggled", G_CALLBACK(target_cb), w);
|
||||
hig_workarea_add_row_w(t, &row, l, w, NULL);
|
||||
hig_workarea_add_row_w(t, &row, l, w, nullptr);
|
||||
|
||||
s = _("Call scrip_t when torrent is completed:");
|
||||
l = new_check_button(s, TR_KEY_script_torrent_done_enabled, core);
|
||||
w = new_file_chooser_button(TR_KEY_script_torrent_done_filename, core);
|
||||
gtk_widget_set_sensitive(GTK_WIDGET(w), gtr_pref_flag_get(TR_KEY_script_torrent_done_enabled));
|
||||
g_signal_connect(l, "toggled", G_CALLBACK(target_cb), w);
|
||||
hig_workarea_add_row_w(t, &row, l, w, NULL);
|
||||
hig_workarea_add_row_w(t, &row, l, w, nullptr);
|
||||
|
||||
return t;
|
||||
}
|
||||
|
@ -340,14 +340,14 @@ static GtkWidget* seedingPage(GObject* core)
|
|||
w2 = new_spin_button_double(TR_KEY_ratio_limit, core, 0, 1000, .05);
|
||||
gtk_widget_set_sensitive(GTK_WIDGET(w2), gtr_pref_flag_get(TR_KEY_ratio_limit_enabled));
|
||||
g_signal_connect(w, "toggled", G_CALLBACK(target_cb), w2);
|
||||
hig_workarea_add_row_w(t, &row, w, w2, NULL);
|
||||
hig_workarea_add_row_w(t, &row, w, w2, nullptr);
|
||||
|
||||
s = _("Stop seeding if idle for _N minutes:");
|
||||
w = new_check_button(s, TR_KEY_idle_seeding_limit_enabled, core);
|
||||
w2 = new_spin_button(TR_KEY_idle_seeding_limit, core, 1, 40320, 5);
|
||||
gtk_widget_set_sensitive(GTK_WIDGET(w2), gtr_pref_flag_get(TR_KEY_idle_seeding_limit_enabled));
|
||||
g_signal_connect(w, "toggled", G_CALLBACK(target_cb), w2);
|
||||
hig_workarea_add_row_w(t, &row, w, w2, NULL);
|
||||
hig_workarea_add_row_w(t, &row, w, w2, nullptr);
|
||||
|
||||
return t;
|
||||
}
|
||||
|
@ -439,7 +439,7 @@ static void onBlocklistUpdateResponse(GtkDialog* dialog, gint response, gpointer
|
|||
auto* data = static_cast<blocklist_data*>(gdata);
|
||||
gtk_widget_destroy(GTK_WIDGET(dialog));
|
||||
gtk_widget_set_sensitive(data->updateBlocklistButton, TRUE);
|
||||
data->updateBlocklistDialog = NULL;
|
||||
data->updateBlocklistDialog = nullptr;
|
||||
g_signal_handler_disconnect(data->core, data->updateBlocklistTag);
|
||||
data->updateBlocklistTag = 0;
|
||||
}
|
||||
|
@ -482,7 +482,7 @@ static void onBlocklistUpdate(GtkButton* w, gpointer gdata)
|
|||
static void on_blocklist_url_changed(GtkEditable* e, gpointer gbutton)
|
||||
{
|
||||
gchar* url = gtk_editable_get_chars(e, 0, -1);
|
||||
gboolean const is_url_valid = tr_urlParse(url, TR_BAD_SIZE, NULL, NULL, NULL, NULL);
|
||||
gboolean const is_url_valid = tr_urlParse(url, TR_BAD_SIZE, nullptr, nullptr, nullptr, nullptr);
|
||||
gtk_widget_set_sensitive(GTK_WIDGET(gbutton), is_url_valid);
|
||||
g_free(url);
|
||||
}
|
||||
|
@ -500,7 +500,7 @@ static GtkWidget* new_encryption_combo(GObject* core, tr_quark const key)
|
|||
TR_ARG_TUPLE(_("Allow encryption"), TR_CLEAR_PREFERRED),
|
||||
TR_ARG_TUPLE(_("Prefer encryption"), TR_ENCRYPTION_PREFERRED),
|
||||
TR_ARG_TUPLE(_("Require encryption"), TR_ENCRYPTION_REQUIRED),
|
||||
NULL);
|
||||
nullptr);
|
||||
gtr_combo_box_set_active_enum(GTK_COMBO_BOX(w), gtr_pref_int_get(key));
|
||||
g_object_set_data(G_OBJECT(w), PREF_KEY, GINT_TO_POINTER(key));
|
||||
g_signal_connect(w, "changed", G_CALLBACK(onIntComboChanged), core);
|
||||
|
@ -526,7 +526,7 @@ static GtkWidget* privacyPage(GObject* core)
|
|||
|
||||
s = _("_Encryption mode:");
|
||||
w = new_encryption_combo(core, TR_KEY_encryption);
|
||||
hig_workarea_add_row(t, &row, s, w, NULL);
|
||||
hig_workarea_add_row(t, &row, s, w, nullptr);
|
||||
|
||||
hig_workarea_add_section_divider(t, &row);
|
||||
hig_workarea_add_section_title(t, &row, _("Blocklist"));
|
||||
|
@ -534,13 +534,13 @@ static GtkWidget* privacyPage(GObject* core)
|
|||
b = new_check_button(_("Enable _blocklist:"), TR_KEY_blocklist_enabled, core);
|
||||
e = new_entry(TR_KEY_blocklist_url, core);
|
||||
gtk_widget_set_size_request(e, 300, -1);
|
||||
hig_workarea_add_row_w(t, &row, b, e, NULL);
|
||||
hig_workarea_add_row_w(t, &row, b, e, nullptr);
|
||||
data->check = b;
|
||||
g_signal_connect(b, "toggled", G_CALLBACK(target_cb), e);
|
||||
target_cb(b, e);
|
||||
|
||||
w = gtk_label_new("");
|
||||
g_object_set(w, "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, NULL);
|
||||
g_object_set(w, "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, nullptr);
|
||||
updateBlocklistText(w, TR_CORE(core));
|
||||
data->label = w;
|
||||
h = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, GUI_PAD_BIG);
|
||||
|
@ -584,7 +584,7 @@ static GtkTreeModel* whitelist_tree_model_new(char const* whitelist)
|
|||
|
||||
rules = g_strsplit(whitelist, ",", 0);
|
||||
|
||||
for (int i = 0; rules != NULL && rules[i] != NULL; ++i)
|
||||
for (int i = 0; rules != nullptr && rules[i] != nullptr; ++i)
|
||||
{
|
||||
GtkTreeIter iter;
|
||||
char const* s = rules[i];
|
||||
|
@ -619,10 +619,10 @@ struct remote_page
|
|||
static void refreshWhitelist(struct remote_page* page)
|
||||
{
|
||||
GtkTreeIter iter;
|
||||
GString* gstr = g_string_new(NULL);
|
||||
GString* gstr = g_string_new(nullptr);
|
||||
GtkTreeModel* model = GTK_TREE_MODEL(page->store);
|
||||
|
||||
if (gtk_tree_model_iter_nth_child(model, &iter, NULL, 0))
|
||||
if (gtk_tree_model_iter_nth_child(model, &iter, nullptr, 0))
|
||||
{
|
||||
do
|
||||
{
|
||||
|
@ -683,7 +683,7 @@ static void onRemoveWhitelistClicked(GtkButton const* b, gpointer gpage)
|
|||
GtkTreeSelection* sel = gtk_tree_view_get_selection(page->view);
|
||||
GtkTreeIter iter;
|
||||
|
||||
if (gtk_tree_selection_get_selected(sel, NULL, &iter))
|
||||
if (gtk_tree_selection_get_selected(sel, nullptr, &iter))
|
||||
{
|
||||
gtk_list_store_remove(page->store, &iter);
|
||||
refreshWhitelist(page);
|
||||
|
@ -696,20 +696,20 @@ static void refreshRPCSensitivity(struct remote_page* page)
|
|||
int const auth_active = gtk_toggle_button_get_active(page->auth_tb);
|
||||
int const whitelist_active = gtk_toggle_button_get_active(page->whitelist_tb);
|
||||
GtkTreeSelection* sel = gtk_tree_view_get_selection(page->view);
|
||||
int const have_addr = gtk_tree_selection_get_selected(sel, NULL, NULL);
|
||||
int const n_rules = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(page->store), NULL);
|
||||
int const have_addr = gtk_tree_selection_get_selected(sel, nullptr, nullptr);
|
||||
int const n_rules = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(page->store), nullptr);
|
||||
|
||||
for (GSList* l = page->widgets; l != NULL; l = l->next)
|
||||
for (GSList* l = page->widgets; l != nullptr; l = l->next)
|
||||
{
|
||||
gtk_widget_set_sensitive(GTK_WIDGET(l->data), rpc_active);
|
||||
}
|
||||
|
||||
for (GSList* l = page->auth_widgets; l != NULL; l = l->next)
|
||||
for (GSList* l = page->auth_widgets; l != nullptr; l = l->next)
|
||||
{
|
||||
gtk_widget_set_sensitive(GTK_WIDGET(l->data), rpc_active && auth_active);
|
||||
}
|
||||
|
||||
for (GSList* l = page->whitelist_widgets; l != NULL; l = l->next)
|
||||
for (GSList* l = page->whitelist_widgets; l != nullptr; l = l->next)
|
||||
{
|
||||
gtk_widget_set_sensitive(GTK_WIDGET(l->data), rpc_active && whitelist_active);
|
||||
}
|
||||
|
@ -779,14 +779,14 @@ static GtkWidget* remotePage(GObject* core)
|
|||
gtk_box_pack_start(GTK_BOX(h), w, TRUE, TRUE, 0);
|
||||
w = gtk_button_new_with_mnemonic(_("_Open web client"));
|
||||
page->widgets = g_slist_prepend(page->widgets, w);
|
||||
g_signal_connect(w, "clicked", G_CALLBACK(onLaunchClutchCB), NULL);
|
||||
g_signal_connect(w, "clicked", G_CALLBACK(onLaunchClutchCB), nullptr);
|
||||
gtk_box_pack_start(GTK_BOX(h), w, FALSE, FALSE, 0);
|
||||
hig_workarea_add_wide_control(t, &row, h);
|
||||
|
||||
/* port */
|
||||
w = new_spin_button(TR_KEY_rpc_port, core, 0, USHRT_MAX, 1);
|
||||
page->widgets = g_slist_prepend(page->widgets, w);
|
||||
w = hig_workarea_add_row(t, &row, _("HTTP _port:"), w, NULL);
|
||||
w = hig_workarea_add_row(t, &row, _("HTTP _port:"), w, nullptr);
|
||||
page->widgets = g_slist_prepend(page->widgets, w);
|
||||
|
||||
/* require authentication */
|
||||
|
@ -801,7 +801,7 @@ static GtkWidget* remotePage(GObject* core)
|
|||
s = _("_Username:");
|
||||
w = new_entry(TR_KEY_rpc_username, core);
|
||||
page->auth_widgets = g_slist_prepend(page->auth_widgets, w);
|
||||
w = hig_workarea_add_row(t, &row, s, w, NULL);
|
||||
w = hig_workarea_add_row(t, &row, s, w, nullptr);
|
||||
page->auth_widgets = g_slist_prepend(page->auth_widgets, w);
|
||||
|
||||
/* password */
|
||||
|
@ -809,7 +809,7 @@ static GtkWidget* remotePage(GObject* core)
|
|||
w = new_entry(TR_KEY_rpc_password, core);
|
||||
gtk_entry_set_visibility(GTK_ENTRY(w), FALSE);
|
||||
page->auth_widgets = g_slist_prepend(page->auth_widgets, w);
|
||||
w = hig_workarea_add_row(t, &row, s, w, NULL);
|
||||
w = hig_workarea_add_row(t, &row, s, w, nullptr);
|
||||
page->auth_widgets = g_slist_prepend(page->auth_widgets, w);
|
||||
|
||||
/* require authentication */
|
||||
|
@ -831,7 +831,7 @@ static GtkWidget* remotePage(GObject* core)
|
|||
|
||||
page->store = GTK_LIST_STORE(m);
|
||||
w = gtk_tree_view_new_with_model(m);
|
||||
g_signal_connect(w, "button-release-event", G_CALLBACK(on_tree_view_button_released), NULL);
|
||||
g_signal_connect(w, "button-release-event", G_CALLBACK(on_tree_view_button_released), nullptr);
|
||||
|
||||
page->whitelist_widgets = g_slist_prepend(page->whitelist_widgets, w);
|
||||
v = page->view = GTK_TREE_VIEW(w);
|
||||
|
@ -840,28 +840,28 @@ static GtkWidget* remotePage(GObject* core)
|
|||
g_signal_connect(sel, "changed", G_CALLBACK(onWhitelistSelectionChanged), page);
|
||||
g_object_unref(G_OBJECT(m));
|
||||
gtk_tree_view_set_headers_visible(v, TRUE);
|
||||
w = gtk_frame_new(NULL);
|
||||
w = gtk_frame_new(nullptr);
|
||||
gtk_frame_set_shadow_type(GTK_FRAME(w), GTK_SHADOW_IN);
|
||||
gtk_container_add(GTK_CONTAINER(w), GTK_WIDGET(v));
|
||||
|
||||
/* ip address column */
|
||||
r = gtk_cell_renderer_text_new();
|
||||
g_signal_connect(r, "edited", G_CALLBACK(onAddressEdited), page);
|
||||
g_object_set(G_OBJECT(r), "editable", TRUE, NULL);
|
||||
c = gtk_tree_view_column_new_with_attributes(NULL, r, "text", COL_ADDRESS, NULL);
|
||||
g_object_set(G_OBJECT(r), "editable", TRUE, nullptr);
|
||||
c = gtk_tree_view_column_new_with_attributes(nullptr, r, "text", COL_ADDRESS, nullptr);
|
||||
gtk_tree_view_column_set_expand(c, TRUE);
|
||||
gtk_tree_view_append_column(v, c);
|
||||
gtk_tree_view_set_headers_visible(v, FALSE);
|
||||
|
||||
s = _("Addresses:");
|
||||
w = hig_workarea_add_row(t, &row, s, w, NULL);
|
||||
w = hig_workarea_add_row(t, &row, s, w, nullptr);
|
||||
g_object_set(
|
||||
w,
|
||||
TR_ARG_TUPLE("halign", GTK_ALIGN_START),
|
||||
TR_ARG_TUPLE("valign", GTK_ALIGN_START),
|
||||
TR_ARG_TUPLE("margin-top", GUI_PAD),
|
||||
TR_ARG_TUPLE("margin-bottom", GUI_PAD),
|
||||
NULL);
|
||||
nullptr);
|
||||
page->whitelist_widgets = g_slist_prepend(page->whitelist_widgets, w);
|
||||
|
||||
h = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, GUI_PAD);
|
||||
|
@ -873,7 +873,7 @@ static GtkWidget* remotePage(GObject* core)
|
|||
w = gtk_button_new_with_mnemonic(_("_Add"));
|
||||
page->whitelist_widgets = g_slist_prepend(page->whitelist_widgets, w);
|
||||
g_signal_connect(w, "clicked", G_CALLBACK(onAddWhitelistClicked), page);
|
||||
g_object_set(h, "halign", GTK_ALIGN_END, "valign", GTK_ALIGN_CENTER, NULL);
|
||||
g_object_set(h, "halign", GTK_ALIGN_END, "valign", GTK_ALIGN_CENTER, nullptr);
|
||||
gtk_box_pack_start(GTK_BOX(h), w, TRUE, TRUE, 0);
|
||||
hig_workarea_add_wide_control(t, &row, h);
|
||||
}
|
||||
|
@ -896,7 +896,7 @@ static void refreshSchedSensitivity(struct BandwidthPage* p)
|
|||
{
|
||||
gboolean const sched_enabled = gtr_pref_flag_get(TR_KEY_alt_speed_time_enabled);
|
||||
|
||||
for (GSList* l = p->sched_widgets; l != NULL; l = l->next)
|
||||
for (GSList* l = p->sched_widgets; l != nullptr; l = l->next)
|
||||
{
|
||||
gtk_widget_set_sensitive(GTK_WIDGET(l->data), sched_enabled);
|
||||
}
|
||||
|
@ -946,7 +946,7 @@ static GtkWidget* new_time_combo(GObject* core, tr_quark const key)
|
|||
gtk_combo_box_set_wrap_width(GTK_COMBO_BOX(w), 4);
|
||||
r = gtk_cell_renderer_text_new();
|
||||
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(w), r, TRUE);
|
||||
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(w), r, "text", 1, NULL);
|
||||
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(w), r, "text", 1, nullptr);
|
||||
g_object_set_data(G_OBJECT(w), PREF_KEY, GINT_TO_POINTER(key));
|
||||
val = gtr_pref_int_get(key);
|
||||
gtk_combo_box_set_active(GTK_COMBO_BOX(w), val / (15));
|
||||
|
@ -970,7 +970,7 @@ static GtkWidget* new_week_combo(GObject* core, tr_quark const key)
|
|||
TR_ARG_TUPLE(_("Thursday"), TR_SCHED_THURS),
|
||||
TR_ARG_TUPLE(_("Friday"), TR_SCHED_FRI),
|
||||
TR_ARG_TUPLE(_("Saturday"), TR_SCHED_SAT),
|
||||
NULL);
|
||||
nullptr);
|
||||
gtr_combo_box_set_active_enum(GTK_COMBO_BOX(w), gtr_pref_int_get(key));
|
||||
g_object_set_data(G_OBJECT(w), PREF_KEY, GINT_TO_POINTER(key));
|
||||
g_signal_connect(w, "changed", G_CALLBACK(onIntComboChanged), core);
|
||||
|
@ -1007,20 +1007,20 @@ static GtkWidget* speedPage(GObject* core)
|
|||
w2 = new_spin_button(TR_KEY_speed_limit_up, core, 0, INT_MAX, 5);
|
||||
gtk_widget_set_sensitive(GTK_WIDGET(w2), gtr_pref_flag_get(TR_KEY_speed_limit_up_enabled));
|
||||
g_signal_connect(w, "toggled", G_CALLBACK(target_cb), w2);
|
||||
hig_workarea_add_row_w(t, &row, w, w2, NULL);
|
||||
hig_workarea_add_row_w(t, &row, w, w2, nullptr);
|
||||
|
||||
g_snprintf(buf, sizeof(buf), _("_Download (%s):"), _(speed_K_str));
|
||||
w = new_check_button(buf, TR_KEY_speed_limit_down_enabled, core);
|
||||
w2 = new_spin_button(TR_KEY_speed_limit_down, core, 0, INT_MAX, 5);
|
||||
gtk_widget_set_sensitive(GTK_WIDGET(w2), gtr_pref_flag_get(TR_KEY_speed_limit_down_enabled));
|
||||
g_signal_connect(w, "toggled", G_CALLBACK(target_cb), w2);
|
||||
hig_workarea_add_row_w(t, &row, w, w2, NULL);
|
||||
hig_workarea_add_row_w(t, &row, w, w2, nullptr);
|
||||
|
||||
hig_workarea_add_section_divider(t, &row);
|
||||
h = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, GUI_PAD);
|
||||
g_snprintf(buf, sizeof(buf), "<b>%s</b>", _("Alternative Speed Limits"));
|
||||
w = gtk_label_new(buf);
|
||||
g_object_set(w, "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, NULL);
|
||||
g_object_set(w, "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, nullptr);
|
||||
gtk_label_set_use_markup(GTK_LABEL(w), TRUE);
|
||||
gtk_box_pack_start(GTK_BOX(h), w, FALSE, FALSE, 0);
|
||||
w = gtk_image_new_from_icon_name("alt-speed-on", GTK_ICON_SIZE_MENU);
|
||||
|
@ -1031,16 +1031,16 @@ static GtkWidget* speedPage(GObject* core)
|
|||
g_snprintf(buf, sizeof(buf), "<small>%s</small>", s);
|
||||
w = gtk_label_new(buf);
|
||||
gtk_label_set_use_markup(GTK_LABEL(w), TRUE);
|
||||
g_object_set(w, "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, NULL);
|
||||
g_object_set(w, "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, nullptr);
|
||||
hig_workarea_add_wide_control(t, &row, w);
|
||||
|
||||
g_snprintf(buf, sizeof(buf), _("U_pload (%s):"), _(speed_K_str));
|
||||
w = new_spin_button(TR_KEY_alt_speed_up, core, 0, INT_MAX, 5);
|
||||
hig_workarea_add_row(t, &row, buf, w, NULL);
|
||||
hig_workarea_add_row(t, &row, buf, w, nullptr);
|
||||
|
||||
g_snprintf(buf, sizeof(buf), _("Do_wnload (%s):"), _(speed_K_str));
|
||||
w = new_spin_button(TR_KEY_alt_speed_down, core, 0, INT_MAX, 5);
|
||||
hig_workarea_add_row(t, &row, buf, w, NULL);
|
||||
hig_workarea_add_row(t, &row, buf, w, nullptr);
|
||||
|
||||
s = _("_Scheduled times:");
|
||||
h = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
|
||||
|
@ -1056,12 +1056,12 @@ static GtkWidget* speedPage(GObject* core)
|
|||
gtk_box_pack_start(GTK_BOX(h), w2, TRUE, TRUE, 0);
|
||||
w = new_check_button(s, TR_KEY_alt_speed_time_enabled, core);
|
||||
g_signal_connect(w, "toggled", G_CALLBACK(onSchedToggled), page);
|
||||
hig_workarea_add_row_w(t, &row, w, h, NULL);
|
||||
hig_workarea_add_row_w(t, &row, w, h, nullptr);
|
||||
|
||||
s = _("_On days:");
|
||||
w = new_week_combo(core, TR_KEY_alt_speed_time_day);
|
||||
page->sched_widgets = g_slist_prepend(page->sched_widgets, w);
|
||||
w = hig_workarea_add_row(t, &row, s, w, NULL);
|
||||
w = hig_workarea_add_row(t, &row, s, w, nullptr);
|
||||
page->sched_widgets = g_slist_prepend(page->sched_widgets, w);
|
||||
|
||||
g_object_set_data_full(G_OBJECT(t), "page", page, speedPageFree);
|
||||
|
@ -1165,16 +1165,16 @@ static GtkWidget* networkPage(GObject* core)
|
|||
|
||||
s = _("_Port used for incoming connections:");
|
||||
w = data->portSpin = new_spin_button(TR_KEY_peer_port, core, 1, USHRT_MAX, 1);
|
||||
hig_workarea_add_row(t, &row, s, w, NULL);
|
||||
hig_workarea_add_row(t, &row, s, w, nullptr);
|
||||
|
||||
h = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, GUI_PAD_BIG);
|
||||
l = data->portLabel = gtk_label_new(_("Status unknown"));
|
||||
g_object_set(l, "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, NULL);
|
||||
g_object_set(l, "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, nullptr);
|
||||
gtk_box_pack_start(GTK_BOX(h), l, TRUE, TRUE, 0);
|
||||
w = data->portButton = gtk_button_new_with_mnemonic(_("Te_st Port"));
|
||||
gtk_box_pack_end(GTK_BOX(h), w, FALSE, FALSE, 0);
|
||||
g_signal_connect(w, "clicked", G_CALLBACK(onPortTest), data);
|
||||
hig_workarea_add_row(t, &row, NULL, h, NULL);
|
||||
hig_workarea_add_row(t, &row, nullptr, h, nullptr);
|
||||
data->prefsTag = g_signal_connect(TR_CORE(core), "prefs-changed", G_CALLBACK(onCorePrefsChanged), data);
|
||||
g_object_weak_ref(G_OBJECT(t), networkPageDestroyed, data);
|
||||
|
||||
|
@ -1190,9 +1190,9 @@ static GtkWidget* networkPage(GObject* core)
|
|||
hig_workarea_add_section_title(t, &row, _("Peer Limits"));
|
||||
|
||||
w = new_spin_button(TR_KEY_peer_limit_per_torrent, core, 1, FD_SETSIZE, 5);
|
||||
hig_workarea_add_row(t, &row, _("Maximum peers per _torrent:"), w, NULL);
|
||||
hig_workarea_add_row(t, &row, _("Maximum peers per _torrent:"), w, nullptr);
|
||||
w = new_spin_button(TR_KEY_peer_limit_global, core, 1, FD_SETSIZE, 5);
|
||||
hig_workarea_add_row(t, &row, _("Maximum peers _overall:"), w, NULL);
|
||||
hig_workarea_add_row(t, &row, _("Maximum peers _overall:"), w, nullptr);
|
||||
|
||||
hig_workarea_add_section_divider(t, &row);
|
||||
hig_workarea_add_section_title(t, &row, _("Options"));
|
||||
|
@ -1281,7 +1281,7 @@ GtkWidget* gtr_prefs_dialog_new(GtkWindow* parent, GObject* core)
|
|||
GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
TR_ARG_TUPLE(_("_Help"), GTK_RESPONSE_HELP),
|
||||
TR_ARG_TUPLE(_("_Close"), GTK_RESPONSE_CLOSE),
|
||||
NULL);
|
||||
nullptr);
|
||||
g_object_weak_ref(G_OBJECT(d), on_prefs_dialog_destroyed, data);
|
||||
gtk_window_set_role(GTK_WINDOW(d), "transmission-preferences-dialog");
|
||||
gtk_container_set_border_width(GTK_CONTAINER(d), GUI_PAD);
|
||||
|
|
|
@ -83,7 +83,14 @@ static void on_popup_menu(GtkWidget* self, GdkEventButton* event)
|
|||
#if GTK_CHECK_VERSION(3, 22, 0)
|
||||
gtk_menu_popup_at_pointer(GTK_MENU(menu), (GdkEvent*)event);
|
||||
#else
|
||||
gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, event != NULL ? event->button : 0, event != NULL ? event->time : 0);
|
||||
gtk_menu_popup(
|
||||
GTK_MENU(menu),
|
||||
nullptr,
|
||||
nullptr,
|
||||
nullptr,
|
||||
nullptr,
|
||||
event != nullptr ? event->button : 0,
|
||||
event != nullptr ? event->time : 0);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -109,11 +116,11 @@ static gboolean tree_view_search_equal_func(
|
|||
|
||||
gboolean match;
|
||||
char* lower;
|
||||
char const* name = NULL;
|
||||
char const* name = nullptr;
|
||||
|
||||
lower = g_strstrip(g_utf8_strdown(key, -1));
|
||||
gtk_tree_model_get(model, iter, MC_NAME_COLLATED, &name, -1);
|
||||
match = strstr(name, lower) != NULL;
|
||||
match = strstr(name, lower) != nullptr;
|
||||
g_free(lower);
|
||||
|
||||
return !match;
|
||||
|
@ -130,7 +137,7 @@ static GtkWidget* makeview(PrivateData* p)
|
|||
view = gtk_tree_view_new();
|
||||
tree_view = GTK_TREE_VIEW(view);
|
||||
gtk_tree_view_set_search_column(tree_view, MC_NAME_COLLATED);
|
||||
gtk_tree_view_set_search_equal_func(tree_view, tree_view_search_equal_func, NULL, NULL);
|
||||
gtk_tree_view_set_search_equal_func(tree_view, tree_view_search_equal_func, nullptr, nullptr);
|
||||
gtk_tree_view_set_headers_visible(tree_view, FALSE);
|
||||
gtk_tree_view_set_fixed_height_mode(tree_view, TRUE);
|
||||
|
||||
|
@ -141,7 +148,7 @@ static GtkWidget* makeview(PrivateData* p)
|
|||
TR_ARG_TUPLE("title", _("Torrent")),
|
||||
TR_ARG_TUPLE("resizable", TRUE),
|
||||
TR_ARG_TUPLE("sizing", GTK_TREE_VIEW_COLUMN_FIXED),
|
||||
NULL));
|
||||
nullptr));
|
||||
|
||||
p->renderer = r = torrent_cell_renderer_new();
|
||||
gtk_tree_view_column_pack_start(col, r, FALSE);
|
||||
|
@ -150,15 +157,15 @@ static GtkWidget* makeview(PrivateData* p)
|
|||
gtk_tree_view_column_add_attribute(col, r, "piece-download-speed", MC_SPEED_DOWN);
|
||||
|
||||
gtk_tree_view_append_column(tree_view, col);
|
||||
g_object_set(r, "xpad", GUI_PAD_SMALL, "ypad", GUI_PAD_SMALL, NULL);
|
||||
g_object_set(r, "xpad", GUI_PAD_SMALL, "ypad", GUI_PAD_SMALL, nullptr);
|
||||
|
||||
sel = gtk_tree_view_get_selection(tree_view);
|
||||
gtk_tree_selection_set_mode(GTK_TREE_SELECTION(sel), GTK_SELECTION_MULTIPLE);
|
||||
|
||||
g_signal_connect(view, "popup-menu", G_CALLBACK(on_popup_menu), NULL);
|
||||
g_signal_connect(view, "popup-menu", G_CALLBACK(on_popup_menu), nullptr);
|
||||
g_signal_connect(view, "button-press-event", G_CALLBACK(on_tree_view_button_pressed), (void*)on_popup_menu);
|
||||
g_signal_connect(view, "button-release-event", G_CALLBACK(on_tree_view_button_released), NULL);
|
||||
g_signal_connect(view, "row-activated", G_CALLBACK(view_row_activated), NULL);
|
||||
g_signal_connect(view, "button-release-event", G_CALLBACK(on_tree_view_button_released), nullptr);
|
||||
g_signal_connect(view, "row-activated", G_CALLBACK(view_row_activated), nullptr);
|
||||
|
||||
gtk_tree_view_set_model(tree_view, p->filter_model);
|
||||
g_object_unref(p->filter_model);
|
||||
|
@ -178,26 +185,26 @@ static void prefsChanged(TrCore* core, tr_quark const key, gpointer wind)
|
|||
switch (key)
|
||||
{
|
||||
case TR_KEY_compact_view:
|
||||
g_object_set(p->renderer, "compact", gtr_pref_flag_get(key), NULL);
|
||||
g_object_set(p->renderer, "compact", gtr_pref_flag_get(key), nullptr);
|
||||
/* since the cell size has changed, we need gtktreeview to revalidate
|
||||
* its fixed-height mode values. Unfortunately there's not an API call
|
||||
* for that, but it *does* revalidate when it thinks the style's been tweaked */
|
||||
g_signal_emit_by_name(p->view, "style-updated", NULL, NULL);
|
||||
g_signal_emit_by_name(p->view, "style-updated", nullptr, nullptr);
|
||||
break;
|
||||
|
||||
case TR_KEY_show_statusbar:
|
||||
isEnabled = gtr_pref_flag_get(key);
|
||||
g_object_set(p->status, "visible", isEnabled, NULL);
|
||||
g_object_set(p->status, "visible", isEnabled, nullptr);
|
||||
break;
|
||||
|
||||
case TR_KEY_show_filterbar:
|
||||
isEnabled = gtr_pref_flag_get(key);
|
||||
g_object_set(p->filter, "visible", isEnabled, NULL);
|
||||
g_object_set(p->filter, "visible", isEnabled, nullptr);
|
||||
break;
|
||||
|
||||
case TR_KEY_show_toolbar:
|
||||
isEnabled = gtr_pref_flag_get(key);
|
||||
g_object_set(p->toolbar, "visible", isEnabled, NULL);
|
||||
g_object_set(p->toolbar, "visible", isEnabled, nullptr);
|
||||
break;
|
||||
|
||||
case TR_KEY_statusbar_stats:
|
||||
|
@ -229,9 +236,9 @@ static void onYinYangClicked(GtkWidget* w, gpointer vprivate)
|
|||
auto* p = static_cast<PrivateData*>(vprivate);
|
||||
|
||||
#if GTK_CHECK_VERSION(3, 22, 0)
|
||||
gtk_menu_popup_at_widget(GTK_MENU(p->status_menu), GTK_WIDGET(w), GDK_GRAVITY_NORTH_EAST, GDK_GRAVITY_SOUTH_EAST, NULL);
|
||||
gtk_menu_popup_at_widget(GTK_MENU(p->status_menu), GTK_WIDGET(w), GDK_GRAVITY_NORTH_EAST, GDK_GRAVITY_SOUTH_EAST, nullptr);
|
||||
#else
|
||||
gtk_menu_popup(GTK_MENU(p->status_menu), NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time());
|
||||
gtk_menu_popup(GTK_MENU(p->status_menu), nullptr, nullptr, nullptr, nullptr, 0, gtk_get_current_event_time());
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -274,7 +281,7 @@ static void syncAltSpeedButton(PrivateData* p)
|
|||
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w), b);
|
||||
gtk_image_set_from_stock(GTK_IMAGE(p->alt_speed_image), stock, GtkIconSize(-1));
|
||||
g_object_set(w, "halign", GTK_ALIGN_CENTER, "valign", GTK_ALIGN_CENTER, NULL);
|
||||
g_object_set(w, "halign", GTK_ALIGN_CENTER, "valign", GTK_ALIGN_CENTER, nullptr);
|
||||
gtk_widget_set_tooltip_text(w, str);
|
||||
|
||||
g_free(str);
|
||||
|
@ -320,7 +327,7 @@ static gboolean onAskTrackerQueryTooltip(
|
|||
gboolean handled;
|
||||
time_t maxTime = 0;
|
||||
auto* p = static_cast<PrivateData*>(gdata);
|
||||
time_t const now = time(NULL);
|
||||
time_t const now = time(nullptr);
|
||||
|
||||
gtk_tree_selection_selected_foreach(p->selection, findMaxAnnounceTime, &maxTime);
|
||||
|
||||
|
@ -409,7 +416,7 @@ static GtkWidget* createSpeedMenu(PrivateData* p, tr_direction dir)
|
|||
m = gtk_menu_new();
|
||||
menu_shell = GTK_MENU_SHELL(m);
|
||||
|
||||
w = gtk_radio_menu_item_new_with_label(NULL, _("Unlimited"));
|
||||
w = gtk_radio_menu_item_new_with_label(nullptr, _("Unlimited"));
|
||||
o = G_OBJECT(w);
|
||||
p->speedlimit_off_item[dir] = w;
|
||||
g_object_set_data(o, DIRECTION_KEY, GINT_TO_POINTER(dir));
|
||||
|
@ -480,7 +487,7 @@ static GtkWidget* createRatioMenu(PrivateData* p)
|
|||
m = gtk_menu_new();
|
||||
menu_shell = GTK_MENU_SHELL(m);
|
||||
|
||||
w = gtk_radio_menu_item_new_with_label(NULL, _("Seed Forever"));
|
||||
w = gtk_radio_menu_item_new_with_label(nullptr, _("Seed Forever"));
|
||||
p->ratio_off_item = w;
|
||||
g_object_set_data(G_OBJECT(w), ENABLED_KEY, GINT_TO_POINTER(FALSE));
|
||||
g_signal_connect(w, "toggled", G_CALLBACK(onRatioToggled), p);
|
||||
|
@ -574,9 +581,9 @@ static void onOptionsClicked(GtkButton* button, gpointer vp)
|
|||
GTK_WIDGET(button),
|
||||
GDK_GRAVITY_NORTH_WEST,
|
||||
GDK_GRAVITY_SOUTH_WEST,
|
||||
NULL);
|
||||
nullptr);
|
||||
#else
|
||||
gtk_menu_popup(GTK_MENU(p->options_menu), NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time());
|
||||
gtk_menu_popup(GTK_MENU(p->options_menu), nullptr, nullptr, nullptr, nullptr, 0, gtk_get_current_event_time());
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -627,7 +634,7 @@ GtkWidget* gtr_window_new(GtkApplication* app, GtkUIManager* ui_mgr, TrCore* cor
|
|||
/* Please move it to separate .css file if you’re adding more styles here. */
|
||||
style = ".tr-workarea.frame {border-left-width: 0; border-right-width: 0; border-radius: 0;}";
|
||||
css_provider = gtk_css_provider_new();
|
||||
gtk_css_provider_load_from_data(css_provider, style, strlen(style), NULL);
|
||||
gtk_css_provider_load_from_data(css_provider, style, strlen(style), nullptr);
|
||||
gtk_style_context_add_provider_for_screen(
|
||||
gdk_screen_get_default(),
|
||||
GTK_STYLE_PROVIDER(css_provider),
|
||||
|
@ -654,7 +661,7 @@ GtkWidget* gtr_window_new(GtkApplication* app, GtkUIManager* ui_mgr, TrCore* cor
|
|||
|
||||
/* status menu */
|
||||
menu = p->status_menu = gtk_menu_new();
|
||||
l = NULL;
|
||||
l = nullptr;
|
||||
pch = gtr_pref_string_get(TR_KEY_statusbar_stats);
|
||||
|
||||
for (size_t i = 0; i < G_N_ELEMENTS(stats_modes); ++i)
|
||||
|
@ -701,21 +708,21 @@ GtkWidget* gtr_window_new(GtkApplication* app, GtkUIManager* ui_mgr, TrCore* cor
|
|||
gtk_container_add(GTK_CONTAINER(grid), w);
|
||||
|
||||
/* download */
|
||||
w = dl_lb = gtk_label_new(NULL);
|
||||
w = dl_lb = gtk_label_new(nullptr);
|
||||
p->dl_lb = GTK_LABEL(w);
|
||||
gtk_label_set_single_line_mode(p->dl_lb, TRUE);
|
||||
gtk_container_add(GTK_CONTAINER(grid), w);
|
||||
|
||||
/* upload */
|
||||
w = ul_lb = gtk_label_new(NULL);
|
||||
g_object_set(G_OBJECT(w), "margin-left", GUI_PAD, NULL);
|
||||
w = ul_lb = gtk_label_new(nullptr);
|
||||
g_object_set(G_OBJECT(w), "margin-left", GUI_PAD, nullptr);
|
||||
p->ul_lb = GTK_LABEL(w);
|
||||
gtk_label_set_single_line_mode(p->ul_lb, TRUE);
|
||||
gtk_container_add(GTK_CONTAINER(grid), w);
|
||||
|
||||
/* ratio */
|
||||
w = gtk_label_new(NULL);
|
||||
g_object_set(G_OBJECT(w), "margin-left", GUI_PAD_BIG, NULL);
|
||||
w = gtk_label_new(nullptr);
|
||||
g_object_set(G_OBJECT(w), "margin-left", GUI_PAD_BIG, nullptr);
|
||||
p->stats_lb = GTK_LABEL(w);
|
||||
gtk_label_set_single_line_mode(p->stats_lb, TRUE);
|
||||
gtk_container_add(GTK_CONTAINER(grid), w);
|
||||
|
@ -733,7 +740,7 @@ GtkWidget* gtr_window_new(GtkApplication* app, GtkUIManager* ui_mgr, TrCore* cor
|
|||
**/
|
||||
|
||||
p->view = makeview(p);
|
||||
w = list = p->scroll = gtk_scrolled_window_new(NULL, NULL);
|
||||
w = list = p->scroll = gtk_scrolled_window_new(nullptr, nullptr);
|
||||
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(w), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
|
||||
gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(w), GTK_SHADOW_OUT);
|
||||
gtk_style_context_add_class(gtk_widget_get_style_context(w), "tr-workarea");
|
||||
|
@ -755,8 +762,8 @@ GtkWidget* gtr_window_new(GtkApplication* app, GtkUIManager* ui_mgr, TrCore* cor
|
|||
pango_layout_get_pixel_size(pango_layout, &width, &height);
|
||||
gtk_widget_set_size_request(ul_lb, width, height);
|
||||
gtk_widget_set_size_request(dl_lb, width, height);
|
||||
g_object_set(ul_lb, "halign", GTK_ALIGN_END, "valign", GTK_ALIGN_CENTER, NULL);
|
||||
g_object_set(dl_lb, "halign", GTK_ALIGN_END, "valign", GTK_ALIGN_CENTER, NULL);
|
||||
g_object_set(ul_lb, "halign", GTK_ALIGN_END, "valign", GTK_ALIGN_CENTER, nullptr);
|
||||
g_object_set(dl_lb, "halign", GTK_ALIGN_END, "valign", GTK_ALIGN_CENTER, nullptr);
|
||||
g_object_unref(G_OBJECT(pango_layout));
|
||||
}
|
||||
|
||||
|
@ -831,7 +838,7 @@ static void updateSpeeds(PrivateData* p)
|
|||
{
|
||||
tr_session const* const session = gtr_core_session(p->core);
|
||||
|
||||
if (session != NULL)
|
||||
if (session != nullptr)
|
||||
{
|
||||
char text_str[256];
|
||||
char speed_str[128];
|
||||
|
@ -842,7 +849,7 @@ static void updateSpeeds(PrivateData* p)
|
|||
GtkTreeIter iter;
|
||||
GtkTreeModel* model = gtr_core_model(p->core);
|
||||
|
||||
if (gtk_tree_model_iter_nth_child(model, &iter, NULL, 0))
|
||||
if (gtk_tree_model_iter_nth_child(model, &iter, nullptr, 0))
|
||||
{
|
||||
do
|
||||
{
|
||||
|
@ -881,7 +888,7 @@ void gtr_window_refresh(GtkWindow* self)
|
|||
{
|
||||
PrivateData* p = get_private_data(self);
|
||||
|
||||
if (p != NULL && p->core != NULL && gtr_core_session(p->core) != NULL)
|
||||
if (p != nullptr && p->core != nullptr && gtr_core_session(p->core) != nullptr)
|
||||
{
|
||||
updateSpeeds(p);
|
||||
updateStats(p);
|
||||
|
@ -897,10 +904,10 @@ void gtr_window_set_busy(GtkWindow* win, gboolean isBusy)
|
|||
{
|
||||
GtkWidget* w = GTK_WIDGET(win);
|
||||
|
||||
if (w != NULL && gtk_widget_get_realized(w))
|
||||
if (w != nullptr && gtk_widget_get_realized(w))
|
||||
{
|
||||
GdkDisplay* display = gtk_widget_get_display(w);
|
||||
GdkCursor* cursor = isBusy ? gdk_cursor_new_for_display(display, GDK_WATCH) : NULL;
|
||||
GdkCursor* cursor = isBusy ? gdk_cursor_new_for_display(display, GDK_WATCH) : nullptr;
|
||||
|
||||
gdk_window_set_cursor(gtk_widget_get_window(w), cursor);
|
||||
gdk_display_flush(display);
|
||||
|
|
80
gtk/util.cc
80
gtk/util.cc
|
@ -168,7 +168,7 @@ void gtr_get_host_from_url(char* buf, size_t buflen, char const* url)
|
|||
char host[1024];
|
||||
char const* pch;
|
||||
|
||||
if ((pch = strstr(url, "://")) != NULL)
|
||||
if ((pch = strstr(url, "://")) != nullptr)
|
||||
{
|
||||
size_t const hostlen = strcspn(pch + 3, ":/");
|
||||
size_t const copylen = MIN(hostlen, sizeof(host) - 1);
|
||||
|
@ -189,7 +189,7 @@ void gtr_get_host_from_url(char* buf, size_t buflen, char const* url)
|
|||
char const* first_dot = strchr(host, '.');
|
||||
char const* last_dot = strrchr(host, '.');
|
||||
|
||||
if (first_dot != NULL && last_dot != NULL && first_dot != last_dot)
|
||||
if (first_dot != nullptr && last_dot != nullptr && first_dot != last_dot)
|
||||
{
|
||||
g_strlcpy(buf, first_dot + 1, buflen);
|
||||
}
|
||||
|
@ -202,18 +202,18 @@ void gtr_get_host_from_url(char* buf, size_t buflen, char const* url)
|
|||
|
||||
static gboolean gtr_is_supported_url(char const* str)
|
||||
{
|
||||
return str != NULL &&
|
||||
return str != nullptr &&
|
||||
(g_str_has_prefix(str, "ftp://") || g_str_has_prefix(str, "http://") || g_str_has_prefix(str, "https://"));
|
||||
}
|
||||
|
||||
gboolean gtr_is_magnet_link(char const* str)
|
||||
{
|
||||
return str != NULL && g_str_has_prefix(str, "magnet:?");
|
||||
return str != nullptr && g_str_has_prefix(str, "magnet:?");
|
||||
}
|
||||
|
||||
gboolean gtr_is_hex_hashcode(char const* str)
|
||||
{
|
||||
if (str == NULL || strlen(str) != 40)
|
||||
if (str == nullptr || strlen(str) != 40)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -231,9 +231,9 @@ gboolean gtr_is_hex_hashcode(char const* str)
|
|||
|
||||
static GtkWindow* getWindow(GtkWidget* w)
|
||||
{
|
||||
if (w == NULL)
|
||||
if (w == nullptr)
|
||||
{
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (GTK_IS_WINDOW(w))
|
||||
|
@ -293,7 +293,7 @@ gboolean on_tree_view_button_pressed(GtkWidget* view, GdkEventButton* event, gpo
|
|||
GtkTreePath* path;
|
||||
GtkTreeSelection* selection = gtk_tree_view_get_selection(tv);
|
||||
|
||||
if (gtk_tree_view_get_path_at_pos(tv, (gint)event->x, (gint)event->y, &path, NULL, NULL, NULL))
|
||||
if (gtk_tree_view_get_path_at_pos(tv, (gint)event->x, (gint)event->y, &path, nullptr, nullptr, nullptr))
|
||||
{
|
||||
if (!gtk_tree_selection_path_is_selected(selection, path))
|
||||
{
|
||||
|
@ -304,7 +304,7 @@ gboolean on_tree_view_button_pressed(GtkWidget* view, GdkEventButton* event, gpo
|
|||
gtk_tree_path_free(path);
|
||||
}
|
||||
|
||||
if (func != NULL)
|
||||
if (func != nullptr)
|
||||
{
|
||||
(*(PopupFunc)func)(view, event);
|
||||
}
|
||||
|
@ -323,7 +323,7 @@ gboolean on_tree_view_button_released(GtkWidget* view, GdkEventButton* event, gp
|
|||
|
||||
GtkTreeView* tv = GTK_TREE_VIEW(view);
|
||||
|
||||
if (!gtk_tree_view_get_path_at_pos(tv, (gint)event->x, (gint)event->y, NULL, NULL, NULL, NULL))
|
||||
if (!gtk_tree_view_get_path_at_pos(tv, (gint)event->x, (gint)event->y, nullptr, nullptr, nullptr, nullptr))
|
||||
{
|
||||
GtkTreeSelection* selection = gtk_tree_view_get_selection(tv);
|
||||
gtk_tree_selection_unselect_all(selection);
|
||||
|
@ -344,10 +344,10 @@ bool gtr_file_trash_or_remove(char const* filename, tr_error** error)
|
|||
|
||||
if (gtr_pref_flag_get(TR_KEY_trash_can_enabled))
|
||||
{
|
||||
GError* err = NULL;
|
||||
trashed = g_file_trash(file, NULL, &err);
|
||||
GError* err = nullptr;
|
||||
trashed = g_file_trash(file, nullptr, &err);
|
||||
|
||||
if (err != NULL)
|
||||
if (err != nullptr)
|
||||
{
|
||||
g_message("Unable to trash file \"%s\": %s", filename, err->message);
|
||||
tr_error_set_literal(error, err->code, err->message);
|
||||
|
@ -357,10 +357,10 @@ bool gtr_file_trash_or_remove(char const* filename, tr_error** error)
|
|||
|
||||
if (!trashed)
|
||||
{
|
||||
GError* err = NULL;
|
||||
g_file_delete(file, NULL, &err);
|
||||
GError* err = nullptr;
|
||||
g_file_delete(file, nullptr, &err);
|
||||
|
||||
if (err != NULL)
|
||||
if (err != nullptr)
|
||||
{
|
||||
g_message("Unable to delete file \"%s\": %s", filename, err->message);
|
||||
tr_error_clear(error);
|
||||
|
@ -376,9 +376,9 @@ bool gtr_file_trash_or_remove(char const* filename, tr_error** error)
|
|||
|
||||
char const* gtr_get_help_uri(void)
|
||||
{
|
||||
static char const* uri = NULL;
|
||||
static char const* uri = nullptr;
|
||||
|
||||
if (uri == NULL)
|
||||
if (uri == nullptr)
|
||||
{
|
||||
uri = g_strdup_printf("https://transmissionbt.com/help/gtk/%d.%dx", MAJOR_VERSION, MINOR_VERSION / 10);
|
||||
}
|
||||
|
@ -397,28 +397,28 @@ void gtr_open_file(char const* path)
|
|||
|
||||
void gtr_open_uri(char const* uri)
|
||||
{
|
||||
if (uri != NULL)
|
||||
if (uri != nullptr)
|
||||
{
|
||||
gboolean opened = FALSE;
|
||||
|
||||
if (!opened)
|
||||
{
|
||||
#if GTK_CHECK_VERSION(3, 22, 0)
|
||||
opened = gtk_show_uri_on_window(NULL, uri, GDK_CURRENT_TIME, NULL);
|
||||
opened = gtk_show_uri_on_window(nullptr, uri, GDK_CURRENT_TIME, nullptr);
|
||||
#else
|
||||
opened = gtk_show_uri(NULL, uri, GDK_CURRENT_TIME, NULL);
|
||||
opened = gtk_show_uri(nullptr, uri, GDK_CURRENT_TIME, nullptr);
|
||||
#endif
|
||||
}
|
||||
|
||||
if (!opened)
|
||||
{
|
||||
opened = g_app_info_launch_default_for_uri(uri, NULL, NULL);
|
||||
opened = g_app_info_launch_default_for_uri(uri, nullptr, nullptr);
|
||||
}
|
||||
|
||||
if (!opened)
|
||||
{
|
||||
char* argv[] = { (char*)"xdg-open", (char*)uri, NULL };
|
||||
opened = g_spawn_async(NULL, argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, NULL);
|
||||
char* argv[] = { (char*)"xdg-open", (char*)uri, nullptr };
|
||||
opened = g_spawn_async(nullptr, argv, nullptr, G_SPAWN_SEARCH_PATH, nullptr, nullptr, nullptr, nullptr);
|
||||
}
|
||||
|
||||
if (!opened)
|
||||
|
@ -454,7 +454,7 @@ void gtr_combo_box_set_active_enum(GtkComboBox* combo_box, int value)
|
|||
/* find the one to select */
|
||||
i = 0;
|
||||
|
||||
while (gtk_tree_model_iter_nth_child(model, &iter, NULL, i))
|
||||
while (gtk_tree_model_iter_nth_child(model, &iter, nullptr, i))
|
||||
{
|
||||
gtk_tree_model_get(model, &iter, column, ¤tValue, -1);
|
||||
|
||||
|
@ -479,7 +479,7 @@ GtkWidget* gtr_combo_box_new_enum(char const* text_1, ...)
|
|||
|
||||
text = text_1;
|
||||
|
||||
if (text != NULL)
|
||||
if (text != nullptr)
|
||||
{
|
||||
va_list vl;
|
||||
|
||||
|
@ -488,9 +488,9 @@ GtkWidget* gtr_combo_box_new_enum(char const* text_1, ...)
|
|||
do
|
||||
{
|
||||
int const val = va_arg(vl, int);
|
||||
gtk_list_store_insert_with_values(store, NULL, INT_MAX, 0, val, 1, text, -1);
|
||||
gtk_list_store_insert_with_values(store, nullptr, INT_MAX, 0, val, 1, text, -1);
|
||||
text = va_arg(vl, char const*);
|
||||
} while (text != NULL);
|
||||
} while (text != nullptr);
|
||||
|
||||
va_end(vl);
|
||||
}
|
||||
|
@ -498,7 +498,7 @@ GtkWidget* gtr_combo_box_new_enum(char const* text_1, ...)
|
|||
w = gtk_combo_box_new_with_model(GTK_TREE_MODEL(store));
|
||||
r = gtk_cell_renderer_text_new();
|
||||
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(w), r, TRUE);
|
||||
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(w), r, "text", 1, NULL);
|
||||
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(w), r, "text", 1, nullptr);
|
||||
|
||||
/* cleanup */
|
||||
g_object_unref(store);
|
||||
|
@ -524,7 +524,7 @@ GtkWidget* gtr_priority_combo_new(void)
|
|||
TR_ARG_TUPLE(_("High"), TR_PRI_HIGH),
|
||||
TR_ARG_TUPLE(_("Normal"), TR_PRI_NORMAL),
|
||||
TR_ARG_TUPLE(_("Low"), TR_PRI_LOW),
|
||||
NULL);
|
||||
nullptr);
|
||||
}
|
||||
|
||||
/***
|
||||
|
@ -541,7 +541,7 @@ void gtr_widget_set_visible(GtkWidget* w, gboolean b)
|
|||
GList* windows = gtk_window_list_toplevels();
|
||||
GtkWindow const* const window = GTK_WINDOW(w);
|
||||
|
||||
for (GList* l = windows; l != NULL; l = l->next)
|
||||
for (GList* l = windows; l != nullptr; l = l->next)
|
||||
{
|
||||
if (!GTK_IS_WINDOW(l->data))
|
||||
{
|
||||
|
@ -558,7 +558,7 @@ void gtr_widget_set_visible(GtkWidget* w, gboolean b)
|
|||
continue;
|
||||
}
|
||||
|
||||
if (b && g_object_get_data(G_OBJECT(l->data), GTR_CHILD_HIDDEN) != NULL)
|
||||
if (b && g_object_get_data(G_OBJECT(l->data), GTR_CHILD_HIDDEN) != nullptr)
|
||||
{
|
||||
g_object_steal_data(G_OBJECT(l->data), GTR_CHILD_HIDDEN);
|
||||
gtr_widget_set_visible(GTK_WIDGET(l->data), TRUE);
|
||||
|
@ -593,13 +593,13 @@ void gtr_unrecognized_url_dialog(GtkWidget* parent, char const* url)
|
|||
|
||||
GtkWindow* window = getWindow(parent);
|
||||
|
||||
GString* gstr = g_string_new(NULL);
|
||||
GString* gstr = g_string_new(nullptr);
|
||||
|
||||
GtkWidget* w = gtk_message_dialog_new(window, {}, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "%s", _("Unrecognized URL"));
|
||||
|
||||
g_string_append_printf(gstr, _("Transmission doesn't know how to use \"%s\""), url);
|
||||
|
||||
if (gtr_is_magnet_link(url) && strstr(url, xt) == NULL)
|
||||
if (gtr_is_magnet_link(url) && strstr(url, xt) == nullptr)
|
||||
{
|
||||
g_string_append_printf(gstr, "\n \n");
|
||||
g_string_append_printf(
|
||||
|
@ -630,7 +630,7 @@ void gtr_paste_clipboard_url_into_entry(GtkWidget* e)
|
|||
{
|
||||
char const* const s = text[i];
|
||||
|
||||
if (s != NULL && (gtr_is_supported_url(s) || gtr_is_magnet_link(s) || gtr_is_hex_hashcode(s)))
|
||||
if (s != nullptr && (gtr_is_supported_url(s) || gtr_is_magnet_link(s) || gtr_is_hex_hashcode(s)))
|
||||
{
|
||||
gtk_entry_set_text(GTK_ENTRY(e), s);
|
||||
break;
|
||||
|
@ -676,12 +676,12 @@ static void freespace_label_data_free(gpointer gdata)
|
|||
{
|
||||
auto* data = static_cast<freespace_label_data*>(gdata);
|
||||
|
||||
if (data->core != NULL)
|
||||
if (data->core != nullptr)
|
||||
{
|
||||
g_object_weak_unref(G_OBJECT(data->core), on_freespace_label_core_destroyed, data);
|
||||
}
|
||||
|
||||
if (data->label != NULL)
|
||||
if (data->label != nullptr)
|
||||
{
|
||||
g_object_weak_ref(G_OBJECT(data->label), on_freespace_label_destroyed, data);
|
||||
}
|
||||
|
@ -696,14 +696,14 @@ static TR_DEFINE_QUARK(freespace_label_data, freespace_label_data)
|
|||
static void on_freespace_label_core_destroyed(gpointer gdata, GObject* dead_core G_GNUC_UNUSED)
|
||||
{
|
||||
auto* data = static_cast<freespace_label_data*>(gdata);
|
||||
data->core = NULL;
|
||||
data->core = nullptr;
|
||||
freespace_label_data_free(data);
|
||||
}
|
||||
|
||||
static void on_freespace_label_destroyed(gpointer gdata, GObject* dead_label G_GNUC_UNUSED)
|
||||
{
|
||||
auto* data = static_cast<freespace_label_data*>(gdata);
|
||||
data->label = NULL;
|
||||
data->label = nullptr;
|
||||
freespace_label_data_free(data);
|
||||
}
|
||||
|
||||
|
@ -742,7 +742,7 @@ GtkWidget* gtr_freespace_label_new(struct _TrCore* core, char const* dir)
|
|||
data = g_new0(struct freespace_label_data, 1);
|
||||
data->timer_id = g_timeout_add_seconds(3, on_freespace_timer, data);
|
||||
data->core = core;
|
||||
data->label = GTK_LABEL(gtk_label_new(NULL));
|
||||
data->label = GTK_LABEL(gtk_label_new(nullptr));
|
||||
data->dir = g_strdup(dir);
|
||||
|
||||
/* when either the core or the label is destroyed, stop updating */
|
||||
|
|
|
@ -84,7 +84,7 @@ struct tr_scrape_response
|
|||
/* the raw scrape url */
|
||||
std::string url;
|
||||
|
||||
/* human-readable error string on failure, or NULL */
|
||||
/* human-readable error string on failure, or nullptr */
|
||||
std::string errmsg;
|
||||
|
||||
/* minimum interval (in seconds) allowed between scrapes.
|
||||
|
@ -209,10 +209,10 @@ struct tr_announce_response
|
|||
/* IPv6 peers that we acquired from the tracker */
|
||||
struct tr_pex* pex6;
|
||||
|
||||
/* human-readable error string on failure, or NULL */
|
||||
/* human-readable error string on failure, or nullptr */
|
||||
char* errmsg;
|
||||
|
||||
/* human-readable warning string or NULL */
|
||||
/* human-readable warning string or nullptr */
|
||||
char* warning;
|
||||
|
||||
/* key generated by and returned from an http tracker.
|
||||
|
|
|
@ -193,8 +193,8 @@ static void openssl_evp_cipher_context_free(EVP_CIPHER_CTX* handle)
|
|||
|
||||
static inline int DH_set0_pqg(DH* dh, BIGNUM* p, BIGNUM* q, BIGNUM* g)
|
||||
{
|
||||
/* If the fields p and g in d are NULL, the corresponding input
|
||||
* parameters MUST be non-NULL. q may remain NULL.
|
||||
/* If the fields p and g in d are nullptr, the corresponding input
|
||||
* parameters MUST be non-nullptr. q may remain nullptr.
|
||||
*/
|
||||
if ((dh->p == nullptr && p == nullptr) || (dh->g == nullptr && g == nullptr))
|
||||
{
|
||||
|
|
|
@ -32,7 +32,7 @@ struct tr_error
|
|||
* @param[in] code Error code (platform-specific).
|
||||
* @param[in] message Error message.
|
||||
*
|
||||
* @return Newly allocated error object on success, `NULL` otherwise.
|
||||
* @return Newly allocated error object on success, `nullptr` otherwise.
|
||||
*/
|
||||
tr_error* tr_error_new_literal(int code, char const* message);
|
||||
|
||||
|
@ -43,7 +43,7 @@ tr_error* tr_error_new_literal(int code, char const* message);
|
|||
* @param[in] message_format Error message format string.
|
||||
* @param[in] args Format arguments.
|
||||
*
|
||||
* @return Newly allocated error object on success, `NULL` otherwise.
|
||||
* @return Newly allocated error object on success, `nullptr` otherwise.
|
||||
*/
|
||||
tr_error* tr_error_new_valist(int code, char const* message_format, va_list args) TR_GNUC_PRINTF(2, 0);
|
||||
|
||||
|
@ -57,7 +57,7 @@ void tr_error_free(tr_error* error);
|
|||
/**
|
||||
* @brief Create and set new error object using `printf`-style formatting.
|
||||
*
|
||||
* If passed pointer to error object is `NULL`, do nothing.
|
||||
* If passed pointer to error object is `nullptr`, do nothing.
|
||||
*
|
||||
* @param[in,out] error Pointer to error object to be set.
|
||||
* @param[in] code Error code (platform-specific).
|
||||
|
@ -69,7 +69,7 @@ void tr_error_set(tr_error** error, int code, char const* message_format, ...) T
|
|||
/**
|
||||
* @brief Create and set new error object using literal error message.
|
||||
*
|
||||
* If passed pointer to error object is `NULL`, do nothing.
|
||||
* If passed pointer to error object is `nullptr`, do nothing.
|
||||
*
|
||||
* @param[in,out] error Pointer to error object to be set.
|
||||
* @param[in] code Error code (platform-specific).
|
||||
|
@ -80,8 +80,8 @@ void tr_error_set_literal(tr_error** error, int code, char const* message);
|
|||
/**
|
||||
* @brief Propagate existing error object upwards.
|
||||
*
|
||||
* If passed pointer to new error object is not `NULL`, copy old error object to
|
||||
* new error object and free old error object. Otherwise, just free old error
|
||||
* If passed pointer to new error object is not `nullptr`, copy old error object
|
||||
* to new error object and free old error object. Otherwise, just free old error
|
||||
* object.
|
||||
*
|
||||
* @param[in,out] new_error Pointer to error object to be set.
|
||||
|
@ -92,8 +92,8 @@ void tr_error_propagate(tr_error** new_error, tr_error** old_error);
|
|||
/**
|
||||
* @brief Clear error object.
|
||||
*
|
||||
* Free error object being pointed and set pointer to `NULL`. If passed pointer
|
||||
* is `NULL`, do nothing.
|
||||
* Free error object being pointed and set pointer to `nullptr`. If passed
|
||||
* pointer is `nullptr`, do nothing.
|
||||
*
|
||||
* @param[in,out] error Pointer to error object to be cleared.
|
||||
*/
|
||||
|
@ -102,7 +102,7 @@ void tr_error_clear(tr_error** error);
|
|||
/**
|
||||
* @brief Prefix message of exising error object.
|
||||
*
|
||||
* If passed pointer to error object is not `NULL`, prefix its message with
|
||||
* If passed pointer to error object is not `nullptr`, prefix its message with
|
||||
* `printf`-style formatted text. Otherwise, do nothing.
|
||||
*
|
||||
* @param[in,out] error Pointer to error object to be set.
|
||||
|
@ -114,9 +114,9 @@ void tr_error_prefix(tr_error** error, char const* prefix_format, ...) TR_GNUC_P
|
|||
/**
|
||||
* @brief Prefix message and propagate existing error object upwards.
|
||||
*
|
||||
* If passed pointer to new error object is not `NULL`, copy old error object to
|
||||
* new error object, prefix its message with `printf`-style formatted text, and
|
||||
* free old error object. Otherwise, just free old error object.
|
||||
* If passed pointer to new error object is not `nullptr`, copy old error object
|
||||
* to new error object, prefix its message with `printf`-style formatted text,
|
||||
* and free old error object. Otherwise, just free old error object.
|
||||
*
|
||||
* @param[in,out] new_error Pointer to error object to be set.
|
||||
* @param[in,out] old_error Error object to be propagated. Cleared on return.
|
||||
|
|
|
@ -139,8 +139,8 @@ struct tr_sys_path_info
|
|||
*
|
||||
* @param[in] src_path Path to source file.
|
||||
* @param[in] dst_path Path to destination file.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL` if you
|
||||
* are not interested in error details.
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr` if
|
||||
* you are not interested in error details.
|
||||
*
|
||||
* @return `True` on success, `false` otherwise (with `error` set accordingly).
|
||||
*/
|
||||
|
@ -152,8 +152,8 @@ bool tr_sys_path_copy(char const* src_path, char const* dst_path, struct tr_erro
|
|||
* @param[in] path Path to file or directory.
|
||||
* @param[in] flags Combination of @ref tr_sys_path_get_info_flags_t values.
|
||||
* @param[out] info Result buffer.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL` if you are
|
||||
* not interested in error details.
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr` if you
|
||||
* are not interested in error details.
|
||||
*
|
||||
* @return `True` on success, `false` otherwise (with `error` set accordingly).
|
||||
*/
|
||||
|
@ -163,12 +163,12 @@ bool tr_sys_path_get_info(char const* path, int flags, tr_sys_path_info* info, s
|
|||
* @brief Portability wrapper for `access()`.
|
||||
*
|
||||
* @param[in] path Path to file or directory.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL` if you are
|
||||
* not interested in error details.
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr` if you
|
||||
* are not interested in error details.
|
||||
*
|
||||
* @return `True` if path exists, `false` otherwise. Note that `false` will also
|
||||
* be returned in case of error; if you need to distinguish the two,
|
||||
* check if `error` is `NULL` afterwards.
|
||||
* check if `error` is `nullptr` afterwards.
|
||||
*/
|
||||
bool tr_sys_path_exists(char const* path, struct tr_error** error);
|
||||
|
||||
|
@ -186,14 +186,14 @@ bool tr_sys_path_is_relative(char const* path);
|
|||
/**
|
||||
* @brief Test to see if the two filenames point to the same file.
|
||||
*
|
||||
* @param[in] path1 Path to first file or directory.
|
||||
* @param[in] path2 Path to second file or directory.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL` if you are
|
||||
* not interested in error details.
|
||||
* @param[in] path1 Path to first file or directory.
|
||||
* @param[in] path2 Path to second file or directory.
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr` if
|
||||
* you are not interested in error details.
|
||||
*
|
||||
* @return `True` if two paths point to the same file or directory, `false`
|
||||
* otherwise. Note that `false` will also be returned in case of error;
|
||||
* if you need to distinguish the two, check if `error` is `NULL`
|
||||
* if you need to distinguish the two, check if `error` is `nullptr`
|
||||
* afterwards.
|
||||
*/
|
||||
bool tr_sys_path_is_same(char const* path1, char const* path2, struct tr_error** error);
|
||||
|
@ -202,12 +202,12 @@ bool tr_sys_path_is_same(char const* path1, char const* path2, struct tr_error**
|
|||
* @brief Portability wrapper for `realpath()`.
|
||||
*
|
||||
* @param[in] path Path to file or directory.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL` if you are
|
||||
* not interested in error details.
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr` if you
|
||||
* are not interested in error details.
|
||||
*
|
||||
* @return Pointer to newly allocated buffer containing full path (with symbolic
|
||||
* links, `.` and `..` resolved) on success (use @ref tr_free to free it
|
||||
* when no longer needed), `NULL` otherwise (with `error` set
|
||||
* when no longer needed), `nullptr` otherwise (with `error` set
|
||||
* accordingly).
|
||||
*/
|
||||
char* tr_sys_path_resolve(char const* path, struct tr_error** error);
|
||||
|
@ -216,12 +216,12 @@ char* tr_sys_path_resolve(char const* path, struct tr_error** error);
|
|||
* @brief Portability wrapper for `basename()`.
|
||||
*
|
||||
* @param[in] path Path to file or directory.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL` if you are
|
||||
* not interested in error details.
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr` if you
|
||||
* are not interested in error details.
|
||||
*
|
||||
* @return Pointer to newly allocated buffer containing base name (last path
|
||||
* component; parent path removed) on success (use @ref tr_free to free
|
||||
* it when no longer needed), `NULL` otherwise (with `error` set
|
||||
* it when no longer needed), `nullptr` otherwise (with `error` set
|
||||
* accordingly).
|
||||
*/
|
||||
char* tr_sys_path_basename(char const* path, struct tr_error** error);
|
||||
|
@ -230,12 +230,12 @@ char* tr_sys_path_basename(char const* path, struct tr_error** error);
|
|||
* @brief Portability wrapper for `dirname()`.
|
||||
*
|
||||
* @param[in] path Path to file or directory.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL` if you are
|
||||
* not interested in error details.
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr` if you
|
||||
* are not interested in error details.
|
||||
*
|
||||
* @return Pointer to newly allocated buffer containing directory (parent path;
|
||||
* last path component removed) on success (use @ref tr_free to free it
|
||||
* when no longer needed), `NULL` otherwise (with `error` set
|
||||
* when no longer needed), `nullptr` otherwise (with `error` set
|
||||
* accordingly).
|
||||
*/
|
||||
char* tr_sys_path_dirname(char const* path, struct tr_error** error);
|
||||
|
@ -245,7 +245,7 @@ char* tr_sys_path_dirname(char const* path, struct tr_error** error);
|
|||
*
|
||||
* @param[in] src_path Path to source file or directory.
|
||||
* @param[in] dst_path Path to destination file or directory.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL` if you
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr` if you
|
||||
* are not interested in error details.
|
||||
*
|
||||
* @return `True` on success, `false` otherwise (with `error` set accordingly).
|
||||
|
@ -258,8 +258,8 @@ bool tr_sys_path_rename(char const* src_path, char const* dst_path, struct tr_er
|
|||
* @brief Portability wrapper for `remove()`.
|
||||
*
|
||||
* @param[in] path Path to file or directory.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL` if you are
|
||||
* not interested in error details.
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr` if you
|
||||
* are not interested in error details.
|
||||
*
|
||||
* @return `True` on success, `false` otherwise (with `error` set accordingly).
|
||||
* Directory removal will only succeed if it is empty (contains no other
|
||||
|
@ -282,7 +282,7 @@ char* tr_sys_path_native_separators(char* path);
|
|||
* @brief Get handle to one of standard I/O files.
|
||||
*
|
||||
* @param[in] std_file Standard file identifier.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL` if you
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr` if you
|
||||
* are not interested in error details.
|
||||
*
|
||||
* @return Opened file descriptor on success, `TR_BAD_SYS_FILE` otherwise (with
|
||||
|
@ -298,8 +298,8 @@ tr_sys_file_t tr_sys_file_get_std(tr_std_sys_file_t std_file, struct tr_error**
|
|||
* @param[in] flags Combination of @ref tr_sys_file_open_flags_t values.
|
||||
* @param[in] permissions Permissions to create file with (in case
|
||||
@ref TR_SYS_FILE_CREATE is used). Not used on Windows.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL` if you
|
||||
* are not interested in error details.
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr` if
|
||||
* you are not interested in error details.
|
||||
*
|
||||
* @return Opened file descriptor on success, `TR_BAD_SYS_FILE` otherwise (with
|
||||
* `error` set accordingly).
|
||||
|
@ -314,7 +314,7 @@ tr_sys_file_t tr_sys_file_open(char const* path, int flags, int permissions, str
|
|||
* characters are replaced with actual random
|
||||
* characters used to form a unique path to
|
||||
* temporary file.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL`
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr`
|
||||
* if you are not interested in error details.
|
||||
*
|
||||
* @return Opened file descriptor on success, `TR_BAD_SYS_FILE` otherwise (with
|
||||
|
@ -326,8 +326,8 @@ tr_sys_file_t tr_sys_file_open_temp(char* path_template, struct tr_error** error
|
|||
* @brief Portability wrapper for `close()`.
|
||||
*
|
||||
* @param[in] handle Valid file descriptor.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL` if you are
|
||||
* not interested in error details.
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr` if you
|
||||
* are not interested in error details.
|
||||
*
|
||||
* @return `True` on success, `false` otherwise (with `error` set accordingly).
|
||||
*/
|
||||
|
@ -338,8 +338,8 @@ bool tr_sys_file_close(tr_sys_file_t handle, struct tr_error** error);
|
|||
*
|
||||
* @param[in] handle Valid file descriptor.
|
||||
* @param[out] info Result buffer.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL` if you are
|
||||
* not interested in error details.
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr` if you
|
||||
* are not interested in error details.
|
||||
*
|
||||
* @return `True` on success, `false` otherwise (with `error` set accordingly).
|
||||
*/
|
||||
|
@ -352,9 +352,9 @@ bool tr_sys_file_get_info(tr_sys_file_t handle, tr_sys_path_info* info, struct t
|
|||
* @param[in] offset Relative file offset in bytes to seek to.
|
||||
* @param[in] origin Offset origin.
|
||||
* @param[out] new_offset New offset in bytes from beginning of file. Optional,
|
||||
* pass `NULL` if you are not interested.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL` if you
|
||||
* are not interested in error details.
|
||||
* pass `nullptr` if you are not interested.
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr` if
|
||||
* you are not interested in error details.
|
||||
*
|
||||
* @return `True` on success, `false` otherwise (with `error` set accordingly).
|
||||
*/
|
||||
|
@ -371,10 +371,10 @@ bool tr_sys_file_seek(
|
|||
* @param[in] handle Valid file descriptor.
|
||||
* @param[out] buffer Buffer to store read data to.
|
||||
* @param[in] size Number of bytes to read.
|
||||
* @param[out] bytes_read Number of bytes actually read. Optional, pass `NULL`
|
||||
* @param[out] bytes_read Number of bytes actually read. Optional, pass `nullptr`
|
||||
* if you are not interested.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL` if you
|
||||
* are not interested in error details.
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr` if
|
||||
* you are not interested in error details.
|
||||
*
|
||||
* @return `True` on success, `false` otherwise (with `error` set accordingly).
|
||||
*/
|
||||
|
@ -388,10 +388,10 @@ bool tr_sys_file_read(tr_sys_file_t handle, void* buffer, uint64_t size, uint64_
|
|||
* @param[out] buffer Buffer to store read data to.
|
||||
* @param[in] size Number of bytes to read.
|
||||
* @param[in] offset File offset in bytes to start reading from.
|
||||
* @param[out] bytes_read Number of bytes actually read. Optional, pass `NULL`
|
||||
* @param[out] bytes_read Number of bytes actually read. Optional, pass `nullptr`
|
||||
* if you are not interested.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL` if you
|
||||
* are not interested in error details.
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr` if
|
||||
* you are not interested in error details.
|
||||
*
|
||||
* @return `True` on success, `false` otherwise (with `error` set accordingly).
|
||||
*/
|
||||
|
@ -410,8 +410,8 @@ bool tr_sys_file_read_at(
|
|||
* @param[in] buffer Buffer to get data being written from.
|
||||
* @param[in] size Number of bytes to write.
|
||||
* @param[out] bytes_written Number of bytes actually written. Optional, pass
|
||||
* `NULL` if you are not interested.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL` if
|
||||
* `nullptr` if you are not interested.
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr` if
|
||||
* you are not interested in error details.
|
||||
*
|
||||
* @return `True` on success, `false` otherwise (with `error` set accordingly).
|
||||
|
@ -432,9 +432,9 @@ bool tr_sys_file_write(
|
|||
* @param[in] size Number of bytes to write.
|
||||
* @param[in] offset File offset in bytes to start writing from.
|
||||
* @param[out] bytes_written Number of bytes actually written. Optional, pass
|
||||
* `NULL` if you are not interested.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL` if you
|
||||
* are not interested in error details.
|
||||
* `nullptr` if you are not interested.
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr`
|
||||
* if you are not interested in error details.
|
||||
*
|
||||
* @return `True` on success, `false` otherwise (with `error` set accordingly).
|
||||
*/
|
||||
|
@ -450,8 +450,8 @@ bool tr_sys_file_write_at(
|
|||
* @brief Portability wrapper for `fsync()`.
|
||||
*
|
||||
* @param[in] handle Valid file descriptor.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL` if you are
|
||||
* not interested in error details.
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr` if you
|
||||
* are not interested in error details.
|
||||
*
|
||||
* @return `True` on success, `false` otherwise (with `error` set accordingly).
|
||||
*/
|
||||
|
@ -462,8 +462,8 @@ bool tr_sys_file_flush(tr_sys_file_t handle, struct tr_error** error);
|
|||
*
|
||||
* @param[in] handle Valid file descriptor.
|
||||
* @param[in] size Number of bytes to truncate (or extend) file to.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL` if you are
|
||||
* not interested in error details.
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr` if you
|
||||
* are not interested in error details.
|
||||
*
|
||||
* @return `True` on success, `false` otherwise (with `error` set accordingly).
|
||||
*/
|
||||
|
@ -475,8 +475,8 @@ bool tr_sys_file_truncate(tr_sys_file_t handle, uint64_t size, struct tr_error**
|
|||
* @param[in] handle Valid file descriptor.
|
||||
* @param[in] offset Offset in file to prefetch from.
|
||||
* @param[in] size Number of bytes to prefetch.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL` if you are
|
||||
* not interested in error details.
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr` if you
|
||||
* are not interested in error details.
|
||||
*
|
||||
* @return `True` on success, `false` otherwise (with `error` set accordingly).
|
||||
*/
|
||||
|
@ -493,8 +493,8 @@ bool tr_sys_file_advise(
|
|||
* @param[in] handle Valid file descriptor.
|
||||
* @param[in] size Number of bytes to preallocate file to.
|
||||
* @param[in] flags Combination of @ref tr_sys_file_preallocate_flags_t values.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL` if you are
|
||||
* not interested in error details.
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr` if you
|
||||
* are not interested in error details.
|
||||
*
|
||||
* @return `True` on success, `false` otherwise (with `error` set accordingly).
|
||||
*/
|
||||
|
@ -506,10 +506,10 @@ bool tr_sys_file_preallocate(tr_sys_file_t handle, uint64_t size, int flags, str
|
|||
* @param[in] handle Valid file descriptor.
|
||||
* @param[in] offset Offset in file to map from.
|
||||
* @param[in] size Number of bytes to map.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL` if you are
|
||||
* not interested in error details.
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr` if you
|
||||
* are not interested in error details.
|
||||
*
|
||||
* @return Pointer to mapped file data on success, `NULL` otherwise (with
|
||||
* @return Pointer to mapped file data on success, `nullptr` otherwise (with
|
||||
* `error` set accordingly).
|
||||
*/
|
||||
void* tr_sys_file_map_for_reading(tr_sys_file_t handle, uint64_t offset, uint64_t size, struct tr_error** error);
|
||||
|
@ -519,8 +519,8 @@ void* tr_sys_file_map_for_reading(tr_sys_file_t handle, uint64_t offset, uint64_
|
|||
*
|
||||
* @param[in] address Pointer to mapped file data.
|
||||
* @param[in] size Size of mapped data in bytes.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL` if you are
|
||||
* not interested in error details.
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr` if you
|
||||
* are not interested in error details.
|
||||
*
|
||||
* @return `True` on success, `false` otherwise (with `error` set accordingly).
|
||||
*/
|
||||
|
@ -534,7 +534,7 @@ bool tr_sys_file_unmap(void const* address, uint64_t size, struct tr_error** err
|
|||
*
|
||||
* @param[in] handle Valid file descriptor.
|
||||
* @param[in] operation Combination of @ref tr_sys_file_lock_flags_t values.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL` if you
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr` if you
|
||||
* are not interested in error details.
|
||||
*
|
||||
* @return `True` on success, `false` otherwise (with `error` set accordingly).
|
||||
|
@ -556,12 +556,12 @@ bool tr_sys_file_lock(tr_sys_file_t handle, int operation, struct tr_error** err
|
|||
* @param[out] buffer Buffer to store read zero-terminated string to.
|
||||
* @param[in] buffer_size Buffer size in bytes, taking '\0' character into
|
||||
* account.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL` if you
|
||||
* are not interested in error details.
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr` if
|
||||
* you are not interested in error details.
|
||||
*
|
||||
* @return `True` on success, `false` otherwise (with `error` set accordingly).
|
||||
* Note that `false` will also be returned in case of end of file; if
|
||||
* you need to distinguish the two, check if `error` is `NULL`
|
||||
* you need to distinguish the two, check if `error` is `nullptr`
|
||||
* afterwards.
|
||||
*/
|
||||
bool tr_sys_file_read_line(tr_sys_file_t handle, char* buffer, size_t buffer_size, struct tr_error** error);
|
||||
|
@ -577,8 +577,8 @@ bool tr_sys_file_read_line(tr_sys_file_t handle, char* buffer, size_t buffer_siz
|
|||
*
|
||||
* @param[in] handle Valid file descriptor.
|
||||
* @param[in] buffer Zero-terminated string to write.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL` if you are
|
||||
* not interested in error details.
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr` if you
|
||||
* are not interested in error details.
|
||||
*
|
||||
* @return `True` on success, `false` otherwise (with `error` set accordingly).
|
||||
*/
|
||||
|
@ -595,8 +595,8 @@ bool tr_sys_file_write_line(tr_sys_file_t handle, char const* buffer, struct tr_
|
|||
*
|
||||
* @param[in] handle Valid file descriptor.
|
||||
* @param[in] format String format to write.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL` if you are
|
||||
* not interested in error details.
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr` if you
|
||||
* are not interested in error details.
|
||||
* @param[in] ... Format arguments.
|
||||
*
|
||||
* @return `True` on success, `false` otherwise (with `error` set accordingly).
|
||||
|
@ -608,12 +608,12 @@ bool tr_sys_file_write_fmt(tr_sys_file_t handle, char const* format, struct tr_e
|
|||
/**
|
||||
* @brief Portability wrapper for `getcwd()`.
|
||||
*
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL` if you are
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr` if you are
|
||||
* not interested in error details.
|
||||
*
|
||||
* @return Pointer to newly allocated buffer containing path to current
|
||||
* directory (use @ref tr_free to free it when no longer needed) on
|
||||
* success, `NULL` otherwise (with `error` set accordingly).
|
||||
* success, `nullptr` otherwise (with `error` set accordingly).
|
||||
*/
|
||||
char* tr_sys_dir_get_current(struct tr_error** error);
|
||||
|
||||
|
@ -624,8 +624,8 @@ char* tr_sys_dir_get_current(struct tr_error** error);
|
|||
* @param[in] flags Combination of @ref tr_sys_dir_create_flags_t values.
|
||||
* @param[in] permissions Permissions to create directory with. Not used on
|
||||
Windows.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL` if you
|
||||
* are not interested in error details.
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr` if
|
||||
* you are not interested in error details.
|
||||
*
|
||||
* @return `True` on success, `false` otherwise (with `error` set accordingly).
|
||||
*/
|
||||
|
@ -639,7 +639,7 @@ bool tr_sys_dir_create(char const* path, int flags, int permissions, struct tr_e
|
|||
* 'X' characters are replaced with actual random
|
||||
* characters used to form a unique path to
|
||||
* temporary directory.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL`
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr`
|
||||
* if you are not interested in error details.
|
||||
*
|
||||
* @return `True` on success, `false` otherwise (with `error` set accordingly).
|
||||
|
@ -650,7 +650,7 @@ bool tr_sys_dir_create_temp(char* path_template, struct tr_error** error);
|
|||
* @brief Portability wrapper for `opendir()`.
|
||||
*
|
||||
* @param[in] path Path to directory.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL` if you are
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr` if you are
|
||||
* not interested in error details.
|
||||
*
|
||||
* @return Opened directory descriptor on success, `TR_BAD_SYS_DIR` otherwise
|
||||
|
@ -662,14 +662,14 @@ tr_sys_dir_t tr_sys_dir_open(char const* path, struct tr_error** error);
|
|||
* @brief Portability wrapper for `readdir()`.
|
||||
*
|
||||
* @param[in] handle Valid directory descriptor.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL` if you are
|
||||
* not interested in error details.
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr` if you
|
||||
* are not interested in error details.
|
||||
*
|
||||
* @return Pointer to next directory entry name (stored internally, DO NOT pass
|
||||
* it to @ref tr_free) on success, `NULL` otherwise (with `error` set
|
||||
* accordingly). Note that `NULL` will also be returned in case of end
|
||||
* it to @ref tr_free) on success, `nullptr` otherwise (with `error` set
|
||||
* accordingly). Note that `nullptr` will also be returned in case of end
|
||||
* of directory; if you need to distinguish the two, check if `error`
|
||||
* is `NULL` afterwards.
|
||||
* is `nullptr` afterwards.
|
||||
*/
|
||||
char const* tr_sys_dir_read_name(tr_sys_dir_t handle, struct tr_error** error);
|
||||
|
||||
|
@ -677,8 +677,8 @@ char const* tr_sys_dir_read_name(tr_sys_dir_t handle, struct tr_error** error);
|
|||
* @brief Portability wrapper for `closedir()`.
|
||||
*
|
||||
* @param[in] handle Valid directory descriptor.
|
||||
* @param[out] error Pointer to error object. Optional, pass `NULL` if you are
|
||||
* not interested in error details.
|
||||
* @param[out] error Pointer to error object. Optional, pass `nullptr` if you
|
||||
* are not interested in error details.
|
||||
*
|
||||
* @return `True` on success, `false` otherwise (with `error` set accordingly).
|
||||
*/
|
||||
|
|
|
@ -45,7 +45,7 @@ void tr_logAddMessage(char const* file, int line, tr_log_level level, char const
|
|||
#define tr_logAddTorInfo(tor, ...) tr_logAddTor(TR_LOG_INFO, tor, __VA_ARGS__)
|
||||
#define tr_logAddTorDbg(tor, ...) tr_logAddTor(TR_LOG_DEBUG, tor, __VA_ARGS__)
|
||||
|
||||
#define tr_logAdd(level, ...) tr_logAddNamed(level, NULL, __VA_ARGS__)
|
||||
#define tr_logAdd(level, ...) tr_logAddNamed(level, nullptr, __VA_ARGS__)
|
||||
|
||||
#define tr_logAddError(...) tr_logAdd(TR_LOG_ERROR, __VA_ARGS__)
|
||||
#define tr_logAddInfo(...) tr_logAdd(TR_LOG_INFO, __VA_ARGS__)
|
||||
|
|
|
@ -102,7 +102,7 @@ void tr_metaInfoBuilderFree(tr_metainfo_builder*);
|
|||
* from time to time! When the worker thread sets that flag,
|
||||
* the caller must pass the builder to tr_metaInfoBuilderFree().
|
||||
*
|
||||
* @param outputFile if NULL, builder->top + ".torrent" will be used.
|
||||
* @param outputFile if nullptr, builder->top + ".torrent" will be used.
|
||||
|
||||
* @param trackers An array of trackers, sorted by tier from first to last.
|
||||
* NOTE: only the `tier' and `announce' fields are used.
|
||||
|
|
|
@ -117,7 +117,7 @@ struct peer_atom
|
|||
/* similar to a TTL field, but less rigid --
|
||||
* if the swarm is small, the atom will be kept past this date. */
|
||||
time_t shelf_date;
|
||||
tr_peer* peer; /* will be NULL if not connected */
|
||||
tr_peer* peer; /* will be nullptr if not connected */
|
||||
tr_address addr;
|
||||
};
|
||||
|
||||
|
@ -175,7 +175,7 @@ struct tr_swarm
|
|||
tr_torrent* tor;
|
||||
struct tr_peerMgr* manager;
|
||||
|
||||
tr_peerMsgs* optimistic; /* the optimistic peer, or NULL if none */
|
||||
tr_peerMsgs* optimistic; /* the optimistic peer, or nullptr if none */
|
||||
int optimisticUnchokeTimeScaler;
|
||||
|
||||
bool poolIsAllSeeds;
|
||||
|
@ -193,7 +193,7 @@ struct tr_swarm
|
|||
|
||||
/* An array of pieceCount items stating how many peers have each piece.
|
||||
This is used to help us for downloading pieces "rarest first."
|
||||
This may be NULL if we don't have metainfo yet, or if we're not
|
||||
This may be nullptr if we don't have metainfo yet, or if we're not
|
||||
downloading and don't care about rarity */
|
||||
uint16_t* pieceReplication;
|
||||
size_t pieceReplicationSize;
|
||||
|
@ -733,7 +733,7 @@ static auto getBlockRequestPeers(tr_swarm* s, tr_block_index_t block)
|
|||
bool exact;
|
||||
int const pos = tr_lowerBound(&key, s->requests, s->requestCount, sizeof(struct block_request), compareReqByBlock, &exact);
|
||||
|
||||
TR_ASSERT(!exact); /* shouldn't have a request with .peer == NULL */
|
||||
TR_ASSERT(!exact); /* shouldn't have a request with .peer == nullptr */
|
||||
|
||||
for (int i = pos; i < s->requestCount; ++i)
|
||||
{
|
||||
|
|
|
@ -57,7 +57,7 @@ static inline void* tr_ptrArrayNth(tr_ptrArray* array, int i)
|
|||
void* tr_ptrArrayPop(tr_ptrArray* array);
|
||||
|
||||
/** @brief Return the last item in a tr_ptrArray
|
||||
@return the last item in a tr_ptrArray, or NULL if the array is empty
|
||||
@return the last item in a tr_ptrArray, or nullptr if the array is empty
|
||||
@see tr_ptrArrayPop() */
|
||||
static inline void* tr_ptrArrayBack(tr_ptrArray* array)
|
||||
{
|
||||
|
@ -118,7 +118,7 @@ int tr_ptrArrayInsertSorted(tr_ptrArray* array, void* value, tr_voidptr_compare_
|
|||
void tr_ptrArrayRemoveSortedPointer(tr_ptrArray* t, void const* ptr, tr_voidptr_compare_func compare);
|
||||
|
||||
/** @brief Find a pointer from an array sorted by the specified sort function
|
||||
@return the matching pointer, or NULL if no match was found */
|
||||
@return the matching pointer, or nullptr if no match was found */
|
||||
void* tr_ptrArrayFindSorted(tr_ptrArray* array, void const* key, tr_voidptr_compare_func compare);
|
||||
|
||||
/* @} */
|
||||
|
|
|
@ -380,7 +380,7 @@ void tr_torrentGotBlock(tr_torrent* tor, tr_block_index_t blockIndex);
|
|||
/**
|
||||
* @brief Like tr_torrentFindFile(), but splits the filename into base and subpath.
|
||||
*
|
||||
* If the file is found, "tr_buildPath(base, subpath, NULL)"
|
||||
* If the file is found, "tr_buildPath(base, subpath, nullptr)"
|
||||
* will generate the complete filename.
|
||||
*
|
||||
* @return true if the file is found, false otherwise.
|
||||
|
|
|
@ -156,17 +156,17 @@ static int lpd_unsolicitedMsgCounter;
|
|||
/**
|
||||
* @brief Checks for BT-SEARCH method and separates the parameter section
|
||||
* @param[in] s The request string
|
||||
* @param[out] ver If non-NULL, gets filled with protocol info from the request
|
||||
* @param[out] ver If non-nullptr, gets filled with protocol info from the request
|
||||
* @return Returns a relative pointer to the beginning of the parameter section.
|
||||
* If result is NULL, s was invalid and no information will be returned
|
||||
* If result is nullptr, s was invalid and no information will be returned
|
||||
* @remark Note that the returned pointer is only usable as long as the given
|
||||
* pointer s is valid; that is, return storage is temporary.
|
||||
*
|
||||
* Determines whether the given string checks out to be a valid BT-SEARCH message.
|
||||
* If so, the return value points to the beginning of the parameter section (note:
|
||||
* in this case the function returns a character sequence beginning with CRLF).
|
||||
* If parameter is not NULL, the declared protocol version is returned as part of
|
||||
* the lpd_protocolVersion structure.
|
||||
* If parameter is not nullptr, the declared protocol version is returned as part
|
||||
* of the lpd_protocolVersion structure.
|
||||
*/
|
||||
static char const* lpd_extractHeader(char const* s, struct lpd_protocolVersion* const ver)
|
||||
{
|
||||
|
|
|
@ -741,7 +741,7 @@ struct tr_log_message
|
|||
|
||||
/* The torrent associated with this message,
|
||||
* or a module name such as "Port Forwarding" for non-torrent messages,
|
||||
* or NULL. */
|
||||
* or nullptr. */
|
||||
char* name;
|
||||
|
||||
/* The message */
|
||||
|
@ -776,7 +776,7 @@ void tr_logFreeQueue(tr_log_message* freeme);
|
|||
* The caller only needs to invoke this when the blocklist
|
||||
* has changed.
|
||||
*
|
||||
* Passing NULL for a filename will clear the blocklist.
|
||||
* Passing nullptr for a filename will clear the blocklist.
|
||||
*/
|
||||
int tr_blocklistSetContent(tr_session* session, char const* filename);
|
||||
|
||||
|
@ -833,11 +833,11 @@ enum tr_ctorMode
|
|||
};
|
||||
|
||||
/** @brief Create a torrent constructor object used to instantiate a tr_torrent
|
||||
@param session_or_NULL the tr_session.
|
||||
This is required if you're going to call tr_torrentNew(),
|
||||
but you can use NULL for tr_torrentParse().
|
||||
@param session_or_nullptr the tr_session.
|
||||
This is required if you're going to call tr_torrentNew(),
|
||||
but you can use nullptr for tr_torrentParse().
|
||||
@see tr_torrentNew(), tr_torrentParse() */
|
||||
tr_ctor* tr_ctorNew(tr_session const* session_or_NULL);
|
||||
tr_ctor* tr_ctorNew(tr_session const* session_or_nullptr);
|
||||
|
||||
/** @brief Free a torrent constructor object */
|
||||
void tr_ctorFree(tr_ctor* ctor);
|
||||
|
@ -913,7 +913,7 @@ bool tr_ctorGetDeleteSource(tr_ctor const* ctor, bool* setmeDoDelete);
|
|||
tr_session* tr_ctorGetSession(tr_ctor const* ctor);
|
||||
|
||||
/** @brief Get the .torrent file that this ctor's metainfo came from,
|
||||
or NULL if tr_ctorSetMetainfoFromFile() wasn't used */
|
||||
or nullptr if tr_ctorSetMetainfoFromFile() wasn't used */
|
||||
char const* tr_ctorGetSourceFile(tr_ctor const* ctor);
|
||||
|
||||
enum tr_parse_result
|
||||
|
@ -930,9 +930,9 @@ enum tr_parse_result
|
|||
* TR_PARSE_OK if parsing succeeded and it's not a duplicate;
|
||||
* TR_PARSE_DUPLICATE if parsing succeeded but it's a duplicate.
|
||||
*
|
||||
* @param setme_info_or_NULL If parsing is successful and setme_info is non-NULL,
|
||||
* the parsed metainfo is stored there and sould be freed
|
||||
* by calling tr_metainfoFree() when no longer needed.
|
||||
* @param setme_info_or_nullptr If parsing is successful and setme_info is non-nullptr,
|
||||
* the parsed metainfo is stored there and sould be freed
|
||||
* by calling tr_metainfoFree() when no longer needed.
|
||||
*
|
||||
* Notes:
|
||||
*
|
||||
|
@ -943,7 +943,7 @@ enum tr_parse_result
|
|||
* 2. setme_info->torrent's value can't be set unless ctor's session variable
|
||||
* is set.
|
||||
*/
|
||||
tr_parse_result tr_torrentParse(tr_ctor const* ctor, tr_info* setme_info_or_NULL);
|
||||
tr_parse_result tr_torrentParse(tr_ctor const* ctor, tr_info* setme_info_or_nullptr);
|
||||
|
||||
/** @brief free a metainfo
|
||||
@see tr_torrentParse */
|
||||
|
@ -952,7 +952,7 @@ void tr_metainfoFree(tr_info* inf);
|
|||
/**
|
||||
* Instantiate a single torrent.
|
||||
*
|
||||
* Returns a pointer to the torrent on success, or NULL on failure.
|
||||
* Returns a pointer to the torrent on success, or nullptr on failure.
|
||||
*
|
||||
* @param ctor the builder struct
|
||||
* @param setme_error TR_PARSE_ERR if the parsing failed.
|
||||
|
@ -997,7 +997,7 @@ using tr_torrent_rename_done_func = void (*)( //
|
|||
* @param tor the torrent whose path will be renamed
|
||||
* @param oldpath the path to the file or folder that will be renamed
|
||||
* @param newname the file or folder's new name
|
||||
* @param callback the callback invoked when the renaming finishes, or NULL
|
||||
* @param callback the callback invoked when the renaming finishes, or nullptr
|
||||
* @param callback_data the pointer to pass in the callback's user_data arg
|
||||
*
|
||||
* As a special case, renaming the root file in a torrent will also
|
||||
|
@ -1021,12 +1021,12 @@ using tr_torrent_rename_done_func = void (*)( //
|
|||
*
|
||||
* Changing tr_info's contents requires a session lock, so this function
|
||||
* returns asynchronously to avoid blocking. If you don't want to be notified
|
||||
* when the function has finished, you can pass NULL as the callback arg.
|
||||
* when the function has finished, you can pass nullptr as the callback arg.
|
||||
*
|
||||
* On success, the callback's error argument will be 0.
|
||||
*
|
||||
* If oldpath can't be found in files[*].name, or if newname is already
|
||||
* in files[*].name, or contains a directory separator, or is NULL, "",
|
||||
* in files[*].name, or contains a directory separator, or is nullptr, "",
|
||||
* ".", or "..", the error argument will be EINVAL.
|
||||
*
|
||||
* If the path exists on disk but can't be renamed, the error argument
|
||||
|
@ -1088,7 +1088,7 @@ char const* tr_torrentName(tr_torrent const*);
|
|||
* the ".part" suffix, looking in downloadDir and incompleteDir, etc.
|
||||
* @return a newly-allocated string (that must be tr_free()d by the caller
|
||||
* when done) that gives the location of this file on disk,
|
||||
* or NULL if no file exists yet.
|
||||
* or nullptr if no file exists yet.
|
||||
* @param tor the torrent whose file we're looking for
|
||||
* @param fileNum the fileIndex, in [0...tr_info.fileCount)
|
||||
*/
|
||||
|
@ -1564,11 +1564,11 @@ using tr_verify_done_func = void (*)(tr_torrent* torrent, bool aborted, void* us
|
|||
/**
|
||||
* Queue a torrent for verification.
|
||||
*
|
||||
* If callback_func is non-NULL, it will be called from the libtransmission
|
||||
* If callback_func is non-nullptr, it will be called from the libtransmission
|
||||
* thread after the torrent's completness state is updated after the
|
||||
* file verification pass.
|
||||
*/
|
||||
void tr_torrentVerify(tr_torrent* torrent, tr_verify_done_func callback_func_or_NULL, void* callback_data_or_NULL);
|
||||
void tr_torrentVerify(tr_torrent* torrent, tr_verify_done_func callback_func_or_nullptr, void* callback_data_or_nullptr);
|
||||
|
||||
/***********************************************************************
|
||||
* tr_info
|
||||
|
@ -1643,7 +1643,7 @@ struct tr_info
|
|||
static inline bool tr_torrentHasMetadata(tr_torrent const* tor)
|
||||
{
|
||||
tr_info const* const inf = tr_torrentInfo(tor);
|
||||
return (inf != NULL) && (inf->fileCount > 0);
|
||||
return (inf != nullptr) && (inf->fileCount > 0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -1419,7 +1419,7 @@ static bool parseNumberSection(char const* str, char const* const end, number_ra
|
|||
* array of setmeCount ints of all the values in the array.
|
||||
* For example, "5-8" will return [ 5, 6, 7, 8 ] and setmeCount will be 4.
|
||||
* It's the caller's responsibility to call tr_free () on the returned array.
|
||||
* If a fragment of the string can't be parsed, NULL is returned.
|
||||
* If a fragment of the string can't be parsed, nullptr is returned.
|
||||
*/
|
||||
std::vector<int> tr_parseNumberRange(char const* str, size_t len) // TODO: string_view
|
||||
{
|
||||
|
|
|
@ -162,10 +162,10 @@ void* tr_malloc0(size_t size);
|
|||
/** @brief Portability wrapper around reallocf() in which `0' is a safe argument */
|
||||
void* tr_realloc(void* p, size_t size);
|
||||
|
||||
/** @brief Portability wrapper around free() in which `NULL' is a safe argument */
|
||||
/** @brief Portability wrapper around free() in which `nullptr' is a safe argument */
|
||||
void tr_free(void* p);
|
||||
|
||||
/** @brief Free pointers in a NULL-terminated array (the array itself is not freed) */
|
||||
/** @brief Free pointers in a nullptr-terminated array (the array itself is not freed) */
|
||||
void tr_free_ptrv(void* const* p);
|
||||
|
||||
/**
|
||||
|
@ -198,13 +198,13 @@ char* tr_strndup(void const* in, size_t len) TR_GNUC_MALLOC;
|
|||
char* tr_strdup(void const* in);
|
||||
|
||||
/**
|
||||
* @brief like strcmp() but gracefully handles NULL strings
|
||||
* @brief like strcmp() but gracefully handles nullptr strings
|
||||
*/
|
||||
int tr_strcmp0(char const* str1, char const* str2);
|
||||
|
||||
static inline bool tr_str_is_empty(char const* value)
|
||||
{
|
||||
return value == NULL || *value == '\0';
|
||||
return value == nullptr || *value == '\0';
|
||||
}
|
||||
|
||||
char* evbuffer_free_to_str(struct evbuffer* buf, size_t* result_len);
|
||||
|
@ -231,7 +231,7 @@ size_t tr_strlcpy(void* dst, void const* src, size_t siz);
|
|||
/** @brief Portability wrapper for snprintf() that uses the system implementation if available */
|
||||
int tr_snprintf(void* buf, size_t buflen, char const* fmt, ...) TR_GNUC_PRINTF(3, 4) TR_GNUC_NONNULL(1, 3);
|
||||
|
||||
/** @brief Convenience wrapper around strerorr() guaranteed to not return NULL
|
||||
/** @brief Convenience wrapper around strerorr() guaranteed to not return nullptr
|
||||
@param errnum the error number to describe */
|
||||
char const* tr_strerror(int errnum);
|
||||
|
||||
|
@ -280,7 +280,7 @@ double tr_getRatio(uint64_t numerator, uint64_t denominator);
|
|||
* @brief Given a string like "1-4" or "1-4,6,9,14-51", this returns a
|
||||
* newly-allocated array of all the integers in the set.
|
||||
* @return a newly-allocated array of integers that must be freed with tr_free(),
|
||||
* or NULL if a fragment of the string can't be parsed.
|
||||
* or nullptr if a fragment of the string can't be parsed.
|
||||
*
|
||||
* For example, "5-8" will return [ 5, 6, 7, 8 ] and setmeCount will be 4.
|
||||
*/
|
||||
|
@ -339,7 +339,7 @@ void tr_removeElementFromArray(void* array, size_t index_to_remove, size_t sizeo
|
|||
extern time_t __tr_current_time;
|
||||
|
||||
/**
|
||||
* @brief very inexpensive form of time(NULL)
|
||||
* @brief very inexpensive form of time(nullptr)
|
||||
* @return the current epoch time in seconds
|
||||
*
|
||||
* This function returns a second counter that is updated once per second.
|
||||
|
|
|
@ -208,7 +208,7 @@ static void tr_variant_string_set_string(struct tr_variant_string* str, char con
|
|||
}
|
||||
else
|
||||
{
|
||||
char* tmp = tr_new(char, len + 1);
|
||||
auto* tmp = tr_new(char, len + 1);
|
||||
memcpy(tmp, bytes, len);
|
||||
tmp[len] = '\0';
|
||||
str->type = TR_STRING_TYPE_HEAP;
|
||||
|
|
|
@ -124,7 +124,7 @@ int tr_variantFromBuf(
|
|||
|
||||
static inline int tr_variantFromBenc(tr_variant* setme, void const* buf, size_t buflen)
|
||||
{
|
||||
return tr_variantFromBuf(setme, TR_VARIANT_FMT_BENC, buf, buflen, NULL, NULL);
|
||||
return tr_variantFromBuf(setme, TR_VARIANT_FMT_BENC, buf, buflen, nullptr, nullptr);
|
||||
}
|
||||
|
||||
static inline int tr_variantFromBencFull(
|
||||
|
@ -149,12 +149,12 @@ static inline int tr_variantFromJsonFull(
|
|||
|
||||
static inline int tr_variantFromJson(tr_variant* setme, void const* buf, size_t buflen)
|
||||
{
|
||||
return tr_variantFromBuf(setme, TR_VARIANT_FMT_JSON, buf, buflen, NULL, NULL);
|
||||
return tr_variantFromBuf(setme, TR_VARIANT_FMT_JSON, buf, buflen, nullptr, nullptr);
|
||||
}
|
||||
|
||||
static inline bool tr_variantIsType(tr_variant const* b, int type)
|
||||
{
|
||||
return b != NULL && b->type == type;
|
||||
return b != nullptr && b->type == type;
|
||||
}
|
||||
|
||||
/***
|
||||
|
@ -163,7 +163,7 @@ static inline bool tr_variantIsType(tr_variant const* b, int type)
|
|||
|
||||
static inline bool tr_variantIsString(tr_variant const* b)
|
||||
{
|
||||
return b != NULL && b->type == TR_VARIANT_TYPE_STR;
|
||||
return b != nullptr && b->type == TR_VARIANT_TYPE_STR;
|
||||
}
|
||||
|
||||
bool tr_variantGetStr(tr_variant const* variant, char const** setme_str, size_t* setme_len);
|
||||
|
@ -180,7 +180,7 @@ bool tr_variantGetRaw(tr_variant const* variant, uint8_t const** raw_setme, size
|
|||
|
||||
static inline bool tr_variantIsReal(tr_variant const* v)
|
||||
{
|
||||
return v != NULL && v->type == TR_VARIANT_TYPE_REAL;
|
||||
return v != nullptr && v->type == TR_VARIANT_TYPE_REAL;
|
||||
}
|
||||
|
||||
void tr_variantInitReal(tr_variant* initme, double value);
|
||||
|
@ -192,7 +192,7 @@ bool tr_variantGetReal(tr_variant const* variant, double* value_setme);
|
|||
|
||||
static inline bool tr_variantIsBool(tr_variant const* v)
|
||||
{
|
||||
return v != NULL && v->type == TR_VARIANT_TYPE_BOOL;
|
||||
return v != nullptr && v->type == TR_VARIANT_TYPE_BOOL;
|
||||
}
|
||||
|
||||
void tr_variantInitBool(tr_variant* initme, bool value);
|
||||
|
@ -204,7 +204,7 @@ bool tr_variantGetBool(tr_variant const* variant, bool* setme);
|
|||
|
||||
static inline bool tr_variantIsInt(tr_variant const* v)
|
||||
{
|
||||
return v != NULL && v->type == TR_VARIANT_TYPE_INT;
|
||||
return v != nullptr && v->type == TR_VARIANT_TYPE_INT;
|
||||
}
|
||||
|
||||
void tr_variantInitInt(tr_variant* variant, int64_t value);
|
||||
|
@ -216,7 +216,7 @@ bool tr_variantGetInt(tr_variant const* val, int64_t* setme);
|
|||
|
||||
static inline bool tr_variantIsList(tr_variant const* v)
|
||||
{
|
||||
return v != NULL && v->type == TR_VARIANT_TYPE_LIST;
|
||||
return v != nullptr && v->type == TR_VARIANT_TYPE_LIST;
|
||||
}
|
||||
|
||||
void tr_variantInitList(tr_variant* list, size_t reserve_count);
|
||||
|
@ -242,7 +242,7 @@ size_t tr_variantListSize(tr_variant const* list);
|
|||
|
||||
static inline bool tr_variantIsDict(tr_variant const* v)
|
||||
{
|
||||
return v != NULL && v->type == TR_VARIANT_TYPE_DICT;
|
||||
return v != nullptr && v->type == TR_VARIANT_TYPE_DICT;
|
||||
}
|
||||
|
||||
void tr_variantInitDict(tr_variant* initme, size_t reserve_count);
|
||||
|
|
|
@ -33,7 +33,7 @@ public:
|
|||
using Key = QString;
|
||||
using Keys = std::vector<Key>;
|
||||
|
||||
// returns a cached pixmap, or a NULL pixmap if there's no match in the cache
|
||||
// returns a cached pixmap, or a nullptr pixmap if there's no match in the cache
|
||||
QPixmap find(Key const& key);
|
||||
|
||||
static Key getKey(QString const& display_name);
|
||||
|
|
|
@ -28,19 +28,19 @@ static tr_tracker_info trackers[MAX_TRACKERS];
|
|||
static int trackerCount = 0;
|
||||
static bool isPrivate = false;
|
||||
static bool showVersion = false;
|
||||
static char const* comment = NULL;
|
||||
static char const* outfile = NULL;
|
||||
static char const* infile = NULL;
|
||||
static char const* comment = nullptr;
|
||||
static char const* outfile = nullptr;
|
||||
static char const* infile = nullptr;
|
||||
static uint32_t piecesize_kib = 0;
|
||||
|
||||
static tr_option options[] = {
|
||||
{ 'p', "private", "Allow this torrent to only be used with the specified tracker(s)", "p", false, NULL },
|
||||
{ 'p', "private", "Allow this torrent to only be used with the specified tracker(s)", "p", false, nullptr },
|
||||
{ 'o', "outfile", "Save the generated .torrent to this filename", "o", true, "<file>" },
|
||||
{ 's', "piecesize", "Set how many KiB each piece should be, overriding the preferred default", "s", true, "<size in KiB>" },
|
||||
{ 'c', "comment", "Add a comment", "c", true, "<comment>" },
|
||||
{ 't', "tracker", "Add a tracker's announce URL", "t", true, "<url>" },
|
||||
{ 'V', "version", "Show version number and exit", "V", false, NULL },
|
||||
{ 0, NULL, NULL, NULL, false, NULL }
|
||||
{ 'V', "version", "Show version number and exit", "V", false, nullptr },
|
||||
{ 0, nullptr, nullptr, nullptr, false, nullptr }
|
||||
};
|
||||
|
||||
static char const* getUsage(void)
|
||||
|
@ -84,12 +84,12 @@ static int parseCommandLine(int argc, char const* const* argv)
|
|||
break;
|
||||
|
||||
case 's':
|
||||
if (optarg != NULL)
|
||||
if (optarg != nullptr)
|
||||
{
|
||||
char* endptr = NULL;
|
||||
char* endptr = nullptr;
|
||||
piecesize_kib = strtoul(optarg, &endptr, 10);
|
||||
|
||||
if (endptr != NULL && *endptr == 'M')
|
||||
if (endptr != nullptr && *endptr == 'M')
|
||||
{
|
||||
piecesize_kib *= KiB;
|
||||
}
|
||||
|
@ -112,11 +112,11 @@ static int parseCommandLine(int argc, char const* const* argv)
|
|||
static char* tr_getcwd(void)
|
||||
{
|
||||
char* result;
|
||||
tr_error* error = NULL;
|
||||
tr_error* error = nullptr;
|
||||
|
||||
result = tr_sys_dir_get_current(&error);
|
||||
|
||||
if (result == NULL)
|
||||
if (result == nullptr)
|
||||
{
|
||||
fprintf(stderr, "getcwd error: \"%s\"", error->message);
|
||||
tr_error_free(error);
|
||||
|
@ -128,8 +128,8 @@ static char* tr_getcwd(void)
|
|||
|
||||
int tr_main(int argc, char* argv[])
|
||||
{
|
||||
char* out2 = NULL;
|
||||
tr_metainfo_builder* b = NULL;
|
||||
char* out2 = nullptr;
|
||||
tr_metainfo_builder* b = nullptr;
|
||||
|
||||
tr_logSetLevel(TR_LOG_ERROR);
|
||||
tr_formatter_mem_init(MEM_K, MEM_K_STR, MEM_M_STR, MEM_G_STR, MEM_T_STR);
|
||||
|
@ -147,7 +147,7 @@ int tr_main(int argc, char* argv[])
|
|||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
if (infile == NULL)
|
||||
if (infile == nullptr)
|
||||
{
|
||||
fprintf(stderr, "ERROR: No input file or directory specified.\n");
|
||||
tr_getopt_usage(MY_NAME, getUsage(), options);
|
||||
|
@ -155,12 +155,12 @@ int tr_main(int argc, char* argv[])
|
|||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
if (outfile == NULL)
|
||||
if (outfile == nullptr)
|
||||
{
|
||||
tr_error* error = NULL;
|
||||
tr_error* error = nullptr;
|
||||
char* base = tr_sys_path_basename(infile, &error);
|
||||
|
||||
if (base == NULL)
|
||||
if (base == nullptr)
|
||||
{
|
||||
fprintf(stderr, "ERROR: Cannot deduce output path from input path: %s\n", error->message);
|
||||
return EXIT_FAILURE;
|
||||
|
@ -168,7 +168,7 @@ int tr_main(int argc, char* argv[])
|
|||
|
||||
char* end = tr_strdup_printf("%s.torrent", base);
|
||||
char* cwd = tr_getcwd();
|
||||
outfile = out2 = tr_buildPath(cwd, end, NULL);
|
||||
outfile = out2 = tr_buildPath(cwd, end, nullptr);
|
||||
tr_free(cwd);
|
||||
tr_free(end);
|
||||
tr_free(base);
|
||||
|
@ -191,7 +191,7 @@ int tr_main(int argc, char* argv[])
|
|||
|
||||
b = tr_metaInfoBuilderCreate(infile);
|
||||
|
||||
if (b == NULL)
|
||||
if (b == nullptr)
|
||||
{
|
||||
fprintf(stderr, "ERROR: Cannot find specified input file or directory.\n");
|
||||
return EXIT_FAILURE;
|
||||
|
|
|
@ -23,17 +23,17 @@
|
|||
|
||||
static int fileCount = 0;
|
||||
static bool showVersion = false;
|
||||
static char const** files = NULL;
|
||||
static char const* add = NULL;
|
||||
static char const* deleteme = NULL;
|
||||
static char const* replace[2] = { NULL, NULL };
|
||||
static char const** files = nullptr;
|
||||
static char const* add = nullptr;
|
||||
static char const* deleteme = nullptr;
|
||||
static char const* replace[2] = { nullptr, nullptr };
|
||||
|
||||
static tr_option options[] = {
|
||||
{ 'a', "add", "Add a tracker's announce URL", "a", true, "<url>" },
|
||||
{ 'd', "delete", "Delete a tracker's announce URL", "d", true, "<url>" },
|
||||
{ 'r', "replace", "Search and replace a substring in the announce URLs", "r", true, "<old> <new>" },
|
||||
{ 'V', "version", "Show version number and exit", "V", false, NULL },
|
||||
{ 0, NULL, NULL, NULL, false, NULL }
|
||||
{ 'V', "version", "Show version number and exit", "V", false, nullptr },
|
||||
{ 0, nullptr, nullptr, nullptr, false, nullptr }
|
||||
};
|
||||
|
||||
static char const* getUsage(void)
|
||||
|
@ -92,7 +92,7 @@ static bool removeURL(tr_variant* metainfo, char const* url)
|
|||
tr_variant* announce_list;
|
||||
bool changed = false;
|
||||
|
||||
if (tr_variantDictFindStr(metainfo, TR_KEY_announce, &str, NULL) && strcmp(str, url) == 0)
|
||||
if (tr_variantDictFindStr(metainfo, TR_KEY_announce, &str, nullptr) && strcmp(str, url) == 0)
|
||||
{
|
||||
printf("\tRemoved \"%s\" from \"announce\"\n", str);
|
||||
tr_variantDictRemove(metainfo, TR_KEY_announce);
|
||||
|
@ -104,13 +104,13 @@ static bool removeURL(tr_variant* metainfo, char const* url)
|
|||
tr_variant* tier;
|
||||
int tierIndex = 0;
|
||||
|
||||
while ((tier = tr_variantListChild(announce_list, tierIndex)) != NULL)
|
||||
while ((tier = tr_variantListChild(announce_list, tierIndex)) != nullptr)
|
||||
{
|
||||
int nodeIndex = 0;
|
||||
tr_variant const* node;
|
||||
while ((node = tr_variantListChild(tier, nodeIndex)) != NULL)
|
||||
while ((node = tr_variantListChild(tier, nodeIndex)) != nullptr)
|
||||
{
|
||||
if (tr_variantGetStr(node, &str, NULL) && strcmp(str, url) == 0)
|
||||
if (tr_variantGetStr(node, &str, nullptr) && strcmp(str, url) == 0)
|
||||
{
|
||||
printf("\tRemoved \"%s\" from \"announce-list\" tier #%d\n", str, tierIndex + 1);
|
||||
tr_variantListRemove(tier, nodeIndex);
|
||||
|
@ -142,13 +142,13 @@ static bool removeURL(tr_variant* metainfo, char const* url)
|
|||
|
||||
/* if we removed the "announce" field and there's still another track left,
|
||||
* use it as the "announce" field */
|
||||
if (changed && !tr_variantDictFindStr(metainfo, TR_KEY_announce, &str, NULL))
|
||||
if (changed && !tr_variantDictFindStr(metainfo, TR_KEY_announce, &str, nullptr))
|
||||
{
|
||||
tr_variant* const tier = tr_variantListChild(announce_list, 0);
|
||||
if (tier != NULL)
|
||||
if (tier != nullptr)
|
||||
{
|
||||
tr_variant const* const node = tr_variantListChild(tier, 0);
|
||||
if ((node != NULL) && tr_variantGetStr(node, &str, NULL))
|
||||
if ((node != nullptr) && tr_variantGetStr(node, &str, nullptr))
|
||||
{
|
||||
tr_variantDictAddStr(metainfo, TR_KEY_announce, str);
|
||||
printf("\tAdded \"%s\" to announce\n", str);
|
||||
|
@ -166,7 +166,7 @@ static char* replaceSubstr(char const* str, char const* in, char const* out)
|
|||
size_t const inlen = strlen(in);
|
||||
size_t const outlen = strlen(out);
|
||||
|
||||
while ((walk = strstr(str, in)) != NULL)
|
||||
while ((walk = strstr(str, in)) != nullptr)
|
||||
{
|
||||
evbuffer_add(buf, str, walk - str);
|
||||
evbuffer_add(buf, out, outlen);
|
||||
|
@ -175,7 +175,7 @@ static char* replaceSubstr(char const* str, char const* in, char const* out)
|
|||
|
||||
evbuffer_add(buf, str, strlen(str));
|
||||
|
||||
return evbuffer_free_to_str(buf, NULL);
|
||||
return evbuffer_free_to_str(buf, nullptr);
|
||||
}
|
||||
|
||||
static bool replaceURL(tr_variant* metainfo, char const* in, char const* out)
|
||||
|
@ -184,7 +184,7 @@ static bool replaceURL(tr_variant* metainfo, char const* in, char const* out)
|
|||
tr_variant* announce_list;
|
||||
bool changed = false;
|
||||
|
||||
if (tr_variantDictFindStr(metainfo, TR_KEY_announce, &str, NULL) && strstr(str, in) != NULL)
|
||||
if (tr_variantDictFindStr(metainfo, TR_KEY_announce, &str, nullptr) && strstr(str, in) != nullptr)
|
||||
{
|
||||
char* newstr = replaceSubstr(str, in, out);
|
||||
printf("\tReplaced in \"announce\": \"%s\" --> \"%s\"\n", str, newstr);
|
||||
|
@ -198,14 +198,14 @@ static bool replaceURL(tr_variant* metainfo, char const* in, char const* out)
|
|||
tr_variant* tier;
|
||||
int tierCount = 0;
|
||||
|
||||
while ((tier = tr_variantListChild(announce_list, tierCount)) != NULL)
|
||||
while ((tier = tr_variantListChild(announce_list, tierCount)) != nullptr)
|
||||
{
|
||||
tr_variant* node;
|
||||
int nodeCount = 0;
|
||||
|
||||
while ((node = tr_variantListChild(tier, nodeCount)) != NULL)
|
||||
while ((node = tr_variantListChild(tier, nodeCount)) != nullptr)
|
||||
{
|
||||
if (tr_variantGetStr(node, &str, NULL) && strstr(str, in) != NULL)
|
||||
if (tr_variantGetStr(node, &str, nullptr) && strstr(str, in) != nullptr)
|
||||
{
|
||||
char* newstr = replaceSubstr(str, in, out);
|
||||
printf("\tReplaced in \"announce-list\" tier %d: \"%s\" --> \"%s\"\n", tierCount + 1, str, newstr);
|
||||
|
@ -230,15 +230,15 @@ static bool announce_list_has_url(tr_variant* announce_list, char const* url)
|
|||
int tierCount = 0;
|
||||
tr_variant* tier;
|
||||
|
||||
while ((tier = tr_variantListChild(announce_list, tierCount)) != NULL)
|
||||
while ((tier = tr_variantListChild(announce_list, tierCount)) != nullptr)
|
||||
{
|
||||
int nodeCount = 0;
|
||||
tr_variant const* node;
|
||||
|
||||
while ((node = tr_variantListChild(tier, nodeCount)) != NULL)
|
||||
while ((node = tr_variantListChild(tier, nodeCount)) != nullptr)
|
||||
{
|
||||
char const* str = NULL;
|
||||
if (tr_variantGetStr(node, &str, NULL) && strcmp(str, url) == 0)
|
||||
char const* str = nullptr;
|
||||
if (tr_variantGetStr(node, &str, nullptr) && strcmp(str, url) == 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -254,10 +254,10 @@ static bool announce_list_has_url(tr_variant* announce_list, char const* url)
|
|||
|
||||
static bool addURL(tr_variant* metainfo, char const* url)
|
||||
{
|
||||
char const* announce = NULL;
|
||||
tr_variant* announce_list = NULL;
|
||||
char const* announce = nullptr;
|
||||
tr_variant* announce_list = nullptr;
|
||||
bool changed = false;
|
||||
bool const had_announce = tr_variantDictFindStr(metainfo, TR_KEY_announce, &announce, NULL);
|
||||
bool const had_announce = tr_variantDictFindStr(metainfo, TR_KEY_announce, &announce, nullptr);
|
||||
bool const had_announce_list = tr_variantDictFindList(metainfo, TR_KEY_announce_list, &announce_list);
|
||||
|
||||
if (!had_announce && !had_announce_list)
|
||||
|
@ -323,7 +323,7 @@ int tr_main(int argc, char* argv[])
|
|||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
if (add == NULL && deleteme == NULL && replace[0] == 0)
|
||||
if (add == nullptr && deleteme == nullptr && replace[0] == 0)
|
||||
{
|
||||
fprintf(stderr, "ERROR: Must specify -a, -d or -r\n");
|
||||
tr_getopt_usage(MY_NAME, getUsage(), options);
|
||||
|
@ -336,7 +336,7 @@ int tr_main(int argc, char* argv[])
|
|||
tr_variant top;
|
||||
bool changed = false;
|
||||
char const* filename = files[i];
|
||||
tr_error* error = NULL;
|
||||
tr_error* error = nullptr;
|
||||
|
||||
printf("%s\n", filename);
|
||||
|
||||
|
@ -347,17 +347,17 @@ int tr_main(int argc, char* argv[])
|
|||
continue;
|
||||
}
|
||||
|
||||
if (deleteme != NULL)
|
||||
if (deleteme != nullptr)
|
||||
{
|
||||
changed |= removeURL(&top, deleteme);
|
||||
}
|
||||
|
||||
if (add != NULL)
|
||||
if (add != nullptr)
|
||||
{
|
||||
changed = addURL(&top, add);
|
||||
}
|
||||
|
||||
if (replace[0] != NULL && replace[1] != NULL)
|
||||
if (replace[0] != nullptr && replace[1] != nullptr)
|
||||
{
|
||||
changed |= replaceURL(&top, replace[0], replace[1]);
|
||||
}
|
||||
|
|
353
utils/remote.cc
353
utils/remote.cc
|
@ -257,72 +257,77 @@ static char const* getUsage(void)
|
|||
***/
|
||||
|
||||
static tr_option opts[] = {
|
||||
{ 'a', "add", "Add torrent files by filename or URL", "a", false, NULL },
|
||||
{ 970, "alt-speed", "Use the alternate Limits", "as", false, NULL },
|
||||
{ 971, "no-alt-speed", "Don't use the alternate Limits", "AS", false, NULL },
|
||||
{ 'a', "add", "Add torrent files by filename or URL", "a", false, nullptr },
|
||||
{ 970, "alt-speed", "Use the alternate Limits", "as", false, nullptr },
|
||||
{ 971, "no-alt-speed", "Don't use the alternate Limits", "AS", false, nullptr },
|
||||
{ 972, "alt-speed-downlimit", "max alternate download speed (in " SPEED_K_STR ")", "asd", true, "<speed>" },
|
||||
{ 973, "alt-speed-uplimit", "max alternate upload speed (in " SPEED_K_STR ")", "asu", true, "<speed>" },
|
||||
{ 974, "alt-speed-scheduler", "Use the scheduled on/off times", "asc", false, NULL },
|
||||
{ 975, "no-alt-speed-scheduler", "Don't use the scheduled on/off times", "ASC", false, NULL },
|
||||
{ 976, "alt-speed-time-begin", "Time to start using the alt speed limits (in hhmm)", NULL, true, "<time>" },
|
||||
{ 977, "alt-speed-time-end", "Time to stop using the alt speed limits (in hhmm)", NULL, true, "<time>" },
|
||||
{ 978, "alt-speed-days", "Numbers for any/all days of the week - eg. \"1-7\"", NULL, true, "<days>" },
|
||||
{ 963, "blocklist-update", "Blocklist update", NULL, false, NULL },
|
||||
{ 974, "alt-speed-scheduler", "Use the scheduled on/off times", "asc", false, nullptr },
|
||||
{ 975, "no-alt-speed-scheduler", "Don't use the scheduled on/off times", "ASC", false, nullptr },
|
||||
{ 976, "alt-speed-time-begin", "Time to start using the alt speed limits (in hhmm)", nullptr, true, "<time>" },
|
||||
{ 977, "alt-speed-time-end", "Time to stop using the alt speed limits (in hhmm)", nullptr, true, "<time>" },
|
||||
{ 978, "alt-speed-days", "Numbers for any/all days of the week - eg. \"1-7\"", nullptr, true, "<days>" },
|
||||
{ 963, "blocklist-update", "Blocklist update", nullptr, false, nullptr },
|
||||
{ 'c', "incomplete-dir", "Where to store new torrents until they're complete", "c", true, "<dir>" },
|
||||
{ 'C', "no-incomplete-dir", "Don't store incomplete torrents in a different location", "C", false, NULL },
|
||||
{ 'b', "debug", "Print debugging information", "b", false, NULL },
|
||||
{ 'C', "no-incomplete-dir", "Don't store incomplete torrents in a different location", "C", false, nullptr },
|
||||
{ 'b', "debug", "Print debugging information", "b", false, nullptr },
|
||||
{ 'd',
|
||||
"downlimit",
|
||||
"Set the max download speed in " SPEED_K_STR " for the current torrent(s) or globally",
|
||||
"d",
|
||||
true,
|
||||
"<speed>" },
|
||||
{ 'D', "no-downlimit", "Disable max download speed for the current torrent(s) or globally", "D", false, NULL },
|
||||
{ 'D', "no-downlimit", "Disable max download speed for the current torrent(s) or globally", "D", false, nullptr },
|
||||
{ 'e', "cache", "Set the maximum size of the session's memory cache (in " MEM_M_STR ")", "e", true, "<size>" },
|
||||
{ 910, "encryption-required", "Encrypt all peer connections", "er", false, NULL },
|
||||
{ 911, "encryption-preferred", "Prefer encrypted peer connections", "ep", false, NULL },
|
||||
{ 912, "encryption-tolerated", "Prefer unencrypted peer connections", "et", false, NULL },
|
||||
{ 850, "exit", "Tell the transmission session to shut down", NULL, false, NULL },
|
||||
{ 940, "files", "List the current torrent(s)' files", "f", false, NULL },
|
||||
{ 910, "encryption-required", "Encrypt all peer connections", "er", false, nullptr },
|
||||
{ 911, "encryption-preferred", "Prefer encrypted peer connections", "ep", false, nullptr },
|
||||
{ 912, "encryption-tolerated", "Prefer unencrypted peer connections", "et", false, nullptr },
|
||||
{ 850, "exit", "Tell the transmission session to shut down", nullptr, false, nullptr },
|
||||
{ 940, "files", "List the current torrent(s)' files", "f", false, nullptr },
|
||||
{ 'g', "get", "Mark files for download", "g", true, "<files>" },
|
||||
{ 'G', "no-get", "Mark files for not downloading", "G", true, "<files>" },
|
||||
{ 'i', "info", "Show the current torrent(s)' details", "i", false, NULL },
|
||||
{ 940, "info-files", "List the current torrent(s)' files", "if", false, NULL },
|
||||
{ 941, "info-peers", "List the current torrent(s)' peers", "ip", false, NULL },
|
||||
{ 942, "info-pieces", "List the current torrent(s)' pieces", "ic", false, NULL },
|
||||
{ 943, "info-trackers", "List the current torrent(s)' trackers", "it", false, NULL },
|
||||
{ 920, "session-info", "Show the session's details", "si", false, NULL },
|
||||
{ 921, "session-stats", "Show the session's statistics", "st", false, NULL },
|
||||
{ 'l', "list", "List all torrents", "l", false, NULL },
|
||||
{ 'i', "info", "Show the current torrent(s)' details", "i", false, nullptr },
|
||||
{ 940, "info-files", "List the current torrent(s)' files", "if", false, nullptr },
|
||||
{ 941, "info-peers", "List the current torrent(s)' peers", "ip", false, nullptr },
|
||||
{ 942, "info-pieces", "List the current torrent(s)' pieces", "ic", false, nullptr },
|
||||
{ 943, "info-trackers", "List the current torrent(s)' trackers", "it", false, nullptr },
|
||||
{ 920, "session-info", "Show the session's details", "si", false, nullptr },
|
||||
{ 921, "session-stats", "Show the session's statistics", "st", false, nullptr },
|
||||
{ 'l', "list", "List all torrents", "l", false, nullptr },
|
||||
{ 'L', "labels", "Set the current torrents' labels", "L", true, "<label[,label...]>" },
|
||||
{ 960, "move", "Move current torrent's data to a new folder", NULL, true, "<path>" },
|
||||
{ 961, "find", "Tell Transmission where to find a torrent's data", NULL, true, "<path>" },
|
||||
{ 'm', "portmap", "Enable portmapping via NAT-PMP or UPnP", "m", false, NULL },
|
||||
{ 'M', "no-portmap", "Disable portmapping", "M", false, NULL },
|
||||
{ 960, "move", "Move current torrent's data to a new folder", nullptr, true, "<path>" },
|
||||
{ 961, "find", "Tell Transmission where to find a torrent's data", nullptr, true, "<path>" },
|
||||
{ 'm', "portmap", "Enable portmapping via NAT-PMP or UPnP", "m", false, nullptr },
|
||||
{ 'M', "no-portmap", "Disable portmapping", "M", false, nullptr },
|
||||
{ 'n', "auth", "Set username and password", "n", true, "<user:pw>" },
|
||||
{ 810, "authenv", "Set authentication info from the TR_AUTH environment variable (user:pw)", "ne", false, NULL },
|
||||
{ 810, "authenv", "Set authentication info from the TR_AUTH environment variable (user:pw)", "ne", false, nullptr },
|
||||
{ 'N', "netrc", "Set authentication info from a .netrc file", "N", true, "<file>" },
|
||||
{ 820, "ssl", "Use SSL when talking to daemon", NULL, false, NULL },
|
||||
{ 'o', "dht", "Enable distributed hash tables (DHT)", "o", false, NULL },
|
||||
{ 'O', "no-dht", "Disable distributed hash tables (DHT)", "O", false, NULL },
|
||||
{ 820, "ssl", "Use SSL when talking to daemon", nullptr, false, nullptr },
|
||||
{ 'o', "dht", "Enable distributed hash tables (DHT)", "o", false, nullptr },
|
||||
{ 'O', "no-dht", "Disable distributed hash tables (DHT)", "O", false, nullptr },
|
||||
{ 'p', "port", "Port for incoming peers (Default: " TR_DEFAULT_PEER_PORT_STR ")", "p", true, "<port>" },
|
||||
{ 962, "port-test", "Port testing", "pt", false, NULL },
|
||||
{ 'P', "random-port", "Random port for incoming peers", "P", false, NULL },
|
||||
{ 962, "port-test", "Port testing", "pt", false, nullptr },
|
||||
{ 'P', "random-port", "Random port for incoming peers", "P", false, nullptr },
|
||||
{ 900, "priority-high", "Try to download these file(s) first", "ph", true, "<files>" },
|
||||
{ 901, "priority-normal", "Try to download these file(s) normally", "pn", true, "<files>" },
|
||||
{ 902, "priority-low", "Try to download these file(s) last", "pl", true, "<files>" },
|
||||
{ 700, "bandwidth-high", "Give this torrent first chance at available bandwidth", "Bh", false, NULL },
|
||||
{ 701, "bandwidth-normal", "Give this torrent bandwidth left over by high priority torrents", "Bn", false, NULL },
|
||||
{ 702, "bandwidth-low", "Give this torrent bandwidth left over by high and normal priority torrents", "Bl", false, NULL },
|
||||
{ 600, "reannounce", "Reannounce the current torrent(s)", NULL, false, NULL },
|
||||
{ 'r', "remove", "Remove the current torrent(s)", "r", false, NULL },
|
||||
{ 700, "bandwidth-high", "Give this torrent first chance at available bandwidth", "Bh", false, nullptr },
|
||||
{ 701, "bandwidth-normal", "Give this torrent bandwidth left over by high priority torrents", "Bn", false, nullptr },
|
||||
{ 702,
|
||||
"bandwidth-low",
|
||||
"Give this torrent bandwidth left over by high and normal priority torrents",
|
||||
"Bl",
|
||||
false,
|
||||
nullptr },
|
||||
{ 600, "reannounce", "Reannounce the current torrent(s)", nullptr, false, nullptr },
|
||||
{ 'r', "remove", "Remove the current torrent(s)", "r", false, nullptr },
|
||||
{ 930, "peers", "Set the maximum number of peers for the current torrent(s) or globally", "pr", true, "<max>" },
|
||||
{ 840, "remove-and-delete", "Remove the current torrent(s) and delete local data", "rad", false, NULL },
|
||||
{ 800, "torrent-done-script", "Specify a script to run when a torrent finishes", NULL, true, "<file>" },
|
||||
{ 801, "no-torrent-done-script", "Don't run a script when torrents finish", NULL, false, NULL },
|
||||
{ 840, "remove-and-delete", "Remove the current torrent(s) and delete local data", "rad", false, nullptr },
|
||||
{ 800, "torrent-done-script", "Specify a script to run when a torrent finishes", nullptr, true, "<file>" },
|
||||
{ 801, "no-torrent-done-script", "Don't run a script when torrents finish", nullptr, false, nullptr },
|
||||
{ 950, "seedratio", "Let the current torrent(s) seed until a specific ratio", "sr", true, "ratio" },
|
||||
{ 951, "seedratio-default", "Let the current torrent(s) use the global seedratio settings", "srd", false, NULL },
|
||||
{ 952, "no-seedratio", "Let the current torrent(s) seed regardless of ratio", "SR", false, NULL },
|
||||
{ 951, "seedratio-default", "Let the current torrent(s) use the global seedratio settings", "srd", false, nullptr },
|
||||
{ 952, "no-seedratio", "Let the current torrent(s) seed regardless of ratio", "SR", false, nullptr },
|
||||
{ 953,
|
||||
"global-seedratio",
|
||||
"All torrents, unless overridden by a per-torrent setting, should seed until a specific ratio",
|
||||
|
@ -334,29 +339,29 @@ static tr_option opts[] = {
|
|||
"All torrents, unless overridden by a per-torrent setting, should seed regardless of ratio",
|
||||
"GSR",
|
||||
false,
|
||||
NULL },
|
||||
nullptr },
|
||||
{ 710, "tracker-add", "Add a tracker to a torrent", "td", true, "<tracker>" },
|
||||
{ 712, "tracker-remove", "Remove a tracker from a torrent", "tr", true, "<trackerId>" },
|
||||
{ 's', "start", "Start the current torrent(s)", "s", false, NULL },
|
||||
{ 'S', "stop", "Stop the current torrent(s)", "S", false, NULL },
|
||||
{ 's', "start", "Start the current torrent(s)", "s", false, nullptr },
|
||||
{ 'S', "stop", "Stop the current torrent(s)", "S", false, nullptr },
|
||||
{ 't', "torrent", "Set the current torrent(s)", "t", true, "<torrent>" },
|
||||
{ 990, "start-paused", "Start added torrents paused", NULL, false, NULL },
|
||||
{ 991, "no-start-paused", "Start added torrents unpaused", NULL, false, NULL },
|
||||
{ 992, "trash-torrent", "Delete torrents after adding", NULL, false, NULL },
|
||||
{ 993, "no-trash-torrent", "Do not delete torrents after adding", NULL, false, NULL },
|
||||
{ 984, "honor-session", "Make the current torrent(s) honor the session limits", "hl", false, NULL },
|
||||
{ 985, "no-honor-session", "Make the current torrent(s) not honor the session limits", "HL", false, NULL },
|
||||
{ 990, "start-paused", "Start added torrents paused", nullptr, false, nullptr },
|
||||
{ 991, "no-start-paused", "Start added torrents unpaused", nullptr, false, nullptr },
|
||||
{ 992, "trash-torrent", "Delete torrents after adding", nullptr, false, nullptr },
|
||||
{ 993, "no-trash-torrent", "Do not delete torrents after adding", nullptr, false, nullptr },
|
||||
{ 984, "honor-session", "Make the current torrent(s) honor the session limits", "hl", false, nullptr },
|
||||
{ 985, "no-honor-session", "Make the current torrent(s) not honor the session limits", "HL", false, nullptr },
|
||||
{ 'u',
|
||||
"uplimit",
|
||||
"Set the max upload speed in " SPEED_K_STR " for the current torrent(s) or globally",
|
||||
"u",
|
||||
true,
|
||||
"<speed>" },
|
||||
{ 'U', "no-uplimit", "Disable max upload speed for the current torrent(s) or globally", "U", false, NULL },
|
||||
{ 830, "utp", "Enable uTP for peer connections", NULL, false, NULL },
|
||||
{ 831, "no-utp", "Disable uTP for peer connections", NULL, false, NULL },
|
||||
{ 'v', "verify", "Verify the current torrent(s)", "v", false, NULL },
|
||||
{ 'V', "version", "Show version number and exit", "V", false, NULL },
|
||||
{ 'U', "no-uplimit", "Disable max upload speed for the current torrent(s) or globally", "U", false, nullptr },
|
||||
{ 830, "utp", "Enable uTP for peer connections", nullptr, false, nullptr },
|
||||
{ 831, "no-utp", "Disable uTP for peer connections", nullptr, false, nullptr },
|
||||
{ 'v', "verify", "Verify the current torrent(s)", "v", false, nullptr },
|
||||
{ 'V', "version", "Show version number and exit", "V", false, nullptr },
|
||||
{ 'w',
|
||||
"download-dir",
|
||||
"When used in conjunction with --add, set the new torrent's download folder. "
|
||||
|
@ -364,12 +369,12 @@ static tr_option opts[] = {
|
|||
"w",
|
||||
true,
|
||||
"<path>" },
|
||||
{ 'x', "pex", "Enable peer exchange (PEX)", "x", false, NULL },
|
||||
{ 'X', "no-pex", "Disable peer exchange (PEX)", "X", false, NULL },
|
||||
{ 'y', "lpd", "Enable local peer discovery (LPD)", "y", false, NULL },
|
||||
{ 'Y', "no-lpd", "Disable local peer discovery (LPD)", "Y", false, NULL },
|
||||
{ 941, "peer-info", "List the current torrent(s)' peers", "pi", false, NULL },
|
||||
{ 0, NULL, NULL, NULL, false, NULL }
|
||||
{ 'x', "pex", "Enable peer exchange (PEX)", "x", false, nullptr },
|
||||
{ 'X', "no-pex", "Disable peer exchange (PEX)", "X", false, nullptr },
|
||||
{ 'y', "lpd", "Enable local peer discovery (LPD)", "y", false, nullptr },
|
||||
{ 'Y', "no-lpd", "Disable local peer discovery (LPD)", "Y", false, nullptr },
|
||||
{ 941, "peer-info", "List the current torrent(s)' peers", "pi", false, nullptr },
|
||||
{ 0, nullptr, nullptr, nullptr, false, nullptr }
|
||||
};
|
||||
|
||||
static void showUsage(void)
|
||||
|
@ -379,7 +384,7 @@ static void showUsage(void)
|
|||
|
||||
static int numarg(char const* arg)
|
||||
{
|
||||
char* end = NULL;
|
||||
char* end = nullptr;
|
||||
long const num = strtol(arg, &end, 10);
|
||||
|
||||
if (*end != '\0')
|
||||
|
@ -547,20 +552,20 @@ static int getOptMode(int val)
|
|||
}
|
||||
|
||||
static bool debug = false;
|
||||
static char* auth = NULL;
|
||||
static char* netrc = NULL;
|
||||
static char* sessionId = NULL;
|
||||
static char* auth = nullptr;
|
||||
static char* netrc = nullptr;
|
||||
static char* sessionId = nullptr;
|
||||
static bool UseSSL = false;
|
||||
|
||||
static char* getEncodedMetainfo(char const* filename)
|
||||
{
|
||||
size_t len = 0;
|
||||
char* b64 = NULL;
|
||||
uint8_t* buf = tr_loadFile(filename, &len, NULL);
|
||||
char* b64 = nullptr;
|
||||
uint8_t* buf = tr_loadFile(filename, &len, nullptr);
|
||||
|
||||
if (buf != NULL)
|
||||
if (buf != nullptr)
|
||||
{
|
||||
b64 = static_cast<char*>(tr_base64_encode(buf, len, NULL));
|
||||
b64 = static_cast<char*>(tr_base64_encode(buf, len, nullptr));
|
||||
tr_free(buf);
|
||||
}
|
||||
|
||||
|
@ -586,7 +591,7 @@ static void addIdArg(tr_variant* args, char const* id_str, char const* fallback)
|
|||
}
|
||||
else if (strcmp(id_str, "all") != 0)
|
||||
{
|
||||
bool isList = strchr(id_str, ',') != NULL || strchr(id_str, '-') != NULL;
|
||||
bool isList = strchr(id_str, ',') != nullptr || strchr(id_str, '-') != nullptr;
|
||||
bool isNum = true;
|
||||
|
||||
for (char const* pch = id_str; isNum && *pch != '\0'; ++pch)
|
||||
|
@ -610,7 +615,7 @@ static void addTime(tr_variant* args, tr_quark const key, char const* arg)
|
|||
int time = 0;
|
||||
bool success = false;
|
||||
|
||||
if (arg != NULL && strlen(arg) == 4)
|
||||
if (arg != nullptr && strlen(arg) == 4)
|
||||
{
|
||||
char const hh[3] = { arg[0], arg[1], '\0' };
|
||||
char const mm[3] = { arg[2], arg[3], '\0' };
|
||||
|
@ -638,7 +643,7 @@ static void addDays(tr_variant* args, tr_quark const key, char const* arg)
|
|||
{
|
||||
int days = 0;
|
||||
|
||||
if (arg != NULL)
|
||||
if (arg != nullptr)
|
||||
{
|
||||
for (int& day : tr_parseNumberRange(arg, TR_BAD_SIZE))
|
||||
{
|
||||
|
@ -677,7 +682,7 @@ static void addLabels(tr_variant* args, char const* arg)
|
|||
char* argcpy = tr_strdup(arg);
|
||||
char* const tmp = argcpy; /* save copied string start pointer to free later */
|
||||
char* token;
|
||||
while ((token = tr_strsep(&argcpy, ",")) != NULL)
|
||||
while ((token = tr_strsep(&argcpy, ",")) != nullptr)
|
||||
{
|
||||
tr_strstrip(token);
|
||||
if (!tr_str_is_empty(token))
|
||||
|
@ -821,7 +826,7 @@ static size_t parseResponseHeader(void* ptr, size_t size, size_t nmemb, void* st
|
|||
|
||||
static long getTimeoutSecs(char const* req)
|
||||
{
|
||||
if (strstr(req, "\"method\":\"blocklist-update\"") != NULL)
|
||||
if (strstr(req, "\"method\":\"blocklist-update\"") != nullptr)
|
||||
{
|
||||
return 300L;
|
||||
}
|
||||
|
@ -966,17 +971,17 @@ static void printDetails(tr_variant* top)
|
|||
printf(" Id: %" PRId64 "\n", i);
|
||||
}
|
||||
|
||||
if (tr_variantDictFindStr(t, TR_KEY_name, &str, NULL))
|
||||
if (tr_variantDictFindStr(t, TR_KEY_name, &str, nullptr))
|
||||
{
|
||||
printf(" Name: %s\n", str);
|
||||
}
|
||||
|
||||
if (tr_variantDictFindStr(t, TR_KEY_hashString, &str, NULL))
|
||||
if (tr_variantDictFindStr(t, TR_KEY_hashString, &str, nullptr))
|
||||
{
|
||||
printf(" Hash: %s\n", str);
|
||||
}
|
||||
|
||||
if (tr_variantDictFindStr(t, TR_KEY_magnetLink, &str, NULL))
|
||||
if (tr_variantDictFindStr(t, TR_KEY_magnetLink, &str, nullptr))
|
||||
{
|
||||
printf(" Magnet: %s\n", str);
|
||||
}
|
||||
|
@ -987,7 +992,7 @@ static void printDetails(tr_variant* top)
|
|||
tr_variant const* child;
|
||||
while ((child = tr_variantListChild(l, child_pos++)))
|
||||
{
|
||||
if (tr_variantGetStr(child, &str, NULL))
|
||||
if (tr_variantGetStr(child, &str, nullptr))
|
||||
{
|
||||
printf(i == 0 ? "%s" : ", %s", str);
|
||||
}
|
||||
|
@ -1002,7 +1007,7 @@ static void printDetails(tr_variant* top)
|
|||
getStatusString(t, buf, sizeof(buf));
|
||||
printf(" State: %s\n", buf);
|
||||
|
||||
if (tr_variantDictFindStr(t, TR_KEY_downloadDir, &str, NULL))
|
||||
if (tr_variantDictFindStr(t, TR_KEY_downloadDir, &str, nullptr))
|
||||
{
|
||||
printf(" Location: %s\n", str);
|
||||
}
|
||||
|
@ -1073,7 +1078,7 @@ static void printDetails(tr_variant* top)
|
|||
printf(" Corrupt DL: %s\n", buf);
|
||||
}
|
||||
|
||||
if (tr_variantDictFindStr(t, TR_KEY_errorString, &str, NULL) && !tr_str_is_empty(str) &&
|
||||
if (tr_variantDictFindStr(t, TR_KEY_errorString, &str, nullptr) && !tr_str_is_empty(str) &&
|
||||
tr_variantDictFindInt(t, TR_KEY_error, &i) && i != 0)
|
||||
{
|
||||
switch (i)
|
||||
|
@ -1160,12 +1165,12 @@ static void printDetails(tr_variant* top)
|
|||
printf(" Public torrent: %s\n", (boolVal ? "No" : "Yes"));
|
||||
}
|
||||
|
||||
if (tr_variantDictFindStr(t, TR_KEY_comment, &str, NULL) && !tr_str_is_empty(str))
|
||||
if (tr_variantDictFindStr(t, TR_KEY_comment, &str, nullptr) && !tr_str_is_empty(str))
|
||||
{
|
||||
printf(" Comment: %s\n", str);
|
||||
}
|
||||
|
||||
if (tr_variantDictFindStr(t, TR_KEY_creator, &str, NULL) && !tr_str_is_empty(str))
|
||||
if (tr_variantDictFindStr(t, TR_KEY_creator, &str, nullptr) && !tr_str_is_empty(str))
|
||||
{
|
||||
printf(" Creator: %s\n", str);
|
||||
}
|
||||
|
@ -1273,7 +1278,7 @@ static void printFileList(tr_variant* top)
|
|||
tr_variant* wanteds;
|
||||
char const* name;
|
||||
|
||||
if (tr_variantDictFindStr(d, TR_KEY_name, &name, NULL) && tr_variantDictFindList(d, TR_KEY_files, &files) &&
|
||||
if (tr_variantDictFindStr(d, TR_KEY_name, &name, nullptr) && tr_variantDictFindList(d, TR_KEY_files, &files) &&
|
||||
tr_variantDictFindList(d, TR_KEY_priorities, &priorities) && tr_variantDictFindList(d, TR_KEY_wanted, &wanteds))
|
||||
{
|
||||
int const jn = tr_variantListSize(files);
|
||||
|
@ -1290,7 +1295,7 @@ static void printFileList(tr_variant* top)
|
|||
tr_variant* file = tr_variantListChild(files, j);
|
||||
|
||||
if (tr_variantDictFindInt(file, TR_KEY_length, &length) &&
|
||||
tr_variantDictFindStr(file, TR_KEY_name, &filename, NULL) &&
|
||||
tr_variantDictFindStr(file, TR_KEY_name, &filename, nullptr) &&
|
||||
tr_variantDictFindInt(file, TR_KEY_bytesCompleted, &have) &&
|
||||
tr_variantGetInt(tr_variantListChild(priorities, j), &priority) &&
|
||||
tr_variantGetBool(tr_variantListChild(wanteds, j), &wanted))
|
||||
|
@ -1344,9 +1349,10 @@ static void printPeersImpl(tr_variant* peers)
|
|||
int64_t rateToPeer;
|
||||
tr_variant* d = tr_variantListChild(peers, i);
|
||||
|
||||
if (tr_variantDictFindStr(d, TR_KEY_address, &address, NULL) &&
|
||||
tr_variantDictFindStr(d, TR_KEY_clientName, &client, NULL) &&
|
||||
tr_variantDictFindReal(d, TR_KEY_progress, &progress) && tr_variantDictFindStr(d, TR_KEY_flagStr, &flagstr, NULL) &&
|
||||
if (tr_variantDictFindStr(d, TR_KEY_address, &address, nullptr) &&
|
||||
tr_variantDictFindStr(d, TR_KEY_clientName, &client, nullptr) &&
|
||||
tr_variantDictFindReal(d, TR_KEY_progress, &progress) &&
|
||||
tr_variantDictFindStr(d, TR_KEY_flagStr, &flagstr, nullptr) &&
|
||||
tr_variantDictFindInt(d, TR_KEY_rateToClient, &rateToClient) &&
|
||||
tr_variantDictFindInt(d, TR_KEY_rateToPeer, &rateToPeer))
|
||||
{
|
||||
|
@ -1497,7 +1503,7 @@ static void printTorrentList(tr_variant* top)
|
|||
|
||||
if (tr_variantDictFindInt(d, TR_KEY_eta, &eta) && tr_variantDictFindInt(d, TR_KEY_id, &torId) &&
|
||||
tr_variantDictFindInt(d, TR_KEY_leftUntilDone, &leftUntilDone) &&
|
||||
tr_variantDictFindStr(d, TR_KEY_name, &name, NULL) && tr_variantDictFindInt(d, TR_KEY_rateDownload, &down) &&
|
||||
tr_variantDictFindStr(d, TR_KEY_name, &name, nullptr) && tr_variantDictFindInt(d, TR_KEY_rateDownload, &down) &&
|
||||
tr_variantDictFindInt(d, TR_KEY_rateUpload, &up) &&
|
||||
tr_variantDictFindInt(d, TR_KEY_sizeWhenDone, &sizeWhenDone) &&
|
||||
tr_variantDictFindInt(d, TR_KEY_status, &status) && tr_variantDictFindReal(d, TR_KEY_uploadRatio, &ratio))
|
||||
|
@ -1599,17 +1605,18 @@ static void printTrackersImpl(tr_variant* trackerStats)
|
|||
|
||||
if (tr_variantDictFindInt(t, TR_KEY_downloadCount, &downloadCount) &&
|
||||
tr_variantDictFindBool(t, TR_KEY_hasAnnounced, &hasAnnounced) &&
|
||||
tr_variantDictFindBool(t, TR_KEY_hasScraped, &hasScraped) && tr_variantDictFindStr(t, TR_KEY_host, &host, NULL) &&
|
||||
tr_variantDictFindInt(t, TR_KEY_id, &trackerId) && tr_variantDictFindBool(t, TR_KEY_isBackup, &isBackup) &&
|
||||
tr_variantDictFindBool(t, TR_KEY_hasScraped, &hasScraped) &&
|
||||
tr_variantDictFindStr(t, TR_KEY_host, &host, nullptr) && tr_variantDictFindInt(t, TR_KEY_id, &trackerId) &&
|
||||
tr_variantDictFindBool(t, TR_KEY_isBackup, &isBackup) &&
|
||||
tr_variantDictFindInt(t, TR_KEY_announceState, &announceState) &&
|
||||
tr_variantDictFindInt(t, TR_KEY_scrapeState, &scrapeState) &&
|
||||
tr_variantDictFindInt(t, TR_KEY_lastAnnouncePeerCount, &lastAnnouncePeerCount) &&
|
||||
tr_variantDictFindStr(t, TR_KEY_lastAnnounceResult, &lastAnnounceResult, NULL) &&
|
||||
tr_variantDictFindStr(t, TR_KEY_lastAnnounceResult, &lastAnnounceResult, nullptr) &&
|
||||
tr_variantDictFindInt(t, TR_KEY_lastAnnounceStartTime, &lastAnnounceStartTime) &&
|
||||
tr_variantDictFindBool(t, TR_KEY_lastAnnounceSucceeded, &lastAnnounceSucceeded) &&
|
||||
tr_variantDictFindInt(t, TR_KEY_lastAnnounceTime, &lastAnnounceTime) &&
|
||||
tr_variantDictFindBool(t, TR_KEY_lastAnnounceTimedOut, &lastAnnounceTimedOut) &&
|
||||
tr_variantDictFindStr(t, TR_KEY_lastScrapeResult, &lastScrapeResult, NULL) &&
|
||||
tr_variantDictFindStr(t, TR_KEY_lastScrapeResult, &lastScrapeResult, nullptr) &&
|
||||
tr_variantDictFindInt(t, TR_KEY_lastScrapeStartTime, &lastScrapeStartTime) &&
|
||||
tr_variantDictFindBool(t, TR_KEY_lastScrapeSucceeded, &lastScrapeSucceeded) &&
|
||||
tr_variantDictFindInt(t, TR_KEY_lastScrapeTime, &lastScrapeTime) &&
|
||||
|
@ -1619,7 +1626,7 @@ static void printTrackersImpl(tr_variant* trackerStats)
|
|||
tr_variantDictFindInt(t, TR_KEY_nextScrapeTime, &nextScrapeTime) &&
|
||||
tr_variantDictFindInt(t, TR_KEY_seederCount, &seederCount) && tr_variantDictFindInt(t, TR_KEY_tier, &tier))
|
||||
{
|
||||
time_t const now = time(NULL);
|
||||
time_t const now = time(nullptr);
|
||||
|
||||
printf("\n");
|
||||
printf(" Tracker %d: %s\n", (int)trackerId, host);
|
||||
|
@ -1754,7 +1761,7 @@ static void printSession(tr_variant* top)
|
|||
|
||||
printf("VERSION\n");
|
||||
|
||||
if (tr_variantDictFindStr(args, TR_KEY_version, &str, NULL))
|
||||
if (tr_variantDictFindStr(args, TR_KEY_version, &str, nullptr))
|
||||
{
|
||||
printf(" Daemon version: %s\n", str);
|
||||
}
|
||||
|
@ -1773,12 +1780,12 @@ static void printSession(tr_variant* top)
|
|||
|
||||
printf("CONFIG\n");
|
||||
|
||||
if (tr_variantDictFindStr(args, TR_KEY_config_dir, &str, NULL))
|
||||
if (tr_variantDictFindStr(args, TR_KEY_config_dir, &str, nullptr))
|
||||
{
|
||||
printf(" Configuration directory: %s\n", str);
|
||||
}
|
||||
|
||||
if (tr_variantDictFindStr(args, TR_KEY_download_dir, &str, NULL))
|
||||
if (tr_variantDictFindStr(args, TR_KEY_download_dir, &str, nullptr))
|
||||
{
|
||||
printf(" Download directory: %s\n", str);
|
||||
}
|
||||
|
@ -1813,7 +1820,7 @@ static void printSession(tr_variant* top)
|
|||
printf(" Peer exchange allowed: %s\n", boolVal ? "Yes" : "No");
|
||||
}
|
||||
|
||||
if (tr_variantDictFindStr(args, TR_KEY_encryption, &str, NULL))
|
||||
if (tr_variantDictFindStr(args, TR_KEY_encryption, &str, nullptr))
|
||||
{
|
||||
printf(" Encryption: %s\n", str);
|
||||
}
|
||||
|
@ -2046,7 +2053,7 @@ static int processResponse(char const* rpcurl, void const* response, size_t len)
|
|||
int64_t tag = -1;
|
||||
char const* str;
|
||||
|
||||
if (tr_variantDictFindStr(&top, TR_KEY_result, &str, NULL))
|
||||
if (tr_variantDictFindStr(&top, TR_KEY_result, &str, nullptr))
|
||||
{
|
||||
if (strcmp(str, "success") != 0)
|
||||
{
|
||||
|
@ -2111,7 +2118,7 @@ static int processResponse(char const* rpcurl, void const* response, size_t len)
|
|||
}
|
||||
|
||||
default:
|
||||
if (!tr_variantDictFindStr(&top, TR_KEY_result, &str, NULL))
|
||||
if (!tr_variantDictFindStr(&top, TR_KEY_result, &str, nullptr))
|
||||
{
|
||||
status |= EXIT_FAILURE;
|
||||
}
|
||||
|
@ -2151,12 +2158,12 @@ static CURL* tr_curl_easy_init(struct evbuffer* writebuf)
|
|||
curl_easy_setopt(curl, CURLOPT_VERBOSE, debug);
|
||||
curl_easy_setopt(curl, CURLOPT_ENCODING, ""); /* "" tells curl to fill in the blanks with what it was compiled to support */
|
||||
|
||||
if (netrc != NULL)
|
||||
if (netrc != nullptr)
|
||||
{
|
||||
curl_easy_setopt(curl, CURLOPT_NETRC_FILE, netrc);
|
||||
}
|
||||
|
||||
if (auth != NULL)
|
||||
if (auth != nullptr)
|
||||
{
|
||||
curl_easy_setopt(curl, CURLOPT_USERPWD, auth);
|
||||
}
|
||||
|
@ -2167,10 +2174,10 @@ static CURL* tr_curl_easy_init(struct evbuffer* writebuf)
|
|||
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0); /* since most certs will be self-signed, do not verify against CA */
|
||||
}
|
||||
|
||||
if (sessionId != NULL)
|
||||
if (sessionId != nullptr)
|
||||
{
|
||||
char* h = tr_strdup_printf("%s: %s", TR_RPC_SESSION_ID_HEADER, sessionId);
|
||||
struct curl_slist* custom_headers = curl_slist_append(NULL, h);
|
||||
struct curl_slist* custom_headers = curl_slist_append(nullptr, h);
|
||||
tr_free(h);
|
||||
|
||||
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, custom_headers);
|
||||
|
@ -2182,12 +2189,12 @@ static CURL* tr_curl_easy_init(struct evbuffer* writebuf)
|
|||
|
||||
static void tr_curl_easy_cleanup(CURL* curl)
|
||||
{
|
||||
struct curl_slist* custom_headers = NULL;
|
||||
struct curl_slist* custom_headers = nullptr;
|
||||
curl_easy_getinfo(curl, CURLINFO_PRIVATE, &custom_headers);
|
||||
|
||||
curl_easy_cleanup(curl);
|
||||
|
||||
if (custom_headers != NULL)
|
||||
if (custom_headers != nullptr)
|
||||
{
|
||||
curl_slist_free_all(custom_headers);
|
||||
}
|
||||
|
@ -2199,7 +2206,7 @@ static int flush(char const* rpcurl, tr_variant** benc)
|
|||
CURL* curl;
|
||||
int status = EXIT_SUCCESS;
|
||||
struct evbuffer* buf = evbuffer_new();
|
||||
char* json = tr_variantToStr(*benc, TR_VARIANT_FMT_JSON_LEAN, NULL);
|
||||
char* json = tr_variantToStr(*benc, TR_VARIANT_FMT_JSON_LEAN, nullptr);
|
||||
char* rpcurl_http = tr_strdup_printf(UseSSL ? "https://%s" : "http://%s", rpcurl);
|
||||
|
||||
curl = tr_curl_easy_init(buf);
|
||||
|
@ -2233,9 +2240,9 @@ static int flush(char const* rpcurl, tr_variant** benc)
|
|||
* pulled the new session id from this response's headers,
|
||||
* build a new CURL* and try again */
|
||||
tr_curl_easy_cleanup(curl);
|
||||
curl = NULL;
|
||||
curl = nullptr;
|
||||
status |= flush(rpcurl, benc);
|
||||
benc = NULL;
|
||||
benc = nullptr;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -2251,16 +2258,16 @@ static int flush(char const* rpcurl, tr_variant** benc)
|
|||
tr_free(json);
|
||||
evbuffer_free(buf);
|
||||
|
||||
if (curl != NULL)
|
||||
if (curl != nullptr)
|
||||
{
|
||||
tr_curl_easy_cleanup(curl);
|
||||
}
|
||||
|
||||
if (benc != NULL)
|
||||
if (benc != nullptr)
|
||||
{
|
||||
tr_variantFree(*benc);
|
||||
tr_free(*benc);
|
||||
*benc = NULL;
|
||||
*benc = nullptr;
|
||||
}
|
||||
|
||||
return status;
|
||||
|
@ -2270,7 +2277,7 @@ static tr_variant* ensure_sset(tr_variant** sset)
|
|||
{
|
||||
tr_variant* args;
|
||||
|
||||
if (*sset != NULL)
|
||||
if (*sset != nullptr)
|
||||
{
|
||||
args = tr_variantDictFind(*sset, ARGUMENTS);
|
||||
}
|
||||
|
@ -2289,7 +2296,7 @@ static tr_variant* ensure_tset(tr_variant** tset)
|
|||
{
|
||||
tr_variant* args;
|
||||
|
||||
if (*tset != NULL)
|
||||
if (*tset != nullptr)
|
||||
{
|
||||
args = tr_variantDictFind(*tset, ARGUMENTS);
|
||||
}
|
||||
|
@ -2309,9 +2316,9 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
int c;
|
||||
int status = EXIT_SUCCESS;
|
||||
char const* optarg;
|
||||
tr_variant* sset = NULL;
|
||||
tr_variant* tset = NULL;
|
||||
tr_variant* tadd = NULL;
|
||||
tr_variant* sset = nullptr;
|
||||
tr_variant* tset = nullptr;
|
||||
tr_variant* tadd = nullptr;
|
||||
|
||||
*id = '\0';
|
||||
|
||||
|
@ -2324,19 +2331,19 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
switch (c)
|
||||
{
|
||||
case 'a': /* add torrent */
|
||||
if (sset != NULL)
|
||||
if (sset != nullptr)
|
||||
{
|
||||
status |= flush(rpcurl, &sset);
|
||||
}
|
||||
|
||||
if (tadd != NULL)
|
||||
if (tadd != nullptr)
|
||||
{
|
||||
status |= flush(rpcurl, &tadd);
|
||||
}
|
||||
|
||||
if (tset != NULL)
|
||||
if (tset != nullptr)
|
||||
{
|
||||
addIdArg(tr_variantDictFind(tset, ARGUMENTS), id, NULL);
|
||||
addIdArg(tr_variantDictFind(tset, ARGUMENTS), id, nullptr);
|
||||
status |= flush(rpcurl, &tset);
|
||||
}
|
||||
|
||||
|
@ -2356,9 +2363,9 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
break;
|
||||
|
||||
case 810: /* authenv */
|
||||
auth = tr_env_get_string("TR_AUTH", NULL);
|
||||
auth = tr_env_get_string("TR_AUTH", nullptr);
|
||||
|
||||
if (auth == NULL)
|
||||
if (auth == nullptr)
|
||||
{
|
||||
fprintf(stderr, "The TR_AUTH environment variable is not set\n");
|
||||
exit(0);
|
||||
|
@ -2375,14 +2382,14 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
break;
|
||||
|
||||
case 't': /* set current torrent */
|
||||
if (tadd != NULL)
|
||||
if (tadd != nullptr)
|
||||
{
|
||||
status |= flush(rpcurl, &tadd);
|
||||
}
|
||||
|
||||
if (tset != NULL)
|
||||
if (tset != nullptr)
|
||||
{
|
||||
addIdArg(tr_variantDictFind(tset, ARGUMENTS), id, NULL);
|
||||
addIdArg(tr_variantDictFind(tset, ARGUMENTS), id, nullptr);
|
||||
status |= flush(rpcurl, &tset);
|
||||
}
|
||||
|
||||
|
@ -2400,12 +2407,12 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
break;
|
||||
|
||||
case TR_OPT_UNK:
|
||||
if (tadd != NULL)
|
||||
if (tadd != nullptr)
|
||||
{
|
||||
tr_variant* args = tr_variantDictFind(tadd, ARGUMENTS);
|
||||
char* tmp = getEncodedMetainfo(optarg);
|
||||
|
||||
if (tmp != NULL)
|
||||
if (tmp != nullptr)
|
||||
{
|
||||
tr_variantDictAddStr(args, TR_KEY_metainfo, tmp);
|
||||
}
|
||||
|
@ -2435,9 +2442,9 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
args = tr_variantDictAddDict(top, ARGUMENTS, 0);
|
||||
fields = tr_variantDictAddList(args, TR_KEY_fields, 0);
|
||||
|
||||
if (tset != NULL)
|
||||
if (tset != nullptr)
|
||||
{
|
||||
addIdArg(tr_variantDictFind(tset, ARGUMENTS), id, NULL);
|
||||
addIdArg(tr_variantDictFind(tset, ARGUMENTS), id, nullptr);
|
||||
status |= flush(rpcurl, &tset);
|
||||
}
|
||||
|
||||
|
@ -2451,7 +2458,7 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
tr_variantListAddQuark(fields, details_keys[i]);
|
||||
}
|
||||
|
||||
addIdArg(args, id, NULL);
|
||||
addIdArg(args, id, nullptr);
|
||||
break;
|
||||
|
||||
case 'l':
|
||||
|
@ -2473,26 +2480,26 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
tr_variantListAddQuark(fields, files_keys[i]);
|
||||
}
|
||||
|
||||
addIdArg(args, id, NULL);
|
||||
addIdArg(args, id, nullptr);
|
||||
break;
|
||||
|
||||
case 941:
|
||||
tr_variantDictAddInt(top, TR_KEY_tag, TAG_PEERS);
|
||||
tr_variantListAddStr(fields, "peers");
|
||||
addIdArg(args, id, NULL);
|
||||
addIdArg(args, id, nullptr);
|
||||
break;
|
||||
|
||||
case 942:
|
||||
tr_variantDictAddInt(top, TR_KEY_tag, TAG_PIECES);
|
||||
tr_variantListAddStr(fields, "pieces");
|
||||
tr_variantListAddStr(fields, "pieceCount");
|
||||
addIdArg(args, id, NULL);
|
||||
addIdArg(args, id, nullptr);
|
||||
break;
|
||||
|
||||
case 943:
|
||||
tr_variantDictAddInt(top, TR_KEY_tag, TAG_TRACKERS);
|
||||
tr_variantListAddStr(fields, "trackerStats");
|
||||
addIdArg(args, id, NULL);
|
||||
addIdArg(args, id, nullptr);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -2657,8 +2664,8 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
}
|
||||
else if (stepMode == (MODE_SESSION_SET | MODE_TORRENT_SET))
|
||||
{
|
||||
tr_variant* targs = NULL;
|
||||
tr_variant* sargs = NULL;
|
||||
tr_variant* targs = nullptr;
|
||||
tr_variant* sargs = nullptr;
|
||||
|
||||
if (!tr_str_is_empty(id))
|
||||
{
|
||||
|
@ -2672,7 +2679,7 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
switch (c)
|
||||
{
|
||||
case 'd':
|
||||
if (targs != NULL)
|
||||
if (targs != nullptr)
|
||||
{
|
||||
tr_variantDictAddInt(targs, TR_KEY_downloadLimit, numarg(optarg));
|
||||
tr_variantDictAddBool(targs, TR_KEY_downloadLimited, true);
|
||||
|
@ -2686,7 +2693,7 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
break;
|
||||
|
||||
case 'D':
|
||||
if (targs != NULL)
|
||||
if (targs != nullptr)
|
||||
{
|
||||
tr_variantDictAddBool(targs, TR_KEY_downloadLimited, false);
|
||||
}
|
||||
|
@ -2698,7 +2705,7 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
break;
|
||||
|
||||
case 'u':
|
||||
if (targs != NULL)
|
||||
if (targs != nullptr)
|
||||
{
|
||||
tr_variantDictAddInt(targs, TR_KEY_uploadLimit, numarg(optarg));
|
||||
tr_variantDictAddBool(targs, TR_KEY_uploadLimited, true);
|
||||
|
@ -2712,7 +2719,7 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
break;
|
||||
|
||||
case 'U':
|
||||
if (targs != NULL)
|
||||
if (targs != nullptr)
|
||||
{
|
||||
tr_variantDictAddBool(targs, TR_KEY_uploadLimited, false);
|
||||
}
|
||||
|
@ -2724,7 +2731,7 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
break;
|
||||
|
||||
case 930:
|
||||
if (targs != NULL)
|
||||
if (targs != nullptr)
|
||||
{
|
||||
tr_variantDictAddInt(targs, TR_KEY_peer_limit, atoi(optarg));
|
||||
}
|
||||
|
@ -2784,7 +2791,7 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
{
|
||||
tr_variant* args;
|
||||
|
||||
if (tadd != NULL)
|
||||
if (tadd != nullptr)
|
||||
{
|
||||
args = tr_variantDictFind(tadd, ARGUMENTS);
|
||||
}
|
||||
|
@ -2838,7 +2845,7 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
}
|
||||
else if (c == 961) /* set location */
|
||||
{
|
||||
if (tadd != NULL)
|
||||
if (tadd != nullptr)
|
||||
{
|
||||
tr_variant* args = tr_variantDictFind(tadd, ARGUMENTS);
|
||||
tr_variantDictAddStr(args, TR_KEY_download_dir, optarg);
|
||||
|
@ -2852,7 +2859,7 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
args = tr_variantDictAddDict(top, ARGUMENTS, 3);
|
||||
tr_variantDictAddStr(args, TR_KEY_location, optarg);
|
||||
tr_variantDictAddBool(args, TR_KEY_move, false);
|
||||
addIdArg(args, id, NULL);
|
||||
addIdArg(args, id, nullptr);
|
||||
status |= flush(rpcurl, &top);
|
||||
break;
|
||||
}
|
||||
|
@ -2873,7 +2880,7 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
|
||||
case 's': /* start */
|
||||
{
|
||||
if (tadd != NULL)
|
||||
if (tadd != nullptr)
|
||||
{
|
||||
tr_variantDictAddBool(tr_variantDictFind(tadd, TR_KEY_arguments), TR_KEY_paused, false);
|
||||
}
|
||||
|
@ -2882,7 +2889,7 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
tr_variant* top = tr_new0(tr_variant, 1);
|
||||
tr_variantInitDict(top, 2);
|
||||
tr_variantDictAddStr(top, TR_KEY_method, "torrent-start");
|
||||
addIdArg(tr_variantDictAddDict(top, ARGUMENTS, 1), id, NULL);
|
||||
addIdArg(tr_variantDictAddDict(top, ARGUMENTS, 1), id, nullptr);
|
||||
status |= flush(rpcurl, &top);
|
||||
}
|
||||
|
||||
|
@ -2891,7 +2898,7 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
|
||||
case 'S': /* stop */
|
||||
{
|
||||
if (tadd != NULL)
|
||||
if (tadd != nullptr)
|
||||
{
|
||||
tr_variantDictAddBool(tr_variantDictFind(tadd, TR_KEY_arguments), TR_KEY_paused, true);
|
||||
}
|
||||
|
@ -2900,7 +2907,7 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
tr_variant* top = tr_new0(tr_variant, 1);
|
||||
tr_variantInitDict(top, 2);
|
||||
tr_variantDictAddStr(top, TR_KEY_method, "torrent-stop");
|
||||
addIdArg(tr_variantDictAddDict(top, ARGUMENTS, 1), id, NULL);
|
||||
addIdArg(tr_variantDictAddDict(top, ARGUMENTS, 1), id, nullptr);
|
||||
status |= flush(rpcurl, &top);
|
||||
}
|
||||
|
||||
|
@ -2909,7 +2916,7 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
|
||||
case 'w':
|
||||
{
|
||||
tr_variant* args = tadd != NULL ? tr_variantDictFind(tadd, TR_KEY_arguments) : ensure_sset(&sset);
|
||||
tr_variant* args = tadd != nullptr ? tr_variantDictFind(tadd, TR_KEY_arguments) : ensure_sset(&sset);
|
||||
tr_variantDictAddStr(args, TR_KEY_download_dir, optarg);
|
||||
break;
|
||||
}
|
||||
|
@ -2956,16 +2963,16 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
{
|
||||
tr_variant* top;
|
||||
|
||||
if (tset != NULL)
|
||||
if (tset != nullptr)
|
||||
{
|
||||
addIdArg(tr_variantDictFind(tset, ARGUMENTS), id, NULL);
|
||||
addIdArg(tr_variantDictFind(tset, ARGUMENTS), id, nullptr);
|
||||
status |= flush(rpcurl, &tset);
|
||||
}
|
||||
|
||||
top = tr_new0(tr_variant, 1);
|
||||
tr_variantInitDict(top, 2);
|
||||
tr_variantDictAddStr(top, TR_KEY_method, "torrent-reannounce");
|
||||
addIdArg(tr_variantDictAddDict(top, ARGUMENTS, 1), id, NULL);
|
||||
addIdArg(tr_variantDictAddDict(top, ARGUMENTS, 1), id, nullptr);
|
||||
status |= flush(rpcurl, &top);
|
||||
break;
|
||||
}
|
||||
|
@ -2974,16 +2981,16 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
{
|
||||
tr_variant* top;
|
||||
|
||||
if (tset != NULL)
|
||||
if (tset != nullptr)
|
||||
{
|
||||
addIdArg(tr_variantDictFind(tset, ARGUMENTS), id, NULL);
|
||||
addIdArg(tr_variantDictFind(tset, ARGUMENTS), id, nullptr);
|
||||
status |= flush(rpcurl, &tset);
|
||||
}
|
||||
|
||||
top = tr_new0(tr_variant, 1);
|
||||
tr_variantInitDict(top, 2);
|
||||
tr_variantDictAddStr(top, TR_KEY_method, "torrent-verify");
|
||||
addIdArg(tr_variantDictAddDict(top, ARGUMENTS, 1), id, NULL);
|
||||
addIdArg(tr_variantDictAddDict(top, ARGUMENTS, 1), id, nullptr);
|
||||
status |= flush(rpcurl, &top);
|
||||
break;
|
||||
}
|
||||
|
@ -2997,7 +3004,7 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
tr_variantDictAddStr(top, TR_KEY_method, "torrent-remove");
|
||||
args = tr_variantDictAddDict(top, ARGUMENTS, 2);
|
||||
tr_variantDictAddBool(args, TR_KEY_delete_local_data, c == 840);
|
||||
addIdArg(args, id, NULL);
|
||||
addIdArg(args, id, nullptr);
|
||||
status |= flush(rpcurl, &top);
|
||||
break;
|
||||
}
|
||||
|
@ -3011,7 +3018,7 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
args = tr_variantDictAddDict(top, ARGUMENTS, 3);
|
||||
tr_variantDictAddStr(args, TR_KEY_location, optarg);
|
||||
tr_variantDictAddBool(args, TR_KEY_move, true);
|
||||
addIdArg(args, id, NULL);
|
||||
addIdArg(args, id, nullptr);
|
||||
status |= flush(rpcurl, &top);
|
||||
break;
|
||||
}
|
||||
|
@ -3026,18 +3033,18 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
}
|
||||
}
|
||||
|
||||
if (tadd != NULL)
|
||||
if (tadd != nullptr)
|
||||
{
|
||||
status |= flush(rpcurl, &tadd);
|
||||
}
|
||||
|
||||
if (tset != NULL)
|
||||
if (tset != nullptr)
|
||||
{
|
||||
addIdArg(tr_variantDictFind(tset, ARGUMENTS), id, NULL);
|
||||
addIdArg(tr_variantDictFind(tset, ARGUMENTS), id, nullptr);
|
||||
status |= flush(rpcurl, &tset);
|
||||
}
|
||||
|
||||
if (sset != NULL)
|
||||
if (sset != nullptr)
|
||||
{
|
||||
status |= flush(rpcurl, &sset);
|
||||
}
|
||||
|
@ -3050,9 +3057,9 @@ static bool parsePortString(char const* s, int* port)
|
|||
int const errno_stack = errno;
|
||||
errno = 0;
|
||||
|
||||
char* end = NULL;
|
||||
char* end = nullptr;
|
||||
int const i = (int)strtol(s, &end, 10);
|
||||
bool const ok = (end != NULL) && (*end == '\0') && (errno == 0);
|
||||
bool const ok = (end != nullptr) && (*end == '\0') && (errno == 0);
|
||||
if (ok)
|
||||
{
|
||||
*port = i;
|
||||
|
@ -3086,7 +3093,7 @@ static void getHostAndPortAndRpcUrl(int* argc, char** argv, char** host, int* po
|
|||
{
|
||||
// it was just a port
|
||||
}
|
||||
else if (last_colon == NULL)
|
||||
else if (last_colon == nullptr)
|
||||
{
|
||||
// it was a non-ipv6 host with no port
|
||||
*host = tr_strdup(s);
|
||||
|
@ -3105,7 +3112,7 @@ static void getHostAndPortAndRpcUrl(int* argc, char** argv, char** host, int* po
|
|||
hend = s + strlen(s);
|
||||
}
|
||||
|
||||
bool const is_unbracketed_ipv6 = (*s != '[') && (memchr(s, ':', hend - s) != NULL);
|
||||
bool const is_unbracketed_ipv6 = (*s != '[') && (memchr(s, ':', hend - s) != nullptr);
|
||||
|
||||
*host = is_unbracketed_ipv6 ? tr_strdup_printf("[%*s]", TR_ARG_TUPLE((int)(hend - s), s)) : tr_strndup(s, hend - s);
|
||||
}
|
||||
|
@ -3121,8 +3128,8 @@ static void getHostAndPortAndRpcUrl(int* argc, char** argv, char** host, int* po
|
|||
int tr_main(int argc, char* argv[])
|
||||
{
|
||||
int port = DEFAULT_PORT;
|
||||
char* host = NULL;
|
||||
char* rpcurl = NULL;
|
||||
char* host = nullptr;
|
||||
char* rpcurl = nullptr;
|
||||
int exit_status = EXIT_SUCCESS;
|
||||
|
||||
if (argc < 2)
|
||||
|
@ -3137,12 +3144,12 @@ int tr_main(int argc, char* argv[])
|
|||
|
||||
getHostAndPortAndRpcUrl(&argc, argv, &host, &port, &rpcurl);
|
||||
|
||||
if (host == NULL)
|
||||
if (host == nullptr)
|
||||
{
|
||||
host = tr_strdup(DEFAULT_HOST);
|
||||
}
|
||||
|
||||
if (rpcurl == NULL)
|
||||
if (rpcurl == nullptr)
|
||||
{
|
||||
rpcurl = tr_strdup_printf("%s:%d%s", host, port, DEFAULT_URL);
|
||||
}
|
||||
|
|
|
@ -28,11 +28,11 @@
|
|||
#define TIMEOUT_SECS 30
|
||||
|
||||
static tr_option options[] = {
|
||||
{ 'm', "magnet", "Give a magnet link for the specified torrent", "m", false, NULL },
|
||||
{ 's', "scrape", "Ask the torrent's trackers how many peers are in the torrent's swarm", "s", false, NULL },
|
||||
{ 'u', "unsorted", "Do not sort files by name", "u", false, NULL },
|
||||
{ 'V', "version", "Show version number and exit", "V", false, NULL },
|
||||
{ 0, NULL, NULL, NULL, false, NULL }
|
||||
{ 'm', "magnet", "Give a magnet link for the specified torrent", "m", false, nullptr },
|
||||
{ 's', "scrape", "Ask the torrent's trackers how many peers are in the torrent's swarm", "s", false, nullptr },
|
||||
{ 'u', "unsorted", "Do not sort files by name", "u", false, nullptr },
|
||||
{ 'V', "version", "Show version number and exit", "V", false, nullptr },
|
||||
{ 0, nullptr, nullptr, nullptr, false, nullptr }
|
||||
};
|
||||
|
||||
static char const* getUsage(void)
|
||||
|
@ -44,7 +44,7 @@ static bool magnetFlag = false;
|
|||
static bool scrapeFlag = false;
|
||||
static bool unsorted = false;
|
||||
static bool showVersion = false;
|
||||
char const* filename = NULL;
|
||||
char const* filename = nullptr;
|
||||
|
||||
static int parseCommandLine(int argc, char const* const* argv)
|
||||
{
|
||||
|
@ -224,14 +224,14 @@ static void doScrape(tr_info const* inf)
|
|||
char* url;
|
||||
char escaped[SHA_DIGEST_LENGTH * 3 + 1];
|
||||
|
||||
if (scrape == NULL)
|
||||
if (scrape == nullptr)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
tr_http_escape_sha1(escaped, inf->hash);
|
||||
|
||||
url = tr_strdup_printf("%s%cinfo_hash=%s", scrape, strchr(scrape, '?') != NULL ? '&' : '?', escaped);
|
||||
url = tr_strdup_printf("%s%cinfo_hash=%s", scrape, strchr(scrape, '?') != nullptr ? '&' : '?', escaped);
|
||||
|
||||
printf("%s ... ", url);
|
||||
fflush(stdout);
|
||||
|
@ -271,7 +271,7 @@ static void doScrape(tr_info const* inf)
|
|||
|
||||
while (tr_variantDictChild(files, child_pos, &key, &val))
|
||||
{
|
||||
if (memcmp(inf->hash, tr_quark_get_string(key, NULL), SHA_DIGEST_LENGTH) == 0)
|
||||
if (memcmp(inf->hash, tr_quark_get_string(key, nullptr), SHA_DIGEST_LENGTH) == 0)
|
||||
{
|
||||
int64_t seeders;
|
||||
if (!tr_variantDictFindInt(val, TR_KEY_complete, &seeders))
|
||||
|
@ -332,7 +332,7 @@ int tr_main(int argc, char* argv[])
|
|||
}
|
||||
|
||||
/* make sure the user specified a filename */
|
||||
if (filename == NULL)
|
||||
if (filename == nullptr)
|
||||
{
|
||||
fprintf(stderr, "ERROR: No .torrent file specified.\n");
|
||||
tr_getopt_usage(MY_NAME, getUsage(), options);
|
||||
|
@ -341,7 +341,7 @@ int tr_main(int argc, char* argv[])
|
|||
}
|
||||
|
||||
/* try to parse the .torrent file */
|
||||
ctor = tr_ctorNew(NULL);
|
||||
ctor = tr_ctorNew(nullptr);
|
||||
tr_ctorSetMetainfoFromFile(ctor, filename);
|
||||
err = tr_torrentParse(ctor, &inf);
|
||||
tr_ctorFree(ctor);
|
||||
|
|
Loading…
Reference in New Issue