summaryrefslogtreecommitdiffstats
path: root/src/progs/ingen/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/progs/ingen/main.cpp')
-rw-r--r--src/progs/ingen/main.cpp23
1 files changed, 18 insertions, 5 deletions
diff --git a/src/progs/ingen/main.cpp b/src/progs/ingen/main.cpp
index 1ca1311a..57b8bf5c 100644
--- a/src/progs/ingen/main.cpp
+++ b/src/progs/ingen/main.cpp
@@ -18,6 +18,8 @@
#include <iostream>
#include <string>
#include <signal.h>
+#include <glibmm/convert.h>
+#include <glibmm/miscutils.h>
#include <boost/optional.hpp>
#include <raul/Path.h>
#include <raul/RDFWorld.h>
@@ -63,8 +65,10 @@ main(int argc, char** argv)
}
SharedPtr<Glib::Module> engine_module;
+ SharedPtr<Glib::Module> client_module;
SharedPtr<Glib::Module> gui_module;
+
SharedPtr<Shared::EngineInterface> engine_interface;
/* Run engine */
@@ -104,8 +108,7 @@ main(int argc, char** argv)
/* Connect to remote engine */
if (args.connect_given || (args.load_given && !engine_interface)) {
bool found = false;
- SharedPtr<Glib::Module> client_module
- = Ingen::Shared::load_module("ingen_client");
+ client_module = Ingen::Shared::load_module("ingen_client");
SharedPtr<Shared::EngineInterface> (*new_osc_interface)(const std::string&) = NULL;
@@ -122,7 +125,7 @@ main(int argc, char** argv)
/* Load a patch */
- if (args.load_given) {
+ if (args.load_given && engine_interface) {
Raul::RDF::World rdf_world;
rdf_world.add_prefix("xsd", "http://www.w3.org/2001/XMLSchema#");
@@ -147,8 +150,18 @@ main(int argc, char** argv)
if (serialisation_module && found) {
SharedPtr<Serialisation::Loader> loader(new_loader());
- loader->load(engine_interface, &rdf_world,
- string("file:") + args.load_arg, parent_path, "");
+
+ // Assumption: Containing ':' means URI, otherwise filename
+ string uri = args.load_arg;
+ if (uri.find(':') == string::npos)
+ if (Glib::path_is_absolute(args.load_arg))
+ uri = Glib::filename_to_uri(args.load_arg);
+ else
+ uri = Glib::filename_to_uri(Glib::build_filename(
+ Glib::get_current_dir(), args.load_arg));
+
+ loader->load(engine_interface, &rdf_world, uri, parent_path, "");
+
} else {
cerr << "Unable to load serialisation module, aborting." << endl;
return -1;