Skip to content

Commit cfd7b33

Browse files
committed
Temporarily disable the poorly designed dynamic library system
1 parent 5890207 commit cfd7b33

File tree

15 files changed

+179
-127
lines changed

15 files changed

+179
-127
lines changed

CMakeLists.txt

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,13 @@ set(SOURCE_FILES_LIBRARY
2727
Library/Tool.hpp Library/Tool.cpp
2828
# Library/Transport.cpp Library/Transport.hpp
2929
Library/Instance.cpp Library/Instance.hpp
30-
Library/Utils.cpp Library/Utils.hpp)
30+
Library/Utils.cpp Library/Utils.hpp Tools/Tools.hpp
31+
Tools/MouseMove/MouseMove.hpp Tools/MouseMove/MouseMove.cpp
32+
Tools/Key/Key.hpp Tools/Key/Key.cpp
33+
Tools/Click/Click.hpp Tools/Click/Click.cpp
34+
Tools/Type/Type.hpp Tools/Type/Type.cpp
35+
Tools/Recorder/Recorder.cpp Tools/Recorder/Recorder.hpp
36+
)
3137
# Library/Transports/UnixSocket.cpp Library/Transports/UnixSocket.hpp )
3238

3339
set(SOURCE_FILES_DAEMON
@@ -54,22 +60,26 @@ add_executable(ydotool_client ${SOURCE_FILES_CLIENT})
5460
target_link_libraries(ydotool_client ydotool_library boost_program_options uInputPlus evdevPlus)
5561
set_target_properties(ydotool_client PROPERTIES OUTPUT_NAME ydotool)
5662

57-
add_library(mousemove SHARED Tools/MouseMove/MouseMove.hpp Tools/MouseMove/MouseMove.cpp)
58-
target_link_libraries(mousemove ydotool_library boost_program_options uInputPlus evdevPlus)
59-
60-
add_library(key SHARED Tools/Key/Key.hpp Tools/Key/Key.cpp)
61-
target_link_libraries(key ydotool_library boost_program_options uInputPlus evdevPlus)
62-
63-
add_library(click SHARED Tools/Click/Click.hpp Tools/Click/Click.cpp)
64-
target_link_libraries(click ydotool_library boost_program_options uInputPlus evdevPlus)
65-
66-
add_library(type SHARED Tools/Type/Type.hpp Tools/Type/Type.cpp)
67-
target_link_libraries(type ydotool_library boost_program_options uInputPlus evdevPlus)
68-
69-
add_library(recorder SHARED Tools/Recorder/Recorder.cpp Tools/Recorder/Recorder.hpp)
70-
target_link_libraries(recorder ydotool_library boost_program_options uInputPlus evdevPlus)
63+
add_executable(ydotool_client_static ${SOURCE_FILES_CLIENT})
64+
target_link_libraries(ydotool_client_static ydotool_library_static boost_program_options uInputPlus evdevPlus -static)
65+
set_target_properties(ydotool_client_static PROPERTIES OUTPUT_NAME ydotool_static)
66+
67+
#add_library(mousemove SHARED Tools/MouseMove/MouseMove.hpp Tools/MouseMove/MouseMove.cpp)
68+
#target_link_libraries(mousemove ydotool_library boost_program_options uInputPlus evdevPlus)
69+
#
70+
#add_library(key SHARED Tools/Key/Key.hpp Tools/Key/Key.cpp)
71+
#target_link_libraries(key ydotool_library boost_program_options uInputPlus evdevPlus)
72+
#
73+
#add_library(click SHARED Tools/Click/Click.hpp Tools/Click/Click.cpp)
74+
#target_link_libraries(click ydotool_library boost_program_options uInputPlus evdevPlus)
75+
#
76+
#add_library(type SHARED Tools/Type/Type.hpp Tools/Type/Type.cpp)
77+
#target_link_libraries(type ydotool_library boost_program_options uInputPlus evdevPlus)
78+
#
79+
#add_library(recorder SHARED Tools/Recorder/Recorder.cpp Tools/Recorder/Recorder.hpp)
80+
#target_link_libraries(recorder ydotool_library boost_program_options uInputPlus evdevPlus)
7181

7282

7383
install(TARGETS ydotool_library ydotool_library_static DESTINATION lib)
74-
install(TARGETS mousemove key click type recorder DESTINATION lib/ydotool)
84+
#install(TARGETS mousemove key click type recorder DESTINATION lib/ydotool)
7585
install(TARGETS ydotoold ydotool_client DESTINATION bin)

Client/ydotool.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ static void ShowHelp() {
2323
std::cerr << "Usage: ydotool <cmd> <args>\n"
2424
"Available commands:\n";
2525

26-
for (auto &it : tool_mgr.dl_handles) {
26+
for (auto &it : tool_mgr.init_funcs) {
2727
std::cerr << " " << it.first << std::endl;
2828
}
2929

@@ -88,11 +88,11 @@ const char default_library_path[] = "/usr/local/lib/ydotool:/usr/lib/ydotool:/us
8888
int main(int argc, const char **argv) {
8989
const char *library_path = default_library_path;
9090

91-
std::cerr << "ydotool: library search path: " << library_path << "\n";
91+
// std::cerr << "ydotool: library search path: " << library_path << "\n";
9292

93-
for (auto &it : explode(library_path, ':')) {
94-
tool_mgr.ScanPath(it);
95-
}
93+
// for (auto &it : explode(library_path, ':')) {
94+
// tool_mgr.ScanPath(it);
95+
// }
9696

9797
if (argc < 2) {
9898
ShowHelp();

Library/Tool.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
#include "Tool.hpp"
1414
#include "Utils.hpp"
1515

16+
#include "../Tools/Tools.hpp"
17+
1618
using namespace ydotool::Tool;
1719

1820
void ToolTemplate::Init(std::shared_ptr<ydotool::Instance> &__ydotool_instance) {
@@ -56,3 +58,14 @@ void ToolManager::TryDlOpen(const std::string &__path) {
5658
dl_handles[tool_name] = handle;
5759
init_funcs[tool_name] = tool_fptr;
5860
}
61+
62+
ToolManager::ToolManager() {
63+
auto &i = init_funcs;
64+
65+
66+
i["click"] = (void *)&Tools::Click::construct;
67+
i["key"] = (void *)&Tools::Key::construct;
68+
i["mousemove"] = (void *)&Tools::MouseMove::construct;
69+
i["recorder"] = (void *)&Tools::Recorder::construct;
70+
i["type"] = (void *)&Tools::Type::construct;
71+
}

Library/Tool.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ namespace ydotool {
3434

3535
class ToolManager {
3636
public:
37-
ToolManager() = default;
37+
ToolManager();
3838

3939
std::unordered_map<std::string, void *> dl_handles;
4040
std::unordered_map<std::string, void *> init_funcs;

Tools/Click/Click.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,16 @@
1212

1313
#include "Click.hpp"
1414

15-
extern "C" {
1615

17-
const char ydotool_tool_name[] = "click";
16+
static const char ydotool_tool_name[] = "click";
1817

19-
void *ydotool_tool_construct() {
20-
return (void *) (new Click());
21-
}
18+
using namespace ydotool::Tools;
2219

20+
const char *Click::Name() {
21+
return ydotool_tool_name;
2322
}
2423

24+
2525
static void ShowHelp(){
2626
std::cerr << "Usage: click [--delay <ms>] <button>\n"
2727
<< " --help Show this help.\n"
@@ -105,3 +105,4 @@ int Click::Exec(int argc, const char **argv) {
105105

106106
return argc;
107107
}
108+

Tools/Click/Click.hpp

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,23 +15,23 @@
1515

1616
#include "../../Library/Tool.hpp"
1717

18-
using namespace ydotool;
19-
using namespace uInputPlus;
2018
namespace po = boost::program_options;
2119

22-
extern "C" {
23-
extern const char ydotool_tool_name[];
24-
}
20+
namespace ydotool {
21+
namespace Tools {
22+
class Click : public Tool::ToolTemplate {
23+
private:
2524

26-
class Click : public Tool::ToolTemplate {
27-
private:
25+
public:
26+
const char *Name() override;
2827

29-
public:
30-
const char *Name() override {
31-
return ydotool_tool_name;
32-
}
28+
int Exec(int argc, const char **argv) override;
3329

34-
int Exec(int argc, const char **argv) override;
35-
};
30+
static void *construct() {
31+
return (void *)(new Click());
32+
}
33+
};
34+
}
35+
}
3636

3737
#endif //YDOTOOL_TOOL_CLICK_HPP

Tools/Key/Key.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,12 @@
1313
#include "Key.hpp"
1414

1515
using namespace evdevPlus;
16+
using namespace ydotool::Tools;
1617

17-
extern "C" {
1818

1919
const char ydotool_tool_name[] = "key";
2020

21-
void *ydotool_tool_construct() {
22-
return (void *) (new Key());
23-
}
2421

25-
}
2622

2723
static int time_keydelay = 12;
2824

@@ -93,6 +89,9 @@ static std::vector<int> KeyStroke2Code(const std::string &ks) {
9389
return list_keycodes;
9490
}
9591

92+
const char *Key::Name() {
93+
return ydotool_tool_name;
94+
}
9695

9796
int Key::EmitKeyCodes(long key_delay, const std::vector<std::vector<int>> &list_keycodes) {
9897
auto sleep_time = (uint)(key_delay * 1000 / (list_keycodes.size() * 2));
@@ -213,3 +212,5 @@ int Key::Exec(int argc, const char **argv) {
213212

214213
return argc;
215214
}
215+
216+

Tools/Key/Key.hpp

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,25 +15,25 @@
1515

1616
#include "../../Library/Tool.hpp"
1717

18-
using namespace ydotool;
19-
using namespace uInputPlus;
2018
namespace po = boost::program_options;
2119

22-
extern "C" {
23-
extern const char ydotool_tool_name[];
24-
}
20+
namespace ydotool {
21+
namespace Tools {
22+
class Key : public Tool::ToolTemplate {
23+
private:
2524

26-
class Key : public Tool::ToolTemplate {
27-
private:
25+
public:
26+
const char *Name() override;
2827

29-
public:
30-
const char *Name() override {
31-
return ydotool_tool_name;
32-
}
28+
int Exec(int argc, const char **argv) override;
3329

34-
int Exec(int argc, const char **argv) override;
30+
int EmitKeyCodes(long key_delay, const std::vector<std::vector<int>> &list_keycodes);
3531

36-
int EmitKeyCodes(long key_delay, const std::vector<std::vector<int>> &list_keycodes);
37-
};
32+
static void *construct() {
33+
return (void *)(new Key());
34+
}
35+
};
36+
}
37+
}
3838

3939
#endif //YDOTOOL_TOOL_KEY_HPP

Tools/MouseMove/MouseMove.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,10 @@
1212

1313
#include "MouseMove.hpp"
1414

15-
extern "C" {
15+
using namespace ydotool::Tools;
1616

1717
const char ydotool_tool_name[] = "mousemove";
1818

19-
void *ydotool_tool_construct() {
20-
return (void *) (new MouseMove());
21-
}
22-
23-
}
24-
2519

2620
static int time_keydelay = 12;
2721

@@ -31,6 +25,11 @@ static void ShowHelp(const char *argv_0){
3125
<< " --delay ms Delay time before start moving. Default 100ms." << std::endl;
3226
}
3327

28+
const char *MouseMove::Name() {
29+
return ydotool_tool_name;
30+
}
31+
32+
3433
int MouseMove::Exec(int argc, const char **argv) {
3534
std::cout << "argc = " << argc << "\n";
3635

@@ -100,3 +99,4 @@ int MouseMove::Exec(int argc, const char **argv) {
10099

101100
return argc;
102101
}
102+

Tools/MouseMove/MouseMove.hpp

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,23 +15,26 @@
1515

1616
#include "../../Library/Tool.hpp"
1717

18-
using namespace ydotool;
19-
using namespace uInputPlus;
18+
2019
namespace po = boost::program_options;
2120

22-
extern "C" {
23-
extern const char ydotool_tool_name[];
24-
}
2521

26-
class MouseMove : public Tool::ToolTemplate {
27-
private:
22+
namespace ydotool {
23+
namespace Tools {
24+
class MouseMove : public Tool::ToolTemplate {
25+
private:
26+
27+
public:
28+
const char *Name() override;
2829

29-
public:
30-
const char *Name() override {
31-
return ydotool_tool_name;
30+
int Exec(int argc, const char **argv) override;
31+
32+
static void *construct() {
33+
return (void *)(new MouseMove());
34+
}
35+
};
3236
}
37+
}
3338

34-
int Exec(int argc, const char **argv) override;
35-
};
3639

3740
#endif //YDOTOOL_TOOL_MOUSEMOVE_HPP

0 commit comments

Comments
 (0)