X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/dd259aa56c8f8d816bc7b295cb5ad4ea80b1a8ab..3e4f493e89d831b319c585b3222004ffca5669f7:/sbr/context_save.c diff --git a/sbr/context_save.c b/sbr/context_save.c index d7d87e45..70809595 100644 --- a/sbr/context_save.c +++ b/sbr/context_save.c @@ -23,6 +23,7 @@ context_save (void) register struct node *np; FILE *out; sigset_t set, oset; + int failed_to_lock = 0; /* No context in use -- silently ignore any changes! */ if (!ctxpath) @@ -43,8 +44,13 @@ context_save (void) sigaddset (&set, SIGTERM); sigprocmask (SIG_BLOCK, &set, &oset); - if (!(out = lkfopendata (ctxpath, "w"))) - adios (ctxpath, "unable to write"); + if (!(out = lkfopendata (ctxpath, "w", &failed_to_lock))) { + if (failed_to_lock) { + adios (ctxpath, "failed to lock"); + } else { + adios (ctxpath, "unable to write"); + } + } for (np = m_defs; np; np = np->n_next) if (np->n_context) fprintf (out, "%s: %s\n", np->n_name, np->n_field); @@ -87,8 +93,6 @@ m_chkids (void) case 0: /* It's not necessary to call unregister_for_removal(0) because the child calls _exit() in context_save(). */ - setgid (getgid ()); - setuid (getuid ()); break; default: