exit.c revision 1.3
11.1Sbrezak/*- 21.1Sbrezak * Copyright (c) 1993 John Brezak 31.1Sbrezak * All rights reserved. 41.1Sbrezak * 51.1Sbrezak * Redistribution and use in source and binary forms, with or without 61.1Sbrezak * modification, are permitted provided that the following conditions 71.1Sbrezak * are met: 81.1Sbrezak * 1. Redistributions of source code must retain the above copyright 91.1Sbrezak * notice, this list of conditions and the following disclaimer. 101.1Sbrezak * 2. Redistributions in binary form must reproduce the above copyright 111.1Sbrezak * notice, this list of conditions and the following disclaimer in the 121.1Sbrezak * documentation and/or other materials provided with the distribution. 131.1Sbrezak * 3. The name of the author may not be used to endorse or promote products 141.1Sbrezak * derived from this software without specific prior written permission. 151.1Sbrezak * 161.1Sbrezak * THIS SOFTWARE IS PROVIDED BY THE AUTHOR `AS IS'' AND ANY EXPRESS OR 171.1Sbrezak * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 181.1Sbrezak * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 191.2Sbrezak * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 201.1Sbrezak * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 211.1Sbrezak * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 221.1Sbrezak * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 231.1Sbrezak * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 241.1Sbrezak * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 251.1Sbrezak * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 261.1Sbrezak * POSSIBILITY OF SUCH DAMAGE. 271.3Sbrezak * 281.3Sbrezak * $Id $ 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.2Sbrezakvoid 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.3Sbrezak extern void _rtt __P((void)); 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.3Sbrezakvoid volatile exit() 691.2Sbrezak{ 701.2Sbrezak panic("exit"); 711.3Sbrezak /*NOTREACHED*/ 721.1Sbrezak} 73