summaryrefslogtreecommitdiffstats
path: root/crypto/heimdal/kadmin/dump.c
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/heimdal/kadmin/dump.c')
-rw-r--r--crypto/heimdal/kadmin/dump.c51
1 files changed, 25 insertions, 26 deletions
diff --git a/crypto/heimdal/kadmin/dump.c b/crypto/heimdal/kadmin/dump.c
index a57309c..97ec667 100644
--- a/crypto/heimdal/kadmin/dump.c
+++ b/crypto/heimdal/kadmin/dump.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 1998, 1999 Kungliga Tekniska Högskolan
+ * Copyright (c) 1997-2004 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -32,49 +32,48 @@
*/
#include "kadmin_locl.h"
+#include "kadmin-commands.h"
#include <kadm5/private.h>
-RCSID("$Id: dump.c,v 1.26 1999/12/02 17:04:58 joda Exp $");
+RCSID("$Id: dump.c 14518 2005-01-19 17:09:56Z lha $");
+
+extern int local_flag;
int
-dump(int argc, char **argv)
+dump(struct dump_options *opt, int argc, char **argv)
{
krb5_error_code ret;
FILE *f;
- HDB *db = _kadm5_s_get_db(kadm_handle);
- int decrypt = 0;
- int optind = 0;
-
- struct getargs args[] = {
- { "decrypt", 'd', arg_flag, NULL, "decrypt keys" }
- };
- args[0].value = &decrypt;
-
- if(getarg(args, sizeof(args) / sizeof(args[0]), argc, argv, &optind)) {
- arg_printusage(args, sizeof(args) / sizeof(args[0]), "kadmin dump",
- "[dump-file]");
+ HDB *db = NULL;
+
+ if(!local_flag) {
+ krb5_warnx(context, "dump is only available in local (-l) mode");
return 0;
}
- argc -= optind;
- argv += optind;
- if(argc < 1)
+ db = _kadm5_s_get_db(kadm_handle);
+
+ if(argc == 0)
f = stdout;
else
f = fopen(argv[0], "w");
- ret = db->open(context, db, O_RDONLY, 0600);
- if(ret){
+ if(f == NULL) {
+ krb5_warn(context, errno, "open: %s", argv[0]);
+ goto out;
+ }
+ ret = db->hdb_open(context, db, O_RDONLY, 0600);
+ if(ret) {
krb5_warn(context, ret, "hdb_open");
- if(f != stdout)
- fclose(f);
- return 0;
+ goto out;
}
- hdb_foreach(context, db, decrypt ? HDB_F_DECRYPT : 0, hdb_print_entry, f);
+ hdb_foreach(context, db, opt->decrypt_flag ? HDB_F_DECRYPT : 0,
+ hdb_print_entry, f);
- if(f != stdout)
+ db->hdb_close(context, db);
+out:
+ if(f && f != stdout)
fclose(f);
- db->close(context, db);
return 0;
}
OpenPOWER on IntegriCloud