summaryrefslogtreecommitdiffstats
path: root/languages/ruby/app_templates/dcopservice/app.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'languages/ruby/app_templates/dcopservice/app.cpp')
-rw-r--r--languages/ruby/app_templates/dcopservice/app.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/languages/ruby/app_templates/dcopservice/app.cpp b/languages/ruby/app_templates/dcopservice/app.cpp
new file mode 100644
index 00000000..8d6af02d
--- /dev/null
+++ b/languages/ruby/app_templates/dcopservice/app.cpp
@@ -0,0 +1,30 @@
+#include <ruby.h>
+
+#include <qstring.h>
+#include <qfileinfo.h>
+#include <kinstance.h>
+#include <kstandarddirs.h>
+
+int main(int argc, char **argv) {
+ KInstance * instance = new KInstance("%{APPNAMELC}");
+ QString appdir = ::locate("data", "%{APPNAMELC}/main.rb", instance);
+ delete instance;
+ if (appdir.isNull()) {
+ qFatal("Error: Can't find \"%{APPNAMELC}/main.rb\"\n");
+ }
+ QFileInfo program(appdir);
+
+ char ** rubyargs = (char **) calloc(argc+4, sizeof(char *));
+ rubyargs[0] = strdup(argv[0]);
+ rubyargs[1] = strdup("-KU");
+ rubyargs[2] = strdup(QString("-C%1").arg(program.dirPath()).latin1());
+ rubyargs[3] = strdup(QString("-I%1").arg(program.dirPath()).latin1());
+ rubyargs[4] = strdup(program.fileName().latin1());
+ for (int i = 1; i < argc; i++) {
+ rubyargs[i+4] = argv[i];
+ }
+
+ ruby_init();
+ ruby_options(argc+4, rubyargs);
+ ruby_run();
+}