diff options
Diffstat (limited to 'platform/linuxbsd')
| -rw-r--r-- | platform/linuxbsd/SCsub | 5 | ||||
| -rw-r--r-- | platform/linuxbsd/crash_handler_linuxbsd.cpp | 2 | ||||
| -rw-r--r-- | platform/linuxbsd/detect.py | 41 | ||||
| -rw-r--r-- | platform/linuxbsd/detect_prime_x11.cpp | 3 | ||||
| -rw-r--r-- | platform/linuxbsd/display_server_x11.cpp | 53 | ||||
| -rw-r--r-- | platform/linuxbsd/display_server_x11.h | 4 | ||||
| -rw-r--r-- | platform/linuxbsd/joypad_linux.cpp | 82 | ||||
| -rw-r--r-- | platform/linuxbsd/joypad_linux.h | 13 | ||||
| -rw-r--r-- | platform/linuxbsd/libudev-so_wrap.c | 1013 | ||||
| -rw-r--r-- | platform/linuxbsd/libudev-so_wrap.h | 378 | ||||
| -rw-r--r-- | platform/linuxbsd/os_linuxbsd.cpp | 22 | 
11 files changed, 1532 insertions, 84 deletions
diff --git a/platform/linuxbsd/SCsub b/platform/linuxbsd/SCsub index 6e43ffcedb..46714e9502 100644 --- a/platform/linuxbsd/SCsub +++ b/platform/linuxbsd/SCsub @@ -16,7 +16,10 @@ common_x11 = [      "key_mapping_x11.cpp",  ] +if "udev" in env and env["udev"]: +    common_x11.append("libudev-so_wrap.c") +  prog = env.add_program("#bin/godot", ["godot_linuxbsd.cpp"] + common_x11) -if env["debug_symbols"] == "yes" and env["separate_debug_symbols"]: +if env["debug_symbols"] and env["separate_debug_symbols"]:      env.AddPostAction(prog, run_in_subprocess(platform_linuxbsd_builders.make_debug_linuxbsd)) diff --git a/platform/linuxbsd/crash_handler_linuxbsd.cpp b/platform/linuxbsd/crash_handler_linuxbsd.cpp index 90e34f8e77..ea0222cb19 100644 --- a/platform/linuxbsd/crash_handler_linuxbsd.cpp +++ b/platform/linuxbsd/crash_handler_linuxbsd.cpp @@ -104,7 +104,7 @@ static void handle_crash(int sig) {  			// Try to get the file/line number using addr2line  			int ret; -			Error err = OS::get_singleton()->execute(String("addr2line"), args, true, nullptr, &output, &ret); +			Error err = OS::get_singleton()->execute(String("addr2line"), args, &output, &ret);  			if (err == OK) {  				output.erase(output.length() - 1, 1);  			} diff --git a/platform/linuxbsd/detect.py b/platform/linuxbsd/detect.py index a819731328..6b527c6fb5 100644 --- a/platform/linuxbsd/detect.py +++ b/platform/linuxbsd/detect.py @@ -64,15 +64,16 @@ def get_opts():          BoolVariable("use_llvm", "Use the LLVM compiler", False),          BoolVariable("use_lld", "Use the LLD linker", False),          BoolVariable("use_thinlto", "Use ThinLTO", False), -        BoolVariable("use_static_cpp", "Link libgcc and libstdc++ statically for better portability", False), +        BoolVariable("use_static_cpp", "Link libgcc and libstdc++ statically for better portability", True),          BoolVariable("use_coverage", "Test Godot coverage", False),          BoolVariable("use_ubsan", "Use LLVM/GCC compiler undefined behavior sanitizer (UBSAN)", False),          BoolVariable("use_asan", "Use LLVM/GCC compiler address sanitizer (ASAN))", False),          BoolVariable("use_lsan", "Use LLVM/GCC compiler leak sanitizer (LSAN))", False),          BoolVariable("use_tsan", "Use LLVM/GCC compiler thread sanitizer (TSAN))", False), +        BoolVariable("use_msan", "Use LLVM/GCC compiler memory sanitizer (MSAN))", False),          BoolVariable("pulseaudio", "Detect and use PulseAudio", True), -        BoolVariable("udev", "Use udev for gamepad connection callbacks", False), -        EnumVariable("debug_symbols", "Add debugging symbols to release/release_debug builds", "yes", ("yes", "no")), +        BoolVariable("udev", "Use udev for gamepad connection callbacks", True), +        BoolVariable("debug_symbols", "Add debugging symbols to release/release_debug builds", True),          BoolVariable("separate_debug_symbols", "Create a separate file containing debugging symbols", False),          BoolVariable("touch", "Enable touch events", True),          BoolVariable("execinfo", "Use libexecinfo on systems where glibc is not available", False), @@ -89,20 +90,20 @@ def configure(env):      if env["target"] == "release":          if env["optimize"] == "speed":  # optimize for speed (default)              env.Prepend(CCFLAGS=["-O3"]) -        else:  # optimize for size +        elif env["optimize"] == "size":  # optimize for size              env.Prepend(CCFLAGS=["-Os"]) -        if env["debug_symbols"] == "yes": +        if env["debug_symbols"]:              env.Prepend(CCFLAGS=["-g2"])      elif env["target"] == "release_debug":          if env["optimize"] == "speed":  # optimize for speed (default)              env.Prepend(CCFLAGS=["-O2"]) -        else:  # optimize for size +        elif env["optimize"] == "size":  # optimize for size              env.Prepend(CCFLAGS=["-Os"])          env.Prepend(CPPDEFINES=["DEBUG_ENABLED"]) -        if env["debug_symbols"] == "yes": +        if env["debug_symbols"]:              env.Prepend(CCFLAGS=["-g2"])      elif env["target"] == "debug": @@ -142,7 +143,7 @@ def configure(env):          env.Append(CCFLAGS=["-ftest-coverage", "-fprofile-arcs"])          env.Append(LINKFLAGS=["-ftest-coverage", "-fprofile-arcs"]) -    if env["use_ubsan"] or env["use_asan"] or env["use_lsan"] or env["use_tsan"]: +    if env["use_ubsan"] or env["use_asan"] or env["use_lsan"] or env["use_tsan"] or env["use_msan"]:          env.extra_suffix += "s"          if env["use_ubsan"]: @@ -161,6 +162,10 @@ def configure(env):              env.Append(CCFLAGS=["-fsanitize=thread"])              env.Append(LINKFLAGS=["-fsanitize=thread"]) +        if env["use_msan"]: +            env.Append(CCFLAGS=["-fsanitize=memory"]) +            env.Append(LINKFLAGS=["-fsanitize=memory"]) +      if env["use_lto"]:          if not env["use_llvm"] and env.GetOption("num_jobs") > 1:              env.Append(CCFLAGS=["-flto"]) @@ -310,9 +315,8 @@ def configure(env):      if os.system("pkg-config --exists alsa") == 0:  # 0 means found          print("Enabling ALSA") +        env["alsa"] = True          env.Append(CPPDEFINES=["ALSA_ENABLED", "ALSAMIDI_ENABLED"]) -        # Don't parse --cflags, we don't need to add /usr/include/alsa to include path -        env.ParseConfig("pkg-config alsa --libs")      else:          print("ALSA libraries not found, disabling driver") @@ -320,20 +324,20 @@ def configure(env):          if os.system("pkg-config --exists libpulse") == 0:  # 0 means found              print("Enabling PulseAudio")              env.Append(CPPDEFINES=["PULSEAUDIO_ENABLED"]) -            env.ParseConfig("pkg-config --cflags --libs libpulse") +            env.ParseConfig("pkg-config --cflags libpulse")          else:              print("PulseAudio development libraries not found, disabling driver")      if platform.system() == "Linux":          env.Append(CPPDEFINES=["JOYDEV_ENABLED"]) -          if env["udev"]:              if os.system("pkg-config --exists libudev") == 0:  # 0 means found                  print("Enabling udev support")                  env.Append(CPPDEFINES=["UDEV_ENABLED"]) -                env.ParseConfig("pkg-config libudev --cflags --libs")              else:                  print("libudev development libraries not found, disabling udev support") +    else: +        env["udev"] = False  # Linux specific      # Linkflags below this line should typically stay the last ones      if not env["builtin_zlib"]: @@ -390,4 +394,13 @@ def configure(env):      # Link those statically for portability      if env["use_static_cpp"]: -        env.Append(LINKFLAGS=["-static-libgcc", "-static-libstdc++"]) +        # Workaround for GH-31743, Ubuntu 18.04 i386 crashes when it's used. +        # That doesn't make any sense but it's likely a Ubuntu bug? +        if is64 or env["bits"] == "64": +            env.Append(LINKFLAGS=["-static-libgcc", "-static-libstdc++"]) +        if env["use_llvm"]: +            env["LINKCOM"] = env["LINKCOM"] + " -l:libatomic.a" + +    else: +        if env["use_llvm"]: +            env.Append(LIBS=["atomic"]) diff --git a/platform/linuxbsd/detect_prime_x11.cpp b/platform/linuxbsd/detect_prime_x11.cpp index 0f8d108dff..da1c95a593 100644 --- a/platform/linuxbsd/detect_prime_x11.cpp +++ b/platform/linuxbsd/detect_prime_x11.cpp @@ -61,6 +61,7 @@ struct vendor {  vendor vendormap[] = {  	{ "Advanced Micro Devices, Inc.", 30 }, +	{ "AMD", 30 },  	{ "NVIDIA Corporation", 30 },  	{ "X.Org", 30 },  	{ "Intel Open Source Technology Center", 20 }, @@ -128,7 +129,7 @@ void create_context() {  int detect_prime() {  	pid_t p; -	int priorities[2]; +	int priorities[2] = {};  	String vendors[2];  	String renderers[2]; diff --git a/platform/linuxbsd/display_server_x11.cpp b/platform/linuxbsd/display_server_x11.cpp index 1ee5cd3923..8dc1b41702 100644 --- a/platform/linuxbsd/display_server_x11.cpp +++ b/platform/linuxbsd/display_server_x11.cpp @@ -191,7 +191,7 @@ void DisplayServerX11::alert(const String &p_alert, const String &p_title) {  	}  	if (program.length()) { -		OS::get_singleton()->execute(program, args, true); +		OS::get_singleton()->execute(program, args);  	} else {  		print_line(p_alert);  	} @@ -727,9 +727,9 @@ Point2i DisplayServerX11::screen_get_position(int p_screen) const {  	int count;  	XineramaScreenInfo *xsi = XineramaQueryScreens(x11_display, &count); -	if (p_screen >= count) { -		return Point2i(0, 0); -	} + +	// Check if screen is valid +	ERR_FAIL_INDEX_V(p_screen, count, Point2i(0, 0));  	Point2i position = Point2i(xsi[p_screen].x_org, xsi[p_screen].y_org); @@ -758,9 +758,9 @@ Rect2i DisplayServerX11::screen_get_usable_rect(int p_screen) const {  	int count;  	XineramaScreenInfo *xsi = XineramaQueryScreens(x11_display, &count); -	if (p_screen >= count) { -		return Rect2i(0, 0, 0, 0); -	} + +	// Check if screen is valid +	ERR_FAIL_INDEX_V(p_screen, count, Rect2i(0, 0, 0, 0));  	Rect2i rect = Rect2i(xsi[p_screen].x_org, xsi[p_screen].y_org, xsi[p_screen].width, xsi[p_screen].height);  	XFree(xsi); @@ -1041,11 +1041,13 @@ void DisplayServerX11::window_set_current_screen(int p_screen, WindowID p_window  	ERR_FAIL_COND(!windows.has(p_window));  	WindowData &wd = windows[p_window]; -	int count = get_screen_count(); -	if (p_screen >= count) { -		return; +	if (p_screen == SCREEN_OF_MAIN_WINDOW) { +		p_screen = window_get_current_screen();  	} +	// Check if screen is valid +	ERR_FAIL_INDEX(p_screen, get_screen_count()); +  	if (window_get_mode(p_window) == WINDOW_MODE_FULLSCREEN) {  		Point2i position = screen_get_position(p_screen);  		Size2i size = screen_get_size(p_screen); @@ -1915,7 +1917,7 @@ void DisplayServerX11::cursor_set_custom_image(const RES &p_cursor, CursorShape  		Rect2i atlas_rect;  		if (texture.is_valid()) { -			image = texture->get_data(); +			image = texture->get_image();  		}  		if (!image.is_valid() && atlas_texture.is_valid()) { @@ -1938,7 +1940,7 @@ void DisplayServerX11::cursor_set_custom_image(const RES &p_cursor, CursorShape  		ERR_FAIL_COND(texture_size.width > 256 || texture_size.height > 256);  		ERR_FAIL_COND(p_hotspot.x > texture_size.width || p_hotspot.y > texture_size.height); -		image = texture->get_data(); +		image = texture->get_image();  		ERR_FAIL_COND(!image.is_valid()); @@ -2010,7 +2012,7 @@ int DisplayServerX11::keyboard_get_layout_count() const {  		XkbGetNames(x11_display, XkbSymbolsNameMask, kbd);  		const Atom *groups = kbd->names->groups; -		if (kbd->ctrls != NULL) { +		if (kbd->ctrls != nullptr) {  			_group_count = kbd->ctrls->num_groups;  		} else {  			while (_group_count < XkbNumKbdGroups && groups[_group_count] != None) { @@ -2044,7 +2046,7 @@ String DisplayServerX11::keyboard_get_layout_language(int p_index) const {  		int _group_count = 0;  		const Atom *groups = kbd->names->groups; -		if (kbd->ctrls != NULL) { +		if (kbd->ctrls != nullptr) {  			_group_count = kbd->ctrls->num_groups;  		} else {  			while (_group_count < XkbNumKbdGroups && groups[_group_count] != None) { @@ -2083,7 +2085,7 @@ String DisplayServerX11::keyboard_get_layout_name(int p_index) const {  		int _group_count = 0;  		const Atom *groups = kbd->names->groups; -		if (kbd->ctrls != NULL) { +		if (kbd->ctrls != nullptr) {  			_group_count = kbd->ctrls->num_groups;  		} else {  			while (_group_count < XkbNumKbdGroups && groups[_group_count] != None) { @@ -2682,7 +2684,7 @@ bool DisplayServerX11::_wait_for_events() const {  	tv.tv_sec = 1;  	// Wait for next event or timeout. -	int num_ready_fds = select(x11_fd + 1, &in_fds, NULL, NULL, &tv); +	int num_ready_fds = select(x11_fd + 1, &in_fds, nullptr, nullptr, &tv);  	if (num_ready_fds > 0) {  		// Event received. @@ -2697,7 +2699,7 @@ bool DisplayServerX11::_wait_for_events() const {  }  void DisplayServerX11::_poll_events() { -	while (!events_thread_done) { +	while (!events_thread_done.is_set()) {  		_wait_for_events();  		// Process events from the queue. @@ -3296,7 +3298,7 @@ void DisplayServerX11::process_events() {  				if (xi.pressure_supported) {  					mm->set_pressure(xi.pressure);  				} else { -					mm->set_pressure((mouse_get_button_state() & (1 << (BUTTON_LEFT - 1))) ? 1.0f : 0.0f); +					mm->set_pressure((mouse_get_button_state() & (1 << (MOUSE_BUTTON_LEFT - 1))) ? 1.0f : 0.0f);  				}  				mm->set_tilt(xi.tilt); @@ -3360,7 +3362,7 @@ void DisplayServerX11::process_events() {  					Vector<String> files = String((char *)p.data).split("\n", false);  					for (int i = 0; i < files.size(); i++) { -						files.write[i] = files[i].replace("file://", "").http_unescape().strip_edges(); +						files.write[i] = files[i].replace("file://", "").uri_decode().strip_edges();  					}  					if (!windows[window_id].drop_files_callback.is_null()) { @@ -4028,7 +4030,10 @@ DisplayServerX11::DisplayServerX11(const String &p_rendering_driver, WindowMode  				use_prime = 0;  			} -			if (getenv("LD_LIBRARY_PATH")) { +			// Some tools use fake libGL libraries and have them override the real one using +			// LD_LIBRARY_PATH, so we skip them. *But* Steam also sets LD_LIBRARY_PATH for its +			// runtime and includes system `/lib` and `/lib64`... so ignore Steam. +			if (use_prime == -1 && getenv("LD_LIBRARY_PATH") && !getenv("STEAM_RUNTIME_LIBRARY_PATH")) {  				String ld_library_path(getenv("LD_LIBRARY_PATH"));  				Vector<String> libraries = ld_library_path.split(":"); @@ -4266,7 +4271,7 @@ DisplayServerX11::DisplayServerX11(const String &p_rendering_driver, WindowMode  		}  	} -	events_thread = Thread::create(_poll_events_thread, this); +	events_thread.start(_poll_events_thread, this);  	_update_real_mouse_position(windows[MAIN_WINDOW_ID]); @@ -4279,10 +4284,8 @@ DisplayServerX11::~DisplayServerX11() {  	_clipboard_transfer_ownership(XA_PRIMARY, x11_main_window);  	_clipboard_transfer_ownership(XInternAtom(x11_display, "CLIPBOARD", 0), x11_main_window); -	events_thread_done = true; -	Thread::wait_to_finish(events_thread); -	memdelete(events_thread); -	events_thread = nullptr; +	events_thread_done.set(); +	events_thread.wait_to_finish();  	//destroy all windows  	for (Map<WindowID, WindowData>::Element *E = windows.front(); E; E = E->next()) { diff --git a/platform/linuxbsd/display_server_x11.h b/platform/linuxbsd/display_server_x11.h index 7784ba82b5..10686d8424 100644 --- a/platform/linuxbsd/display_server_x11.h +++ b/platform/linuxbsd/display_server_x11.h @@ -252,8 +252,8 @@ class DisplayServerX11 : public DisplayServer {  	void _dispatch_input_event(const Ref<InputEvent> &p_event);  	mutable Mutex events_mutex; -	Thread *events_thread = nullptr; -	bool events_thread_done = false; +	Thread events_thread; +	SafeFlag events_thread_done;  	LocalVector<XEvent> polled_events;  	static void _poll_events_thread(void *ud);  	bool _wait_for_events() const; diff --git a/platform/linuxbsd/joypad_linux.cpp b/platform/linuxbsd/joypad_linux.cpp index 291ca49585..e8f4352dff 100644 --- a/platform/linuxbsd/joypad_linux.cpp +++ b/platform/linuxbsd/joypad_linux.cpp @@ -32,13 +32,14 @@  #include "joypad_linux.h" +#include <dirent.h>  #include <errno.h>  #include <fcntl.h>  #include <linux/input.h>  #include <unistd.h>  #ifdef UDEV_ENABLED -#include <libudev.h> +#include "libudev-so_wrap.h"  #endif  #define LONG_BITS (sizeof(long) * 8) @@ -61,7 +62,7 @@ void JoypadLinux::Joypad::reset() {  	dpad = 0;  	fd = -1; -	Input::JoyAxis jx; +	Input::JoyAxisValue jx;  	jx.min = -1;  	jx.value = 0.0f;  	for (int i = 0; i < MAX_ABS; i++) { @@ -71,15 +72,28 @@ void JoypadLinux::Joypad::reset() {  }  JoypadLinux::JoypadLinux(Input *in) { -	exit_udev = false; +#ifdef UDEV_ENABLED +#ifdef DEBUG_ENABLED +	int dylibloader_verbose = 1; +#else +	int dylibloader_verbose = 0; +#endif +	use_udev = initialize_libudev(dylibloader_verbose) == 0; +	if (use_udev) { +		print_verbose("JoypadLinux: udev enabled and loaded successfully."); +	} else { +		print_verbose("JoypadLinux: udev enabled, but couldn't be loaded. Falling back to /dev/input to detect joypads."); +	} +#else +	print_verbose("JoypadLinux: udev disabled, parsing /dev/input to detect joypads."); +#endif  	input = in; -	joy_thread = Thread::create(joy_thread_func, this); +	joy_thread.start(joy_thread_func, this);  }  JoypadLinux::~JoypadLinux() { -	exit_udev = true; -	Thread::wait_to_finish(joy_thread); -	memdelete(joy_thread); +	exit_monitor.set(); +	joy_thread.wait_to_finish();  	close_joypad();  } @@ -92,11 +106,20 @@ void JoypadLinux::joy_thread_func(void *p_user) {  void JoypadLinux::run_joypad_thread() {  #ifdef UDEV_ENABLED -	udev *_udev = udev_new(); -	ERR_FAIL_COND(!_udev); -	enumerate_joypads(_udev); -	monitor_joypads(_udev); -	udev_unref(_udev); +	if (use_udev) { +		udev *_udev = udev_new(); +		if (!_udev) { +			use_udev = false; +			ERR_PRINT("Failed getting an udev context, falling back to parsing /dev/input."); +			monitor_joypads(); +		} else { +			enumerate_joypads(_udev); +			monitor_joypads(_udev); +			udev_unref(_udev); +		} +	} else { +		monitor_joypads(); +	}  #else  	monitor_joypads();  #endif @@ -137,7 +160,7 @@ void JoypadLinux::monitor_joypads(udev *p_udev) {  	udev_monitor_enable_receiving(mon);  	int fd = udev_monitor_get_fd(mon); -	while (!exit_udev) { +	while (!exit_monitor.is_set()) {  		fd_set fds;  		struct timeval tv;  		int ret; @@ -155,17 +178,18 @@ void JoypadLinux::monitor_joypads(udev *p_udev) {  			   select() ensured that this will not block. */  			dev = udev_monitor_receive_device(mon); -			if (dev && udev_device_get_devnode(dev) != 0) { +			if (dev && udev_device_get_devnode(dev) != nullptr) {  				MutexLock lock(joy_mutex);  				String action = udev_device_get_action(dev);  				const char *devnode = udev_device_get_devnode(dev);  				if (devnode) {  					String devnode_str = devnode;  					if (devnode_str.find(ignore_str) == -1) { -						if (action == "add") +						if (action == "add") {  							open_joypad(devnode); -						else if (String(action) == "remove") +						} else if (String(action) == "remove") {  							close_joypad(get_joy_from_path(devnode)); +						}  					}  				} @@ -179,17 +203,27 @@ void JoypadLinux::monitor_joypads(udev *p_udev) {  #endif  void JoypadLinux::monitor_joypads() { -	while (!exit_udev) { +	while (!exit_monitor.is_set()) {  		{  			MutexLock lock(joy_mutex); -			for (int i = 0; i < 32; i++) { +			DIR *input_directory; +			input_directory = opendir("/dev/input"); +			if (input_directory) { +				struct dirent *current;  				char fname[64]; -				sprintf(fname, "/dev/input/event%d", i); -				if (attached_devices.find(fname) == -1) { -					open_joypad(fname); + +				while ((current = readdir(input_directory)) != nullptr) { +					if (strncmp(current->d_name, "event", 5) != 0) { +						continue; +					} +					sprintf(fname, "/dev/input/%.*s", 16, current->d_name); +					if (attached_devices.find(fname) == -1) { +						open_joypad(fname); +					}  				}  			} +			closedir(input_directory);  		}  		usleep(1000000); // 1s  	} @@ -395,10 +429,10 @@ void JoypadLinux::joypad_vibration_stop(int p_id, uint64_t p_timestamp) {  	joy.ff_effect_timestamp = p_timestamp;  } -Input::JoyAxis JoypadLinux::axis_correct(const input_absinfo *p_abs, int p_value) const { +Input::JoyAxisValue JoypadLinux::axis_correct(const input_absinfo *p_abs, int p_value) const {  	int min = p_abs->minimum;  	int max = p_abs->maximum; -	Input::JoyAxis jx; +	Input::JoyAxisValue jx;  	if (min < 0) {  		jx.min = -1; @@ -480,7 +514,7 @@ void JoypadLinux::process_joypads() {  									return;  								}  								if (joy->abs_map[ev.code] != -1 && joy->abs_info[ev.code]) { -									Input::JoyAxis value = axis_correct(joy->abs_info[ev.code], ev.value); +									Input::JoyAxisValue value = axis_correct(joy->abs_info[ev.code], ev.value);  									joy->curr_axis[joy->abs_map[ev.code]] = value;  								}  								break; diff --git a/platform/linuxbsd/joypad_linux.h b/platform/linuxbsd/joypad_linux.h index 20d30b510c..177d7a51ce 100644 --- a/platform/linuxbsd/joypad_linux.h +++ b/platform/linuxbsd/joypad_linux.h @@ -53,7 +53,7 @@ private:  	};  	struct Joypad { -		Input::JoyAxis curr_axis[MAX_ABS]; +		Input::JoyAxisValue curr_axis[MAX_ABS];  		int key_map[MAX_KEY];  		int abs_map[MAX_ABS];  		int dpad = 0; @@ -70,10 +70,13 @@ private:  		void reset();  	}; -	bool exit_udev; +#ifdef UDEV_ENABLED +	bool use_udev = false; +#endif +	SafeFlag exit_monitor;  	Mutex joy_mutex; -	Thread *joy_thread; -	Input *input; +	Thread joy_thread; +	Input *input = nullptr;  	Joypad joypads[JOYPADS_MAX];  	Vector<String> attached_devices; @@ -94,7 +97,7 @@ private:  	void joypad_vibration_start(int p_id, float p_weak_magnitude, float p_strong_magnitude, float p_duration, uint64_t p_timestamp);  	void joypad_vibration_stop(int p_id, uint64_t p_timestamp); -	Input::JoyAxis axis_correct(const input_absinfo *p_abs, int p_value) const; +	Input::JoyAxisValue axis_correct(const input_absinfo *p_abs, int p_value) const;  };  #endif diff --git a/platform/linuxbsd/libudev-so_wrap.c b/platform/linuxbsd/libudev-so_wrap.c new file mode 100644 index 0000000000..a9fa4a494a --- /dev/null +++ b/platform/linuxbsd/libudev-so_wrap.c @@ -0,0 +1,1013 @@ +// This file is generated. Do not edit! +// see https://github.com/hpvb/dynload-wrapper for details +// generated by /home/hp/Projects/godot/pulse/generate-wrapper.py 0.3 on 2021-02-20 00:08:59 +// flags: /home/hp/Projects/godot/pulse/generate-wrapper.py --include /usr/include/libudev.h --sys-include <libudev.h> --soname libudev.so.1 --init-name libudev --omit-prefix gnu_ --output-header libudev-so_wrap.h --output-implementation libudev-so_wrap.c +// +#include <stdint.h> + +#define udev_ref udev_ref_dylibloader_orig_libudev +#define udev_unref udev_unref_dylibloader_orig_libudev +#define udev_new udev_new_dylibloader_orig_libudev +#define udev_set_log_fn udev_set_log_fn_dylibloader_orig_libudev +#define udev_get_log_priority udev_get_log_priority_dylibloader_orig_libudev +#define udev_set_log_priority udev_set_log_priority_dylibloader_orig_libudev +#define udev_get_userdata udev_get_userdata_dylibloader_orig_libudev +#define udev_set_userdata udev_set_userdata_dylibloader_orig_libudev +#define udev_list_entry_get_next udev_list_entry_get_next_dylibloader_orig_libudev +#define udev_list_entry_get_by_name udev_list_entry_get_by_name_dylibloader_orig_libudev +#define udev_list_entry_get_name udev_list_entry_get_name_dylibloader_orig_libudev +#define udev_list_entry_get_value udev_list_entry_get_value_dylibloader_orig_libudev +#define udev_device_ref udev_device_ref_dylibloader_orig_libudev +#define udev_device_unref udev_device_unref_dylibloader_orig_libudev +#define udev_device_get_udev udev_device_get_udev_dylibloader_orig_libudev +#define udev_device_new_from_syspath udev_device_new_from_syspath_dylibloader_orig_libudev +#define udev_device_new_from_devnum udev_device_new_from_devnum_dylibloader_orig_libudev +#define udev_device_new_from_subsystem_sysname udev_device_new_from_subsystem_sysname_dylibloader_orig_libudev +#define udev_device_new_from_device_id udev_device_new_from_device_id_dylibloader_orig_libudev +#define udev_device_new_from_environment udev_device_new_from_environment_dylibloader_orig_libudev +#define udev_device_get_parent udev_device_get_parent_dylibloader_orig_libudev +#define udev_device_get_parent_with_subsystem_devtype udev_device_get_parent_with_subsystem_devtype_dylibloader_orig_libudev +#define udev_device_get_devpath udev_device_get_devpath_dylibloader_orig_libudev +#define udev_device_get_subsystem udev_device_get_subsystem_dylibloader_orig_libudev +#define udev_device_get_devtype udev_device_get_devtype_dylibloader_orig_libudev +#define udev_device_get_syspath udev_device_get_syspath_dylibloader_orig_libudev +#define udev_device_get_sysname udev_device_get_sysname_dylibloader_orig_libudev +#define udev_device_get_sysnum udev_device_get_sysnum_dylibloader_orig_libudev +#define udev_device_get_devnode udev_device_get_devnode_dylibloader_orig_libudev +#define udev_device_get_is_initialized udev_device_get_is_initialized_dylibloader_orig_libudev +#define udev_device_get_devlinks_list_entry udev_device_get_devlinks_list_entry_dylibloader_orig_libudev +#define udev_device_get_properties_list_entry udev_device_get_properties_list_entry_dylibloader_orig_libudev +#define udev_device_get_tags_list_entry udev_device_get_tags_list_entry_dylibloader_orig_libudev +#define udev_device_get_sysattr_list_entry udev_device_get_sysattr_list_entry_dylibloader_orig_libudev +#define udev_device_get_property_value udev_device_get_property_value_dylibloader_orig_libudev +#define udev_device_get_driver udev_device_get_driver_dylibloader_orig_libudev +#define udev_device_get_devnum udev_device_get_devnum_dylibloader_orig_libudev +#define udev_device_get_action udev_device_get_action_dylibloader_orig_libudev +#define udev_device_get_seqnum udev_device_get_seqnum_dylibloader_orig_libudev +#define udev_device_get_usec_since_initialized udev_device_get_usec_since_initialized_dylibloader_orig_libudev +#define udev_device_get_sysattr_value udev_device_get_sysattr_value_dylibloader_orig_libudev +#define udev_device_set_sysattr_value udev_device_set_sysattr_value_dylibloader_orig_libudev +#define udev_device_has_tag udev_device_has_tag_dylibloader_orig_libudev +#define udev_monitor_ref udev_monitor_ref_dylibloader_orig_libudev +#define udev_monitor_unref udev_monitor_unref_dylibloader_orig_libudev +#define udev_monitor_get_udev udev_monitor_get_udev_dylibloader_orig_libudev +#define udev_monitor_new_from_netlink udev_monitor_new_from_netlink_dylibloader_orig_libudev +#define udev_monitor_enable_receiving udev_monitor_enable_receiving_dylibloader_orig_libudev +#define udev_monitor_set_receive_buffer_size udev_monitor_set_receive_buffer_size_dylibloader_orig_libudev +#define udev_monitor_get_fd udev_monitor_get_fd_dylibloader_orig_libudev +#define udev_monitor_receive_device udev_monitor_receive_device_dylibloader_orig_libudev +#define udev_monitor_filter_add_match_subsystem_devtype udev_monitor_filter_add_match_subsystem_devtype_dylibloader_orig_libudev +#define udev_monitor_filter_add_match_tag udev_monitor_filter_add_match_tag_dylibloader_orig_libudev +#define udev_monitor_filter_update udev_monitor_filter_update_dylibloader_orig_libudev +#define udev_monitor_filter_remove udev_monitor_filter_remove_dylibloader_orig_libudev +#define udev_enumerate_ref udev_enumerate_ref_dylibloader_orig_libudev +#define udev_enumerate_unref udev_enumerate_unref_dylibloader_orig_libudev +#define udev_enumerate_get_udev udev_enumerate_get_udev_dylibloader_orig_libudev +#define udev_enumerate_new udev_enumerate_new_dylibloader_orig_libudev +#define udev_enumerate_add_match_subsystem udev_enumerate_add_match_subsystem_dylibloader_orig_libudev +#define udev_enumerate_add_nomatch_subsystem udev_enumerate_add_nomatch_subsystem_dylibloader_orig_libudev +#define udev_enumerate_add_match_sysattr udev_enumerate_add_match_sysattr_dylibloader_orig_libudev +#define udev_enumerate_add_nomatch_sysattr udev_enumerate_add_nomatch_sysattr_dylibloader_orig_libudev +#define udev_enumerate_add_match_property udev_enumerate_add_match_property_dylibloader_orig_libudev +#define udev_enumerate_add_match_sysname udev_enumerate_add_match_sysname_dylibloader_orig_libudev +#define udev_enumerate_add_match_tag udev_enumerate_add_match_tag_dylibloader_orig_libudev +#define udev_enumerate_add_match_parent udev_enumerate_add_match_parent_dylibloader_orig_libudev +#define udev_enumerate_add_match_is_initialized udev_enumerate_add_match_is_initialized_dylibloader_orig_libudev +#define udev_enumerate_add_syspath udev_enumerate_add_syspath_dylibloader_orig_libudev +#define udev_enumerate_scan_devices udev_enumerate_scan_devices_dylibloader_orig_libudev +#define udev_enumerate_scan_subsystems udev_enumerate_scan_subsystems_dylibloader_orig_libudev +#define udev_enumerate_get_list_entry udev_enumerate_get_list_entry_dylibloader_orig_libudev +#define udev_queue_ref udev_queue_ref_dylibloader_orig_libudev +#define udev_queue_unref udev_queue_unref_dylibloader_orig_libudev +#define udev_queue_get_udev udev_queue_get_udev_dylibloader_orig_libudev +#define udev_queue_new udev_queue_new_dylibloader_orig_libudev +#define udev_queue_get_kernel_seqnum udev_queue_get_kernel_seqnum_dylibloader_orig_libudev +#define udev_queue_get_udev_seqnum udev_queue_get_udev_seqnum_dylibloader_orig_libudev +#define udev_queue_get_udev_is_active udev_queue_get_udev_is_active_dylibloader_orig_libudev +#define udev_queue_get_queue_is_empty udev_queue_get_queue_is_empty_dylibloader_orig_libudev +#define udev_queue_get_seqnum_is_finished udev_queue_get_seqnum_is_finished_dylibloader_orig_libudev +#define udev_queue_get_seqnum_sequence_is_finished udev_queue_get_seqnum_sequence_is_finished_dylibloader_orig_libudev +#define udev_queue_get_fd udev_queue_get_fd_dylibloader_orig_libudev +#define udev_queue_flush udev_queue_flush_dylibloader_orig_libudev +#define udev_queue_get_queued_list_entry udev_queue_get_queued_list_entry_dylibloader_orig_libudev +#define udev_hwdb_new udev_hwdb_new_dylibloader_orig_libudev +#define udev_hwdb_ref udev_hwdb_ref_dylibloader_orig_libudev +#define udev_hwdb_unref udev_hwdb_unref_dylibloader_orig_libudev +#define udev_hwdb_get_properties_list_entry udev_hwdb_get_properties_list_entry_dylibloader_orig_libudev +#define udev_util_encode_string udev_util_encode_string_dylibloader_orig_libudev +#include <libudev.h> +#undef udev_ref +#undef udev_unref +#undef udev_new +#undef udev_set_log_fn +#undef udev_get_log_priority +#undef udev_set_log_priority +#undef udev_get_userdata +#undef udev_set_userdata +#undef udev_list_entry_get_next +#undef udev_list_entry_get_by_name +#undef udev_list_entry_get_name +#undef udev_list_entry_get_value +#undef udev_device_ref +#undef udev_device_unref +#undef udev_device_get_udev +#undef udev_device_new_from_syspath +#undef udev_device_new_from_devnum +#undef udev_device_new_from_subsystem_sysname +#undef udev_device_new_from_device_id +#undef udev_device_new_from_environment +#undef udev_device_get_parent +#undef udev_device_get_parent_with_subsystem_devtype +#undef udev_device_get_devpath +#undef udev_device_get_subsystem +#undef udev_device_get_devtype +#undef udev_device_get_syspath +#undef udev_device_get_sysname +#undef udev_device_get_sysnum +#undef udev_device_get_devnode +#undef udev_device_get_is_initialized +#undef udev_device_get_devlinks_list_entry +#undef udev_device_get_properties_list_entry +#undef udev_device_get_tags_list_entry +#undef udev_device_get_sysattr_list_entry +#undef udev_device_get_property_value +#undef udev_device_get_driver +#undef udev_device_get_devnum +#undef udev_device_get_action +#undef udev_device_get_seqnum +#undef udev_device_get_usec_since_initialized +#undef udev_device_get_sysattr_value +#undef udev_device_set_sysattr_value +#undef udev_device_has_tag +#undef udev_monitor_ref +#undef udev_monitor_unref +#undef udev_monitor_get_udev +#undef udev_monitor_new_from_netlink +#undef udev_monitor_enable_receiving +#undef udev_monitor_set_receive_buffer_size +#undef udev_monitor_get_fd +#undef udev_monitor_receive_device +#undef udev_monitor_filter_add_match_subsystem_devtype +#undef udev_monitor_filter_add_match_tag +#undef udev_monitor_filter_update +#undef udev_monitor_filter_remove +#undef udev_enumerate_ref +#undef udev_enumerate_unref +#undef udev_enumerate_get_udev +#undef udev_enumerate_new +#undef udev_enumerate_add_match_subsystem +#undef udev_enumerate_add_nomatch_subsystem +#undef udev_enumerate_add_match_sysattr +#undef udev_enumerate_add_nomatch_sysattr +#undef udev_enumerate_add_match_property +#undef udev_enumerate_add_match_sysname +#undef udev_enumerate_add_match_tag +#undef udev_enumerate_add_match_parent +#undef udev_enumerate_add_match_is_initialized +#undef udev_enumerate_add_syspath +#undef udev_enumerate_scan_devices +#undef udev_enumerate_scan_subsystems +#undef udev_enumerate_get_list_entry +#undef udev_queue_ref +#undef udev_queue_unref +#undef udev_queue_get_udev +#undef udev_queue_new +#undef udev_queue_get_kernel_seqnum +#undef udev_queue_get_udev_seqnum +#undef udev_queue_get_udev_is_active +#undef udev_queue_get_queue_is_empty +#undef udev_queue_get_seqnum_is_finished +#undef udev_queue_get_seqnum_sequence_is_finished +#undef udev_queue_get_fd +#undef udev_queue_flush +#undef udev_queue_get_queued_list_entry +#undef udev_hwdb_new +#undef udev_hwdb_ref +#undef udev_hwdb_unref +#undef udev_hwdb_get_properties_list_entry +#undef udev_util_encode_string +#include <dlfcn.h> +#include <stdio.h> +struct udev* (*udev_ref_dylibloader_wrapper_libudev)(struct udev*); +struct udev* (*udev_unref_dylibloader_wrapper_libudev)(struct udev*); +struct udev* (*udev_new_dylibloader_wrapper_libudev)( void); +void (*udev_set_log_fn_dylibloader_wrapper_libudev)(struct udev*, void*); +int (*udev_get_log_priority_dylibloader_wrapper_libudev)(struct udev*); +void (*udev_set_log_priority_dylibloader_wrapper_libudev)(struct udev*, int); +void* (*udev_get_userdata_dylibloader_wrapper_libudev)(struct udev*); +void (*udev_set_userdata_dylibloader_wrapper_libudev)(struct udev*, void*); +struct udev_list_entry* (*udev_list_entry_get_next_dylibloader_wrapper_libudev)(struct udev_list_entry*); +struct udev_list_entry* (*udev_list_entry_get_by_name_dylibloader_wrapper_libudev)(struct udev_list_entry*,const char*); +const char* (*udev_list_entry_get_name_dylibloader_wrapper_libudev)(struct udev_list_entry*); +const char* (*udev_list_entry_get_value_dylibloader_wrapper_libudev)(struct udev_list_entry*); +struct udev_device* (*udev_device_ref_dylibloader_wrapper_libudev)(struct udev_device*); +struct udev_device* (*udev_device_unref_dylibloader_wrapper_libudev)(struct udev_device*); +struct udev* (*udev_device_get_udev_dylibloader_wrapper_libudev)(struct udev_device*); +struct udev_device* (*udev_device_new_from_syspath_dylibloader_wrapper_libudev)(struct udev*,const char*); +struct udev_device* (*udev_device_new_from_devnum_dylibloader_wrapper_libudev)(struct udev*, char, dev_t); +struct udev_device* (*udev_device_new_from_subsystem_sysname_dylibloader_wrapper_libudev)(struct udev*,const char*,const char*); +struct udev_device* (*udev_device_new_from_device_id_dylibloader_wrapper_libudev)(struct udev*,const char*); +struct udev_device* (*udev_device_new_from_environment_dylibloader_wrapper_libudev)(struct udev*); +struct udev_device* (*udev_device_get_parent_dylibloader_wrapper_libudev)(struct udev_device*); +struct udev_device* (*udev_device_get_parent_with_subsystem_devtype_dylibloader_wrapper_libudev)(struct udev_device*,const char*,const char*); +const char* (*udev_device_get_devpath_dylibloader_wrapper_libudev)(struct udev_device*); +const char* (*udev_device_get_subsystem_dylibloader_wrapper_libudev)(struct udev_device*); +const char* (*udev_device_get_devtype_dylibloader_wrapper_libudev)(struct udev_device*); +const char* (*udev_device_get_syspath_dylibloader_wrapper_libudev)(struct udev_device*); +const char* (*udev_device_get_sysname_dylibloader_wrapper_libudev)(struct udev_device*); +const char* (*udev_device_get_sysnum_dylibloader_wrapper_libudev)(struct udev_device*); +const char* (*udev_device_get_devnode_dylibloader_wrapper_libudev)(struct udev_device*); +int (*udev_device_get_is_initialized_dylibloader_wrapper_libudev)(struct udev_device*); +struct udev_list_entry* (*udev_device_get_devlinks_list_entry_dylibloader_wrapper_libudev)(struct udev_device*); +struct udev_list_entry* (*udev_device_get_properties_list_entry_dylibloader_wrapper_libudev)(struct udev_device*); +struct udev_list_entry* (*udev_device_get_tags_list_entry_dylibloader_wrapper_libudev)(struct udev_device*); +struct udev_list_entry* (*udev_device_get_sysattr_list_entry_dylibloader_wrapper_libudev)(struct udev_device*); +const char* (*udev_device_get_property_value_dylibloader_wrapper_libudev)(struct udev_device*,const char*); +const char* (*udev_device_get_driver_dylibloader_wrapper_libudev)(struct udev_device*); +dev_t (*udev_device_get_devnum_dylibloader_wrapper_libudev)(struct udev_device*); +const char* (*udev_device_get_action_dylibloader_wrapper_libudev)(struct udev_device*); +unsigned long long int (*udev_device_get_seqnum_dylibloader_wrapper_libudev)(struct udev_device*); +unsigned long long int (*udev_device_get_usec_since_initialized_dylibloader_wrapper_libudev)(struct udev_device*); +const char* (*udev_device_get_sysattr_value_dylibloader_wrapper_libudev)(struct udev_device*,const char*); +int (*udev_device_set_sysattr_value_dylibloader_wrapper_libudev)(struct udev_device*,const char*,const char*); +int (*udev_device_has_tag_dylibloader_wrapper_libudev)(struct udev_device*,const char*); +struct udev_monitor* (*udev_monitor_ref_dylibloader_wrapper_libudev)(struct udev_monitor*); +struct udev_monitor* (*udev_monitor_unref_dylibloader_wrapper_libudev)(struct udev_monitor*); +struct udev* (*udev_monitor_get_udev_dylibloader_wrapper_libudev)(struct udev_monitor*); +struct udev_monitor* (*udev_monitor_new_from_netlink_dylibloader_wrapper_libudev)(struct udev*,const char*); +int (*udev_monitor_enable_receiving_dylibloader_wrapper_libudev)(struct udev_monitor*); +int (*udev_monitor_set_receive_buffer_size_dylibloader_wrapper_libudev)(struct udev_monitor*, int); +int (*udev_monitor_get_fd_dylibloader_wrapper_libudev)(struct udev_monitor*); +struct udev_device* (*udev_monitor_receive_device_dylibloader_wrapper_libudev)(struct udev_monitor*); +int (*udev_monitor_filter_add_match_subsystem_devtype_dylibloader_wrapper_libudev)(struct udev_monitor*,const char*,const char*); +int (*udev_monitor_filter_add_match_tag_dylibloader_wrapper_libudev)(struct udev_monitor*,const char*); +int (*udev_monitor_filter_update_dylibloader_wrapper_libudev)(struct udev_monitor*); +int (*udev_monitor_filter_remove_dylibloader_wrapper_libudev)(struct udev_monitor*); +struct udev_enumerate* (*udev_enumerate_ref_dylibloader_wrapper_libudev)(struct udev_enumerate*); +struct udev_enumerate* (*udev_enumerate_unref_dylibloader_wrapper_libudev)(struct udev_enumerate*); +struct udev* (*udev_enumerate_get_udev_dylibloader_wrapper_libudev)(struct udev_enumerate*); +struct udev_enumerate* (*udev_enumerate_new_dylibloader_wrapper_libudev)(struct udev*); +int (*udev_enumerate_add_match_subsystem_dylibloader_wrapper_libudev)(struct udev_enumerate*,const char*); +int (*udev_enumerate_add_nomatch_subsystem_dylibloader_wrapper_libudev)(struct udev_enumerate*,const char*); +int (*udev_enumerate_add_match_sysattr_dylibloader_wrapper_libudev)(struct udev_enumerate*,const char*,const char*); +int (*udev_enumerate_add_nomatch_sysattr_dylibloader_wrapper_libudev)(struct udev_enumerate*,const char*,const char*); +int (*udev_enumerate_add_match_property_dylibloader_wrapper_libudev)(struct udev_enumerate*,const char*,const char*); +int (*udev_enumerate_add_match_sysname_dylibloader_wrapper_libudev)(struct udev_enumerate*,const char*); +int (*udev_enumerate_add_match_tag_dylibloader_wrapper_libudev)(struct udev_enumerate*,const char*); +int (*udev_enumerate_add_match_parent_dylibloader_wrapper_libudev)(struct udev_enumerate*,struct udev_device*); +int (*udev_enumerate_add_match_is_initialized_dylibloader_wrapper_libudev)(struct udev_enumerate*); +int (*udev_enumerate_add_syspath_dylibloader_wrapper_libudev)(struct udev_enumerate*,const char*); +int (*udev_enumerate_scan_devices_dylibloader_wrapper_libudev)(struct udev_enumerate*); +int (*udev_enumerate_scan_subsystems_dylibloader_wrapper_libudev)(struct udev_enumerate*); +struct udev_list_entry* (*udev_enumerate_get_list_entry_dylibloader_wrapper_libudev)(struct udev_enumerate*); +struct udev_queue* (*udev_queue_ref_dylibloader_wrapper_libudev)(struct udev_queue*); +struct udev_queue* (*udev_queue_unref_dylibloader_wrapper_libudev)(struct udev_queue*); +struct udev* (*udev_queue_get_udev_dylibloader_wrapper_libudev)(struct udev_queue*); +struct udev_queue* (*udev_queue_new_dylibloader_wrapper_libudev)(struct udev*); +unsigned long long int (*udev_queue_get_kernel_seqnum_dylibloader_wrapper_libudev)(struct udev_queue*); +unsigned long long int (*udev_queue_get_udev_seqnum_dylibloader_wrapper_libudev)(struct udev_queue*); +int (*udev_queue_get_udev_is_active_dylibloader_wrapper_libudev)(struct udev_queue*); +int (*udev_queue_get_queue_is_empty_dylibloader_wrapper_libudev)(struct udev_queue*); +int (*udev_queue_get_seqnum_is_finished_dylibloader_wrapper_libudev)(struct udev_queue*, unsigned long long int); +int (*udev_queue_get_seqnum_sequence_is_finished_dylibloader_wrapper_libudev)(struct udev_queue*, unsigned long long int, unsigned long long int); +int (*udev_queue_get_fd_dylibloader_wrapper_libudev)(struct udev_queue*); +int (*udev_queue_flush_dylibloader_wrapper_libudev)(struct udev_queue*); +struct udev_list_entry* (*udev_queue_get_queued_list_entry_dylibloader_wrapper_libudev)(struct udev_queue*); +struct udev_hwdb* (*udev_hwdb_new_dylibloader_wrapper_libudev)(struct udev*); +struct udev_hwdb* (*udev_hwdb_ref_dylibloader_wrapper_libudev)(struct udev_hwdb*); +struct udev_hwdb* (*udev_hwdb_unref_dylibloader_wrapper_libudev)(struct udev_hwdb*); +struct udev_list_entry* (*udev_hwdb_get_properties_list_entry_dylibloader_wrapper_libudev)(struct udev_hwdb*,const char*, unsigned); +int (*udev_util_encode_string_dylibloader_wrapper_libudev)(const char*, char*, size_t); +int initialize_libudev(int verbose) { +  void *handle; +  char *error; +  handle = dlopen("libudev.so.1", RTLD_LAZY); +  if (!handle) { +    if (verbose) { +      fprintf(stderr, "%s\n", dlerror()); +    } +    return(1); +  } +  dlerror(); +// udev_ref +  *(void **) (&udev_ref_dylibloader_wrapper_libudev) = dlsym(handle, "udev_ref"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_unref +  *(void **) (&udev_unref_dylibloader_wrapper_libudev) = dlsym(handle, "udev_unref"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_new +  *(void **) (&udev_new_dylibloader_wrapper_libudev) = dlsym(handle, "udev_new"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_set_log_fn +  *(void **) (&udev_set_log_fn_dylibloader_wrapper_libudev) = dlsym(handle, "udev_set_log_fn"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_get_log_priority +  *(void **) (&udev_get_log_priority_dylibloader_wrapper_libudev) = dlsym(handle, "udev_get_log_priority"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_set_log_priority +  *(void **) (&udev_set_log_priority_dylibloader_wrapper_libudev) = dlsym(handle, "udev_set_log_priority"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_get_userdata +  *(void **) (&udev_get_userdata_dylibloader_wrapper_libudev) = dlsym(handle, "udev_get_userdata"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_set_userdata +  *(void **) (&udev_set_userdata_dylibloader_wrapper_libudev) = dlsym(handle, "udev_set_userdata"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_list_entry_get_next +  *(void **) (&udev_list_entry_get_next_dylibloader_wrapper_libudev) = dlsym(handle, "udev_list_entry_get_next"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_list_entry_get_by_name +  *(void **) (&udev_list_entry_get_by_name_dylibloader_wrapper_libudev) = dlsym(handle, "udev_list_entry_get_by_name"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_list_entry_get_name +  *(void **) (&udev_list_entry_get_name_dylibloader_wrapper_libudev) = dlsym(handle, "udev_list_entry_get_name"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_list_entry_get_value +  *(void **) (&udev_list_entry_get_value_dylibloader_wrapper_libudev) = dlsym(handle, "udev_list_entry_get_value"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_device_ref +  *(void **) (&udev_device_ref_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_ref"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_device_unref +  *(void **) (&udev_device_unref_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_unref"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_device_get_udev +  *(void **) (&udev_device_get_udev_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_udev"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_device_new_from_syspath +  *(void **) (&udev_device_new_from_syspath_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_new_from_syspath"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_device_new_from_devnum +  *(void **) (&udev_device_new_from_devnum_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_new_from_devnum"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_device_new_from_subsystem_sysname +  *(void **) (&udev_device_new_from_subsystem_sysname_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_new_from_subsystem_sysname"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_device_new_from_device_id +  *(void **) (&udev_device_new_from_device_id_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_new_from_device_id"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_device_new_from_environment +  *(void **) (&udev_device_new_from_environment_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_new_from_environment"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_device_get_parent +  *(void **) (&udev_device_get_parent_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_parent"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_device_get_parent_with_subsystem_devtype +  *(void **) (&udev_device_get_parent_with_subsystem_devtype_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_parent_with_subsystem_devtype"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_device_get_devpath +  *(void **) (&udev_device_get_devpath_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_devpath"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_device_get_subsystem +  *(void **) (&udev_device_get_subsystem_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_subsystem"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_device_get_devtype +  *(void **) (&udev_device_get_devtype_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_devtype"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_device_get_syspath +  *(void **) (&udev_device_get_syspath_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_syspath"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_device_get_sysname +  *(void **) (&udev_device_get_sysname_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_sysname"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_device_get_sysnum +  *(void **) (&udev_device_get_sysnum_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_sysnum"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_device_get_devnode +  *(void **) (&udev_device_get_devnode_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_devnode"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_device_get_is_initialized +  *(void **) (&udev_device_get_is_initialized_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_is_initialized"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_device_get_devlinks_list_entry +  *(void **) (&udev_device_get_devlinks_list_entry_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_devlinks_list_entry"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_device_get_properties_list_entry +  *(void **) (&udev_device_get_properties_list_entry_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_properties_list_entry"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_device_get_tags_list_entry +  *(void **) (&udev_device_get_tags_list_entry_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_tags_list_entry"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_device_get_sysattr_list_entry +  *(void **) (&udev_device_get_sysattr_list_entry_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_sysattr_list_entry"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_device_get_property_value +  *(void **) (&udev_device_get_property_value_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_property_value"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_device_get_driver +  *(void **) (&udev_device_get_driver_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_driver"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_device_get_devnum +  *(void **) (&udev_device_get_devnum_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_devnum"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_device_get_action +  *(void **) (&udev_device_get_action_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_action"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_device_get_seqnum +  *(void **) (&udev_device_get_seqnum_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_seqnum"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_device_get_usec_since_initialized +  *(void **) (&udev_device_get_usec_since_initialized_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_usec_since_initialized"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_device_get_sysattr_value +  *(void **) (&udev_device_get_sysattr_value_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_get_sysattr_value"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_device_set_sysattr_value +  *(void **) (&udev_device_set_sysattr_value_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_set_sysattr_value"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_device_has_tag +  *(void **) (&udev_device_has_tag_dylibloader_wrapper_libudev) = dlsym(handle, "udev_device_has_tag"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_monitor_ref +  *(void **) (&udev_monitor_ref_dylibloader_wrapper_libudev) = dlsym(handle, "udev_monitor_ref"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_monitor_unref +  *(void **) (&udev_monitor_unref_dylibloader_wrapper_libudev) = dlsym(handle, "udev_monitor_unref"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_monitor_get_udev +  *(void **) (&udev_monitor_get_udev_dylibloader_wrapper_libudev) = dlsym(handle, "udev_monitor_get_udev"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_monitor_new_from_netlink +  *(void **) (&udev_monitor_new_from_netlink_dylibloader_wrapper_libudev) = dlsym(handle, "udev_monitor_new_from_netlink"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_monitor_enable_receiving +  *(void **) (&udev_monitor_enable_receiving_dylibloader_wrapper_libudev) = dlsym(handle, "udev_monitor_enable_receiving"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_monitor_set_receive_buffer_size +  *(void **) (&udev_monitor_set_receive_buffer_size_dylibloader_wrapper_libudev) = dlsym(handle, "udev_monitor_set_receive_buffer_size"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_monitor_get_fd +  *(void **) (&udev_monitor_get_fd_dylibloader_wrapper_libudev) = dlsym(handle, "udev_monitor_get_fd"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_monitor_receive_device +  *(void **) (&udev_monitor_receive_device_dylibloader_wrapper_libudev) = dlsym(handle, "udev_monitor_receive_device"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_monitor_filter_add_match_subsystem_devtype +  *(void **) (&udev_monitor_filter_add_match_subsystem_devtype_dylibloader_wrapper_libudev) = dlsym(handle, "udev_monitor_filter_add_match_subsystem_devtype"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_monitor_filter_add_match_tag +  *(void **) (&udev_monitor_filter_add_match_tag_dylibloader_wrapper_libudev) = dlsym(handle, "udev_monitor_filter_add_match_tag"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_monitor_filter_update +  *(void **) (&udev_monitor_filter_update_dylibloader_wrapper_libudev) = dlsym(handle, "udev_monitor_filter_update"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_monitor_filter_remove +  *(void **) (&udev_monitor_filter_remove_dylibloader_wrapper_libudev) = dlsym(handle, "udev_monitor_filter_remove"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_enumerate_ref +  *(void **) (&udev_enumerate_ref_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_ref"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_enumerate_unref +  *(void **) (&udev_enumerate_unref_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_unref"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_enumerate_get_udev +  *(void **) (&udev_enumerate_get_udev_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_get_udev"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_enumerate_new +  *(void **) (&udev_enumerate_new_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_new"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_enumerate_add_match_subsystem +  *(void **) (&udev_enumerate_add_match_subsystem_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_add_match_subsystem"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_enumerate_add_nomatch_subsystem +  *(void **) (&udev_enumerate_add_nomatch_subsystem_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_add_nomatch_subsystem"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_enumerate_add_match_sysattr +  *(void **) (&udev_enumerate_add_match_sysattr_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_add_match_sysattr"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_enumerate_add_nomatch_sysattr +  *(void **) (&udev_enumerate_add_nomatch_sysattr_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_add_nomatch_sysattr"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_enumerate_add_match_property +  *(void **) (&udev_enumerate_add_match_property_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_add_match_property"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_enumerate_add_match_sysname +  *(void **) (&udev_enumerate_add_match_sysname_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_add_match_sysname"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_enumerate_add_match_tag +  *(void **) (&udev_enumerate_add_match_tag_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_add_match_tag"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_enumerate_add_match_parent +  *(void **) (&udev_enumerate_add_match_parent_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_add_match_parent"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_enumerate_add_match_is_initialized +  *(void **) (&udev_enumerate_add_match_is_initialized_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_add_match_is_initialized"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_enumerate_add_syspath +  *(void **) (&udev_enumerate_add_syspath_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_add_syspath"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_enumerate_scan_devices +  *(void **) (&udev_enumerate_scan_devices_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_scan_devices"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_enumerate_scan_subsystems +  *(void **) (&udev_enumerate_scan_subsystems_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_scan_subsystems"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_enumerate_get_list_entry +  *(void **) (&udev_enumerate_get_list_entry_dylibloader_wrapper_libudev) = dlsym(handle, "udev_enumerate_get_list_entry"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_queue_ref +  *(void **) (&udev_queue_ref_dylibloader_wrapper_libudev) = dlsym(handle, "udev_queue_ref"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_queue_unref +  *(void **) (&udev_queue_unref_dylibloader_wrapper_libudev) = dlsym(handle, "udev_queue_unref"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_queue_get_udev +  *(void **) (&udev_queue_get_udev_dylibloader_wrapper_libudev) = dlsym(handle, "udev_queue_get_udev"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_queue_new +  *(void **) (&udev_queue_new_dylibloader_wrapper_libudev) = dlsym(handle, "udev_queue_new"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_queue_get_kernel_seqnum +  *(void **) (&udev_queue_get_kernel_seqnum_dylibloader_wrapper_libudev) = dlsym(handle, "udev_queue_get_kernel_seqnum"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_queue_get_udev_seqnum +  *(void **) (&udev_queue_get_udev_seqnum_dylibloader_wrapper_libudev) = dlsym(handle, "udev_queue_get_udev_seqnum"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_queue_get_udev_is_active +  *(void **) (&udev_queue_get_udev_is_active_dylibloader_wrapper_libudev) = dlsym(handle, "udev_queue_get_udev_is_active"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_queue_get_queue_is_empty +  *(void **) (&udev_queue_get_queue_is_empty_dylibloader_wrapper_libudev) = dlsym(handle, "udev_queue_get_queue_is_empty"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_queue_get_seqnum_is_finished +  *(void **) (&udev_queue_get_seqnum_is_finished_dylibloader_wrapper_libudev) = dlsym(handle, "udev_queue_get_seqnum_is_finished"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_queue_get_seqnum_sequence_is_finished +  *(void **) (&udev_queue_get_seqnum_sequence_is_finished_dylibloader_wrapper_libudev) = dlsym(handle, "udev_queue_get_seqnum_sequence_is_finished"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_queue_get_fd +  *(void **) (&udev_queue_get_fd_dylibloader_wrapper_libudev) = dlsym(handle, "udev_queue_get_fd"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_queue_flush +  *(void **) (&udev_queue_flush_dylibloader_wrapper_libudev) = dlsym(handle, "udev_queue_flush"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_queue_get_queued_list_entry +  *(void **) (&udev_queue_get_queued_list_entry_dylibloader_wrapper_libudev) = dlsym(handle, "udev_queue_get_queued_list_entry"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_hwdb_new +  *(void **) (&udev_hwdb_new_dylibloader_wrapper_libudev) = dlsym(handle, "udev_hwdb_new"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_hwdb_ref +  *(void **) (&udev_hwdb_ref_dylibloader_wrapper_libudev) = dlsym(handle, "udev_hwdb_ref"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_hwdb_unref +  *(void **) (&udev_hwdb_unref_dylibloader_wrapper_libudev) = dlsym(handle, "udev_hwdb_unref"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_hwdb_get_properties_list_entry +  *(void **) (&udev_hwdb_get_properties_list_entry_dylibloader_wrapper_libudev) = dlsym(handle, "udev_hwdb_get_properties_list_entry"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +// udev_util_encode_string +  *(void **) (&udev_util_encode_string_dylibloader_wrapper_libudev) = dlsym(handle, "udev_util_encode_string"); +  if (verbose) { +    error = dlerror(); +    if (error != NULL) { +      fprintf(stderr, "%s\n", error); +    } +  } +return 0; +} diff --git a/platform/linuxbsd/libudev-so_wrap.h b/platform/linuxbsd/libudev-so_wrap.h new file mode 100644 index 0000000000..dd43fd1191 --- /dev/null +++ b/platform/linuxbsd/libudev-so_wrap.h @@ -0,0 +1,378 @@ +#ifndef DYLIBLOAD_WRAPPER_LIBUDEV +#define DYLIBLOAD_WRAPPER_LIBUDEV +// This file is generated. Do not edit! +// see https://github.com/hpvb/dynload-wrapper for details +// generated by /home/hp/Projects/godot/pulse/generate-wrapper.py 0.3 on 2021-02-20 00:08:59 +// flags: /home/hp/Projects/godot/pulse/generate-wrapper.py --include /usr/include/libudev.h --sys-include <libudev.h> --soname libudev.so.1 --init-name libudev --omit-prefix gnu_ --output-header libudev-so_wrap.h --output-implementation libudev-so_wrap.c +// +#include <stdint.h> + +#define udev_ref udev_ref_dylibloader_orig_libudev +#define udev_unref udev_unref_dylibloader_orig_libudev +#define udev_new udev_new_dylibloader_orig_libudev +#define udev_set_log_fn udev_set_log_fn_dylibloader_orig_libudev +#define udev_get_log_priority udev_get_log_priority_dylibloader_orig_libudev +#define udev_set_log_priority udev_set_log_priority_dylibloader_orig_libudev +#define udev_get_userdata udev_get_userdata_dylibloader_orig_libudev +#define udev_set_userdata udev_set_userdata_dylibloader_orig_libudev +#define udev_list_entry_get_next udev_list_entry_get_next_dylibloader_orig_libudev +#define udev_list_entry_get_by_name udev_list_entry_get_by_name_dylibloader_orig_libudev +#define udev_list_entry_get_name udev_list_entry_get_name_dylibloader_orig_libudev +#define udev_list_entry_get_value udev_list_entry_get_value_dylibloader_orig_libudev +#define udev_device_ref udev_device_ref_dylibloader_orig_libudev +#define udev_device_unref udev_device_unref_dylibloader_orig_libudev +#define udev_device_get_udev udev_device_get_udev_dylibloader_orig_libudev +#define udev_device_new_from_syspath udev_device_new_from_syspath_dylibloader_orig_libudev +#define udev_device_new_from_devnum udev_device_new_from_devnum_dylibloader_orig_libudev +#define udev_device_new_from_subsystem_sysname udev_device_new_from_subsystem_sysname_dylibloader_orig_libudev +#define udev_device_new_from_device_id udev_device_new_from_device_id_dylibloader_orig_libudev +#define udev_device_new_from_environment udev_device_new_from_environment_dylibloader_orig_libudev +#define udev_device_get_parent udev_device_get_parent_dylibloader_orig_libudev +#define udev_device_get_parent_with_subsystem_devtype udev_device_get_parent_with_subsystem_devtype_dylibloader_orig_libudev +#define udev_device_get_devpath udev_device_get_devpath_dylibloader_orig_libudev +#define udev_device_get_subsystem udev_device_get_subsystem_dylibloader_orig_libudev +#define udev_device_get_devtype udev_device_get_devtype_dylibloader_orig_libudev +#define udev_device_get_syspath udev_device_get_syspath_dylibloader_orig_libudev +#define udev_device_get_sysname udev_device_get_sysname_dylibloader_orig_libudev +#define udev_device_get_sysnum udev_device_get_sysnum_dylibloader_orig_libudev +#define udev_device_get_devnode udev_device_get_devnode_dylibloader_orig_libudev +#define udev_device_get_is_initialized udev_device_get_is_initialized_dylibloader_orig_libudev +#define udev_device_get_devlinks_list_entry udev_device_get_devlinks_list_entry_dylibloader_orig_libudev +#define udev_device_get_properties_list_entry udev_device_get_properties_list_entry_dylibloader_orig_libudev +#define udev_device_get_tags_list_entry udev_device_get_tags_list_entry_dylibloader_orig_libudev +#define udev_device_get_sysattr_list_entry udev_device_get_sysattr_list_entry_dylibloader_orig_libudev +#define udev_device_get_property_value udev_device_get_property_value_dylibloader_orig_libudev +#define udev_device_get_driver udev_device_get_driver_dylibloader_orig_libudev +#define udev_device_get_devnum udev_device_get_devnum_dylibloader_orig_libudev +#define udev_device_get_action udev_device_get_action_dylibloader_orig_libudev +#define udev_device_get_seqnum udev_device_get_seqnum_dylibloader_orig_libudev +#define udev_device_get_usec_since_initialized udev_device_get_usec_since_initialized_dylibloader_orig_libudev +#define udev_device_get_sysattr_value udev_device_get_sysattr_value_dylibloader_orig_libudev +#define udev_device_set_sysattr_value udev_device_set_sysattr_value_dylibloader_orig_libudev +#define udev_device_has_tag udev_device_has_tag_dylibloader_orig_libudev +#define udev_monitor_ref udev_monitor_ref_dylibloader_orig_libudev +#define udev_monitor_unref udev_monitor_unref_dylibloader_orig_libudev +#define udev_monitor_get_udev udev_monitor_get_udev_dylibloader_orig_libudev +#define udev_monitor_new_from_netlink udev_monitor_new_from_netlink_dylibloader_orig_libudev +#define udev_monitor_enable_receiving udev_monitor_enable_receiving_dylibloader_orig_libudev +#define udev_monitor_set_receive_buffer_size udev_monitor_set_receive_buffer_size_dylibloader_orig_libudev +#define udev_monitor_get_fd udev_monitor_get_fd_dylibloader_orig_libudev +#define udev_monitor_receive_device udev_monitor_receive_device_dylibloader_orig_libudev +#define udev_monitor_filter_add_match_subsystem_devtype udev_monitor_filter_add_match_subsystem_devtype_dylibloader_orig_libudev +#define udev_monitor_filter_add_match_tag udev_monitor_filter_add_match_tag_dylibloader_orig_libudev +#define udev_monitor_filter_update udev_monitor_filter_update_dylibloader_orig_libudev +#define udev_monitor_filter_remove udev_monitor_filter_remove_dylibloader_orig_libudev +#define udev_enumerate_ref udev_enumerate_ref_dylibloader_orig_libudev +#define udev_enumerate_unref udev_enumerate_unref_dylibloader_orig_libudev +#define udev_enumerate_get_udev udev_enumerate_get_udev_dylibloader_orig_libudev +#define udev_enumerate_new udev_enumerate_new_dylibloader_orig_libudev +#define udev_enumerate_add_match_subsystem udev_enumerate_add_match_subsystem_dylibloader_orig_libudev +#define udev_enumerate_add_nomatch_subsystem udev_enumerate_add_nomatch_subsystem_dylibloader_orig_libudev +#define udev_enumerate_add_match_sysattr udev_enumerate_add_match_sysattr_dylibloader_orig_libudev +#define udev_enumerate_add_nomatch_sysattr udev_enumerate_add_nomatch_sysattr_dylibloader_orig_libudev +#define udev_enumerate_add_match_property udev_enumerate_add_match_property_dylibloader_orig_libudev +#define udev_enumerate_add_match_sysname udev_enumerate_add_match_sysname_dylibloader_orig_libudev +#define udev_enumerate_add_match_tag udev_enumerate_add_match_tag_dylibloader_orig_libudev +#define udev_enumerate_add_match_parent udev_enumerate_add_match_parent_dylibloader_orig_libudev +#define udev_enumerate_add_match_is_initialized udev_enumerate_add_match_is_initialized_dylibloader_orig_libudev +#define udev_enumerate_add_syspath udev_enumerate_add_syspath_dylibloader_orig_libudev +#define udev_enumerate_scan_devices udev_enumerate_scan_devices_dylibloader_orig_libudev +#define udev_enumerate_scan_subsystems udev_enumerate_scan_subsystems_dylibloader_orig_libudev +#define udev_enumerate_get_list_entry udev_enumerate_get_list_entry_dylibloader_orig_libudev +#define udev_queue_ref udev_queue_ref_dylibloader_orig_libudev +#define udev_queue_unref udev_queue_unref_dylibloader_orig_libudev +#define udev_queue_get_udev udev_queue_get_udev_dylibloader_orig_libudev +#define udev_queue_new udev_queue_new_dylibloader_orig_libudev +#define udev_queue_get_kernel_seqnum udev_queue_get_kernel_seqnum_dylibloader_orig_libudev +#define udev_queue_get_udev_seqnum udev_queue_get_udev_seqnum_dylibloader_orig_libudev +#define udev_queue_get_udev_is_active udev_queue_get_udev_is_active_dylibloader_orig_libudev +#define udev_queue_get_queue_is_empty udev_queue_get_queue_is_empty_dylibloader_orig_libudev +#define udev_queue_get_seqnum_is_finished udev_queue_get_seqnum_is_finished_dylibloader_orig_libudev +#define udev_queue_get_seqnum_sequence_is_finished udev_queue_get_seqnum_sequence_is_finished_dylibloader_orig_libudev +#define udev_queue_get_fd udev_queue_get_fd_dylibloader_orig_libudev +#define udev_queue_flush udev_queue_flush_dylibloader_orig_libudev +#define udev_queue_get_queued_list_entry udev_queue_get_queued_list_entry_dylibloader_orig_libudev +#define udev_hwdb_new udev_hwdb_new_dylibloader_orig_libudev +#define udev_hwdb_ref udev_hwdb_ref_dylibloader_orig_libudev +#define udev_hwdb_unref udev_hwdb_unref_dylibloader_orig_libudev +#define udev_hwdb_get_properties_list_entry udev_hwdb_get_properties_list_entry_dylibloader_orig_libudev +#define udev_util_encode_string udev_util_encode_string_dylibloader_orig_libudev +#include <libudev.h> +#undef udev_ref +#undef udev_unref +#undef udev_new +#undef udev_set_log_fn +#undef udev_get_log_priority +#undef udev_set_log_priority +#undef udev_get_userdata +#undef udev_set_userdata +#undef udev_list_entry_get_next +#undef udev_list_entry_get_by_name +#undef udev_list_entry_get_name +#undef udev_list_entry_get_value +#undef udev_device_ref +#undef udev_device_unref +#undef udev_device_get_udev +#undef udev_device_new_from_syspath +#undef udev_device_new_from_devnum +#undef udev_device_new_from_subsystem_sysname +#undef udev_device_new_from_device_id +#undef udev_device_new_from_environment +#undef udev_device_get_parent +#undef udev_device_get_parent_with_subsystem_devtype +#undef udev_device_get_devpath +#undef udev_device_get_subsystem +#undef udev_device_get_devtype +#undef udev_device_get_syspath +#undef udev_device_get_sysname +#undef udev_device_get_sysnum +#undef udev_device_get_devnode +#undef udev_device_get_is_initialized +#undef udev_device_get_devlinks_list_entry +#undef udev_device_get_properties_list_entry +#undef udev_device_get_tags_list_entry +#undef udev_device_get_sysattr_list_entry +#undef udev_device_get_property_value +#undef udev_device_get_driver +#undef udev_device_get_devnum +#undef udev_device_get_action +#undef udev_device_get_seqnum +#undef udev_device_get_usec_since_initialized +#undef udev_device_get_sysattr_value +#undef udev_device_set_sysattr_value +#undef udev_device_has_tag +#undef udev_monitor_ref +#undef udev_monitor_unref +#undef udev_monitor_get_udev +#undef udev_monitor_new_from_netlink +#undef udev_monitor_enable_receiving +#undef udev_monitor_set_receive_buffer_size +#undef udev_monitor_get_fd +#undef udev_monitor_receive_device +#undef udev_monitor_filter_add_match_subsystem_devtype +#undef udev_monitor_filter_add_match_tag +#undef udev_monitor_filter_update +#undef udev_monitor_filter_remove +#undef udev_enumerate_ref +#undef udev_enumerate_unref +#undef udev_enumerate_get_udev +#undef udev_enumerate_new +#undef udev_enumerate_add_match_subsystem +#undef udev_enumerate_add_nomatch_subsystem +#undef udev_enumerate_add_match_sysattr +#undef udev_enumerate_add_nomatch_sysattr +#undef udev_enumerate_add_match_property +#undef udev_enumerate_add_match_sysname +#undef udev_enumerate_add_match_tag +#undef udev_enumerate_add_match_parent +#undef udev_enumerate_add_match_is_initialized +#undef udev_enumerate_add_syspath +#undef udev_enumerate_scan_devices +#undef udev_enumerate_scan_subsystems +#undef udev_enumerate_get_list_entry +#undef udev_queue_ref +#undef udev_queue_unref +#undef udev_queue_get_udev +#undef udev_queue_new +#undef udev_queue_get_kernel_seqnum +#undef udev_queue_get_udev_seqnum +#undef udev_queue_get_udev_is_active +#undef udev_queue_get_queue_is_empty +#undef udev_queue_get_seqnum_is_finished +#undef udev_queue_get_seqnum_sequence_is_finished +#undef udev_queue_get_fd +#undef udev_queue_flush +#undef udev_queue_get_queued_list_entry +#undef udev_hwdb_new +#undef udev_hwdb_ref +#undef udev_hwdb_unref +#undef udev_hwdb_get_properties_list_entry +#undef udev_util_encode_string +#ifdef __cplusplus +extern "C" { +#endif +#define udev_ref udev_ref_dylibloader_wrapper_libudev +#define udev_unref udev_unref_dylibloader_wrapper_libudev +#define udev_new udev_new_dylibloader_wrapper_libudev +#define udev_set_log_fn udev_set_log_fn_dylibloader_wrapper_libudev +#define udev_get_log_priority udev_get_log_priority_dylibloader_wrapper_libudev +#define udev_set_log_priority udev_set_log_priority_dylibloader_wrapper_libudev +#define udev_get_userdata udev_get_userdata_dylibloader_wrapper_libudev +#define udev_set_userdata udev_set_userdata_dylibloader_wrapper_libudev +#define udev_list_entry_get_next udev_list_entry_get_next_dylibloader_wrapper_libudev +#define udev_list_entry_get_by_name udev_list_entry_get_by_name_dylibloader_wrapper_libudev +#define udev_list_entry_get_name udev_list_entry_get_name_dylibloader_wrapper_libudev +#define udev_list_entry_get_value udev_list_entry_get_value_dylibloader_wrapper_libudev +#define udev_device_ref udev_device_ref_dylibloader_wrapper_libudev +#define udev_device_unref udev_device_unref_dylibloader_wrapper_libudev +#define udev_device_get_udev udev_device_get_udev_dylibloader_wrapper_libudev +#define udev_device_new_from_syspath udev_device_new_from_syspath_dylibloader_wrapper_libudev +#define udev_device_new_from_devnum udev_device_new_from_devnum_dylibloader_wrapper_libudev +#define udev_device_new_from_subsystem_sysname udev_device_new_from_subsystem_sysname_dylibloader_wrapper_libudev +#define udev_device_new_from_device_id udev_device_new_from_device_id_dylibloader_wrapper_libudev +#define udev_device_new_from_environment udev_device_new_from_environment_dylibloader_wrapper_libudev +#define udev_device_get_parent udev_device_get_parent_dylibloader_wrapper_libudev +#define udev_device_get_parent_with_subsystem_devtype udev_device_get_parent_with_subsystem_devtype_dylibloader_wrapper_libudev +#define udev_device_get_devpath udev_device_get_devpath_dylibloader_wrapper_libudev +#define udev_device_get_subsystem udev_device_get_subsystem_dylibloader_wrapper_libudev +#define udev_device_get_devtype udev_device_get_devtype_dylibloader_wrapper_libudev +#define udev_device_get_syspath udev_device_get_syspath_dylibloader_wrapper_libudev +#define udev_device_get_sysname udev_device_get_sysname_dylibloader_wrapper_libudev +#define udev_device_get_sysnum udev_device_get_sysnum_dylibloader_wrapper_libudev +#define udev_device_get_devnode udev_device_get_devnode_dylibloader_wrapper_libudev +#define udev_device_get_is_initialized udev_device_get_is_initialized_dylibloader_wrapper_libudev +#define udev_device_get_devlinks_list_entry udev_device_get_devlinks_list_entry_dylibloader_wrapper_libudev +#define udev_device_get_properties_list_entry udev_device_get_properties_list_entry_dylibloader_wrapper_libudev +#define udev_device_get_tags_list_entry udev_device_get_tags_list_entry_dylibloader_wrapper_libudev +#define udev_device_get_sysattr_list_entry udev_device_get_sysattr_list_entry_dylibloader_wrapper_libudev +#define udev_device_get_property_value udev_device_get_property_value_dylibloader_wrapper_libudev +#define udev_device_get_driver udev_device_get_driver_dylibloader_wrapper_libudev +#define udev_device_get_devnum udev_device_get_devnum_dylibloader_wrapper_libudev +#define udev_device_get_action udev_device_get_action_dylibloader_wrapper_libudev +#define udev_device_get_seqnum udev_device_get_seqnum_dylibloader_wrapper_libudev +#define udev_device_get_usec_since_initialized udev_device_get_usec_since_initialized_dylibloader_wrapper_libudev +#define udev_device_get_sysattr_value udev_device_get_sysattr_value_dylibloader_wrapper_libudev +#define udev_device_set_sysattr_value udev_device_set_sysattr_value_dylibloader_wrapper_libudev +#define udev_device_has_tag udev_device_has_tag_dylibloader_wrapper_libudev +#define udev_monitor_ref udev_monitor_ref_dylibloader_wrapper_libudev +#define udev_monitor_unref udev_monitor_unref_dylibloader_wrapper_libudev +#define udev_monitor_get_udev udev_monitor_get_udev_dylibloader_wrapper_libudev +#define udev_monitor_new_from_netlink udev_monitor_new_from_netlink_dylibloader_wrapper_libudev +#define udev_monitor_enable_receiving udev_monitor_enable_receiving_dylibloader_wrapper_libudev +#define udev_monitor_set_receive_buffer_size udev_monitor_set_receive_buffer_size_dylibloader_wrapper_libudev +#define udev_monitor_get_fd udev_monitor_get_fd_dylibloader_wrapper_libudev +#define udev_monitor_receive_device udev_monitor_receive_device_dylibloader_wrapper_libudev +#define udev_monitor_filter_add_match_subsystem_devtype udev_monitor_filter_add_match_subsystem_devtype_dylibloader_wrapper_libudev +#define udev_monitor_filter_add_match_tag udev_monitor_filter_add_match_tag_dylibloader_wrapper_libudev +#define udev_monitor_filter_update udev_monitor_filter_update_dylibloader_wrapper_libudev +#define udev_monitor_filter_remove udev_monitor_filter_remove_dylibloader_wrapper_libudev +#define udev_enumerate_ref udev_enumerate_ref_dylibloader_wrapper_libudev +#define udev_enumerate_unref udev_enumerate_unref_dylibloader_wrapper_libudev +#define udev_enumerate_get_udev udev_enumerate_get_udev_dylibloader_wrapper_libudev +#define udev_enumerate_new udev_enumerate_new_dylibloader_wrapper_libudev +#define udev_enumerate_add_match_subsystem udev_enumerate_add_match_subsystem_dylibloader_wrapper_libudev +#define udev_enumerate_add_nomatch_subsystem udev_enumerate_add_nomatch_subsystem_dylibloader_wrapper_libudev +#define udev_enumerate_add_match_sysattr udev_enumerate_add_match_sysattr_dylibloader_wrapper_libudev +#define udev_enumerate_add_nomatch_sysattr udev_enumerate_add_nomatch_sysattr_dylibloader_wrapper_libudev +#define udev_enumerate_add_match_property udev_enumerate_add_match_property_dylibloader_wrapper_libudev +#define udev_enumerate_add_match_sysname udev_enumerate_add_match_sysname_dylibloader_wrapper_libudev +#define udev_enumerate_add_match_tag udev_enumerate_add_match_tag_dylibloader_wrapper_libudev +#define udev_enumerate_add_match_parent udev_enumerate_add_match_parent_dylibloader_wrapper_libudev +#define udev_enumerate_add_match_is_initialized udev_enumerate_add_match_is_initialized_dylibloader_wrapper_libudev +#define udev_enumerate_add_syspath udev_enumerate_add_syspath_dylibloader_wrapper_libudev +#define udev_enumerate_scan_devices udev_enumerate_scan_devices_dylibloader_wrapper_libudev +#define udev_enumerate_scan_subsystems udev_enumerate_scan_subsystems_dylibloader_wrapper_libudev +#define udev_enumerate_get_list_entry udev_enumerate_get_list_entry_dylibloader_wrapper_libudev +#define udev_queue_ref udev_queue_ref_dylibloader_wrapper_libudev +#define udev_queue_unref udev_queue_unref_dylibloader_wrapper_libudev +#define udev_queue_get_udev udev_queue_get_udev_dylibloader_wrapper_libudev +#define udev_queue_new udev_queue_new_dylibloader_wrapper_libudev +#define udev_queue_get_kernel_seqnum udev_queue_get_kernel_seqnum_dylibloader_wrapper_libudev +#define udev_queue_get_udev_seqnum udev_queue_get_udev_seqnum_dylibloader_wrapper_libudev +#define udev_queue_get_udev_is_active udev_queue_get_udev_is_active_dylibloader_wrapper_libudev +#define udev_queue_get_queue_is_empty udev_queue_get_queue_is_empty_dylibloader_wrapper_libudev +#define udev_queue_get_seqnum_is_finished udev_queue_get_seqnum_is_finished_dylibloader_wrapper_libudev +#define udev_queue_get_seqnum_sequence_is_finished udev_queue_get_seqnum_sequence_is_finished_dylibloader_wrapper_libudev +#define udev_queue_get_fd udev_queue_get_fd_dylibloader_wrapper_libudev +#define udev_queue_flush udev_queue_flush_dylibloader_wrapper_libudev +#define udev_queue_get_queued_list_entry udev_queue_get_queued_list_entry_dylibloader_wrapper_libudev +#define udev_hwdb_new udev_hwdb_new_dylibloader_wrapper_libudev +#define udev_hwdb_ref udev_hwdb_ref_dylibloader_wrapper_libudev +#define udev_hwdb_unref udev_hwdb_unref_dylibloader_wrapper_libudev +#define udev_hwdb_get_properties_list_entry udev_hwdb_get_properties_list_entry_dylibloader_wrapper_libudev +#define udev_util_encode_string udev_util_encode_string_dylibloader_wrapper_libudev +extern struct udev* (*udev_ref_dylibloader_wrapper_libudev)(struct udev*); +extern struct udev* (*udev_unref_dylibloader_wrapper_libudev)(struct udev*); +extern struct udev* (*udev_new_dylibloader_wrapper_libudev)( void); +extern void (*udev_set_log_fn_dylibloader_wrapper_libudev)(struct udev*, void*); +extern int (*udev_get_log_priority_dylibloader_wrapper_libudev)(struct udev*); +extern void (*udev_set_log_priority_dylibloader_wrapper_libudev)(struct udev*, int); +extern void* (*udev_get_userdata_dylibloader_wrapper_libudev)(struct udev*); +extern void (*udev_set_userdata_dylibloader_wrapper_libudev)(struct udev*, void*); +extern struct udev_list_entry* (*udev_list_entry_get_next_dylibloader_wrapper_libudev)(struct udev_list_entry*); +extern struct udev_list_entry* (*udev_list_entry_get_by_name_dylibloader_wrapper_libudev)(struct udev_list_entry*,const char*); +extern const char* (*udev_list_entry_get_name_dylibloader_wrapper_libudev)(struct udev_list_entry*); +extern const char* (*udev_list_entry_get_value_dylibloader_wrapper_libudev)(struct udev_list_entry*); +extern struct udev_device* (*udev_device_ref_dylibloader_wrapper_libudev)(struct udev_device*); +extern struct udev_device* (*udev_device_unref_dylibloader_wrapper_libudev)(struct udev_device*); +extern struct udev* (*udev_device_get_udev_dylibloader_wrapper_libudev)(struct udev_device*); +extern struct udev_device* (*udev_device_new_from_syspath_dylibloader_wrapper_libudev)(struct udev*,const char*); +extern struct udev_device* (*udev_device_new_from_devnum_dylibloader_wrapper_libudev)(struct udev*, char, dev_t); +extern struct udev_device* (*udev_device_new_from_subsystem_sysname_dylibloader_wrapper_libudev)(struct udev*,const char*,const char*); +extern struct udev_device* (*udev_device_new_from_device_id_dylibloader_wrapper_libudev)(struct udev*,const char*); +extern struct udev_device* (*udev_device_new_from_environment_dylibloader_wrapper_libudev)(struct udev*); +extern struct udev_device* (*udev_device_get_parent_dylibloader_wrapper_libudev)(struct udev_device*); +extern struct udev_device* (*udev_device_get_parent_with_subsystem_devtype_dylibloader_wrapper_libudev)(struct udev_device*,const char*,const char*); +extern const char* (*udev_device_get_devpath_dylibloader_wrapper_libudev)(struct udev_device*); +extern const char* (*udev_device_get_subsystem_dylibloader_wrapper_libudev)(struct udev_device*); +extern const char* (*udev_device_get_devtype_dylibloader_wrapper_libudev)(struct udev_device*); +extern const char* (*udev_device_get_syspath_dylibloader_wrapper_libudev)(struct udev_device*); +extern const char* (*udev_device_get_sysname_dylibloader_wrapper_libudev)(struct udev_device*); +extern const char* (*udev_device_get_sysnum_dylibloader_wrapper_libudev)(struct udev_device*); +extern const char* (*udev_device_get_devnode_dylibloader_wrapper_libudev)(struct udev_device*); +extern int (*udev_device_get_is_initialized_dylibloader_wrapper_libudev)(struct udev_device*); +extern struct udev_list_entry* (*udev_device_get_devlinks_list_entry_dylibloader_wrapper_libudev)(struct udev_device*); +extern struct udev_list_entry* (*udev_device_get_properties_list_entry_dylibloader_wrapper_libudev)(struct udev_device*); +extern struct udev_list_entry* (*udev_device_get_tags_list_entry_dylibloader_wrapper_libudev)(struct udev_device*); +extern struct udev_list_entry* (*udev_device_get_sysattr_list_entry_dylibloader_wrapper_libudev)(struct udev_device*); +extern const char* (*udev_device_get_property_value_dylibloader_wrapper_libudev)(struct udev_device*,const char*); +extern const char* (*udev_device_get_driver_dylibloader_wrapper_libudev)(struct udev_device*); +extern dev_t (*udev_device_get_devnum_dylibloader_wrapper_libudev)(struct udev_device*); +extern const char* (*udev_device_get_action_dylibloader_wrapper_libudev)(struct udev_device*); +extern unsigned long long int (*udev_device_get_seqnum_dylibloader_wrapper_libudev)(struct udev_device*); +extern unsigned long long int (*udev_device_get_usec_since_initialized_dylibloader_wrapper_libudev)(struct udev_device*); +extern const char* (*udev_device_get_sysattr_value_dylibloader_wrapper_libudev)(struct udev_device*,const char*); +extern int (*udev_device_set_sysattr_value_dylibloader_wrapper_libudev)(struct udev_device*,const char*,const char*); +extern int (*udev_device_has_tag_dylibloader_wrapper_libudev)(struct udev_device*,const char*); +extern struct udev_monitor* (*udev_monitor_ref_dylibloader_wrapper_libudev)(struct udev_monitor*); +extern struct udev_monitor* (*udev_monitor_unref_dylibloader_wrapper_libudev)(struct udev_monitor*); +extern struct udev* (*udev_monitor_get_udev_dylibloader_wrapper_libudev)(struct udev_monitor*); +extern struct udev_monitor* (*udev_monitor_new_from_netlink_dylibloader_wrapper_libudev)(struct udev*,const char*); +extern int (*udev_monitor_enable_receiving_dylibloader_wrapper_libudev)(struct udev_monitor*); +extern int (*udev_monitor_set_receive_buffer_size_dylibloader_wrapper_libudev)(struct udev_monitor*, int); +extern int (*udev_monitor_get_fd_dylibloader_wrapper_libudev)(struct udev_monitor*); +extern struct udev_device* (*udev_monitor_receive_device_dylibloader_wrapper_libudev)(struct udev_monitor*); +extern int (*udev_monitor_filter_add_match_subsystem_devtype_dylibloader_wrapper_libudev)(struct udev_monitor*,const char*,const char*); +extern int (*udev_monitor_filter_add_match_tag_dylibloader_wrapper_libudev)(struct udev_monitor*,const char*); +extern int (*udev_monitor_filter_update_dylibloader_wrapper_libudev)(struct udev_monitor*); +extern int (*udev_monitor_filter_remove_dylibloader_wrapper_libudev)(struct udev_monitor*); +extern struct udev_enumerate* (*udev_enumerate_ref_dylibloader_wrapper_libudev)(struct udev_enumerate*); +extern struct udev_enumerate* (*udev_enumerate_unref_dylibloader_wrapper_libudev)(struct udev_enumerate*); +extern struct udev* (*udev_enumerate_get_udev_dylibloader_wrapper_libudev)(struct udev_enumerate*); +extern struct udev_enumerate* (*udev_enumerate_new_dylibloader_wrapper_libudev)(struct udev*); +extern int (*udev_enumerate_add_match_subsystem_dylibloader_wrapper_libudev)(struct udev_enumerate*,const char*); +extern int (*udev_enumerate_add_nomatch_subsystem_dylibloader_wrapper_libudev)(struct udev_enumerate*,const char*); +extern int (*udev_enumerate_add_match_sysattr_dylibloader_wrapper_libudev)(struct udev_enumerate*,const char*,const char*); +extern int (*udev_enumerate_add_nomatch_sysattr_dylibloader_wrapper_libudev)(struct udev_enumerate*,const char*,const char*); +extern int (*udev_enumerate_add_match_property_dylibloader_wrapper_libudev)(struct udev_enumerate*,const char*,const char*); +extern int (*udev_enumerate_add_match_sysname_dylibloader_wrapper_libudev)(struct udev_enumerate*,const char*); +extern int (*udev_enumerate_add_match_tag_dylibloader_wrapper_libudev)(struct udev_enumerate*,const char*); +extern int (*udev_enumerate_add_match_parent_dylibloader_wrapper_libudev)(struct udev_enumerate*,struct udev_device*); +extern int (*udev_enumerate_add_match_is_initialized_dylibloader_wrapper_libudev)(struct udev_enumerate*); +extern int (*udev_enumerate_add_syspath_dylibloader_wrapper_libudev)(struct udev_enumerate*,const char*); +extern int (*udev_enumerate_scan_devices_dylibloader_wrapper_libudev)(struct udev_enumerate*); +extern int (*udev_enumerate_scan_subsystems_dylibloader_wrapper_libudev)(struct udev_enumerate*); +extern struct udev_list_entry* (*udev_enumerate_get_list_entry_dylibloader_wrapper_libudev)(struct udev_enumerate*); +extern struct udev_queue* (*udev_queue_ref_dylibloader_wrapper_libudev)(struct udev_queue*); +extern struct udev_queue* (*udev_queue_unref_dylibloader_wrapper_libudev)(struct udev_queue*); +extern struct udev* (*udev_queue_get_udev_dylibloader_wrapper_libudev)(struct udev_queue*); +extern struct udev_queue* (*udev_queue_new_dylibloader_wrapper_libudev)(struct udev*); +extern unsigned long long int (*udev_queue_get_kernel_seqnum_dylibloader_wrapper_libudev)(struct udev_queue*); +extern unsigned long long int (*udev_queue_get_udev_seqnum_dylibloader_wrapper_libudev)(struct udev_queue*); +extern int (*udev_queue_get_udev_is_active_dylibloader_wrapper_libudev)(struct udev_queue*); +extern int (*udev_queue_get_queue_is_empty_dylibloader_wrapper_libudev)(struct udev_queue*); +extern int (*udev_queue_get_seqnum_is_finished_dylibloader_wrapper_libudev)(struct udev_queue*, unsigned long long int); +extern int (*udev_queue_get_seqnum_sequence_is_finished_dylibloader_wrapper_libudev)(struct udev_queue*, unsigned long long int, unsigned long long int); +extern int (*udev_queue_get_fd_dylibloader_wrapper_libudev)(struct udev_queue*); +extern int (*udev_queue_flush_dylibloader_wrapper_libudev)(struct udev_queue*); +extern struct udev_list_entry* (*udev_queue_get_queued_list_entry_dylibloader_wrapper_libudev)(struct udev_queue*); +extern struct udev_hwdb* (*udev_hwdb_new_dylibloader_wrapper_libudev)(struct udev*); +extern struct udev_hwdb* (*udev_hwdb_ref_dylibloader_wrapper_libudev)(struct udev_hwdb*); +extern struct udev_hwdb* (*udev_hwdb_unref_dylibloader_wrapper_libudev)(struct udev_hwdb*); +extern struct udev_list_entry* (*udev_hwdb_get_properties_list_entry_dylibloader_wrapper_libudev)(struct udev_hwdb*,const char*, unsigned); +extern int (*udev_util_encode_string_dylibloader_wrapper_libudev)(const char*, char*, size_t); +int initialize_libudev(int verbose); +#ifdef __cplusplus +} +#endif +#endif diff --git a/platform/linuxbsd/os_linuxbsd.cpp b/platform/linuxbsd/os_linuxbsd.cpp index 68290bb4ec..09e1f9461c 100644 --- a/platform/linuxbsd/os_linuxbsd.cpp +++ b/platform/linuxbsd/os_linuxbsd.cpp @@ -128,7 +128,7 @@ Error OS_LinuxBSD::shell_open(String p_uri) {  	args.push_back(p_uri);  	// Agnostic -	ok = execute("xdg-open", args, true, nullptr, nullptr, &err_code); +	ok = execute("xdg-open", args, nullptr, &err_code);  	if (ok == OK && !err_code) {  		return OK;  	} else if (err_code == 2) { @@ -136,25 +136,25 @@ Error OS_LinuxBSD::shell_open(String p_uri) {  	}  	// GNOME  	args.push_front("open"); // The command is `gio open`, so we need to add it to args -	ok = execute("gio", args, true, nullptr, nullptr, &err_code); +	ok = execute("gio", args, nullptr, &err_code);  	if (ok == OK && !err_code) {  		return OK;  	} else if (err_code == 2) {  		return ERR_FILE_NOT_FOUND;  	}  	args.pop_front(); -	ok = execute("gvfs-open", args, true, nullptr, nullptr, &err_code); +	ok = execute("gvfs-open", args, nullptr, &err_code);  	if (ok == OK && !err_code) {  		return OK;  	} else if (err_code == 2) {  		return ERR_FILE_NOT_FOUND;  	}  	// KDE -	ok = execute("kde-open5", args, true, nullptr, nullptr, &err_code); +	ok = execute("kde-open5", args, nullptr, &err_code);  	if (ok == OK && !err_code) {  		return OK;  	} -	ok = execute("kde-open", args, true, nullptr, nullptr, &err_code); +	ok = execute("kde-open", args, nullptr, &err_code);  	return !err_code ? ok : FAILED;  } @@ -232,7 +232,7 @@ String OS_LinuxBSD::get_system_dir(SystemDir p_dir) const {  	String pipe;  	List<String> arg;  	arg.push_back(xdgparam); -	Error err = const_cast<OS_LinuxBSD *>(this)->execute("xdg-user-dir", arg, true, nullptr, &pipe); +	Error err = const_cast<OS_LinuxBSD *>(this)->execute("xdg-user-dir", arg, &pipe);  	if (err != OK) {  		return ".";  	} @@ -307,7 +307,7 @@ Error OS_LinuxBSD::move_to_trash(const String &p_path) {  	List<String> args;  	args.push_back(p_path);  	args.push_front("trash"); // The command is `gio trash <file_name>` so we need to add it to args. -	Error result = execute("gio", args, true, nullptr, nullptr, &err_code); // For GNOME based machines. +	Error result = execute("gio", args, nullptr, &err_code); // For GNOME based machines.  	if (result == OK && !err_code) {  		return OK;  	} else if (err_code == 2) { @@ -317,7 +317,7 @@ Error OS_LinuxBSD::move_to_trash(const String &p_path) {  	args.pop_front();  	args.push_front("move");  	args.push_back("trash:/"); // The command is `kioclient5 move <file_name> trash:/`. -	result = execute("kioclient5", args, true, nullptr, nullptr, &err_code); // For KDE based machines. +	result = execute("kioclient5", args, nullptr, &err_code); // For KDE based machines.  	if (result == OK && !err_code) {  		return OK;  	} else if (err_code == 2) { @@ -326,7 +326,7 @@ Error OS_LinuxBSD::move_to_trash(const String &p_path) {  	args.pop_front();  	args.pop_back(); -	result = execute("gvfs-trash", args, true, nullptr, nullptr, &err_code); // For older Linux machines. +	result = execute("gvfs-trash", args, nullptr, &err_code); // For older Linux machines.  	if (result == OK && !err_code) {  		return OK;  	} else if (err_code == 2) { @@ -410,7 +410,7 @@ Error OS_LinuxBSD::move_to_trash(const String &p_path) {  	OS::Time time = OS::get_singleton()->get_time(false);  	String timestamp = vformat("%04d-%02d-%02dT%02d:%02d:", date.year, date.month, date.day, time.hour, time.min);  	timestamp = vformat("%s%02d", timestamp, time.sec); // vformat only supports up to 6 arguments. -	String trash_info = "[Trash Info]\nPath=" + p_path.http_escape() + "\nDeletionDate=" + timestamp + "\n"; +	String trash_info = "[Trash Info]\nPath=" + p_path.uri_encode() + "\nDeletionDate=" + timestamp + "\n";  	{  		Error err;  		FileAccess *file = FileAccess::open(trash_path + "/info/" + file_name + ".trashinfo", FileAccess::WRITE, &err); @@ -432,7 +432,7 @@ Error OS_LinuxBSD::move_to_trash(const String &p_path) {  	mv_args.push_back(trash_path + "/files");  	{  		int retval; -		Error err = execute("mv", mv_args, true, nullptr, nullptr, &retval); +		Error err = execute("mv", mv_args, nullptr, &retval);  		// Issue an error if "mv" failed to move the given resource to the trash can.  		if (err != OK || retval != 0) {  |