summaryrefslogtreecommitdiffstats
path: root/src/kadmin/cli/kadmin.c
diff options
context:
space:
mode:
authorTom Yu <tlyu@mit.edu>2002-10-08 20:20:29 +0000
committerTom Yu <tlyu@mit.edu>2002-10-08 20:20:29 +0000
commit794f0d854711dbee20ca8cfb3ec2ae729c41910c (patch)
tree579a3b3f9f9c9851ec06cd8a188c7707b5ce2db4 /src/kadmin/cli/kadmin.c
parent2d59b5f412e0eacf4c89008b14df8251a92cae09 (diff)
downloadkrb5-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.c45
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[];