diff --git a/system.c b/system.c
index eb37fdd..2dcf152 100644
--- a/system.c
+++ b/system.c
@@ -3,7 +3,6 @@
  * found in the LICENSE file.
  */
 
-#define _GNU_SOURCE
 #include "system.h"
 
 #include <errno.h>
@@ -13,7 +12,6 @@
 #include <pwd.h>
 #include <stdbool.h>
 #include <stdio.h>
-#include <stdlib.h>
 #include <string.h>
 #include <sys/ioctl.h>
 #include <sys/prctl.h>
@@ -236,56 +234,23 @@
 
 int write_pid_to_path(pid_t pid, const char *path)
 {
-	char *temp_path;
-	int ret;
+	FILE *fp = fopen(path, "we");
 
-	if (asprintf(&temp_path, "%s.XXXXXX", path) < 0) {
-		warn("asprintf(temp_path) failed");
-		return -ENOMEM;
-	}
-	int fd = mkstemp(temp_path);
-	if (fd < 0) {
-		pwarn("mkstemp(%s) failed", temp_path);
-		ret = -errno;
-		goto done;
-	}
-
-	FILE *fp = fdopen(fd, "we");
 	if (!fp) {
-		pwarn("fdopen(fd, \"we\") failed");
-		ret = -errno;
-		close(fd);
-		goto unlink_temp;
+		pwarn("failed to open '%s'", path);
+		return -errno;
 	}
 	if (fprintf(fp, "%d\n", (int)pid) < 0) {
 		/* fprintf(3) does not set errno on failure. */
 		warn("fprintf(%s) failed", path);
-		ret = -1;
-		fclose(fp);
-		goto unlink_temp;
+		return -1;
 	}
 	if (fclose(fp)) {
 		pwarn("fclose(%s) failed", path);
-		ret = -errno;
-		/* Best effort. */
-		close(fd);
-		goto unlink_temp;
+		return -errno;
 	}
 
-	if (rename(temp_path, path) < 0) {
-		pwarn("rename(%s, %s) failed", temp_path, path);
-		ret = -errno;
-		goto unlink_temp;
-	}
-	ret = 0;
-	goto done;
-
-unlink_temp:
-	/* Best effort. */
-	unlink(temp_path);
-done:
-	free(temp_path);
-	return ret;
+	return 0;
 }
 
 /*
