Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 28 Sep 2015 07:23:05 +0000 (UTC)
From:      Hans Petter Selasky <hselasky@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r288335 - head/usr.bin/usbhidaction
Message-ID:  <201509280723.t8S7N5XW042276@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: hselasky
Date: Mon Sep 28 07:23:05 2015
New Revision: 288335
URL: https://svnweb.freebsd.org/changeset/base/288335

Log:
  Store PID after becoming a daemon() and not before to ensure the
  correct PID gets written to the PID file.
  
  Submitted by:	Maxime Soule <btik-fbsd@scoubidou.com>
  PR:		203252
  MFC after:	2 weeks

Modified:
  head/usr.bin/usbhidaction/usbhidaction.c

Modified: head/usr.bin/usbhidaction/usbhidaction.c
==============================================================================
--- head/usr.bin/usbhidaction/usbhidaction.c	Mon Sep 28 06:26:46 2015	(r288334)
+++ head/usr.bin/usbhidaction/usbhidaction.c	Mon Sep 28 07:23:05 2015	(r288335)
@@ -166,17 +166,15 @@ main(int argc, char **argv)
 
 	if (demon) {
 		fp = open(pidfile, O_WRONLY|O_CREAT, S_IRUSR|S_IRGRP|S_IROTH);
-		if (fp >= 0) {
-			sz1 = snprintf(buf, sizeof buf, "%ld\n", 
-			    (long)getpid());
-			if (sz1 > sizeof buf)
-				sz1 = sizeof buf;
-			write(fp, buf, sz1);
-			close(fp);
-		} else
+		if (fp < 0)
 			err(1, "%s", pidfile);
 		if (daemon(0, 0) < 0)
 			err(1, "daemon()");
+		snprintf(buf, sizeof(buf), "%ld\n", (long)getpid());
+		sz1 = strlen(buf);
+		if (write(fp, buf, sz1) < 0)
+			err(1, "%s", pidfile);
+		close(fp);
 		isdemon = 1;
 	}
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201509280723.t8S7N5XW042276>