Better compiler name and version handling on Linux and macOS for user-agent string.

This commit is contained in:
XMRig 2018-11-20 08:18:39 +07:00
parent 0c930e277b
commit c06f77b9e9
3 changed files with 14 additions and 14 deletions

View file

@ -40,22 +40,20 @@
char *Platform::createUserAgent() char *Platform::createUserAgent()
{ {
const size_t max = 160; constexpr const size_t max = 256;
char *buf = new char[max]; char *buf = new char[max]();
int length = snprintf(buf, max, "%s/%s (Macintosh; Intel Mac OS X) libuv/%s", APP_NAME, APP_VERSION, uv_version_string());
# ifdef XMRIG_NVIDIA_PROJECT # ifdef XMRIG_NVIDIA_PROJECT
const int cudaVersion = cuda_get_runtime_version(); const int cudaVersion = cuda_get_runtime_version();
snprintf(buf, max, "%s/%s (Macintosh; Intel Mac OS X) libuv/%s CUDA/%d.%d", APP_NAME, APP_VERSION, uv_version_string(), cudaVersion / 1000, cudaVersion % 100); length += snprintf(buf + length, max - length, " CUDA/%d.%d", cudaVersion / 1000, cudaVersion % 100);
# else
snprintf(buf, max, "%s/%s (Macintosh; Intel Mac OS X) libuv/%s", APP_NAME, APP_VERSION, uv_version_string());
# endif # endif
# ifdef __clang__ # ifdef __clang__
size_t i = strlen(buf); length += snprintf(buf + length, max - length, " clang/%d.%d.%d", __clang_major__, __clang_minor__, __clang_patchlevel__);
snprintf(buf + i, max - i, " clang/%d.%d.%d", __clang_major__, __clang_minor__, __clang_patchlevel__);
# elif defined(__GNUC__) # elif defined(__GNUC__)
size_t i = strlen(buf); length += snprintf(buf + length, max - length, " gcc/%d.%d.%d", __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__);
snprintf(buf + i, max - i, " gcc/%d.%d.%d", __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__);
# endif # endif
return buf; return buf;

View file

@ -54,9 +54,9 @@ typedef cpuset_t cpu_set_t;
char *Platform::createUserAgent() char *Platform::createUserAgent()
{ {
const size_t max = 160; constexpr const size_t max = 256;
char *buf = new char[max]; char *buf = new char[max]();
int length = snprintf(buf, max, "%s/%s (Linux ", APP_NAME, APP_VERSION); int length = snprintf(buf, max, "%s/%s (Linux ", APP_NAME, APP_VERSION);
# if defined(__x86_64__) # if defined(__x86_64__)
@ -70,7 +70,9 @@ char *Platform::createUserAgent()
length += snprintf(buf + length, max - length, " CUDA/%d.%d", cudaVersion / 1000, cudaVersion % 100); length += snprintf(buf + length, max - length, " CUDA/%d.%d", cudaVersion / 1000, cudaVersion % 100);
# endif # endif
# ifdef __GNUC__ # ifdef __clang__
length += snprintf(buf + length, max - length, " clang/%d.%d.%d", __clang_major__, __clang_minor__, __clang_patchlevel__);
# elif defined(__GNUC__)
length += snprintf(buf + length, max - length, " gcc/%d.%d.%d", __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__); length += snprintf(buf + length, max - length, " gcc/%d.%d.%d", __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__);
# endif # endif

View file

@ -63,9 +63,9 @@ static inline OSVERSIONINFOEX winOsVersion()
char *Platform::createUserAgent() char *Platform::createUserAgent()
{ {
const auto osver = winOsVersion(); const auto osver = winOsVersion();
const size_t max = 160; constexpr const size_t max = 256;
char *buf = new char[max]; char *buf = new char[max]();
int length = snprintf(buf, max, "%s/%s (Windows NT %lu.%lu", APP_NAME, APP_VERSION, osver.dwMajorVersion, osver.dwMinorVersion); int length = snprintf(buf, max, "%s/%s (Windows NT %lu.%lu", APP_NAME, APP_VERSION, osver.dwMajorVersion, osver.dwMinorVersion);
# if defined(__x86_64__) || defined(_M_AMD64) # if defined(__x86_64__) || defined(_M_AMD64)