diff options
author | John Polstra <jdp@FreeBSD.org> | 1997-01-09 19:53:21 +0000 |
---|---|---|
committer | John Polstra <jdp@FreeBSD.org> | 1997-01-09 19:53:21 +0000 |
commit | ae06cb4d32a037e1a035970f2f25b6bfb7a4ef8f (patch) | |
tree | 9224f52a9d96b024cb63ce2bdf71fbb78e677a78 /usr.bin | |
parent | 5ef6c2c373a3d14bb4c261bc5b15c8fd027385d0 (diff) | |
download | src-ae06cb4d32a037e1a035970f2f25b6bfb7a4ef8f.tar.gz src-ae06cb4d32a037e1a035970f2f25b6bfb7a4ef8f.zip |
Notes
Diffstat (limited to 'usr.bin')
-rw-r--r-- | usr.bin/lockf/lockf.1 | 25 | ||||
-rw-r--r-- | usr.bin/lockf/lockf.c | 26 |
2 files changed, 34 insertions, 17 deletions
diff --git a/usr.bin/lockf/lockf.1 b/usr.bin/lockf/lockf.1 index 6b7864413299..c55135e70290 100644 --- a/usr.bin/lockf/lockf.1 +++ b/usr.bin/lockf/lockf.1 @@ -22,7 +22,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id$ +.\" $Id: lockf.1,v 1.1.1.1 1997/01/08 20:12:59 jdp Exp $ .\" .Dd January 8, 1997 .Os FreeBSD @@ -85,11 +85,28 @@ break a lock that is held by another process. .Sh DIAGNOSTICS If .Nm -is unable to acquire the lock, it returns an exit status of 1. -Otherwise, it returns the exit status produced by +successfully acquires the lock, it returns the exit status produced by .Ar command . +Otherwise, it returns one of the exit codes defined in +.Xr sysexits 3 , +as follows: +.Bl -tag -width F_CANTCREATX +.It Dv EX_TEMPFAIL +The specified lock file was already locked by another process. +.It Dv EX_CANTCREAT +.Nm +was unable to create the lock file, e.g., because of insufficient access +privileges. +.It Dv EX_USAGE +There was an error on the +.Nm +command line. +.It Dv EX_OSERR +A system call (e.g., fork) failed unexpectedly. +.El .Sh SEE ALSO -.Xr flock 2 . +.Xr flock 2 , +.Xr sysexits 3 . .Sh AUTHORS John Polstra, .Aq jdp@polstra.com . diff --git a/usr.bin/lockf/lockf.c b/usr.bin/lockf/lockf.c index 319dc6b3a2e0..1058138b89b1 100644 --- a/usr.bin/lockf/lockf.c +++ b/usr.bin/lockf/lockf.c @@ -22,7 +22,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id$ + * $Id: lockf.c,v 1.1.1.1 1997/01/08 20:12:59 jdp Exp $ */ #include <sys/types.h> @@ -34,6 +34,7 @@ #include <signal.h> #include <stdio.h> #include <stdlib.h> +#include <sysexits.h> #include <unistd.h> static int acquire_lock(const char *name); @@ -73,7 +74,7 @@ main(int argc, char **argv) char *endptr; waitsec = strtol(optarg, &endptr, 0); if (*optarg == '\0' || *endptr != '\0' || waitsec < 0) - errx(1, "invalid timeout \"%s\"", optarg); + errx(EX_USAGE, "invalid timeout \"%s\"", optarg); } break; @@ -109,17 +110,17 @@ main(int argc, char **argv) if (lockfd == -1) { /* We failed to acquire the lock. */ if (silent) - exit(1); - errx(1, "%s: already locked", lockname); + exit(EX_TEMPFAIL); + errx(EX_TEMPFAIL, "%s: already locked", lockname); } /* At this point, we own the lock. */ if (atexit(cleanup) == -1) - err(1, "atexit failed"); + err(EX_OSERR, "atexit failed"); if ((child = fork()) == -1) - err(1, "cannot fork"); + err(EX_OSERR, "cannot fork"); if (child == 0) { /* The child process. */ close(lockfd); @@ -135,7 +136,7 @@ main(int argc, char **argv) signal(SIGTERM, killed); if (waitpid(child, &status, 0) == -1) - err(1, "waitpid failed"); + err(EX_OSERR, "waitpid failed"); return WIFEXITED(status) ? WEXITSTATUS(status) : 1; } @@ -152,7 +153,7 @@ acquire_lock(const char *name) if ((fd = open(name, O_RDONLY|O_CREAT|O_EXLOCK|O_NONBLOCK, 0666)) == -1) { if (errno == EAGAIN || errno == EINTR) return -1; - err(1, "cannot open %s", name); + err(EX_CANTCREAT, "cannot open %s", name); } return fd; } @@ -163,8 +164,7 @@ acquire_lock(const char *name) static void cleanup(void) { - if (unlink(lockname) == -1 && errno != ENOENT) - err(1, "cannot unlink %s", lockname); + unlink(lockname); } /* @@ -177,7 +177,7 @@ killed(int sig) cleanup(); signal(sig, SIG_DFL); if (kill(getpid(), sig) == -1) - err(1, "kill failed"); + err(EX_OSERR, "kill failed"); } /* @@ -192,7 +192,7 @@ timeout(int sig) static void usage(void) { - errx(1, "usage: lockf [-s] [-t seconds] file command [arguments]"); + errx(EX_USAGE, "usage: lockf [-s] [-t seconds] file command [arguments]"); } /* @@ -206,7 +206,7 @@ wait_for_lock(const char *name) if ((fd = open(name, O_RDONLY|O_EXLOCK)) == -1) { if (errno == ENOENT || errno == EINTR) return; - err(1, "cannot open %s", name); + err(EX_CANTCREAT, "cannot open %s", name); } close(fd); return; |