diff --git a/ChangeLog b/ChangeLog
index f26ef9765..86a51f529 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+===========
+Bug fixes:
+- #6831 Incorporating Sonar's major
+
+Enhancements:
+
v1.12.x-snapshot
===========
Bug fixes:
diff --git a/src/lib/arch/unix/ArchFileUnix.cpp b/src/lib/arch/unix/ArchFileUnix.cpp
index 4558720c3..bbf841640 100644
--- a/src/lib/arch/unix/ArchFileUnix.cpp
+++ b/src/lib/arch/unix/ArchFileUnix.cpp
@@ -61,7 +61,7 @@ ArchFileUnix::getUserDirectory()
std::string dir;
#if HAVE_GETPWUID_R
struct passwd pwent;
- struct passwd* pwentp;
+ struct passwd* pwentp {};
#if defined(_SC_GETPW_R_SIZE_MAX)
long size = sysconf(_SC_GETPW_R_SIZE_MAX);
if (size == -1) {
diff --git a/src/lib/platform/XWindowsScreen.cpp b/src/lib/platform/XWindowsScreen.cpp
index 84035d4f6..7bd0ba8c7 100644
--- a/src/lib/platform/XWindowsScreen.cpp
+++ b/src/lib/platform/XWindowsScreen.cpp
@@ -848,12 +848,7 @@ void
XWindowsScreen::fakeMouseRelativeMove(SInt32 dx, SInt32 dy) const
{
// FIXME -- ignore xinerama for now
- if (false && m_xinerama && m_xtestIsXineramaUnaware) {
-// XWarpPointer(m_display, None, m_root, 0, 0, 0, 0, x, y);
- }
- else {
- XTestFakeRelativeMotionEvent(m_display, dx, dy, CurrentTime);
- }
+ XTestFakeRelativeMotionEvent(m_display, dx, dy, CurrentTime);
XFlush(m_display);
}
diff --git a/src/lib/synergy/ArgParser.cpp b/src/lib/synergy/ArgParser.cpp
index 388140167..d14277c23 100644
--- a/src/lib/synergy/ArgParser.cpp
+++ b/src/lib/synergy/ArgParser.cpp
@@ -174,28 +174,24 @@ ArgParser::parsePlatformArg(lib::synergy::ArgsBase& argsBase, const int& argc, c
bool
ArgParser::parseToolArgs(ToolArgs& args, int argc, const char* const* argv)
{
- for (int i = 1; i < argc; ++i) {
- if (isArg(i, argc, argv, NULL, "--get-active-desktop", 0)) {
- args.m_printActiveDesktopName = true;
- return true;
- }
- else if (isArg(i, argc, argv, NULL, "--get-installed-dir", 0)) {
- args.m_getInstalledDir = true;
- return true;
- }
- else if (isArg(i, argc, argv, NULL, "--get-profile-dir", 0)) {
- args.m_getProfileDir = true;
- return true;
- }
- else if (isArg(i, argc, argv, NULL, "--get-arch", 0)) {
- args.m_getArch = true;
- return true;
- }
- else {
- return false;
- }
+ // We support exactly one argument at a fix position
+ static const int only_index {1};
+ if (isArg(only_index, argc, argv, NULL, "--get-active-desktop", 0)) {
+ args.m_printActiveDesktopName = true;
+ return true;
+ }
+ else if (isArg(only_index, argc, argv, NULL, "--get-installed-dir", 0)) {
+ args.m_getInstalledDir = true;
+ return true;
+ }
+ else if (isArg(only_index, argc, argv, NULL, "--get-profile-dir", 0)) {
+ args.m_getProfileDir = true;
+ return true;
+ }
+ else if (isArg(only_index, argc, argv, NULL, "--get-arch", 0)) {
+ args.m_getArch = true;
+ return true;
}
-
return false;
}
diff --git a/src/test/unittests/synergy/ArgParserTests.cpp b/src/test/unittests/synergy/ArgParserTests.cpp
index 8b1211427..d7176b360 100644
--- a/src/test/unittests/synergy/ArgParserTests.cpp
+++ b/src/test/unittests/synergy/ArgParserTests.cpp
@@ -15,8 +15,12 @@
* along with this program. If not, see .
*/
+#include
+#include
+
#include "synergy/ArgParser.h"
#include "synergy/ArgsBase.h"
+#include "synergy/ToolArgs.h"
#include "test/global/gtest.h"
@@ -205,3 +209,24 @@ TEST(ArgParserTests, assembleCommand_stringArrayWithSpace_returnCommand)
EXPECT_EQ("\"stub1 space\" stub2 \"stub3 space\"", command);
}
+TEST(ArgParserTests, parseToolArgs_matches_correspondingly)
+{
+ ArgParser parser(nullptr);
+ std::map> tests = {
+ {"--get-active-desktop", [](ToolArgs const &a){ return a.m_printActiveDesktopName; }},
+ {"--get-installed-dir", [](ToolArgs const &a){ return a.m_getInstalledDir; }},
+ {"--get-profile-dir", [](ToolArgs const &a){ return a.m_getProfileDir; }},
+ {"--get-arch", [](ToolArgs const &a){ return a.m_getArch; }}
+ };
+ for (auto const &test: tests) {
+ ToolArgs toolArgs;
+ EXPECT_FALSE(test.second(toolArgs));
+ std::array twoArgs {"syntool", test.first};
+ EXPECT_TRUE(parser.parseToolArgs(toolArgs, 2, twoArgs.data()));
+ EXPECT_TRUE(test.second(toolArgs));
+ }
+ ToolArgs toolArgs;
+ std::array twoArgs {"syntool", "--garbage"};
+ EXPECT_FALSE(parser.parseToolArgs(toolArgs, 2, twoArgs.data()));
+}
+