+ actions_register("Exit", setup_func, NULL, run_func);
+ actions_register("SessionLogout", setup_func, NULL, run_func);
+}
+
+static gpointer setup_func(xmlNodePtr node)
+{
+ xmlNodePtr n;
+ Options *o;
+
+ o = g_new0(Options, 1);
+ o->prompt = TRUE;
+
+ if ((n = obt_xml_find_node(node, "prompt")))
+ o->prompt = obt_xml_node_bool(n);
+
+ return o;
+}
+
+static void do_exit(void)
+{
+ if (session_connected())
+ session_request_logout(FALSE);
+ else
+ ob_exit(0);
+}
+
+static gboolean prompt_cb(ObPrompt *p, gint result, gpointer data)
+{
+ if (result)
+ do_exit();
+ return TRUE; /* call the cleanup func */
+}
+
+static void prompt_cleanup(ObPrompt *p, gpointer data)
+{
+ prompt_unref(p);