From aeae00d8be62bcd2db4e444c2e5d542bde9e6763 Mon Sep 17 00:00:00 2001 From: obrien Date: Thu, 31 Aug 2006 16:57:46 +0000 Subject: FreeBSD doesn't have the simple pidfile(3), so craft it using FreeBSD's primitives. --- libexec/lukemftpd/nbsd_pidfile.h | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 libexec/lukemftpd/nbsd_pidfile.h diff --git a/libexec/lukemftpd/nbsd_pidfile.h b/libexec/lukemftpd/nbsd_pidfile.h new file mode 100644 index 0000000..23dbe38 --- /dev/null +++ b/libexec/lukemftpd/nbsd_pidfile.h @@ -0,0 +1,30 @@ +/* $FreeBSD$ */ + +#include +#include + +static int +pidfile(const char *basename) +{ + struct pidfh *pfh; + pid_t otherpid, childpid; + + if (basename != NULL) { + errx(EX_USAGE, "Need to impliment NetBSD semantics."); + } + + pfh = pidfile_open(basename, 0644, &otherpid); + if (pfh == NULL) { + if (errno == EEXIST) { + errx(EXIT_FAILURE, "Daemon already running, pid: %jd.", + (intmax_t)otherpid); + } + /* If we cannot create pidfile from other reasons, only warn. */ + warn("Cannot open or create pidfile"); + return -1; + } + + pidfile_write(pfh); + pidfile_close(pfh); + return 0; +} -- cgit v1.1