diff options
author | Christopher Faylor <me+cygwin@cgf.cx> | 2000-02-17 19:39:46 +0000 |
---|---|---|
committer | Christopher Faylor <me+cygwin@cgf.cx> | 2000-02-17 19:39:46 +0000 |
commit | 43b55bace5fad27af5da7a99784667363b92c45d (patch) | |
tree | 17fe82f6ba0d93b76d10dd73d4945ab81b69db40 /newlib/libc/stdlib/exit.c | |
parent | 8dabd7496a9eeaca2a7180c0a176059ba9229bb2 (diff) | |
download | gdb-SNAPSHOT.tar.gz |
import newlib-2000-02-17 snapshotnewlib-2000-02-17SNAPSHOT
Diffstat (limited to 'newlib/libc/stdlib/exit.c')
-rw-r--r-- | newlib/libc/stdlib/exit.c | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/newlib/libc/stdlib/exit.c b/newlib/libc/stdlib/exit.c new file mode 100644 index 00000000000..543bd0e303f --- /dev/null +++ b/newlib/libc/stdlib/exit.c @@ -0,0 +1,73 @@ +/* + * Copyright (c) 1990 Regents of the University of California. + * All rights reserved. + * + * %sccs.include.redist.c% + */ + +/* +FUNCTION +<<exit>>---end program execution + +INDEX + exit + +ANSI_SYNOPSIS + #include <stdlib.h> + void exit(int <[code]>); + +TRAD_SYNOPSIS + #include <stdlib.h> + void exit(<[code]>) + int <[code]>; + +DESCRIPTION +Use <<exit>> to return control from a program to the host operating +environment. Use the argument <[code]> to pass an exit status to the +operating environment: two particular values, <<EXIT_SUCCESS>> and +<<EXIT_FAILURE>>, are defined in `<<stdlib.h>>' to indicate success or +failure in a portable fashion. + +<<exit>> does two kinds of cleanup before ending execution of your +program. First, it calls all application-defined cleanup functions +you have enrolled with <<atexit>>. Second, files and streams are +cleaned up: any pending output is delivered to the host system, each +open file or stream is closed, and files created by <<tmpfile>> are +deleted. + +RETURNS +<<exit>> does not return to its caller. + +PORTABILITY +ANSI C requires <<exit>>, and specifies that <<EXIT_SUCCESS>> and +<<EXIT_FAILURE>> must be defined. + +Supporting OS subroutines required: <<_exit>>. +*/ + +#include <stdlib.h> +#include <unistd.h> /* for _exit() declaration */ +#include <reent.h> + +#ifndef _REENT_ONLY + +/* + * Exit, flushing stdio buffers if necessary. + */ + +void +_DEFUN (exit, (code), + int code) +{ + register struct _atexit *p; + register int n; + + for (p = _REENT->_atexit; p; p = p->_next) + for (n = p->_ind; --n >= 0;) + (*p->_fns[n]) (); + if (_REENT->__cleanup) + (*_REENT->__cleanup) (_REENT); + _exit (code); +} + +#endif |