]> git.siccegge.de Git - frida/frida.git/blobdiff - src/bindings/Guile.cxx
Make signals from geiser work
[frida/frida.git] / src / bindings / Guile.cxx
index 863c9ccd23e43ecdbd3716d6b5ef9b9e6af387d7..18d12e95eef91b5edec0624b5797a68081678546 100644 (file)
@@ -12,16 +12,12 @@ namespace {
 GuileInterpreter::GuileInterpreter()
        : logger(log4cxx::Logger::getLogger("bindings.Guile")) {
 
-       QString socketpath = Settings::get()->getRuntimeDirectory()->canonicalPath()
-               + "/frida." + QString::number(QCoreApplication::applicationPid(), 16) + ".geiser.sock";
-
        scm_init_guile();
-
-       SCM scm_socketpath = scm_from_locale_string(socketpath.toStdString().c_str());
        scm_c_use_module("system repl server");
-       SCM socket = scm_call_2(scm_c_public_ref("system repl server", "make-unix-domain-server-socket"),
-                               scm_from_locale_keyword("path"), scm_socketpath);
-       scm_call_1(scm_c_public_ref("system repl server", "spawn-server"), socket);
+
+       guile::Geiser* geiser = new guile::Geiser(this);
+       geiser->start();
+
        scm_c_load_extension("libguile-frida-binding",
                             "scm_init_frida_module");
 
@@ -79,3 +75,17 @@ int GuileInterpreter::loadFile(const std::string& filename,
        LOG4CXX_DEBUG(logger, "Finished file \"" << filename << "\"");
        return 0;
 }
+
+namespace guile {
+       void Geiser::run() {
+               scm_init_guile();
+
+               QString socketpath = Settings::get()->getRuntimeDirectory()->canonicalPath()
+                       + "/frida." + QString::number(QCoreApplication::applicationPid(), 16) + ".geiser.sock";
+
+               SCM scm_socketpath = scm_from_locale_string(socketpath.toStdString().c_str());
+               SCM socket = scm_call_2(scm_c_public_ref("system repl server", "make-unix-domain-server-socket"),
+                                       scm_from_locale_keyword("path"), scm_socketpath);
+               scm_call_1(scm_c_public_ref("system repl server", "run-server"), socket);
+       }
+}