extern int cmd_OptionAsFlag(struct cmd_syndesc *syn, int pos, int *value);
extern int cmd_OptionPresent(struct cmd_syndesc *syn, int pos);
+/* Config files */
+
+struct cmd_config_binding {
+ enum { cmd_config_string, cmd_config_list } type;
+ char *name;
+ struct cmd_config_binding *next;
+ union {
+ char *string;
+ struct cmd_config_binding *list;
+ void *generic;
+ } u;
+};
+
+/* Raw config file access */
+typedef struct cmd_config_binding cmd_config_binding;
+typedef struct cmd_config_binding cmd_config_section;
+
+extern int cmd_RawConfigParseFileMulti(const char *, cmd_config_section **);
+extern int cmd_RawConfigParseFile(const char *, cmd_config_section **);
+extern int cmd_RawConfigFileFree(cmd_config_section *s);
+extern const char* cmd_RawConfigGetString(const cmd_config_section *,
+ const char *, ...);
+extern int cmd_RawConfigGetBool(const cmd_config_section *, int, ...);
+extern int cmd_RawConfigGetInt(const cmd_config_section *, int, ...);
+extern const cmd_config_binding *cmd_RawConfigGetList
+ (const cmd_config_section *, ...);
+
#endif /* __CMD_INCL__ */
#include <time.h>
#include <unistd.h>
+#include <roken.h>
+
+#include "cmd.h"
+
#ifndef TRUE
# define TRUE 1
#endif
#define N_(X,Y) X
-struct krb5_config_binding {
- enum { krb5_config_string, krb5_config_list } type;
- char *name;
- struct krb5_config_binding *next;
- union {
- char *string;
- struct krb5_config_binding *list;
- void *generic;
- } u;
-};
-
-typedef struct krb5_config_binding krb5_config_binding;
+typedef struct cmd_config_binding krb5_config_binding;
+typedef struct cmd_config_binding krb5_config_section;
-typedef krb5_config_binding krb5_config_section;
-typedef krb5_config_section afs_config_section;
+#define krb5_config_list cmd_config_list
+#define krb5_config_string cmd_config_string
struct krb5_context_data {
krb5_config_section *cf;
static const char *krb5_config_vget_string(krb5_context,
const krb5_config_section *,
va_list);
+static const char *krb5_config_vget_string_default(krb5_context,
+ const krb5_config_section *,
+ const char *,
+ va_list);
static const krb5_config_binding * krb5_config_vget_list
(krb5_context, const krb5_config_section *, va_list);
static krb5_error_code krb5_config_parse_file_multi
(krb5_context, const char *, krb5_config_section **);
static krb5_error_code krb5_config_file_free
(krb5_context, krb5_config_section *);
-static krb5_boolean krb5_config_vget_bool
- (krb5_context, const krb5_config_section *,va_list);
-static int krb5_config_vget_int
- (krb5_context, const krb5_config_section *, va_list);
+static krb5_boolean krb5_config_vget_bool_default
+ (krb5_context, const krb5_config_section *, int, va_list);
+static int krb5_config_vget_int_default
+ (krb5_context, const krb5_config_section *, int, va_list);
static krb5_error_code
krb5_string_to_deltat(const char *str, krb5_deltat *t) {
return;
}
-/* Play it safe, by saying we're always suid. */
-static int issuid(void) {
- return 1;
-}
-
static int _krb5_homedir_access(krb5_context context) {
return 0;
}
/* Wrappers */
int
-afs_config_parse_file_multi(const char *fname, afs_config_section **res) {
+cmd_RawConfigParseFileMulti(const char *fname, cmd_config_section **res) {
return krb5_config_parse_file_multi(NULL, fname, res);
}
int
-afs_config_parse_file(const char *fname, afs_config_section **res) {
+cmd_RawConfigParseFile(const char *fname, cmd_config_section **res) {
return krb5_config_parse_file(NULL, fname, res);
}
int
-afs_config_file_free(afs_config_section *s) {
+cmd_RawConfigFileFree(cmd_config_section *s) {
return krb5_config_file_free(NULL, s);
}
const char*
-afs_config_get_string(const afs_config_section *c, ...)
+cmd_RawConfigGetString(const cmd_config_section *c,
+ const char *defval, ...)
{
const char *ret;
va_list args;
assert(c != NULL);
- va_start(args, c);
- ret = krb5_config_vget_string (NULL, c, args);
+ va_start(args, defval);
+ ret = krb5_config_vget_string_default (NULL, c, defval, args);
va_end(args);
return ret;
}
int
-afs_config_get_bool(const afs_config_section *c, ...)
+cmd_RawConfigGetBool(const cmd_config_section *c, int defval, ...)
{
va_list ap;
krb5_boolean ret;
assert(c != NULL);
- va_start(ap, c);
- ret = krb5_config_vget_bool (NULL, c, ap);
+ va_start(ap, defval);
+ ret = krb5_config_vget_bool_default (NULL, c, defval, ap);
va_end(ap);
return ret;
}
int
-afs_config_get_int(const krb5_config_section *c, ...)
+cmd_RawConfigGetInt(const cmd_config_section *c, int defval, ...)
{
va_list ap;
int ret;
assert(c != NULL);
- va_start(ap, c);
- ret = krb5_config_vget_int (NULL, c, ap);
+ va_start(ap, defval);
+ ret = krb5_config_vget_int_default (NULL, c, defval, ap);
va_end(ap);
return ret;
}
+const cmd_config_binding *
+cmd_RawConfigGetList(const cmd_config_section *c, ...)
+{
+ va_list ap;
+ const cmd_config_binding *ret;
+
+ assert(c != NULL);
+
+ va_start(ap, c);
+ ret = krb5_config_vget_list (NULL, c, ap);
+ va_end(ap);
+
+ return ret;
+}
HELPER_SPLINT=@HELPER_SPLINT@
-objects =base64.o config_file.o ktime.o volparse.o \
- hostparse.o exec.o \
+objects =base64.o ktime.o volparse.o hostparse.o exec.o \
hputil.o kreltime.o get_krbrlm.o uuid.o serverLog.o \
dirpath.o fileutil.o netutils.o flipbase64.o fstab.o \
afs_atomlist.o afs_lhash.o pthread_glock.o tabular_output.o \
objects_pic = \
base64_pic.o \
- config_file_pic.o \
ktime_pic.o \
volparse_pic.o \
hostparse_pic.o \
AFS_component_version_number_pic.o: AFS_component_version_number.c
$(SHD_CCRULE) AFS_component_version_number.c
-config_file.o: ${TOP_SRCDIR}/external/heimdal/krb5/config_file.c krb5_locl.h
- $(AFS_CCRULE) -c ${TOP_SRCDIR}/external/heimdal/krb5/config_file.c
-
sys.o: sys.c AFS_component_version_number.c ${includes}
sys: sys.o
base64_pic.o: ${srcdir}/base64.c ${includes}
$(SHD_CCRULE) ${srcdir}/base64.c
-config_file_pic.o: ${TOP_SRCDIR}/external/heimdal/krb5/config_file.c krb5_locl.h
- $(SHD_CCRULE) ${TOP_SRCDIR}/external/heimdal/krb5/config_file.c
-
ktime_pic.o: ${srcdir}/ktime.c ${includes}
$(SHD_CCRULE) ${srcdir}/ktime.c