Provided by: tcl8.4-doc_8.4.20-8_all bug

NAME

       Tcl_Panic, Tcl_PanicVA, Tcl_SetPanicProc, panic, panicVA - report fatal error and abort

SYNOPSIS

       #include <tcl.h>

       void
       Tcl_Panic(format, arg, arg, ...)

       void
       Tcl_PanicVA(format, argList)

       void
       Tcl_SetPanicProc(panicProc)

       void
       panic(format, arg, arg, ...)

       void
       panicVA(format, argList)

ARGUMENTS

       CONST char*     format       (in)      A printf-style format string.

                       arg          (in)      Arguments matching the format string.

       va_list         argList      (in)      An  argument  list of arguments matching the format
                                              string.    Must   have   been   initialized   using
                                              TCL_VARARGS_START, and cleared using va_end.

       Tcl_PanicProc   *panicProc   (in)      Procedure to report fatal error message and abort.

_________________________________________________________________

DESCRIPTION

       When  the  Tcl  library  detects  that its internal data structures are in an inconsistent
       state, or that its C procedures have been called  in  a  manner  inconsistent  with  their
       documentation,  it calls Tcl_Panic to display a message describing the error and abort the
       process.  The format argument is a format string describing how to  format  the  remaining
       arguments  arg  into  an error message, according to the same formatting rules used by the
       printf family of functions.  The same formatting rules are also used by  the  builtin  Tcl
       command format.

       In  a  freshly  loaded  Tcl  library,  Tcl_Panic prints the formatted error message to the
       standard error file of the process,  and  then  calls  abort  to  terminate  the  process.
       Tcl_Panic does not return.

       Tcl_SetPanicProc  may be used to modify the behavior of Tcl_Panic.  The panicProc argument
       should match the type Tcl_PanicProc:

              typedef void Tcl_PanicProc(
                CONST char *format,
                arg, arg,...);

       After Tcl_SetPanicProc returns, any future calls to Tcl_Panic will call panicProc, passing
       along  the  format  and  arg  arguments.   To  maintain  consistency  with  the callers of
       Tcl_Panic, panicProc must not return; it must call abort.  panicProc should  avoid  making
       calls  into  the Tcl library, or into other libraries that may call the Tcl library, since
       the original call to Tcl_Panic indicates the Tcl library is not in  a  state  of  reliable
       operation.

       The  typical  use  of  Tcl_SetPanicProc  arranges for the error message to be displayed or
       reported in a manner more suitable for the application or the platform.   As  an  example,
       the  Windows  implementation of wish calls Tcl_SetPanicProc to force all panic messages to
       be displayed in a system dialog box, rather than to be printed to the standard error  file
       (usually not visible under Windows).

       Although the primary callers of Tcl_Panic are the procedures of the Tcl library, Tcl_Panic
       is a public function and may be called by any extension  or  application  that  wishes  to
       abort the process and have a panic message displayed the same way that panic messages from
       Tcl will be displayed.

       Tcl_PanicVA is the same as Tcl_Panic except that instead of taking a  variable  number  of
       arguments  it  takes  an  argument  list.   The  procedures panic and panicVA are synonyms
       (implemented as macros) for  Tcl_Panic  and  Tcl_PanicVA,  respectively.   They  exist  to
       support old code; new code should use direct calls to Tcl_Panic or Tcl_PanicVA.

SEE ALSO

       abort(3), printf(3), exec(3tcl), format(3tcl)

KEYWORDS

       abort, fatal, error