]> diplodocus.org Git - nmh/blobdiff - sbr/context_save.c
Sigh. Mention that we have to do both a "git push" and a "git push --tags".
[nmh] / sbr / context_save.c
index d7d87e45f5c6b51ab4d8ab3d694ad38d96ea793a..70809595e06a2f5604c68f35a9fb37c8dc2c79e3 100644 (file)
@@ -23,6 +23,7 @@ context_save (void)
     register struct node *np;
     FILE *out;
     sigset_t set, oset;
     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)
     
     /* 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);
 
     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);
     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(). */
        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:
            break;
 
        default: