rxperf: Build again
[openafs.git] / src / util / 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 #ifndef TRUE
23 # define TRUE 1
24 #endif
25 #ifndef FALSE
26 # define FALSE 0
27 #endif
28
29 #define KRB5_BUFSIZ 1024
30
31 #define KRB5_LIB_FUNCTION static AFS_UNUSED
32 #define KRB5_LIB_CALL
33
34 #define KRB5_DEPRECATED_FUNCTION(x)
35
36 /* This value shouldn't be hard coded */
37 #define KRB5_CONFIG_BADFORMAT                    (-1765328248L)
38
39 #define N_(X,Y) X
40
41 struct krb5_config_binding {
42     enum { krb5_config_string, krb5_config_list } type;
43     char *name;
44     struct krb5_config_binding *next;
45     union {
46         char *string;
47         struct krb5_config_binding *list;
48         void *generic;
49     } u;
50 };
51
52 typedef struct krb5_config_binding krb5_config_binding;
53
54 typedef krb5_config_binding krb5_config_section;
55 typedef krb5_config_section afs_config_section;
56
57 struct krb5_context_data {
58     krb5_config_section *cf;
59 };
60
61 typedef struct krb5_context_data * krb5_context;
62 typedef int krb5_error_code;
63 typedef int krb5_boolean;
64 typedef time_t krb5_deltat;
65
66 static const void *_krb5_config_vget(krb5_context,
67                                      const krb5_config_section *, int,
68                                      va_list);
69 static const void *_krb5_config_vget_next(krb5_context,
70                                           const krb5_config_section *,
71                                           const krb5_config_binding **,
72                                           int, va_list);
73 static const char *krb5_config_vget_string(krb5_context,
74                                            const krb5_config_section *,
75                                            va_list);
76 static const krb5_config_binding * krb5_config_vget_list
77         (krb5_context, const krb5_config_section *, va_list);
78 static krb5_error_code krb5_config_parse_file_multi
79         (krb5_context, const char *, krb5_config_section **);
80 static krb5_error_code krb5_config_parse_file
81         (krb5_context, const char *, krb5_config_section **);
82 static krb5_error_code krb5_config_file_free
83         (krb5_context, krb5_config_section *);
84 static krb5_boolean krb5_config_vget_bool
85         (krb5_context, const krb5_config_section *,va_list);
86 static int krb5_config_vget_int
87         (krb5_context, const krb5_config_section *, va_list);
88
89 static krb5_error_code
90 krb5_string_to_deltat(const char *str, krb5_deltat *t) {
91     return 1;
92 }
93
94 KRB5_LIB_FUNCTION void krb5_clear_error_message(krb5_context context) {
95     return;
96 }
97
98 static void krb5_set_error_message(krb5_context context, krb5_error_code ret,
99                                    const char *fmt, ...) {
100     return;
101 }
102
103 /* Play it safe, by saying we're always suid. */
104 static int issuid(void) {
105     return 1;
106 }
107
108 static int _krb5_homedir_access(krb5_context context) {
109     return 0;
110 }
111
112 static krb5_error_code
113 krb5_abortx(krb5_context context, const char *fmt, ...)
114 {
115     va_list ap;
116     va_start(ap, fmt);
117
118     vfprintf(stderr, fmt, ap);
119     va_end(ap);
120
121     abort();
122 }
123
124 /* Wrappers */
125
126 int
127 afs_config_parse_file_multi(const char *fname, afs_config_section **res) {
128     return krb5_config_parse_file_multi(NULL, fname, res);
129 }
130
131 int
132 afs_config_parse_file(const char *fname, afs_config_section **res) {
133     return krb5_config_parse_file(NULL, fname, res);
134 }
135
136 int
137 afs_config_file_free(afs_config_section *s) {
138     return krb5_config_file_free(NULL, s);
139 }
140
141 const char*
142 afs_config_get_string(const afs_config_section *c, ...)
143 {
144     const char *ret;
145     va_list args;
146
147     assert(c != NULL);
148
149     va_start(args, c);
150     ret = krb5_config_vget_string (NULL, c, args);
151     va_end(args);
152     return ret;
153 }
154
155 int
156 afs_config_get_bool(const afs_config_section *c, ...)
157 {
158     va_list ap;
159     krb5_boolean ret;
160
161     assert(c != NULL);
162
163     va_start(ap, c);
164     ret = krb5_config_vget_bool (NULL, c, ap);
165     va_end(ap);
166     return ret;
167 }
168
169 int
170 afs_config_get_int(const krb5_config_section *c, ...)
171 {
172     va_list ap;
173     int ret;
174
175     assert(c != NULL);
176
177     va_start(ap, c);
178     ret = krb5_config_vget_int (NULL, c, ap);
179     va_end(ap);
180     return ret;
181 }
182