if (waitpid (pid, &w, 0) == -1)
if (__waitpid (pid, &w, 0) == -1)
grantpt (fd)     int fd;{  struct stat st;  int w, pid;  char namebuf[PTYNAMELEN];  /* Some systems do it for us.  */  if (__ptsname_r (fd, namebuf, PTYNAMELEN) != 0)    return -1;  if (__xstat (_STAT_VER, namebuf, &st) != 0)    return -1;  if (st.st_uid == getuid ())    return 0;  /* We have to do it in user space.  */  pid = fork ();  if (pid == -1)    return -1;  else if (pid == 0)    {      /* Disable core dumps in the child.  */      struct rlimit off = { 0, 0 };      setrlimit (RLIMIT_CORE, &off);      /* The helper does its thing on fd PTY_FD.  */      if (fd != PTY_FD)	if (dup2 (fd, PTY_FD) == -1)	  _exit (FAIL_EBADF);      execve (helper, (char *const *) argv, 0);      _exit (FAIL_EXEC);    }  else    {      if (waitpid (pid, &w, 0) == -1)	return -1;      if (!WIFEXITED (w))	{	  __set_errno (ENOEXEC);	  return -1;	}      else	switch (WEXITSTATUS(w))	  {	  case 0:	    break;	  case FAIL_EBADF:	    __set_errno (EBADF);	    return -1;	  case FAIL_EINVAL:	    __set_errno (EINVAL);	    return -1;	  case FAIL_EACCES:	    __set_errno (EACCES);	    return -1;	  case FAIL_EXEC:	    __set_errno (ENOEXEC);	    return -1;	  default:	    assert(! "getpt: internal error: invalid exit code from pt_chown");	  }    }  /* Success.  */  return 0;}