xref: /freebsd/crypto/krb5/src/lib/krb5/krb/t_walk_rtree.c (revision 7f2fe78b9dd5f51c821d771b63d2e096f6fd49e9)
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