diff options
| author | Tom Yu <tlyu@mit.edu> | 2002-10-08 20:20:29 +0000 |
|---|---|---|
| committer | Tom Yu <tlyu@mit.edu> | 2002-10-08 20:20:29 +0000 |
| commit | 794f0d854711dbee20ca8cfb3ec2ae729c41910c (patch) | |
| tree | 579a3b3f9f9c9851ec06cd8a188c7707b5ce2db4 /src/kadmin/cli/kadmin.c | |
| parent | 2d59b5f412e0eacf4c89008b14df8251a92cae09 (diff) | |
| download | krb5-794f0d854711dbee20ca8cfb3ec2ae729c41910c.tar.gz krb5-794f0d854711dbee20ca8cfb3ec2ae729c41910c.tar.xz krb5-794f0d854711dbee20ca8cfb3ec2ae729c41910c.zip | |
libkadm5 should allow persistent locks
libkadm5 should have a way to persistently lock the databases to avoid
wasting time on closing and reopening. These patches implement
persistent exclusive locks for local access only.
ticket: new
target_version: 1.3
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@14914 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/kadmin/cli/kadmin.c')
| -rw-r--r-- | src/kadmin/cli/kadmin.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/kadmin/cli/kadmin.c b/src/kadmin/cli/kadmin.c index b3308797a7..72dc594b86 100644 --- a/src/kadmin/cli/kadmin.c +++ b/src/kadmin/cli/kadmin.c @@ -93,6 +93,8 @@ void *handle = NULL; krb5_context context; char *ccache_name = NULL; +int locked = 0; + static void usage() { fprintf(stderr, @@ -465,6 +467,17 @@ char *kadmin_startup(argc, argv) int quit() { + kadm5_ret_t retval; + + if (locked) { + retval = kadm5_unlock(handle); + if (retval) { + com_err("quit", retval, "while unlocking locked database"); + return 1; + } + locked = 0; + } + kadm5_destroy(handle); if (ccache_name != NULL) { fprintf(stderr, @@ -477,6 +490,38 @@ int quit() return 0; } +void kadmin_lock(argc, argv) + int argc; + char *argv[]; +{ + kadm5_ret_t retval; + + if (locked) + return; + retval = kadm5_lock(handle); + if (retval) { + com_err("lock", retval, ""); + return; + } + locked = 1; +} + +void kadmin_unlock(argc, argv) + int argc; + char *argv[]; +{ + kadm5_ret_t retval; + + if (!locked) + return; + retval = kadm5_lock(handle); + if (retval) { + com_err("unlock", retval, ""); + return; + } + locked = 0; +} + void kadmin_delprinc(argc, argv) int argc; char *argv[]; |
