diff --git a/src/tomb-status.c b/src/tomb-status.c index e6117a7..a3a435b 100644 --- a/src/tomb-status.c +++ b/src/tomb-status.c @@ -26,8 +26,6 @@ #include #include -#include - #include #include @@ -75,7 +73,6 @@ int main(int argc, char **argv) { snprintf(mapper,255, "%s", argv[1]); } - if(argc<3) sprintf(filename, "unknown"); else snprintf(filename,255, "%s", argv[2]); @@ -135,7 +132,6 @@ int main(int argc, char **argv) { notify_uninit(); - exit(0); } @@ -162,42 +158,29 @@ gboolean cb_view(GtkWidget *w, GdkEvent *e) { return FALSE; } if (cpid == 0) { // Child - execlp("tomb-open", "tomb-open", "-q", mountpoint ,(char*)NULL); + execlp("tomb-open", "tomb-open", mountpoint ,(char*)NULL); exit(1); } return TRUE; } -void* thread_close(void *arg) { - char *map = (char*)arg; - execlp("tomb", "tomb", "-q", "close", map, (char*)NULL); - return NULL; -} - gboolean cb_close(GtkWidget *w, GdkEvent *e) { - pthread_t thread; - pthread_attr_t attr; - int *res; - - if(pthread_attr_init (&attr) == -1) { - fprintf(stderr, "error initializing POSIX thread attribute\n"); + pid_t cpid = fork(); + int res; + if (cpid == -1) { + fprintf(stderr,"error: problem forking process\n"); return FALSE; } - pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_JOINABLE); - - pthread_create(&thread, &attr, thread_close, mapper); - - pthread_join(thread,(void**)&res); - - if(*res==0) { - pthread_attr_destroy(&attr); + if (cpid == 0) { // Child + execlp("tomb", "tomb", "close", mapper, (char*)NULL); + exit(1); + } + waitpid(cpid, &res, 0); + if(res==0) { gtk_main_quit(); notify_uninit(); exit(0); } - - pthread_attr_destroy(&attr); - return TRUE; }