// 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 plan9 #include <u.h> #include <libc.h> int runcmd(char **argv) { int pid; Waitmsg *w; switch(pid = fork()) { case -1: return -1; case 0: exec(argv[0], argv); fprint(2, "exec %s: %r\n", argv[0]); exits("exec"); } w = wait(); if(w == nil) return -1; if(w->pid != pid) { werrstr("unexpected pid in wait"); free(w); return -1; } if(w->msg[0]) { werrstr("unsuccessful exit status: %s", w->msg); free(w); return -1; } free(w); return 0; }