⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sh.err.c

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 C
字号:
#ifndef lintstatic char *sccsid = "@(#)sh.err.c	4.2  (ULTRIX)        8/13/90";#endif/************************************************************************ *                                                                      * *                      Copyright (c) 1988 by                           * *              Digital Equipment Corporation, Maynard, MA              * *                      All rights reserved.                            * *                                                                      * *   This software is furnished under a license and may be used and     * *   copied  only  in accordance with the terms of such license and     * *   with the  inclusion  of  the  above  copyright  notice.   This     * *   software  or  any  other copies thereof may not be provided or     * *   otherwise made available to any other person.  No title to and     * *   ownership of the software is hereby transferred.                   * *                                                                      * *   The information in this software is subject to change  without     * *   notice  and should not be construed as a commitment by Digital     * *   Equipment Corporation.                                             * *                                                                      * *   Digital assumes no responsibility for the use  or  reliability     * *   of its software on equipment which is not supplied by Digital.     * *                                                                      * ************************************************************************//* ------------------------------------------------------------------ *//* | Copyright Unpublished, MIPS Computer Systems, Inc.  All Rights | *//* | Reserved.  This software contains proprietary and confidential | *//* | information of MIPS and its suppliers.  Use, disclosure or     | *//* | reproduction is prohibited without the prior express written   | *//* | consent of MIPS.                                               | *//* ------------------------------------------------------------------ *//* $Header: sh.err.c,v 1.4 86/07/29 11:20:09 dce Exp $ */#include "sh.h"#include <sys/ioctl.h>/* * C Shell * * Modification History * * 001 - Bob Fontaine - Fri Jun 22 09:53:01 EDT 1990 *	 Changed call of internal printf to csh_printf to avoid conflict *	 with stdio library routine. */bool	errspl;			/* Argument to error was spliced by seterr2 */char	one[2] = { '1', 0 };char	*onev[2] = { one, NOSTR };/* * Print error string s with optional argument arg. * This routine always resets or exits.  The flag haderr * is set so the routine who catches the unwind can propogate * it if they want. * * Note that any open files at the point of error will eventually * be closed in the routine process in sh.c which is the only * place error unwinds are ever caught. *//*VARARGS1*/error(s, arg)	char *s;{	register char **v;	register char *ep;	/*	 * Must flush before we print as we wish output before the error	 * to go on (some form of) standard output, while output after	 * goes on (some form of) diagnostic output.	 * If didfds then output will go to 1/2 else to FSHOUT/FSHDIAG.	 * See flush in sh.print.c.	 */	flush();	haderr = 1;		/* Now to diagnostic output */	timflg = 0;		/* This isn't otherwise reset */	if (v = pargv)		pargv = 0, blkfree(v);	if (v = gargv)		gargv = 0, blkfree(v);	/*	 * A zero arguments causes no printing, else print	 * an error diagnostic here.	 */	if (s)		csh_printf(s, arg), csh_printf(".\n");     /* 001 RNF */	didfds = 0;		/* Forget about 0,1,2 */	if ((ep = err) && errspl) {		errspl = 0;		xfree(ep);	}	errspl = 0;	/*	 * Go away if -e or we are a child shell	 */	if (exiterr || child) {		exit(1);	}	/*	 * Reset the state of the input.	 * This buffered seek to end of file will also	 * clear the while/foreach stack.	 */	btoeof();	setq("status", onev, &shvhed);	if (tpgrp > 0)		(void) ioctl(FSHTTY, TIOCSPGRP, (char *)&tpgrp);	reset();		/* Unwind */}/* * Perror is the shells version of perror which should otherwise * never be called. */Perror(s)	char *s;{	/*	 * Perror uses unit 2, thus if we didn't set up the fd's	 * we must set up unit 2 now else the diagnostic will disappear	 */	if (!didfds) {		register int oerrno = errno;		(void) dcopy(SHDIAG, 2);		errno = oerrno;	}	perror(s);	error(NOSTR);		/* To exit or unwind */}bferr(cp)	char *cp;{	flush();	haderr = 1;	csh_printf("%s: ", bname);			/* 001 RNF */	error(cp);}/* * The parser and scanner set up errors for later by calling seterr, * which sets the variable err as a side effect; later to be tested, * e.g. in process. */seterr(s)	char *s;{	if (err == 0)		err = s, errspl = 0;}/* Set err to a splice of cp and dp, to be freed later in error() */seterr2(cp, dp)	char *cp, *dp;{	if (err)		return;	err = strspl(cp, dp);	errspl++;}/* Set err to a splice of cp with a string form of character d */seterrc(cp, d)	char *cp, d;{	char chbuf[2];	chbuf[0] = d;	chbuf[1] = 0;	seterr2(cp, chbuf);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -