Dependency accounting is needed only under win32, but not under Unix-like systems.
This commit is contained in:
parent
ee8c6209db
commit
ae0f0e3153
|
@ -1 +1 @@
|
|||
Subproject commit ab63ce22a9e2d149d8843f49bd33f8116a862d39
|
||||
Subproject commit 9ba1995060ebb1c65ac9855e3671b3992c859059
|
|
@ -96,27 +96,37 @@ namespace GObject {
|
|||
public bool load_modules (string dir_path, ref Gee.ArrayList<Module>? modules) {
|
||||
|
||||
modules = new Gee.ArrayList<Module> ();
|
||||
#if (WINDOWS)
|
||||
var paths = new Gee.HashSet<string> ();
|
||||
#endif
|
||||
|
||||
try {
|
||||
var libPath = File.new_for_path (dir_path);
|
||||
#if (WINDOWS)
|
||||
for (var i = 0; i < 32; ++i) {
|
||||
var saved_length = modules.size;
|
||||
#endif
|
||||
var lib_enumerator = libPath.enumerate_children (FileAttribute.STANDARD_NAME, 0, null);
|
||||
FileInfo file_info = null;
|
||||
while ((file_info = lib_enumerator.next_file (null)) != null) {
|
||||
if (Regex.match_simple ("^.*\\.(so|dll)$", file_info.get_name ())) {
|
||||
var path = GLib.Module.build_path (dir_path, file_info.get_name ());
|
||||
#if (WINDOWS)
|
||||
if (paths.contains(path)) continue;
|
||||
#endif
|
||||
var module = new Module (path);
|
||||
if (module.load ()) {
|
||||
modules.add (module);
|
||||
#if (WINDOWS)
|
||||
paths.add(path);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
#if (WINDOWS)
|
||||
if (modules.size == saved_length) break;
|
||||
}
|
||||
#endif
|
||||
} catch (Error e) {
|
||||
message (e.message);
|
||||
return false;
|
||||
|
@ -139,12 +149,16 @@ namespace GObject {
|
|||
public bool load_modules_depth2 (string dir_path, ref Gee.ArrayList<Module>? modules) {
|
||||
|
||||
modules = new Gee.ArrayList<Module> ();
|
||||
#if (WINDOWS)
|
||||
var paths = new Gee.HashSet<string> ();
|
||||
#endif
|
||||
|
||||
try {
|
||||
var libPath = File.new_for_path (dir_path);
|
||||
#if (WINDOWS)
|
||||
for (var i = 0; i < 32; ++i) {
|
||||
var saved_length = modules.size;
|
||||
#endif
|
||||
var dir_enumerator = libPath.enumerate_children ("standard::*",
|
||||
FileQueryInfoFlags.NOFOLLOW_SYMLINKS, null);
|
||||
FileInfo dir_info = null;
|
||||
|
@ -157,18 +171,24 @@ namespace GObject {
|
|||
if (Regex.match_simple ("^.*\\.(so|dll)$", file_info.get_name ())) {
|
||||
var path = Path.build_path (Path.DIR_SEPARATOR_S, dir_path, dir_info.get_name ());
|
||||
path = GLib.Module.build_path (path, file_info.get_name ());
|
||||
#if (WINDOWS)
|
||||
if (paths.contains(path)) continue;
|
||||
#endif
|
||||
var module = new Module (path);
|
||||
if (module.load ()) {
|
||||
modules.add (module);
|
||||
#if (WINDOWS)
|
||||
paths.add(path);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#if (WINDOWS)
|
||||
if (modules.size == saved_length) break;
|
||||
}
|
||||
#endif
|
||||
} catch (Error e) {
|
||||
message (e.message);
|
||||
return false;
|
||||
|
|
Loading…
Reference in New Issue