X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=main.c;h=25ad7edd401bd7ad7f6aa49128c52effa5058262;hb=91e55b23fdc8c5d4d72947b2bed9899bd7f90ce2;hp=63921300b2bf373105ae557e773295b0d74489c4;hpb=a82201f388e8d4b4b5b10b9547c3ee3a4e488586;p=pmount-gui.git diff --git a/main.c b/main.c index 6392130..25ad7ed 100644 --- a/main.c +++ b/main.c @@ -570,7 +570,7 @@ void row_activated(GtkTreeView *list, GtkTreePath *path, GtkTreeViewColumn *colu { char buf[1024]; int pos = 0; - int status; + int status = 0; fd_set fds; struct timeval timeout; @@ -592,11 +592,32 @@ void row_activated(GtkTreeView *list, GtkTreePath *path, GtkTreeViewColumn *colu pos += len; } else if(waitpid(pid, &status, 0)) + { + pid = 0; break; + } } + if(pid) + waitpid(pid, &status, 0); + buf[pos] = 0; + if(verbosity>=1) + { + if(WIFEXITED(status)) + { + if(WEXITSTATUS(status)) + printf("Command exited successfully\n"); + else + printf("Command exited with status %d\n", WEXITSTATUS(status)); + } + else if(WIFSIGNALED(status)) + printf("Command terminated with signal %d\n", WTERMSIG(status)); + else + printf("Command exited with unknown result %04X\n", status); + } + if(!WIFEXITED(status) || WEXITSTATUS(status)) { GtkWidget *dialog; @@ -608,14 +629,28 @@ void row_activated(GtkTreeView *list, GtkTreePath *path, GtkTreeViewColumn *colu else gtk_main_quit(); } - else - { - } } (void)column; } +void button_clicked(GtkButton *button, gpointer user_data) +{ + GtkWidget *list = (GtkWidget *)user_data; + GtkTreeSelection *selection; + GtkTreeIter iter; + GtkTreeModel *model; + GtkTreePath *path; + + selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(list)); + gtk_tree_selection_get_selected(selection, &model, &iter); + path = gtk_tree_model_get_path(model, &iter); + gtk_tree_view_row_activated(GTK_TREE_VIEW(list), path, gtk_tree_view_get_column(GTK_TREE_VIEW(list), 0)); + gtk_tree_path_free(path); + + (void)button; +} + gboolean key_press(GtkWidget *widget, GdkEvent *event, gpointer user_data) { if(event->key.keyval==GDK_KEY_Escape) @@ -633,10 +668,12 @@ gboolean key_press(GtkWidget *widget, GdkEvent *event, gpointer user_data) int main(int argc, char **argv) { GtkWidget *window; + GtkWidget *box; GtkWidget *viewport; GtkWidget *list; GtkListStore *store; GtkTreeSelection *selection; + GtkWidget *button; GtkTreeIter iter; Device *devices; int i; @@ -662,9 +699,12 @@ int main(int argc, char **argv) g_signal_connect(window, "destroy", G_CALLBACK(>k_main_quit), NULL); g_signal_connect(window, "key-press-event", G_CALLBACK(&key_press), NULL); + box = gtk_vbox_new(FALSE, 5); + gtk_container_add(GTK_CONTAINER(window), box); + viewport = gtk_viewport_new(NULL, NULL); gtk_viewport_set_shadow_type(GTK_VIEWPORT(viewport), GTK_SHADOW_IN); - gtk_container_add(GTK_CONTAINER(window), viewport); + gtk_box_pack_start(GTK_BOX(box), viewport, TRUE, TRUE, 0); list = gtk_tree_view_new(); gtk_container_add(GTK_CONTAINER(viewport), list); @@ -677,6 +717,10 @@ int main(int argc, char **argv) selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(list)); + button = gtk_button_new_with_label(umount ? "Unmount" : "Mount"); + g_signal_connect(button, "clicked", G_CALLBACK(&button_clicked), list); + gtk_box_pack_start(GTK_BOX(box), button, FALSE, TRUE, 0); + devices = get_devices(); n_listed = 0; if(devices)