The following commit has been merged in the master branch:
commit b34966927c5f784dd0fd87e3950fdcd46b484503
Author: Andrei Zavada <[email protected]>
Date:   Sun Jun 9 12:44:29 2013 +0300

    aghermann -n EXPDIR for headless mode
    
    Only init a CExpDesign in that dir, do nothing else, the idea being to
    run it under valgrind.

diff --git a/src/aghermann/main.cc b/src/aghermann/main.cc
index 608f9ea..64cf7b1 100644
--- a/src/aghermann/main.cc
+++ b/src/aghermann/main.cc
@@ -19,6 +19,7 @@
 #include <unique/unique.h>
 
 #include "globals.hh"
+#include "expdesign/primaries.hh"
 #include "ui/globals.hh"
 #include "ui/ui.hh"
 #include "ui/sm/sm.hh"
@@ -56,51 +57,76 @@ message_received_cb( UniqueApp         *,
 
 void print_version();
 
+static void print_usage( const char*);
+
 int
 main( int argc, char **argv)
 {
        print_version();
 
+       bool headless = false;
        int     c;
-       while ( (c = getopt( argc, argv, "h")) != -1 )
+       while ( (c = getopt( argc, argv, "hn")) != -1 )
                switch ( c ) {
+               case 'n': // headless
+                       headless = true;
+                       break;
                case 'h':
-                       printf( "Usage: %s [exp_root_dir]\n", argv[0]);
+                       print_usage( argv[0]);
                        return 0;
                }
 
-       gtk_init( &argc, &argv);
+       if ( headless ) {
+               char*& explicit_session = argv[optind];
+               if ( (!explicit_session || strlen(explicit_session) == 0) ) {
+                       fprintf( stderr, "Headless mode requires explicit 
session dir\n");
+                       print_usage( argv[0]);
+                       return -1;
+               }
+
+               agh::CExpDesign ED (explicit_session); // essentially a very 
thoughtful no-op
 
-       // don't let user get us started twice
-       aghui::__unique_app__ =
-               unique_app_new_with_commands( "com.johnhommer.Aghermann", NULL,
-                                             "fafa", 1,
-                                             NULL);
-       if ( unique_app_is_running( aghui::__unique_app__) ) {
-               printf( "There is unique app, switching to it now\n");
-               unique_app_send_message( aghui::__unique_app__, 
UNIQUE_ACTIVATE, NULL);
        } else {
-               g_signal_connect( aghui::__unique_app__, "message-received",
-                                 (GCallback)message_received_cb,
-                                 NULL);
 
-               agh::global::init();
+               gtk_init( &argc, &argv);
 
-               if ( aghui::prepare_for_expdesign() ) {
-                       aghui::pop_ok_message( NULL, "UI failed to initialize", 
"Your install is broken.");
-                       return 2;
-               }
+               // don't let user get us started twice
+               aghui::__unique_app__ =
+                       unique_app_new_with_commands( 
"com.johnhommer.Aghermann", NULL,
+                                                     "fafa", 1,
+                                                     NULL);
+               if ( unique_app_is_running( aghui::__unique_app__) ) {
+                       printf( "There is unique app, switching to it now\n");
+                       unique_app_send_message( aghui::__unique_app__, 
UNIQUE_ACTIVATE, NULL);
+               } else {
+                       g_signal_connect( aghui::__unique_app__, 
"message-received",
+                                         (GCallback)message_received_cb,
+                                         NULL);
+
+                       agh::global::init();
 
-               aghui::SSessionChooser chooser (argv[optind]);
-               // implicit read sessionrc, run
+                       if ( aghui::prepare_for_expdesign() ) {
+                               aghui::pop_ok_message( NULL, "UI failed to 
initialize", "Your install is broken.");
+                               return 2;
+                       }
 
-               gtk_main();
+                       aghui::SSessionChooser chooser (argv[optind]);
+                       // implicit read sessionrc, run
+
+                       gtk_main();
+               }
+               // g_object_unref (app); // abandon ship anyway
        }
-       // g_object_unref (app); // abandon ship anyway
 
        return 0;
 }
 
+void
+print_usage( const char* argv0)
+{
+       printf( "Usage: %s [-n] [exp_root_dir]\n", argv0);
+}
+
 // Local Variables:
 // Mode: c++
 // indent-tabs-mode: 8

-- 
Sleep experiment manager

_______________________________________________
debian-med-commit mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/debian-med-commit

Reply via email to