Merge branch 'mount-manager'
authorMikko Rasa <tdb@tdb.fi>
Thu, 25 Feb 2016 20:12:24 +0000 (22:12 +0200)
committerMikko Rasa <tdb@tdb.fi>
Thu, 25 Feb 2016 20:12:24 +0000 (22:12 +0200)
1  2 
README.txt
main.c

diff --cc README.txt
index fc5512582b7236eca172ab4ee6d025271f1979ce,7643a77b25a786fcc3f0092deadbee1311d2d875..f1b7db47a802543a6aaefc8947311aa1f463468b
@@@ -21,10 -29,5 +29,7 @@@ In addition, there are some command-lin
    -h
      Displays a summary of options.
  
- Suggested usage pattern is to bind pmount-gui to a shortcut key in your window
- manager to provide quick access.
 +Options can be passed to pmount by adding them after the special -- argument.
 +
  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 e4fb87e425019da9253866b68a2d7a4f7ef60671,aae10bce7ceecbf397326b973b9bec4641338001..dd6957dc22f3c41a723fea0c9ff12e7e6035c149
--- 1/main.c
--- 2/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 <command>] [-h] [-- <pmount options>]\n\n"
 -              "Usage: pmount-gui [-v] [-u] [-r <command>] [-m|-M] [-h]\n\n"
++              "Usage: pmount-gui [-v] [-u] [-r <command>] [-m|-M] [-h] [-- <pmount options>]\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;
        }
  
-       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-       gtk_container_set_border_width(GTK_CONTAINER(window), 5);
-       g_signal_connect(window, "destroy", G_CALLBACK(&gtk_main_quit), NULL);
-       g_signal_connect(window, "key-press-event", G_CALLBACK(&key_press), NULL);
 +      /* 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;
 +
+       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(&gtk_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);
  
        gtk_main();
  
-       free_devices(devices);
+       free_devices(context.devices);
+       if(context.inotify_fd>=0)
+               close(context.inotify_fd);
  
 +      free(pmount_argv);
 +
        return 0;
  }