From: Mikko Rasa Date: Sun, 9 Aug 2015 12:59:39 +0000 (+0300) Subject: Add an option to run a command after mounting X-Git-Url: http://git.tdb.fi/?p=pmount-gui.git;a=commitdiff_plain;h=55d817449b2afb5806c9763bc4be5ff99927a4ab Add an option to run a command after mounting This can be used to e.g. open a shell or file manager in the newly-mounted filesystem. No arguments are currently supported. --- diff --git a/main.c b/main.c index 49239cf..40b4483 100644 --- a/main.c +++ b/main.c @@ -29,6 +29,7 @@ typedef struct sDevice } Device; int verbosity = 0; +char *post_mount_command = NULL; /** Parses a string of the form name=value and places the components in a Property @@ -692,6 +693,7 @@ void row_activated(GtkTreeView *list, GtkTreePath *path, GtkTreeViewColumn *colu } } + close(pipe_fd[0]); if(pid) waitpid(pid, &status, 0); @@ -726,6 +728,26 @@ void row_activated(GtkTreeView *list, GtkTreePath *path, GtkTreeViewColumn *colu gtk_main_quit(); + if(post_mount_command && !umount) + { + char workdir[256]; + int len; + len = snprintf(workdir, sizeof(workdir), "/media/%s", device->label); + if(len<(int)sizeof(workdir)) + { + if(verbosity>=1) + printf("Running %s in %s\n", post_mount_command, workdir); + + pid = fork(); + if(pid==0) + { + chdir(workdir); + execlp(post_mount_command, post_mount_command, NULL); + _exit(1); + } + } + } + (void)column; } @@ -786,7 +808,7 @@ int main(int argc, char **argv) gtk_init(&argc, &argv); - while((opt = getopt(argc, argv, "vu"))!=-1) switch(opt) + while((opt = getopt(argc, argv, "vur:"))!=-1) switch(opt) { case 'v': ++verbosity; @@ -794,6 +816,9 @@ int main(int argc, char **argv) case 'u': umount = 1; break; + case 'r': + post_mount_command = optarg; + break; } window = gtk_window_new(GTK_WINDOW_TOPLEVEL);