]> Dogcows Code - chaz/openbox/commitdiff
add -help -version -sync and -rc cmd line options
authorDana Jansens <danakj@orodu.net>
Thu, 20 Mar 2003 22:14:15 +0000 (22:14 +0000)
committerDana Jansens <danakj@orodu.net>
Thu, 20 Mar 2003 22:14:15 +0000 (22:14 +0000)
openbox/openbox.c
openbox/openbox.h

index 017eb184115bdd3231634269fcdd34380811f8c5..268d4e6d8242431758a0e6aee59348a5cb4972fe 100644 (file)
@@ -49,10 +49,12 @@ gboolean ob_shutdown = FALSE;
 gboolean ob_restart  = FALSE;
 char    *ob_restart_path = NULL;
 gboolean ob_remote   = FALSE;
-gboolean ob_sync     = TRUE;
+gboolean ob_sync     = FALSE;
 Cursors  ob_cursors;
+char    *ob_rc_path  = NULL;
 
 void signal_handler(const ObEvent *e, void *data);
+void parse_args(int argc, char **argv);
 
 int main(int argc, char **argv)
 {
@@ -89,8 +91,8 @@ int main(int argc, char **argv)
     /* anything that died while we were restarting won't give us a SIGCHLD */
     while (waitpid(-1, NULL, WNOHANG) > 0);
      
-    /* XXX parse out command line args */
-    (void)argc;(void)argv;
+    /* parse out command line args */
+    parse_args(argc, argv);
 
     ob_display = XOpenDisplay(NULL);
     if (ob_display == NULL) {
@@ -194,7 +196,7 @@ int main(int argc, char **argv)
 
         /* re-run me */
         execvp(argv[0], argv); /* try how we were run */
-        execlp("ob3", "ob3", NULL); /* try this as a last resort */
+        execlp(BINARY, BINARY, NULL); /* try this as a last resort */
     }
      
     return 0;
@@ -228,3 +230,46 @@ void signal_handler(const ObEvent *e, void *data)
        g_error("Caught signal %d. Aborting and dumping core.", s);
     }
 }
+
+void print_version()
+{
+    g_print("Openbox %s\n\n", VERSION);
+    g_print("This program comes with ABSOLUTELY NO WARRANTY.\n");
+    g_print("This is free software, and you are welcome to redistribute it\n");
+    g_print("under certain conditions. See the file COPYING for details.\n\n");
+}
+
+void print_help()
+{
+    print_version();
+    g_print("Syntax: %s [options]\n\n", BINARY);
+    g_print("Options:\n\n");
+    g_print("  -rc PATH     Specify the path to the rc file to use\n");
+    g_print("  -help        Display this help and exit\n");
+    g_print("  -version     Display the version and exit\n");
+    g_print("  -sync        Run in synchronous mode (this is slow and meant\n"
+            "               for debugging X routines)\n");
+    g_print("\nPlease report bugs at %s\n", BUGURL);
+}
+
+void parse_args(int argc, char **argv)
+{
+    int i;
+
+    for (i = 1; i < argc; ++i) {
+        if (!strcmp(argv[i], "-version")) {
+            print_version();
+            exit(0);
+        } else if (!strcmp(argv[i], "-help")) {
+            print_help();
+            exit(0);
+        } else if (!strcmp(argv[i], "-sync")) {
+            ob_sync = TRUE;
+        } else if (!strcmp(argv[i], "-rc")) {
+            if (i == argc - 1) /* no args left */
+                g_printerr("-rc requires an argument\n");
+            else
+                ob_rc_path = argv[++i];
+        }
+    }
+}
index f8797d7fad2c24f05ed2754e1c0e9b31cfd982cc..21f0e9a826de28b192139bf98c88a9f753ad9750 100644 (file)
@@ -19,7 +19,7 @@ typedef enum {
 } State;
 
 /* The state of execution of the window manager */
-State ob_state;
+extern State ob_state;
 
 /*! When set to true, Openbox will exit */
 extern gboolean ob_shutdown;
@@ -39,6 +39,9 @@ typedef struct Cursors {
     Cursor ll_angle;
     Cursor lr_angle;
 } Cursors;
-Cursors ob_cursors;
+extern Cursors ob_cursors;
+
+/*! The path of the rc file. If NULL the default paths are searched for one. */
+extern char *ob_rc_path;
 
 #endif
This page took 0.026482 seconds and 4 git commands to generate.