summaryrefslogtreecommitdiff
path: root/src/lib/krb5/krb/t_walk_rtree.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/krb5/krb/t_walk_rtree.c')
-rw-r--r--src/lib/krb5/krb/t_walk_rtree.c58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/lib/krb5/krb/t_walk_rtree.c b/src/lib/krb5/krb/t_walk_rtree.c
new file mode 100644
index 0000000000000..09e71af0feed7
--- /dev/null
+++ b/src/lib/krb5/krb/t_walk_rtree.c
@@ -0,0 +1,58 @@
+/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/*
+ * t_walk_rtree.c --- test krb5_walk_realm_tree
+ */
+
+#include "k5-int.h"
+#include <stdio.h>
+#include "com_err.h"
+
+int
+main(int argc, char **argv)
+{
+ krb5_data client, server;
+ char realm_branch_char = '.';
+ krb5_principal *tree, *p;
+ char *name;
+ krb5_error_code retval;
+ krb5_context context;
+
+ krb5_init_context(&context);
+
+ if (argc < 3 || argc > 4) {
+ fprintf(stderr,
+ "Usage: %s client-realm server-realm [sep_char]\n",
+ argv[0]);
+ exit(99);
+ }
+ client.data = argv[1];
+ client.length = strlen(client.data);
+
+ server.data = argv[2];
+ server.length = strlen(server.data);
+
+ if (argc == 4)
+ realm_branch_char = argv[3][0];
+
+ retval = krb5_walk_realm_tree(context, &client, &server, &tree,
+ realm_branch_char);
+ if (retval) {
+ com_err("krb5_walk_realm_tree", retval, " ");
+ exit(1);
+ }
+
+ for (p = tree; *p; p++) {
+ retval = krb5_unparse_name(context, *p, &name);
+ if (retval) {
+ com_err("krb5_unprase_name", retval, " ");
+ exit(2);
+ }
+ printf("%s\n", name);
+ free(name);
+ }
+
+ krb5_free_realm_tree(context, tree);
+ krb5_free_context(context);
+
+ exit(0);
+}