1 | /***************************************
2 | $Revision: 1.3 $
3 |
4 | Error reporting (er) er_arrays.c - auxiliary routines for parameter arrays
5 |
6 | Status: NOT REVUED, PARTLY TESTED
7 |
8 | Design and implementation by: Marek Bukowy
9 |
10 | ******************/ /******************
11 | Copyright (c) 1999,2000 RIPE NCC
12 |
13 | All Rights Reserved
14 |
15 | Permission to use, copy, modify, and distribute this software and its
16 | documentation for any purpose and without fee is hereby granted,
17 | provided that the above copyright notice appear in all copies and that
18 | both that copyright notice and this permission notice appear in
19 | supporting documentation, and that the name of the author not be
20 | used in advertising or publicity pertaining to distribution of the
21 | software without specific, written prior permission.
22 |
23 | THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
24 | ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS; IN NO EVENT SHALL
25 | AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
26 | DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
27 | AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
28 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
29 | ***************************************/
30 |
31 | #include "erroutines.h"
32 |
33 | #include "er_arrays.h"
34 |
35 | er_ret_t er_getsevval(char *sev)
36 | {
37 | int i;
38 |
39 | for(i=0; er_level_a[i].sev != 0; i++) {
40 | if( strcasecmp(er_level_a[i].chr, sev) == 0 ) {
41 | return er_level_a[i].sev;
42 | }
43 | }
44 |
45 | return 0;
46 | }
47 |
48 | char *er_getsevsym( int sev, int mode )
49 | {
50 | int i;
51 |
52 | for(i=0; er_level_a[i].sev != 0; i++) {
53 | if (er_level_a[i].sev == sev) {
54 | break;
55 | }
56 | }
57 |
58 | switch( mode & 0x03 ) {
59 | case ER_M_SEVCHAR: /* one-letter severity indication */
60 | return er_level_a[i].chr;
61 | case ER_M_SEVLONG: /* long severity indication */
62 | return er_level_a[i].txt;
63 | }
64 |
65 | /* no severity indication */
66 | return ""; /* "" goes to program text, so returning a
67 | pointer to it is OK */
68 | }
69 |
70 | char *er_getfacsym(er_fac_code_t faccode)
71 | {
72 | int facidx;
73 |
74 | if( faccode != FAC_NONE ) {
75 | for (facidx=0; facidx<FAC_LAST; facidx++) {
76 | if( er_fac_err[facidx].code == faccode ) {
77 | break;
78 | }
79 | }
80 | return er_fac_err[facidx].name;
81 | }
82 | else return "";
83 | }
84 |
85 | er_mask_t er_getfacval(char *key)
86 | {
87 | int i;
88 |
89 | for(i=0; er_fac_err[i].code != -1; i++) {
90 | if(strcasecmp(key,er_fac_err[i].name) == 0) {
91 | return er_fac_err[i].code;
92 | }
93 | }
94 |
95 | return 0;
96 | }
97 |
98 | mask_t er_getfacallmask(void)
99 | {
100 | int i = FAC_NONE;
101 | mask_t all = MA_new(MA_END);
102 |
103 | while( ++i != FAC_LAST ) {
104 | MA_set(&all, (unsigned) i, 1);
105 | }
106 | return all;
107 | }
108 |
109 | unsigned int er_getaspval(char *key)
110 | {
111 | int i;
112 |
113 | for(i=0; er_asparr[i].n != NULL; i++) {
114 | if(strcasecmp(key,er_asparr[i].n) == 0) {
115 | return er_asparr[i].v;
116 | }
117 | }
118 |
119 | return 0;
120 | }
121 |
122 |
123 |
124 |
125 | void er_getaspsym(mask_t facmask, int asp, GString *g_reply)
126 | {
127 | int i, found=0;
128 |
129 | for(i=0; er_asparr[i].n != NULL; i++) {
130 | if( MA_isset(facmask, er_asparr[i].f) && asp == er_asparr[i].v) {
131 | g_string_sprintfa(g_reply, "%s|", er_asparr[i].n);
132 | found = 1;
133 | }
134 | }
135 |
136 | if( !found ) {
137 | g_string_sprintfa(g_reply, "0x%x|", asp);
138 | }
139 |
140 | g_string_truncate(g_reply, (int)strlen(g_reply->str)-1);
141 |
142 | }
143 |
144 | er_path_mt er_getpathval(char *key)
145 | {
146 | int i;
147 |
148 | for(i=0; er_pathtypes[i] != NULL; i++) {
149 | if(strcasecmp(key,er_pathtypes[i]) == 0) {
150 | return i;
151 | }
152 | }
153 |
154 | return -1;
155 | }
156 |
157 | int er_getformatval(char *key)
158 | {
159 | int i;
160 |
161 | for(i=0; er_formarr[i].n != NULL; i++) {
162 | if(strcasecmp(key,er_formarr[i].n) == 0) {
163 | return er_formarr[i].v;
164 | }
165 | }
166 |
167 | return -1;
168 | }