commit 3d867865ef5663f640f7c607fadfd3fb0c0ac625 from: rsc date: Tue Jan 18 18:13:16 2005 UTC better exit handling commit - daefa1a92f688399290f231c4c738ef99e7b8ab4 commit + 3d867865ef5663f640f7c607fadfd3fb0c0ac625 blob - 43242cf0e83d1db26bcfaf2943a7f0182beba292 blob + bfd4f71860f36a13894351aca8a4e1f0ef4cd471 --- src/libthread/exec.c +++ src/libthread/exec.c @@ -112,6 +112,34 @@ threadspawn(int fd[3], char *cmd, char *argv[]) } int +threadspawnl(int fd[3], char *cmd, ...) +{ + char **argv, *s; + int n, pid; + va_list arg; + + va_start(arg, cmd); + for(n=0; va_arg(arg, char*) != nil; n++) + ; + n++; + va_end(arg); + + argv = malloc(n*sizeof(argv[0])); + if(argv == nil) + return -1; + + va_start(arg, cmd); + for(n=0; (s=va_arg(arg, char*)) != nil; n++) + argv[n] = s; + argv[n] = 0; + va_end(arg); + + pid = threadspawn(fd, cmd, argv); + free(argv); + return pid; +} + +int _threadexec(Channel *cpid, int fd[3], char *cmd, char *argv[]) { int pid; blob - 31cc12e1ecaea60f5adfa0ae51cffd628b4bdcf5 blob + 7404817d9a526ea8a40fb7538624966403430a4a --- src/libthread/pthread.c +++ src/libthread/pthread.c @@ -1,5 +1,8 @@ #include "threadimpl.h" +#undef exits +#undef _exits + static pthread_mutex_t initmutex = PTHREAD_MUTEX_INITIALIZER; static void @@ -136,10 +139,8 @@ _pthreadinit(void) static struct utsname un; pthread_t id; - if(uname(&un) < 0){ + if(uname(&un) < 0) fprint(2, "warning: uname failed: %r\n"); - goto Okay; - } if(strcmp(un.sysname, "Linux") == 0){ /* * Want to distinguish between the old LinuxThreads pthreads