// Copyright 2013 The Go Authors.  All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// +build darwin dragonfly freebsd linux netbsd openbsd

#include <u.h>
#include <errno.h>
#include <sys/wait.h>
#define NOPLAN9DEFINES
#include <libc.h>

int
runcmd(char **argv)
{
	int pid, pid1, status;
	
	switch(pid = fork()) {
	case -1:
		return -1;
	case 0:
		execvp(argv[0], argv);
		fprint(2, "exec %s: %r\n", argv[0]);
		_exit(1);
	}
	
	while((pid1 = wait(&status)) < 0) {
		if(errno != EINTR) {
			werrstr("waitpid: %r");
			return -1;
		}
	}
	if(pid1 != pid) {
		werrstr("unexpected pid in wait");
		return -1;
	}
	if(!WIFEXITED(status) || WEXITSTATUS(status) != 0) {
		werrstr("unsuccessful exit status %#x", status);
		return -1;
	}
	return 0;
}

