aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/error/exc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/utils/error/exc.c')
-rw-r--r--src/backend/utils/error/exc.c229
1 files changed, 120 insertions, 109 deletions
diff --git a/src/backend/utils/error/exc.c b/src/backend/utils/error/exc.c
index 3366996fad1..fd169b94a18 100644
--- a/src/backend/utils/error/exc.c
+++ b/src/backend/utils/error/exc.c
@@ -1,21 +1,21 @@
/*-------------------------------------------------------------------------
*
* exc.c--
- * POSTGRES exception handling code.
+ * POSTGRES exception handling code.
*
* Copyright (c) 1994, Regents of the University of California
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/error/Attic/exc.c,v 1.15 1997/08/19 21:35:17 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/error/Attic/exc.c,v 1.16 1997/09/07 04:53:16 momjian Exp $
*
* NOTE
- * XXX this code needs improvement--check for state violations and
- * XXX reset after handling an exception.
+ * XXX this code needs improvement--check for state violations and
+ * XXX reset after handling an exception.
*
*-------------------------------------------------------------------------
*/
-#include <stdio.h> /* XXX use own I/O routines */
+#include <stdio.h> /* XXX use own I/O routines */
#include <errno.h>
#include <string.h>
@@ -24,24 +24,26 @@
#include "utils/exc.h"
#include "storage/ipc.h"
-static void ExcUnCaught(Exception *excP, ExcDetail detail, ExcData data,
+static void
+ExcUnCaught(Exception * excP, ExcDetail detail, ExcData data,
ExcMessage message);
-static void ExcPrint(Exception *excP, ExcDetail detail, ExcData data,
- ExcMessage message);
+static void
+ExcPrint(Exception * excP, ExcDetail detail, ExcData data,
+ ExcMessage message);
/*
* Global Variables
*/
-static bool ExceptionHandlingEnabled = false;
+static bool ExceptionHandlingEnabled = false;
-char* ExcFileName = NULL;
+char *ExcFileName = NULL;
Index ExcLineNumber = 0;
-ExcFrame *ExcCurFrameP = NULL;
+ExcFrame *ExcCurFrameP = NULL;
-static ExcProc *ExcUnCaughtP = NULL;
+static ExcProc *ExcUnCaughtP = NULL;
-extern char* ProgramName;
+extern char *ProgramName;
/*
* Exported Functions
@@ -49,148 +51,157 @@ extern char* ProgramName;
/*
* EnableExceptionHandling --
- * Enables/disables the exception handling system.
+ * Enables/disables the exception handling system.
*
* Note:
- * This must be called before any exceptions occur. I.e., call this first!
- * This routine will not return if an error is detected.
- * This does not follow the usual Enable... protocol.
- * This should be merged more closely with the error logging and tracing
- * packages.
+ * This must be called before any exceptions occur. I.e., call this first!
+ * This routine will not return if an error is detected.
+ * This does not follow the usual Enable... protocol.
+ * This should be merged more closely with the error logging and tracing
+ * packages.
*
* Exceptions:
- * none
+ * none
*/
/*
* Excection handling should be supported by the language, thus there should
* be no need to explicitly enable exception processing.
*
* This function should probably not be called, ever. Currently it does
- * almost nothing. If there is a need for this intialization and checking.
+ * almost nothing. If there is a need for this intialization and checking.
* then this function should be converted to the new-style Enable code and
* called by all the other module Enable functions.
*/
void
EnableExceptionHandling(bool on)
{
- if (on == ExceptionHandlingEnabled) {
- /* XXX add logging of failed state */
- exitpg(255);
- /* ExitPostgres(FatalExitStatus); */
- }
-
- if (on) { /* initialize */
- ;
- } else { /* cleanup */
- ExcFileName = NULL;
- ExcLineNumber = 0;
- ExcCurFrameP = NULL;
- ExcUnCaughtP = NULL;
- }
-
- ExceptionHandlingEnabled = on;
+ if (on == ExceptionHandlingEnabled)
+ {
+ /* XXX add logging of failed state */
+ exitpg(255);
+ /* ExitPostgres(FatalExitStatus); */
+ }
+
+ if (on)
+ { /* initialize */
+ ;
+ }
+ else
+ { /* cleanup */
+ ExcFileName = NULL;
+ ExcLineNumber = 0;
+ ExcCurFrameP = NULL;
+ ExcUnCaughtP = NULL;
+ }
+
+ ExceptionHandlingEnabled = on;
}
static void
-ExcPrint(Exception *excP,
- ExcDetail detail,
- ExcData data,
- ExcMessage message)
+ExcPrint(Exception * excP,
+ ExcDetail detail,
+ ExcData data,
+ ExcMessage message)
{
- extern int errno;
- extern int sys_nerr;
-
+ extern int errno;
+ extern int sys_nerr;
+
#ifdef lint
- data = data;
+ data = data;
#endif
-
- fflush(stdout); /* In case stderr is buffered */
-
-#if 0
- if (ProgramName != NULL && *ProgramName != '\0')
- fprintf(stderr, "%s: ", ProgramName);
+
+ fflush(stdout); /* In case stderr is buffered */
+
+#if 0
+ if (ProgramName != NULL && *ProgramName != '\0')
+ fprintf(stderr, "%s: ", ProgramName);
#endif
-
- if (message != NULL)
- fprintf(stderr, "%s", message);
- else if (excP->message != NULL)
- fprintf(stderr, "%s", excP->message);
- else
+
+ if (message != NULL)
+ fprintf(stderr, "%s", message);
+ else if (excP->message != NULL)
+ fprintf(stderr, "%s", excP->message);
+ else
#ifdef lint
- fprintf(stderr, "UNNAMED EXCEPTION 0x%lx", excP);
+ fprintf(stderr, "UNNAMED EXCEPTION 0x%lx", excP);
#else
- fprintf(stderr, "UNNAMED EXCEPTION 0x%lx", (long)excP);
+ fprintf(stderr, "UNNAMED EXCEPTION 0x%lx", (long) excP);
#endif
-
- fprintf(stderr, " (%ld)", detail);
-
- if (errno > 0 && errno < sys_nerr)
- fprintf(stderr, " [%s]", strerror(errno));
- else if (errno != 0)
- fprintf(stderr, " [Error %d]", errno);
-
- fprintf(stderr, "\n");
-
- fflush(stderr);
+
+ fprintf(stderr, " (%ld)", detail);
+
+ if (errno > 0 && errno < sys_nerr)
+ fprintf(stderr, " [%s]", strerror(errno));
+ else if (errno != 0)
+ fprintf(stderr, " [Error %d]", errno);
+
+ fprintf(stderr, "\n");
+
+ fflush(stderr);
}
#ifdef NOT_USED
-ExcProc *
+ExcProc *
ExcGetUnCaught(void)
{
- return (ExcUnCaughtP);
+ return (ExcUnCaughtP);
}
+
#endif
#ifdef NOT_USED
-ExcProc *
-ExcSetUnCaught(ExcProc *newP)
+ExcProc *
+ExcSetUnCaught(ExcProc * newP)
{
- ExcProc *oldP = ExcUnCaughtP;
-
- ExcUnCaughtP = newP;
-
- return (oldP);
+ ExcProc *oldP = ExcUnCaughtP;
+
+ ExcUnCaughtP = newP;
+
+ return (oldP);
}
+
#endif
static void
-ExcUnCaught(Exception *excP,
- ExcDetail detail,
- ExcData data,
- ExcMessage message)
+ExcUnCaught(Exception * excP,
+ ExcDetail detail,
+ ExcData data,
+ ExcMessage message)
{
- ExcPrint(excP, detail, data, message);
-
- ExcAbort(excP, detail, data, message);
+ ExcPrint(excP, detail, data, message);
+
+ ExcAbort(excP, detail, data, message);
}
void
-ExcRaise(Exception *excP,
- ExcDetail detail,
- ExcData data,
- ExcMessage message)
+ExcRaise(Exception * excP,
+ ExcDetail detail,
+ ExcData data,
+ ExcMessage message)
{
- register ExcFrame *efp;
-
- efp = ExcCurFrameP;
- if (efp == NULL) {
- if (ExcUnCaughtP != NULL)
- (*ExcUnCaughtP)(excP, detail, data, message);
-
- ExcUnCaught(excP, detail, data, message);
- } else {
- efp->id = excP;
- efp->detail = detail;
- efp->data = data;
- efp->message = message;
-
- ExcCurFrameP = efp->link;
-
+ register ExcFrame *efp;
+
+ efp = ExcCurFrameP;
+ if (efp == NULL)
+ {
+ if (ExcUnCaughtP != NULL)
+ (*ExcUnCaughtP) (excP, detail, data, message);
+
+ ExcUnCaught(excP, detail, data, message);
+ }
+ else
+ {
+ efp->id = excP;
+ efp->detail = detail;
+ efp->data = data;
+ efp->message = message;
+
+ ExcCurFrameP = efp->link;
+
#if defined (JMP_BUF)
- longjmp(efp->context, 1);
+ longjmp(efp->context, 1);
#else
- siglongjmp(efp->context, 1);
+ siglongjmp(efp->context, 1);
#endif
- }
+ }
}