summaryrefslogtreecommitdiff
path: root/usr.sbin/pw/pw.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/pw/pw.c')
-rw-r--r--usr.sbin/pw/pw.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/usr.sbin/pw/pw.c b/usr.sbin/pw/pw.c
index f862cbe12346..3dc9276d518d 100644
--- a/usr.sbin/pw/pw.c
+++ b/usr.sbin/pw/pw.c
@@ -26,7 +26,7 @@
#ifndef lint
static const char rcsid[] =
- "$Id: pw.c,v 1.10 1998/08/04 22:31:26 nate Exp $";
+ "$Id: pw.c,v 1.8 1998/07/16 17:18:25 nate Exp $";
#endif /* not lint */
#include "pw.h"
@@ -50,6 +50,7 @@ static struct cargs arglist;
static int getindex(const char *words[], const char *word);
static void cmdhelp(int mode, int which);
+static void filelock(const char *filename);
int
@@ -149,6 +150,12 @@ main(int argc, char *argv[])
*/
cnf = read_userconfig(getarg(&arglist, 'C') ? getarg(&arglist, 'C')->val : NULL);
+ /*
+ * Try to lock the master passowrd and group files right away (we
+ * don't care if it works, since this is just advisory locking.
+ */
+ filelock(_PATH_GROUP);
+ filelock(_PATH_MASTERPASSWD);
ch = funcs[which] (cnf, mode, &arglist);
/*
@@ -179,6 +186,11 @@ main(int argc, char *argv[])
return ch;
}
+static void
+filelock(const char *filename)
+{
+ open(filename, O_RDONLY | O_EXLOCK, 0);
+}
static int
getindex(const char *words[], const char *word)