From cf9286d2d84f7aef237ec0d363c692ef5035aa85 Mon Sep 17 00:00:00 2001
From: Lexxy Fox <lexxyfox@gmail.com>
Date: Tue, 26 Sep 2023 13:30:14 -0500
Subject: Relocate pipes.c and pipes.h file to shared directory.

With the addition of logger process redirect in supervise-daemon,
pipes.c and pipes.h are now included in both s-s-d and supervise-daemon.
Thus it makes sense to move the source files to the src/shared dir.
---
 src/shared/meson.build                  |  4 +++
 src/shared/pipes.c                      | 56 +++++++++++++++++++++++++++++++++
 src/shared/pipes.h                      | 18 +++++++++++
 src/start-stop-daemon/meson.build       |  2 +-
 src/start-stop-daemon/pipes.c           | 56 ---------------------------------
 src/start-stop-daemon/pipes.h           | 18 -----------
 src/supervise-daemon/meson.build        |  2 +-
 src/supervise-daemon/supervise-daemon.c |  2 +-
 8 files changed, 81 insertions(+), 77 deletions(-)
 create mode 100644 src/shared/pipes.c
 create mode 100644 src/shared/pipes.h
 delete mode 100644 src/start-stop-daemon/pipes.c
 delete mode 100644 src/start-stop-daemon/pipes.h

(limited to 'src')

diff --git a/src/shared/meson.build b/src/shared/meson.build
index b80b242e..3eace88d 100644
--- a/src/shared/meson.build
+++ b/src/shared/meson.build
@@ -10,6 +10,10 @@ schedules_c = files([
   'schedules.c',
   ])
 
