X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=clients%2Fgui-shell%2Fdsh.c;h=40ee5467ac1645defa89f245b37105e6f3ea1c49;hb=8af979f318c0e3d1d00a35996f6b5fecb055ac33;hp=1922aaf2a367668a2495397a6de08c4a6cca7f44;hpb=8efceeb63faf9c6968da9f4dfe581490dd6cd4b4;p=doldaconnect.git diff --git a/clients/gui-shell/dsh.c b/clients/gui-shell/dsh.c index 1922aaf..40ee546 100644 --- a/clients/gui-shell/dsh.c +++ b/clients/gui-shell/dsh.c @@ -396,6 +396,7 @@ void startdaemon(void) { char pf[1024]; int pfd[2], i; + sigset_t ss; if(getenv("HOME") != NULL) snprintf(pf, sizeof(pf), "%s/.doldacond.pid", getenv("HOME")); @@ -403,7 +404,11 @@ void startdaemon(void) snprintf(pf, sizeof(pf), "%s/.doldacond.pid", getpwuid(getuid())->pw_dir); if(access(pf, F_OK) || !running(pf)) { pipe(pfd); + sigemptyset(&ss); + sigaddset(&ss, SIGCHLD); + sigprocmask(SIG_BLOCK, &ss, NULL); if((dpid = fork()) == 0) { + sigprocmask(SIG_UNBLOCK, &ss, NULL); dup2(pfd[1], 2); for(i = 3; i < FD_SETSIZE; i++) close(i); @@ -419,6 +424,7 @@ void startdaemon(void) create_start_wnd(); gtk_widget_show(start_wnd); gtk_status_icon_set_tooltip(tray, _("Starting...")); + sigprocmask(SIG_UNBLOCK, &ss, NULL); } else { connectdc(); } @@ -553,7 +559,7 @@ int main(int argc, char **argv) #ifdef HAVE_NOTIFY notify_init("Dolda Connect"); #endif - while((c = getopt(argc, argv, "rhs:")) != -1) { + while((c = getopt(argc, argv, "Vrhs:")) != -1) { switch(c) { case 'r': remote = 1; @@ -567,6 +573,10 @@ int main(int argc, char **argv) printf("usage: doldacond-shell [-hr]\n"); printf("\t-h\tDisplay this help message\n"); printf("\t-r\tConnect to a remote host\n"); + printf("\t-V\tDisplay version info and exit\n"); + exit(0); + case 'V': + printf("%s", RELEASEINFO); exit(0); default: fprintf(stderr, "usage: doldacond-shell [-hr]\n");