Use hdb_foreach.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@2819 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
32
admin/dump.c
32
admin/dump.c
@@ -152,14 +152,22 @@ hdb_entry2string(hdb_entry *ent, char **str)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
krb5_error_code
|
||||||
|
print_entry(krb5_context context, HDB *db, hdb_entry *entry, void *data)
|
||||||
|
{
|
||||||
|
char *p;
|
||||||
|
hdb_entry2string(entry, &p);
|
||||||
|
fprintf((FILE*)data, "%s\n", p);
|
||||||
|
free(p);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
dump(int argc, char **argv)
|
dump(int argc, char **argv)
|
||||||
{
|
{
|
||||||
HDB *db;
|
HDB *db;
|
||||||
hdb_entry ent;
|
int ret;
|
||||||
int err;
|
|
||||||
int i;
|
|
||||||
FILE *f;
|
FILE *f;
|
||||||
|
|
||||||
if(argc < 2)
|
if(argc < 2)
|
||||||
@@ -168,22 +176,16 @@ dump(int argc, char **argv)
|
|||||||
f = fopen(argv[1], "w");
|
f = fopen(argv[1], "w");
|
||||||
|
|
||||||
|
|
||||||
err = hdb_open(context, &db, database, O_RDONLY, 0600);
|
ret = hdb_open(context, &db, database, O_RDONLY, 0600);
|
||||||
if(err){
|
if(ret){
|
||||||
warnx("hdb_open: %s", krb5_get_err_text(context, err));
|
krb5_warn(context, ret, "hdb_open");
|
||||||
if(f != stdout)
|
if(f != stdout)
|
||||||
fclose(f);
|
fclose(f);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
err = db->firstkey(context, db, &ent);
|
|
||||||
while(err == 0){
|
hdb_foreach(context, db, print_entry, f);
|
||||||
char *p;
|
|
||||||
hdb_entry2string(&ent, &p);
|
|
||||||
fprintf(f, "%s\n", p);
|
|
||||||
free(p);
|
|
||||||
hdb_free_entry(context, &ent);
|
|
||||||
err = db->nextkey(context, db, &ent);
|
|
||||||
}
|
|
||||||
if(f != stdout)
|
if(f != stdout)
|
||||||
fclose(f);
|
fclose(f);
|
||||||
db->close(context, db);
|
db->close(context, db);
|
||||||
|
@@ -152,14 +152,22 @@ hdb_entry2string(hdb_entry *ent, char **str)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
krb5_error_code
|
||||||
|
print_entry(krb5_context context, HDB *db, hdb_entry *entry, void *data)
|
||||||
|
{
|
||||||
|
char *p;
|
||||||
|
hdb_entry2string(entry, &p);
|
||||||
|
fprintf((FILE*)data, "%s\n", p);
|
||||||
|
free(p);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
dump(int argc, char **argv)
|
dump(int argc, char **argv)
|
||||||
{
|
{
|
||||||
HDB *db;
|
HDB *db;
|
||||||
hdb_entry ent;
|
int ret;
|
||||||
int err;
|
|
||||||
int i;
|
|
||||||
FILE *f;
|
FILE *f;
|
||||||
|
|
||||||
if(argc < 2)
|
if(argc < 2)
|
||||||
@@ -168,22 +176,16 @@ dump(int argc, char **argv)
|
|||||||
f = fopen(argv[1], "w");
|
f = fopen(argv[1], "w");
|
||||||
|
|
||||||
|
|
||||||
err = hdb_open(context, &db, database, O_RDONLY, 0600);
|
ret = hdb_open(context, &db, database, O_RDONLY, 0600);
|
||||||
if(err){
|
if(ret){
|
||||||
warnx("hdb_open: %s", krb5_get_err_text(context, err));
|
krb5_warn(context, ret, "hdb_open");
|
||||||
if(f != stdout)
|
if(f != stdout)
|
||||||
fclose(f);
|
fclose(f);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
err = db->firstkey(context, db, &ent);
|
|
||||||
while(err == 0){
|
hdb_foreach(context, db, print_entry, f);
|
||||||
char *p;
|
|
||||||
hdb_entry2string(&ent, &p);
|
|
||||||
fprintf(f, "%s\n", p);
|
|
||||||
free(p);
|
|
||||||
hdb_free_entry(context, &ent);
|
|
||||||
err = db->nextkey(context, db, &ent);
|
|
||||||
}
|
|
||||||
if(f != stdout)
|
if(f != stdout)
|
||||||
fclose(f);
|
fclose(f);
|
||||||
db->close(context, db);
|
db->close(context, db);
|
||||||
|
Reference in New Issue
Block a user