1 /* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2 /* lib/krb5/ccache/t_cccursor.c - Simple test harness for cccol API */
4 * Copyright 2011 by the Massachusetts Institute of Technology.
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.
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.
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
39 main(int argc, char **argv)
43 krb5_cccol_cursor cursor;
44 krb5_ccache cache, hold[64];
48 assert(krb5_init_context(&ctx) == 0);
50 assert(krb5_cc_set_default_name(ctx, argv[1]) == 0);
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);
60 assert(krb5_cc_resolve(ctx, argv[i], &hold[i - 2]) == 0);
64 assert(krb5_cccol_cursor_new(ctx, &cursor) == 0);
66 assert(krb5_cccol_cursor_next(ctx, cursor, &cache) == 0);
69 assert(krb5_cc_get_full_name(ctx, cache, &name) == 0);
71 krb5_free_string(ctx, name);
72 krb5_cc_close(ctx, cache);
74 assert(krb5_cccol_cursor_free(ctx, &cursor) == 0);
76 for (i = 2; i < argc; i++)
77 krb5_cc_close(ctx, hold[i - 2]);
79 krb5_free_context(ctx);