+pipes_c = files([
+	'pipes.c',
+	])
+
 if selinux_dep.found()
   selinux_c = files([
     'selinux.c',
diff --git a/src/shared/pipes.c b/src/shared/pipes.c
new file mode 100644
index 00000000..5251a4f0
--- /dev/null
+++ b/src/shared/pipes.c
@@ -0,0 +1,56 @@
+/*
+ * pipes.c
+ * Helper to handle spawning processes and connecting them to pipes.
+ */
+
+/*
+ * Copyright (c) 2018 The OpenRC Authors.
+ * See the Authors file at the top-level directory of this distribution and
+ * https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS
+ *
+ * This file is part of OpenRC. It is subject to the license terms in
+ * the LICENSE file found in the top-level directory of this
+ * distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE
+ * This file may not be copied, modified, propagated, or distributed
+ *    except according to the terms contained in the LICENSE file.
+ */
+
+#include <stdlib.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#include "pipes.h"
+
+static const int pipe_read_end = 0;
+static const int pipe_write_end = 1;
+
+/*
+ * Starts a command with stdin redirected from a pipe
+ * Returns the write end of the pipe or -1
+ */
+int rc_pipe_command(char *cmd)
+{
+	int pfd[2];
+	pid_t pid;
+
+	if (pipe(pfd) < 0)
+		return -1;
+
+	pid = fork();
+	if (pid > 0) {
+		/* parent */
+		close(pfd[pipe_read_end]);
+		return pfd[pipe_write_end];
+	} else if (pid == 0) {
+		/* child */
+		close(pfd[pipe_write_end]);
+		if (pfd[pipe_read_end] != STDIN_FILENO) {
+			if (dup2(pfd[pipe_read_end], STDIN_FILENO) < 0)
+				exit(1);
+			close(pfd[pipe_read_end]);
+		}
+		execl("/bin/sh", "sh", "-c", cmd, NULL);
+		exit(1);
+	}
+	return -1;
+}
diff --git a/src/shared/pipes.h b/src/shared/pipes.h
new file mode 100644
index 00000000..861963b7
--- /dev/null
+++ b/src/shared/pipes.h
@@ -0,0 +1,18 @@
+/*
+ * Copyright (c) 2018 The OpenRC Authors.
+ * See the Authors file at the top-level directory of this distribution and
+ * https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS
+ *
+ * This file is part of OpenRC. It is subject to the license terms in
+ * the LICENSE file found in the top-level directory of this
+ * distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE
+ * This file may not be copied, modified, propagated, or distributed
+ *    except according to the terms contained in the LICENSE file.
+ */
+
+#ifndef RC_PIPES_H
+#define RC_PIPES_H
+
+int rc_pipe_command(char *cmd);
+
+#endif
diff --git a/src/start-stop-daemon/meson.build b/src/start-stop-daemon/meson.build
index d363ff94..6cae791d 100644
--- a/src/start-stop-daemon/meson.build
+++ b/src/start-stop-daemon/meson.build
@@ -1,5 +1,5 @@
 executable('start-stop-daemon',
-  ['start-stop-daemon.c', 'pipes.c', misc_c, schedules_c,
+  ['start-stop-daemon.c', pipes_c, misc_c, schedules_c,
 	selinux_c, usage_c, version_h],
   c_args : [cc_audit_flags, cc_branding_flags, cc_pam_flags, cc_cap_flags, cc_selinux_flags],
   link_with: [libeinfo, librc],
diff --git a/src/start-stop-daemon/pipes.c b/src/start-stop-daemon/pipes.c
deleted file mode 100644
index 5251a4f0..00000000
--- a/src/start-stop-daemon/pipes.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * pipes.c
- * Helper to handle spawning processes and connecting them to pipes.
- */
-
-/*
- * Copyright (c) 2018 The OpenRC Authors.
- * See the Authors file at the top-level directory of this distribution and
- * https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS
- *
- * This file is part of OpenRC. It is subject to the license terms in
- * the LICENSE file found in the top-level directory of this
- * distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE
- * This file may not be copied, modified, propagated, or distributed
- *    except according to the terms contained in the LICENSE file.
- */
-
-#include <stdlib.h>
-#include <sys/types.h>
-#include <unistd.h>
-
-#include "pipes.h"
-
-static const int pipe_read_end = 0;
-static const int pipe_write_end = 1;
-
-/*
- * Starts a command with stdin redirected from a pipe
- * Returns the write end of the pipe or -1
- */
-int rc_pipe_command(char *cmd)
-{
-	int pfd[2];
-	pid_t pid;
-
-	if (pipe(pfd) < 0)
-		return -1;
-
-	pid = fork();
-	if (pid > 0) {
-		/* parent */
-		close(pfd[pipe_read_end]);
-		return pfd[pipe_write_end];
-	} else if (pid == 0) {
-		/* child */
-		close(pfd[pipe_write_end]);
-		if (pfd[pipe_read_end] != STDIN_FILENO) {
-			if (dup2(pfd[pipe_read_end], STDIN_FILENO) < 0)
-				exit(1);
-			close(pfd[pipe_read_end]);
-		}
-		execl("/bin/sh", "sh", "-c", cmd, NULL);
-		exit(1);
-	}
-	return -1;
-}
diff --git a/src/start-stop-daemon/pipes.h b/src/start-stop-daemon/pipes.h
deleted file mode 100644
index 861963b7..00000000
--- a/src/start-stop-daemon/pipes.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright (c) 2018 The OpenRC Authors.
- * See the Authors file at the top-level directory of this distribution and
- * https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS
- *
- * This file is part of OpenRC. It is subject to the license terms in
- * the LICENSE file found in the top-level directory of this
- * distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE
- * This file may not be copied, modified, propagated, or distributed
- *    except according to the terms contained in the LICENSE file.
- */
-
-#ifndef RC_PIPES_H
-#define RC_PIPES_H
-
-int rc_pipe_command(char *cmd);
-
-#endif
diff --git a/src/supervise-daemon/meson.build b/src/supervise-daemon/meson.build
index f7d70c4c..9ef0fd86 100644
--- a/src/supervise-daemon/meson.build
+++ b/src/supervise-daemon/meson.build
@@ -1,5 +1,5 @@
 executable('supervise-daemon',
-  ['supervise-daemon.c', '../start-stop-daemon/pipes.c', misc_c, plugin_c, schedules_c, usage_c, version_h],
+  ['supervise-daemon.c', pipes_c, misc_c, plugin_c, schedules_c, usage_c, version_h],
   c_args : [cc_branding_flags, cc_pam_flags, cc_cap_flags, cc_selinux_flags],
   link_with: [libeinfo, librc],
   dependencies: [dl_dep, pam_dep, cap_dep, util_dep, selinux_dep],
diff --git a/src/supervise-daemon/supervise-daemon.c b/src/supervise-daemon/supervise-daemon.c
index 4a0c1c49..adf35630 100644
--- a/src/supervise-daemon/supervise-daemon.c
+++ b/src/supervise-daemon/supervise-daemon.c
@@ -62,7 +62,7 @@ static struct pam_conv conv = { NULL, NULL};
 #include "queue.h"
 #include "rc.h"
 #include "misc.h"
-#include "../start-stop-daemon/pipes.h"
+#include "pipes.h"
 #include "plugin.h"
 #include "schedules.h"
 #include "_usage.h"
-- 
cgit v1.2.3