From: Mikko Rasa Date: Thu, 25 Feb 2016 20:12:24 +0000 (+0200) Subject: Merge branch 'mount-manager' X-Git-Url: http://git.tdb.fi/?p=pmount-gui.git;a=commitdiff_plain;h=55a7d4e8fe6b4cc1d02637f19e7245afbcbdb41b Merge branch 'mount-manager' --- 55a7d4e8fe6b4cc1d02637f19e7245afbcbdb41b diff --cc README.txt index fc55125,7643a77..f1b7db4 --- a/README.txt +++ b/README.txt @@@ -21,10 -29,5 +29,7 @@@ In addition, there are some command-lin -h Displays a summary of options. +Options can be passed to pmount by adding them after the special -- argument. + - Suggested usage pattern is to bind pmount-gui to a shortcut key in your window - manager to provide quick access. - pmount-gui was written by Mikko Rasa and is distributed under the BSD license. See the file LICENSE.txt for full license text. diff --cc main.c index e4fb87e,aae10bc..dd6957d --- a/main.c +++ b/main.c @@@ -30,9 -31,22 +31,23 @@@ typedef struct sDevic time_t time; } Device; + typedef struct sGuiContext + { + int manager; + int autohide; + Device *devices; + GtkWidget *window; + GtkWidget *list; + GtkWidget *button; + char *post_mount_command; + int inotify_fd; + int dev_wd; + GIOChannel *inotify_channel; + int refresh_pending; + } GuiContext; + int verbosity = 0; - char *post_mount_command = NULL; +char **pmount_argv = NULL; /** Parses a string of the form name=value and places the components in a Property @@@ -873,7 -1004,7 +1024,7 @@@ void show_help(void { printf("pmount-gui\n" "Copyright (c) 2011-2015 Mikko Rasa, Mikkosoft Productions\n\n" - "Usage: pmount-gui [-v] [-u] [-r ] [-h] [-- ]\n\n" - "Usage: pmount-gui [-v] [-u] [-r ] [-m|-M] [-h]\n\n" ++ "Usage: pmount-gui [-v] [-u] [-r ] [-m|-M] [-h] [-- ]\n\n" "Options:\n" " -v Increase verbosity\n" " -u Unmount a device (default is mount)\n" @@@ -916,23 -1061,12 +1081,22 @@@ int main(int argc, char **argv return 0; } + /* argc - optind equals to number of options after "--" */ + /* One empty element at the beginning is for program name for execvp */ + /* Three empty elements at the end are required options for pmount + NULL */ + + pmount_argv = malloc(sizeof(char *)*(argc-optind+4)); + + for(i=0; i<(argc-optind); ++i) + pmount_argv[i+1] = argv[optind+i]; + pmount_argv[argc-optind+1] = NULL; + - window = gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_container_set_border_width(GTK_CONTAINER(window), 5); - g_signal_connect(window, "destroy", G_CALLBACK(>k_main_quit), NULL); - g_signal_connect(window, "key-press-event", G_CALLBACK(&key_press), NULL); + context.window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_container_set_border_width(GTK_CONTAINER(context.window), 5); + g_signal_connect(context.window, "destroy", G_CALLBACK(>k_main_quit), NULL); box = gtk_vbox_new(FALSE, 5); - gtk_container_add(GTK_CONTAINER(window), box); + gtk_container_add(GTK_CONTAINER(context.window), box); viewport = gtk_viewport_new(NULL, NULL); gtk_viewport_set_shadow_type(GTK_VIEWPORT(viewport), GTK_SHADOW_IN); @@@ -991,9 -1139,9 +1169,11 @@@ gtk_main(); - free_devices(devices); + free_devices(context.devices); + if(context.inotify_fd>=0) + close(context.inotify_fd); + free(pmount_argv); + return 0; }