Fix autoconf 2.70 compatibility
[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.  If the argument "CONTENT" is given as one of the cache names,
32  * immediately exit with status 0 if the collection contains credentials and 1
33  * if it does not.
34  */
35
36 #include "k5-int.h"
37
38 int
39 main(int argc, char **argv)
40 {
41     krb5_error_code ret;
42     krb5_context ctx;
43     krb5_cccol_cursor cursor;
44     krb5_ccache cache, hold[64];
45     int i;
46     char *name;
47
48     assert(krb5_init_context(&ctx) == 0);
49     if (argc > 1)
50         assert(krb5_cc_set_default_name(ctx, argv[1]) == 0);
51
52     if (argc > 2) {
53         assert(argc < 60);
54         for (i = 2; i < argc; i++) {
55             if (strcmp(argv[i], "CONTENT") == 0) {
56                 ret = krb5_cccol_have_content(ctx);
57                 krb5_free_context(ctx);
58                 return ret != 0;
59             }
60             assert(krb5_cc_resolve(ctx, argv[i], &hold[i - 2]) == 0);
61         }
62     }
63
64     assert(krb5_cccol_cursor_new(ctx, &cursor) == 0);
65     while (1) {
66         assert(krb5_cccol_cursor_next(ctx, cursor, &cache) == 0);
67         if (cache == NULL)
68             break;
69         assert(krb5_cc_get_full_name(ctx, cache, &name) == 0);
70         printf("%s\n", name);
71         krb5_free_string(ctx, name);
72         krb5_cc_close(ctx, cache);
73     }
74     assert(krb5_cccol_cursor_free(ctx, &cursor) == 0);
75
76     for (i = 2; i < argc; i++)
77         krb5_cc_close(ctx, hold[i - 2]);
78
79     krb5_free_context(ctx);
80     return 0;
81 }