summaryrefslogtreecommitdiffstats
path: root/source/helper.c
diff options
context:
space:
mode:
authorDave Davenport <qball@gmpclient.org>2015-02-03 08:21:59 +0100
committerDave Davenport <qball@gmpclient.org>2015-02-03 08:21:59 +0100
commit63fd534ba2ccc79ceecdf7f4493cc85cee7ca877 (patch)
tree6021ce7431f48121e15b4435f4c724675c98563b /source/helper.c
parentf86cf8988bce70cb1aecf614cd338de816112889 (diff)
Move data around, constness, etc.
Diffstat (limited to 'source/helper.c')
-rw-r--r--source/helper.c107
1 files changed, 107 insertions, 0 deletions
diff --git a/source/helper.c b/source/helper.c
index 02559a3c..517df788 100644
--- a/source/helper.c
+++ b/source/helper.c
@@ -377,3 +377,110 @@ void create_pid_file ( const char *pidfile )
}
}
}
+
+void config_parse_cmd_options ( int argc, char ** argv )
+{
+
+ find_arg_str ( argc, argv, "-switchers", &( config.switchers ) );
+ // Parse commandline arguments about the looks.
+ find_arg_uint ( argc, argv, "-opacity", &( config.window_opacity ) );
+
+ find_arg_int ( argc, argv, "-width", &( config.menu_width ) );
+
+ find_arg_uint ( argc, argv, "-lines", &( config.menu_lines ) );
+ find_arg_uint ( argc, argv, "-columns", &( config.menu_columns ) );
+
+ find_arg_str ( argc, argv, "-font", &( config.menu_font ) );
+ find_arg_str ( argc, argv, "-fg", &( config.menu_fg ) );
+ find_arg_str ( argc, argv, "-bg", &( config.menu_bg ) );
+ find_arg_str ( argc, argv, "-bgalt", &( config.menu_bg_alt ) );
+ find_arg_str ( argc, argv, "-hlfg", &( config.menu_hlfg ) );
+ find_arg_str ( argc, argv, "-hlbg", &( config.menu_hlbg ) );
+ find_arg_str ( argc, argv, "-bc", &( config.menu_bc ) );
+ find_arg_uint ( argc, argv, "-bw", &( config.menu_bw ) );
+
+ // Parse commandline arguments about size and position
+ find_arg_uint ( argc, argv, "-location", &( config.location ) );
+ find_arg_uint ( argc, argv, "-padding", &( config.padding ) );
+ find_arg_int ( argc, argv, "-xoffset", &( config.x_offset ) );
+ find_arg_int ( argc, argv, "-yoffset", &( config.y_offset ) );
+ if ( find_arg ( argc, argv, "-fixed-num-lines" ) >= 0 ) {
+ config.fixed_num_lines = 1;
+ }
+ if ( find_arg ( argc, argv, "-disable-history" ) >= 0 ) {
+ config.disable_history = TRUE;
+ }
+ if ( find_arg ( argc, argv, "-levenshtein-sort" ) >= 0 ) {
+ config.levenshtein_sort = TRUE;
+ }
+ if ( find_arg ( argc, argv, "-case-sensitive" ) >= 0 ) {
+ config.case_sensitive = TRUE;
+ }
+
+ // Parse commandline arguments about behavior
+ find_arg_str ( argc, argv, "-terminal", &( config.terminal_emulator ) );
+
+ if ( find_arg ( argc, argv, "-hmode" ) >= 0 ) {
+ config.hmode = TRUE;
+ }
+
+ find_arg_str ( argc, argv, "-ssh-client", &( config.ssh_client ) );
+ find_arg_str ( argc, argv, "-ssh-command", &( config.ssh_command ) );
+ find_arg_str ( argc, argv, "-run-command", &( config.run_command ) );
+ find_arg_str ( argc, argv, "-run-list-command", &( config.run_list_command ) );
+ find_arg_str ( argc, argv, "-run-shell-command", &( config.run_shell_command ) );
+
+ // Keybindings
+ find_arg_str ( argc, argv, "-key", &( config.window_key ) );
+ find_arg_str ( argc, argv, "-rkey", &( config.run_key ) );
+ find_arg_str ( argc, argv, "-skey", &( config.ssh_key ) );
+
+
+
+ find_arg_char ( argc, argv, "-sep", &( config.separator ) );
+
+
+ find_arg_int ( argc, argv, "-eh", &( config.element_height ) );
+
+ find_arg_uint ( argc, argv, "-lazy-filter-limit", &( config.lazy_filter_limit ) );
+
+ if ( find_arg ( argc, argv, "-sidebar-mode" ) >= 0 ) {
+ config.sidebar_mode = TRUE;
+ }
+}
+
+/**
+ * Do some input validation, especially the first few could break things.
+ * It is good to catch them beforehand.
+ *
+ * This functions exits the program with 1 when it finds an invalid configuration.
+ */
+void config_sanity_check ( void )
+{
+ if ( config.element_height < 1 ) {
+ fprintf ( stderr, "config.element_height is invalid. It needs to be atleast 1 line high.\n" );
+ exit ( 1 );
+ }
+ if ( config.menu_columns == 0 ) {
+ fprintf ( stderr, "config.menu_columns is invalid. You need at least one visible column.\n" );
+ exit ( 1 );
+ }
+ if ( config.menu_width == 0 ) {
+ fprintf ( stderr, "config.menu_width is invalid. You cannot have a window with no width.\n" );
+ exit ( 1 );
+ }
+ if ( !( config.location >= WL_CENTER && config.location <= WL_WEST ) ) {
+ fprintf ( stderr, "config.location is invalid. ( %d >= %d >= %d) does not hold.\n",
+ WL_WEST, config.location, WL_CENTER );
+ exit ( 1 );
+ }
+ if ( !( config.hmode == TRUE || config.hmode == FALSE ) ) {
+ fprintf ( stderr, "config.hmode is invalid.\n" );
+ exit ( 1 );
+ }
+ // If alternative row is not set, copy the normal background color.
+ if ( config.menu_bg_alt == NULL ) {
+ config.menu_bg_alt = config.menu_bg;
+ }
+}
+