exit.c revision 1.6
11.6Spk/* $NetBSD: exit.c,v 1.6 1995/09/17 00:49:40 pk Exp $ */ 21.4Scgd 31.1Sbrezak/*- 41.1Sbrezak * Copyright (c) 1993 John Brezak 51.1Sbrezak * All rights reserved. 61.1Sbrezak * 71.1Sbrezak * Redistribution and use in source and binary forms, with or without 81.1Sbrezak * modification, are permitted provided that the following conditions 91.1Sbrezak * are met: 101.1Sbrezak * 1. Redistributions of source code must retain the above copyright 111.1Sbrezak * notice, this list of conditions and the following disclaimer. 121.1Sbrezak * 2. Redistributions in binary form must reproduce the above copyright 131.1Sbrezak * notice, this list of conditions and the following disclaimer in the 141.1Sbrezak * documentation and/or other materials provided with the distribution. 151.1Sbrezak * 3. The name of the author may not be used to endorse or promote products 161.1Sbrezak * derived from this software without specific prior written permission. 171.1Sbrezak * 181.1Sbrezak * THIS SOFTWARE IS PROVIDED BY THE AUTHOR `AS IS'' AND ANY EXPRESS OR 191.1Sbrezak * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 201.1Sbrezak * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 211.2Sbrezak * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 221.1Sbrezak * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 231.1Sbrezak * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 241.1Sbrezak * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 251.1Sbrezak * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 261.1Sbrezak * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 271.1Sbrezak * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 281.1Sbrezak * POSSIBILITY OF SUCH DAMAGE. 291.1Sbrezak */ 301.3Sbrezak#ifdef __STDC__ 311.2Sbrezak#include <stdarg.h> 321.3Sbrezak#else 331.3Sbrezak#include <varargs.h> 341.3Sbrezak#endif 351.1Sbrezak 361.3Sbrezak#include "stand.h" 371.1Sbrezak 381.5Scgd__dead void 391.2Sbrezak#ifdef __STDC__ 401.2Sbrezakpanic(const char *fmt, ...) 411.2Sbrezak#else 421.2Sbrezakpanic(fmt /*, va_alist */) 431.2Sbrezak char *fmt; 441.2Sbrezak#endif 451.1Sbrezak{ 461.3Sbrezak extern void closeall __P((void)); 471.5Scgd extern __dead void _rtt __P((void)) __attribute__((noreturn)); 481.2Sbrezak va_list ap; 491.1Sbrezak static int paniced; 501.1Sbrezak 511.1Sbrezak if (!paniced) { 521.2Sbrezak paniced = 1; 531.2Sbrezak closeall(); 541.1Sbrezak } 551.1Sbrezak 561.3Sbrezak#ifdef __STDC__ 571.2Sbrezak va_start(ap, fmt); 581.3Sbrezak#else 591.3Sbrezak va_start(ap); 601.3Sbrezak#endif 611.2Sbrezak printf(fmt, ap); 621.2Sbrezak printf("\n"); 631.2Sbrezak va_end(ap); 641.1Sbrezak _rtt(); 651.3Sbrezak /*NOTREACHED*/ 661.2Sbrezak} 671.2Sbrezak 681.6Spkvoid 691.5Scgdexit() 701.2Sbrezak{ 711.2Sbrezak panic("exit"); 721.3Sbrezak /*NOTREACHED*/ 731.1Sbrezak} 74