Imported Upstream version 1.10.2
[platform/upstream/krb5.git] / src / lib / krb5 / ccache / t_cccursor.c
1 /* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2 /* lib/krb5/ccache/t_cccursor.c - Simple test harness for cccol API */
3 /*
4  * Copyright 2011 by the Massachusetts Institute of Technology.
5  * All Rights Reserved.
6  *
7  * Export of this software from the United States of America may
8  *   require a specific license from the United States Government.
9  *   It is the responsibility of any person or organization contemplating
10  *   export to obtain such a license before exporting.
11  *
12  * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
13  * distribute this software and its documentation for any purpose and
14  * without fee is hereby granted, provided that the above copyright
15  * notice appear in all copies and that both that copyright notice and
16  * this permission notice appear in supporting documentation, and that
17  * the name of M.I.T. not be used in advertising or publicity pertaining
18  * to distribution of the software without specific, written prior
19  * permission.  Furthermore if you modify this software you must label
20  * your software as modified software and not distribute it in such a
21  * fashion that it might be confused with the original M.I.T. software.
22  * M.I.T. makes no representations about the suitability of
23  * this software for any purpose.  It is provided "as is" without express
24  * or implied warranty.
25  */
26
27 /*
28  * Displays a list of caches returned by the cccol cursor.  The first argument,
29  * if given, is set to the default cache name for the context before iterating.
30  * Any remaining argments are resolved as caches and kept open during the
31  * iteration.
32  */
33
34 #include "k5-int.h"
35
36 int
37 main(int argc, char **argv)
38 {
39     krb5_context ctx;
40     krb5_cccol_cursor cursor;
41     krb5_ccache cache, hold[64];
42     int i;
43     char *name;
44
45     assert(krb5_init_context(&ctx) == 0);
46     if (argc > 1)
47         assert(krb5_cc_set_default_name(ctx, argv[1]) == 0);
48
49     if (argc > 2) {
50         assert(argc < 60);
51         for (i = 2; i < argc; i++)
52             assert(krb5_cc_resolve(ctx, argv[i], &hold[i - 2]) == 0);
53     }
54
55     assert(krb5_cccol_cursor_new(ctx, &cursor) == 0);
56     while (1) {
57         assert(krb5_cccol_cursor_next(ctx, cursor, &cache) == 0);
58         if (cache == NULL)
59             break;
60         assert(krb5_cc_get_full_name(ctx, cache, &name) == 0);
61         printf("%s\n", name);
62         krb5_free_string(ctx, name);
63         krb5_cc_close(ctx, cache);
64     }
65     assert(krb5_cccol_cursor_free(ctx, &cursor) == 0);
66
67     for (i = 2; i < argc; i++)
68         krb5_cc_close(ctx, hold[i - 2]);
69     return 0;
70 }