git: 3041e6950d07 - main - lockf: hide unavailable error with -n -s
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 26 Nov 2023 04:10:47 UTC
The branch main has been updated by kevans:
URL: https://cgit.FreeBSD.org/src/commit/?id=3041e6950d07f0d11c9f91fefbf3c273cbbe4407
commit 3041e6950d07f0d11c9f91fefbf3c273cbbe4407
Author: Kyle Evans <kevans@FreeBSD.org>
AuthorDate: 2023-11-22 04:41:36 +0000
Commit: Kyle Evans <kevans@FreeBSD.org>
CommitDate: 2023-11-26 04:08:40 +0000
lockf: hide unavailable error with -n -s
The error message is expected, allow -s to suppress just that one since
it would loosely fall under the definition of "failure to acquire the
lock" described in the manpage for the -s option.
Reviewed by: 0mp, allanjude
Feedback from: des
Sponsored by: Klara, Inc.
Differential Revision: https://reviews.freebsd.org/D42711
---
usr.bin/lockf/lockf.c | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/usr.bin/lockf/lockf.c b/usr.bin/lockf/lockf.c
index c98c584bc6a9..246f134f10f9 100644
--- a/usr.bin/lockf/lockf.c
+++ b/usr.bin/lockf/lockf.c
@@ -38,7 +38,7 @@
#include <sysexits.h>
#include <unistd.h>
-static int acquire_lock(const char *name, int flags);
+static int acquire_lock(const char *name, int flags, int silent);
static void cleanup(void);
static void killed(int sig);
static void timeout(int sig);
@@ -125,13 +125,14 @@ main(int argc, char **argv)
* avoiding the separate step of waiting for the lock. This
* yields fairness and improved performance.
*/
- lockfd = acquire_lock(lockname, flags | O_NONBLOCK);
+ lockfd = acquire_lock(lockname, flags | O_NONBLOCK, silent);
while (lockfd == -1 && !timed_out && waitsec != 0) {
if (keep)
- lockfd = acquire_lock(lockname, flags);
+ lockfd = acquire_lock(lockname, flags, silent);
else {
wait_for_lock(lockname);
- lockfd = acquire_lock(lockname, flags | O_NONBLOCK);
+ lockfd = acquire_lock(lockname, flags | O_NONBLOCK,
+ silent);
}
}
if (waitsec > 0)
@@ -168,15 +169,18 @@ main(int argc, char **argv)
* on success, or -1 on failure.
*/
static int
-acquire_lock(const char *name, int flags)
+acquire_lock(const char *name, int flags, int silent)
{
int fd;
if ((fd = open(name, O_EXLOCK|flags, 0666)) == -1) {
if (errno == EAGAIN || errno == EINTR)
return (-1);
- else if (errno == ENOENT && (flags & O_CREAT) == 0)
- err(EX_UNAVAILABLE, "%s", name);
+ else if (errno == ENOENT && (flags & O_CREAT) == 0) {
+ if (!silent)
+ warn("%s", name);
+ exit(EX_UNAVAILABLE);
+ }
err(EX_CANTCREAT, "cannot open %s", name);
}
return (fd);