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