/* $MirOS: src/usr.bin/oldroff/hunt/refer3.c,v 1.2 2008/11/08 23:04:31 tg Exp $ */ /*- * Copyright (c) 1979, 1980, 1981, 1986, 1988, 1990, 1991, 1992 * The Regents of the University of California. * Copyright (C) Caldera International Inc. 2001-2002. * Copyright (c) 2003, 2004 * Thorsten "mirabilos" Glaser * All rights reserved. * * Redistribution and use in source and binary forms, * with or without modification, are permitted provided * that the following conditions are met: * * Redistributions of source code and documentation must retain * the above copyright notice, this list of conditions and the * following disclaimer. Redistributions in binary form must * reproduce the above copyright notice, this list of conditions * and the following disclaimer in the documentation and/or other * materials provided with the distribution. * * All advertising materials mentioning features or use of this * software must display the following acknowledgement: * This product includes software developed or owned by * Caldera International, Inc. * * Neither the name of Caldera International, Inc. nor the names * of other contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA * INTERNATIONAL, INC. AND CONTRIBUTORS "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL CALDERA INTERNATIONAL, INC. BE * LIABLE FOR ANY DIRECT, INDIRECT INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef lint static char sccsid[] = "@(#)refer3.c 4.3 (Berkeley) 4/18/91"; #endif /* not lint */ #include "refer..c" #define move(x, y) close(y); dup(x); close(x); corout(in, out, rprog, arg, outlen) char *in, *out, *rprog; { int pipev[2], fr1, fr2, fw1, fw2, n; int status; pipe(pipev); fr1 = pipev[0]; fw1 = pipev[1]; pipe(pipev); fr2 = pipev[0]; fw2 = pipev[1]; if (fork() == 0) { close(fw1); close(fr2); move(fr1, 0); move(fw2, 1); execl(rprog, "deliv", arg, 0); err("Can't run %s", rprog); } close(fw2); close(fr1); write(fw1, in , strlen(in)); close(fw1); wait(&status); n = read(fr2, out, outlen); out[n] = 0; close(fr2); return(n); }