From ed3264222fa4be5e61fd00fb08f0de4daf9226f9 Mon Sep 17 00:00:00 2001 From: Assar Westerlund Date: Mon, 24 Jul 2000 04:32:17 +0000 Subject: [PATCH] (kadm5_log_get_version): rename kadm5_log_get_version_fd and make a new that takes a context (kadm5_log_nop): add logging of missing lengths (kadm5_log_truncate): new function git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@8805 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/kadm5/log.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 3 deletions(-) diff --git a/lib/kadm5/log.c b/lib/kadm5/log.c index 60d2a0ac4..ff75d2cac 100644 --- a/lib/kadm5/log.c +++ b/lib/kadm5/log.c @@ -49,8 +49,8 @@ RCSID("$Id$"); */ kadm5_ret_t -kadm5_log_get_version (int fd, - u_int32_t *ver) +kadm5_log_get_version_fd (int fd, + u_int32_t *ver) { int ret; krb5_storage *sp; @@ -72,6 +72,12 @@ kadm5_log_get_version (int fd, return 0; } +kadm5_ret_t +kadm5_log_get_version (kadm5_server_context *context, u_int32_t *ver) +{ + return kadm5_log_get_version_fd (context->log_context.log_fd, ver); +} + kadm5_ret_t kadm5_log_set_version (kadm5_server_context *context, u_int32_t vno) { @@ -98,7 +104,7 @@ kadm5_log_init (kadm5_server_context *context) return errno; } - ret = kadm5_log_get_version (fd, &log_context->version); + ret = kadm5_log_get_version_fd (fd, &log_context->version); if (ret) return ret; @@ -628,6 +634,8 @@ kadm5_log_nop (kadm5_server_context *context) krb5_storage_free (sp); return ret; } + krb5_store_int32 (sp, 0); + krb5_store_int32 (sp, 0); ret = kadm5_log_postamble (log_context, sp); if (ret) { krb5_storage_free (sp); @@ -758,3 +766,40 @@ kadm5_log_replay (kadm5_server_context *context, return KADM5_FAILURE; } } + +/* + * truncate the log - i.e. create an empty file with just (nop vno + 2) + */ + +kadm5_ret_t +kadm5_log_truncate (kadm5_server_context *server_context) +{ + kadm5_ret_t ret; + u_int32_t vno; + + ret = kadm5_log_init (server_context); + if (ret) + return ret; + + ret = kadm5_log_get_version (server_context, &vno); + if (ret) + return ret; + + ret = kadm5_log_reinit (server_context); + if (ret) + return ret; + + ret = kadm5_log_set_version (server_context, vno + 1); + if (ret) + return ret; + + ret = kadm5_log_nop (server_context); + if (ret) + return ret; + + ret = kadm5_log_end (server_context); + if (ret) + return ret; + return 0; + +}