--- ray/src/util/netproc.c 2004/03/26 21:36:19 2.15 +++ ray/src/util/netproc.c 2010/03/15 21:31:50 2.17 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: netproc.c,v 2.15 2004/03/26 21:36:19 schorsch Exp $"; +static const char RCSid[] = "$Id: netproc.c,v 2.17 2010/03/15 21:31:50 greg Exp $"; #endif /* * Parallel network process handling routines @@ -198,11 +198,13 @@ startjob( /* start a job on a process server */ if (ps->username[0]) { /* different user */ av[++i] = "-l"; av[++i] = ps->username; - av[++i] = "cd"; - udirt[0] = '~'; - strcpy(udirt+1, ouruser); - av[++i] = udirt; - av[++i] = ";"; + if (ps->directory[0] != '/') { + av[++i] = "cd"; + udirt[0] = '~'; + strcpy(udirt+1, ouruser); + av[++i] = udirt; + av[++i] = ";"; + } } if (ps->directory[0]) { /* change directory */ av[++i] = "cd"; @@ -229,7 +231,7 @@ startjob( /* start a job on a process server */ ps->proc[i].pid = pid; close(pfd[1]); /* get piped stderr file descriptor */ ps->proc[i].efd = pfd[0]; - fcntl(pfd[0], F_SETFD, 1); /* set close on exec flag */ + fcntl(pfd[0], F_SETFD, FD_CLOEXEC); /* set close on exec flag */ pindex[pfd[0]] = ps->proc + i; /* assign error fd index */ FD_SET(pfd[0], &errdesc); /* add to select call parameter */ if (pfd[0] > maxfd)