{
char pf[1024];
int pfd[2], i;
+ sigset_t ss;
if(getenv("HOME") != NULL)
snprintf(pf, sizeof(pf), "%s/.doldacond.pid", getenv("HOME"));
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);
create_start_wnd();
gtk_widget_show(start_wnd);
gtk_status_icon_set_tooltip(tray, _("Starting..."));
+ sigprocmask(SIG_UNBLOCK, &ss, NULL);
} else {
connectdc();
}
#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;
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");