aboutsummaryrefslogblamecommitdiff
path: root/libexec/lukemftpd/nbsd_pidfile.h
blob: 53487709afc958512c44999a438aae493352a69a (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12











                                 
                                                                      
















                                                                                
/* $FreeBSD$ */

#include <sys/stdint.h>
#include <sysexits.h>

static int
pidfile(const char *basename)
{
	struct pidfh *pfh;
	pid_t otherpid, childpid;

	if (basename != NULL) {
		errx(EX_USAGE, "Need to implement 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;
}