Merge from vendor branch NCURSES:
[dragonfly.git] / contrib / bind-9.2.4rc7 / lib / isccc / result.c
1 /*
2  * Portions Copyright (C) 2004  Internet Systems Consortium, Inc. ("ISC")
3  * Portions Copyright (C) 2001, 2003  Internet Software Consortium.
4  * Portions Copyright (C) 2001  Nominum, Inc.
5  *
6  * Permission to use, copy, modify, and distribute this software for any
7  * purpose with or without fee is hereby granted, provided that the above
8  * copyright notice and this permission notice appear in all copies.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS" AND ISC AND NOMINUM DISCLAIMS ALL
11  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
12  * OF MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY
13  * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17  */
18
19 /* $Id: result.c,v 1.3.2.3 2004/03/09 06:12:25 marka Exp $ */
20
21 #include <config.h>
22
23 #include <isc/once.h>
24 #include <isc/util.h>
25
26 #include <isccc/result.h>
27 #include <isccc/lib.h>
28
29 static const char *text[ISCCC_R_NRESULTS] = {
30         "unknown version",                      /* 1 */
31         "syntax error",                         /* 2 */
32         "bad auth",                             /* 3 */
33         "expired",                              /* 4 */
34         "clock skew",                           /* 5 */
35         "duplicate"                             /* 6 */
36 };
37
38 #define ISCCC_RESULT_RESULTSET                  2
39
40 static isc_once_t               once = ISC_ONCE_INIT;
41
42 static void
43 initialize_action(void) {
44         isc_result_t result;
45
46         result = isc_result_register(ISC_RESULTCLASS_ISCCC, ISCCC_R_NRESULTS,
47                                      text, isccc_msgcat,
48                                      ISCCC_RESULT_RESULTSET);
49         if (result != ISC_R_SUCCESS)
50                 UNEXPECTED_ERROR(__FILE__, __LINE__,
51                                  "isc_result_register() failed: %u", result);
52 }
53
54 static void
55 initialize(void) {
56         isccc_lib_initmsgcat();
57         RUNTIME_CHECK(isc_once_do(&once, initialize_action) == ISC_R_SUCCESS);
58 }
59
60 const char *
61 isccc_result_totext(isc_result_t result) {
62         initialize();
63
64         return (isc_result_totext(result));
65 }
66
67 void
68 isccc_result_register(void) {
69         initialize();
70 }