1 /* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2 /*
3 * t_walk_rtree.c --- test krb5_walk_realm_tree
4 */
5
6 #include "k5-int.h"
7 #include <stdio.h>
8 #include "com_err.h"
9
10 int
main(int argc,char ** argv)11 main(int argc, char **argv)
12 {
13 krb5_data client, server;
14 char realm_branch_char = '.';
15 krb5_principal *tree, *p;
16 char *name;
17 krb5_error_code retval;
18 krb5_context context;
19
20 krb5_init_context(&context);
21
22 if (argc < 3 || argc > 4) {
23 fprintf(stderr,
24 "Usage: %s client-realm server-realm [sep_char]\n",
25 argv[0]);
26 exit(99);
27 }
28 client.data = argv[1];
29 client.length = strlen(client.data);
30
31 server.data = argv[2];
32 server.length = strlen(server.data);
33
34 if (argc == 4)
35 realm_branch_char = argv[3][0];
36
37 retval = krb5_walk_realm_tree(context, &client, &server, &tree,
38 realm_branch_char);
39 if (retval) {
40 com_err("krb5_walk_realm_tree", retval, " ");
41 exit(1);
42 }
43
44 for (p = tree; *p; p++) {
45 retval = krb5_unparse_name(context, *p, &name);
46 if (retval) {
47 com_err("krb5_unprase_name", retval, " ");
48 exit(2);
49 }
50 printf("%s\n", name);
51 free(name);
52 }
53
54 krb5_free_realm_tree(context, tree);
55 krb5_free_context(context);
56
57 exit(0);
58 }
59