cmd: Don't expose krb5 error codes
[openafs.git] / src / cmd / krb5_locl.h
1
2 /* This header file transforms the Heimdal config_parse.c profile
3  * parser into an AFS profile parser, hiding the krb5-ness of the parser
4  * behind the scenes.
5  */
6
7 #include <afsconfig.h>
8 #include <afs/stds.h>
9
10 #include <assert.h>
11 #include <ctype.h>
12 #include <errno.h>
13 #include <pwd.h>
14 #include <stdarg.h>
15 #include <stdio.h>
16 #include <stdlib.h>
17 #include <string.h>
18 #include <sys/types.h>
19 #include <time.h>
20 #include <unistd.h>
21
22 #include <roken.h>
23
24 #include "cmd.h"
25
26 #ifndef TRUE
27 # define TRUE 1
28 #endif
29 #ifndef FALSE
30 # define FALSE 0
31 #endif
32
33 #define KRB5_BUFSIZ 1024
34
35 #define KRB5_LIB_FUNCTION static AFS_UNUSED
36 #define KRB5_LIB_CALL
37
38 #define KRB5_DEPRECATED_FUNCTION(x)
39
40 #define KRB5_CONFIG_BADFORMAT                    CMD_BADFORMAT
41
42 #define N_(X,Y) X
43
44 typedef struct cmd_config_binding krb5_config_binding;
45 typedef struct cmd_config_binding krb5_config_section;
46
47 #define krb5_config_list cmd_config_list
48 #define krb5_config_string cmd_config_string
49
50 struct krb5_context_data {
51     krb5_config_section *cf;
52 };
53
54 typedef struct krb5_context_data * krb5_context;
55 typedef int krb5_error_code;
56 typedef int krb5_boolean;
57 typedef time_t krb5_deltat;
58
59 static const void *_krb5_config_vget(krb5_context,
60                                      const krb5_config_section *, int,
61                                      va_list);
62 static const void *_krb5_config_vget_next(krb5_context,
63                                           const krb5_config_section *,
64                                           const krb5_config_binding **,
65                                           int, va_list);
66 static const char *krb5_config_vget_string(krb5_context,
67                                            const krb5_config_section *,
68                                            va_list);
69 static const char *krb5_config_vget_string_default(krb5_context,
70                                            const krb5_config_section *,
71                                            const char *,
72                                            va_list);
73 static const krb5_config_binding * krb5_config_vget_list
74         (krb5_context, const krb5_config_section *, va_list);
75 static krb5_error_code krb5_config_parse_file_multi
76         (krb5_context, const char *, krb5_config_section **);
77 static krb5_error_code krb5_config_parse_file
78         (krb5_context, const char *, krb5_config_section **);
79 static krb5_error_code krb5_config_file_free
80         (krb5_context, krb5_config_section *);
81 static krb5_boolean krb5_config_vget_bool_default
82         (krb5_context, const krb5_config_section *, int, va_list);
83 static int krb5_config_vget_int_default
84         (krb5_context, const krb5_config_section *, int, va_list);
85
86 static krb5_error_code
87 krb5_string_to_deltat(const char *str, krb5_deltat *t) {
88     return 1;
89 }
90
91 KRB5_LIB_FUNCTION void krb5_clear_error_message(krb5_context context) {
92     return;
93 }
94
95 static void krb5_set_error_message(krb5_context context, krb5_error_code ret,
96                                    const char *fmt, ...) {
97     return;
98 }
99
100 static int _krb5_homedir_access(krb5_context context) {
101     return 0;
102 }
103
104 static krb5_error_code
105 krb5_abortx(krb5_context context, const char *fmt, ...)
106 {
107     va_list ap;
108     va_start(ap, fmt);
109
110     vfprintf(stderr, fmt, ap);
111     va_end(ap);
112
113     abort();
114 }
115
116 /* Wrappers */
117
118 int
119 cmd_RawConfigParseFileMulti(const char *fname, cmd_config_section **res) {
120     return krb5_config_parse_file_multi(NULL, fname, res);
121 }
122
123 int
124 cmd_RawConfigParseFile(const char *fname, cmd_config_section **res) {
125     return krb5_config_parse_file(NULL, fname, res);
126 }
127
128 int
129 cmd_RawConfigFileFree(cmd_config_section *s) {
130     return krb5_config_file_free(NULL, s);
131 }
132
133 const char*
134 cmd_RawConfigGetString(const cmd_config_section *c,
135                        const char *defval, ...)
136 {
137     const char *ret;
138     va_list args;
139
140     assert(c != NULL);
141
142     va_start(args, defval);
143     ret = krb5_config_vget_string_default (NULL, c, defval, args);
144     va_end(args);
145     return ret;
146 }
147
148 int
149 cmd_RawConfigGetBool(const cmd_config_section *c, int defval, ...)
150 {
151     va_list ap;
152     krb5_boolean ret;
153
154     assert(c != NULL);
155
156     va_start(ap, defval);
157     ret = krb5_config_vget_bool_default (NULL, c, defval, ap);
158     va_end(ap);
159     return ret;
160 }
161
162 int
163 cmd_RawConfigGetInt(const cmd_config_section *c, int defval, ...)
164 {
165     va_list ap;
166     int ret;
167
168     assert(c != NULL);
169
170     va_start(ap, defval);
171     ret = krb5_config_vget_int_default (NULL, c, defval, ap);
172     va_end(ap);
173     return ret;
174 }
175
176 const cmd_config_binding *
177 cmd_RawConfigGetList(const cmd_config_section *c, ...)
178 {
179     va_list ap;
180     const cmd_config_binding *ret;
181
182     assert(c != NULL);
183
184     va_start(ap, c);
185     ret = krb5_config_vget_list (NULL, c, ap);
186     va_end(ap);
187
188     return ret;
189 }