summaryrefslogtreecommitdiffstats
path: root/include/public/nsacl/nserrdef.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/public/nsacl/nserrdef.h')
-rw-r--r--include/public/nsacl/nserrdef.h100
1 files changed, 100 insertions, 0 deletions
diff --git a/include/public/nsacl/nserrdef.h b/include/public/nsacl/nserrdef.h
new file mode 100644
index 00000000..81748227
--- /dev/null
+++ b/include/public/nsacl/nserrdef.h
@@ -0,0 +1,100 @@
+/** BEGIN COPYRIGHT BLOCK
+ * Copyright 2001 Sun Microsystems, Inc.
+ * Portions copyright 1999, 2001-2003 Netscape Communications Corporation.
+ * All rights reserved.
+ * END COPYRIGHT BLOCK **/
+#ifndef PUBLIC_NSACL_NSERRDEF_H
+#define PUBLIC_NSACL_NSERRDEF_H
+
+/*
+ * Type: NSEFrame_t
+ *
+ * Description:
+ *
+ * This type describes the structure of an error frame. An error
+ * frame contains the following items:
+ *
+ * ef_retcode - This is a copy of the traditional error code,
+ * as might be returned as a function value to
+ * indicate an error. The purpose of the error
+ * code is to provide the caller of a function
+ * with sufficient information to determine how
+ * to process the error. That is, it does not
+ * need to identify a specific error, but only
+ * has to distinguish between classes of errors
+ * as needed by the caller to respond differently.
+ * Usually this should be a small number of values.
+ *
+ * ef_errorid - This is an integer identifier which uniquely
+ * identifies errors in a module or library.
+ * That is, there should be only one place in
+ * the source code of the module or library which
+ * generates a particular error id. The error id
+ * is used to select an error message in an error
+ * message file.
+ *
+ * ef_program - This is a pointer to a string which identifies
+ * the module or library context of ef_errorid.
+ * The string is used to construct the name of
+ * the message file in which an error message for
+ * ef_errorid can be found.
+ *
+ * ef_errc - This is the number of values stored in ef_errc[]
+ * for the current error id.
+ *
+ * ef_errv - This is an array of strings which are relevant
+ * to a particular error id. These strings can
+ * be included in an error message retrieved from
+ * a message file. The strings in a message file
+ * can contain "%s" sprintf() format codes. The
+ * ef_errv[] strings are passed to sprintf() along
+ * with the error message string.
+ */
+
+#define NSERRMAXARG 8 /* size of ef_errv[] */
+
+typedef struct NSEFrame_s NSEFrame_t;
+struct NSEFrame_s {
+ NSEFrame_t * ef_next; /* next error frame on NSErr_t list */
+ long ef_retcode; /* error return code */
+ long ef_errorid; /* error unique identifier */
+ char * ef_program; /* context for ef_errorid */
+ int ef_errc; /* number of strings in ef_errv[] */
+ char * ef_errv[NSERRMAXARG];/* arguments for formatting error message */
+};
+
+/*
+ * Description (NSErr_t)
+ *
+ * This type describes the structure of a header for a list of
+ * error frames. The header contains a pointer to the first
+ * and last error frames on the list. The first error frame
+ * is normally the one most recently generated, which usually
+ * represents the highest-level interpretation available for an
+ * error that is propogating upward in a call chain. These
+ * structures are generally allocated as automatic or static
+ * variables.
+ */
+
+typedef struct NSErr_s NSErr_t;
+struct NSErr_s {
+ NSEFrame_t * err_first; /* first error frame */
+ NSEFrame_t * err_last; /* last error frame */
+ NSEFrame_t *(*err_falloc)(NSErr_t * errp); /* error frame allocator */
+ void (*err_ffree)(NSErr_t * errp,
+ NSEFrame_t * efp); /* error frame deallocator */
+};
+
+/* Define an initializer for an NSErr_t */
+#define NSERRINIT { 0, 0, 0, 0 }
+
+#ifndef INTNSACL
+
+#define nserrDispose (*__nsacl_table->f_nserrDispose)
+#define nserrFAlloc (*__nsacl_table->f_nserrFAlloc)
+#define nserrFFree (*__nsacl_table->f_nserrFFree)
+#define nserrGenerate (*__nsacl_table->f_nserrGenerate)
+
+#endif /* !INTNSACL */
+
+#endif /* !PUBLIC_NSACL_NSERRDEF_H */