evolution-user-prompter: Add a --keep-running option.
authorMatthew Barnes <mbarnes@redhat.com>
Sat, 23 Feb 2013 04:58:36 +0000 (23:58 -0500)
committerMatthew Barnes <mbarnes@redhat.com>
Sat, 23 Feb 2013 04:58:36 +0000 (23:58 -0500)
This thing keeps quitting on me when run from the command-line.

services/evolution-user-prompter/evolution-user-prompter.c

index 64c64b8..682be17 100644 (file)
  *
  */
 
-#ifdef HAVE_CONFIG_H
 #include <config.h>
-#endif /* HAVE_CONFIG_H */
-
 #include <locale.h>
 #include <libintl.h>
+#include <glib/gi18n.h>
 
 #include "prompt-user.h"
 
+static gboolean opt_keep_running = FALSE;
+
+static GOptionEntry entries[] = {
+
+       { "keep-running", 'r', 0, G_OPTION_ARG_NONE, &opt_keep_running,
+         N_("Keep running after the last client is closed"), NULL },
+       { NULL }
+};
+
 gint
 main (gint argc,
       gchar **argv)
 {
+       GOptionContext *context;
        EDBusServer *server;
+       GError *error = NULL;
 
        setlocale (LC_ALL, "");
        bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
@@ -37,6 +46,16 @@ main (gint argc,
 
        prompt_user_init (&argc, &argv);
 
+       context = g_option_context_new (NULL);
+       g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE);
+       g_option_context_parse (context, &argc, &argv, &error);
+       g_option_context_free (context);
+
+       if (error != NULL) {
+               g_printerr ("%s\n", error->message);
+               exit (EXIT_FAILURE);
+       }
+
        e_gdbus_templates_init_main_thread ();
 
        server = e_user_prompter_server_new ();
@@ -46,6 +65,11 @@ main (gint argc,
 
        g_print ("Prompter is up and running...\n");
 
+       /* This SHOULD keep the server's use
+        * count from ever reaching zero. */
+       if (opt_keep_running)
+               e_dbus_server_hold (server);
+
        e_dbus_server_run (server, TRUE);
 
        g_object_unref (server);