mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2025-12-18 06:28:03 -06:00
Fix release CMake build
write() is declared with __attribute__ ((__warn_unused_result__)) and as such we shall check its return value. Took opportunity and adjusted error reporting a bit: if writing to stderr fails, try to write to stdout.
This commit is contained in:
committed by
sledgehammer999
parent
a6cf386073
commit
943a837570
@@ -121,6 +121,10 @@ struct QBtCommandLineParameters
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if !defined Q_OS_WIN && !defined Q_OS_HAIKU
|
||||||
|
void reportToUser(const char* str);
|
||||||
|
#endif
|
||||||
|
|
||||||
void displayVersion();
|
void displayVersion();
|
||||||
void displayUsage(const QString &prg_name);
|
void displayUsage(const QString &prg_name);
|
||||||
bool userAgreesWithLegalNotice();
|
bool userAgreesWithLegalNotice();
|
||||||
@@ -353,6 +357,17 @@ QBtCommandLineParameters parseCommandLine()
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if !defined Q_OS_WIN && !defined Q_OS_HAIKU
|
||||||
|
void reportToUser(const char* str)
|
||||||
|
{
|
||||||
|
const size_t strLen = strlen(str);
|
||||||
|
if (write(STDERR_FILENO, str, strLen) < static_cast<ssize_t>(strLen)) {
|
||||||
|
auto dummy = write(STDOUT_FILENO, str, strLen);
|
||||||
|
Q_UNUSED(dummy);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(Q_OS_UNIX) || defined(STACKTRACE_WIN)
|
#if defined(Q_OS_UNIX) || defined(STACKTRACE_WIN)
|
||||||
void sigNormalHandler(int signum)
|
void sigNormalHandler(int signum)
|
||||||
{
|
{
|
||||||
@@ -360,9 +375,9 @@ void sigNormalHandler(int signum)
|
|||||||
const char str1[] = "Catching signal: ";
|
const char str1[] = "Catching signal: ";
|
||||||
const char *sigName = sysSigName[signum];
|
const char *sigName = sysSigName[signum];
|
||||||
const char str2[] = "\nExiting cleanly\n";
|
const char str2[] = "\nExiting cleanly\n";
|
||||||
write(STDERR_FILENO, str1, strlen(str1));
|
reportToUser(str1);
|
||||||
write(STDERR_FILENO, sigName, strlen(sigName));
|
reportToUser(sigName);
|
||||||
write(STDERR_FILENO, str2, strlen(str2));
|
reportToUser(str2);
|
||||||
#endif // !defined Q_OS_WIN && !defined Q_OS_HAIKU
|
#endif // !defined Q_OS_WIN && !defined Q_OS_HAIKU
|
||||||
signal(signum, SIG_DFL);
|
signal(signum, SIG_DFL);
|
||||||
qApp->exit(); // unsafe, but exit anyway
|
qApp->exit(); // unsafe, but exit anyway
|
||||||
@@ -375,9 +390,9 @@ void sigAbnormalHandler(int signum)
|
|||||||
const char *sigName = sysSigName[signum];
|
const char *sigName = sysSigName[signum];
|
||||||
const char str2[] = "\nPlease file a bug report at http://bug.qbittorrent.org and provide the following information:\n\n"
|
const char str2[] = "\nPlease file a bug report at http://bug.qbittorrent.org and provide the following information:\n\n"
|
||||||
"qBittorrent version: " QBT_VERSION "\n";
|
"qBittorrent version: " QBT_VERSION "\n";
|
||||||
write(STDERR_FILENO, str1, strlen(str1));
|
reportToUser(str1);
|
||||||
write(STDERR_FILENO, sigName, strlen(sigName));
|
reportToUser(sigName);
|
||||||
write(STDERR_FILENO, str2, strlen(str2));
|
reportToUser(str2);
|
||||||
print_stacktrace(); // unsafe
|
print_stacktrace(); // unsafe
|
||||||
#endif // !defined Q_OS_WIN && !defined Q_OS_HAIKU
|
#endif // !defined Q_OS_WIN && !defined Q_OS_HAIKU
|
||||||
#ifdef STACKTRACE_WIN
|
#ifdef STACKTRACE_WIN
|
||||||
|
|||||||
Reference in New Issue
Block a user