Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 77 additions & 0 deletions srcpkgs/runit/patches/chpst-pwd.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
From 2b8000f1ebd07fd68ee0e3c32737d97bcd1687fb Mon Sep 17 00:00:00 2001
From: "Andrew J. Hesford" <ajh@sideband.org>
Date: Mon, 14 Feb 2022 14:25:22 -0500
Subject: [PATCH] chpst: add -C to change working directory

---
man/chpst.8 | 8 ++++++++
src/chpst.c | 9 +++++++--
2 files changed, 15 insertions(+), 2 deletions(-)

diff --git runit-2.1.2/man/chpst.8 runit-2.1.2/man/chpst.8
index 43c0b8d..e0829b6 100644
--- runit-2.1.2/man/chpst.8
+++ runit-2.1.2/man/chpst.8
@@ -146,6 +146,14 @@ Change the root directory to
before starting
.IR prog .
.TP
+.B \-C \fIpwd
+chdir.
+Change the working directory to
+.I pwd
+before starting
+.IR prog .
+When combined with \-/, the working directory is changed after the chroot.
+.TP
.B \-n \fIinc
nice.
Add
diff --git runit-2.1.2/src/chpst.c runit-2.1.2/src/chpst.c
index 1cca5f4..d597b68 100644
--- runit-2.1.2/src/chpst.c
+++ runit-2.1.2/src/chpst.c
@@ -20,7 +20,7 @@
#include "openreadclose.h"
#include "direntry.h"

-#define USAGE_MAIN " [-vP012] [-u user[:group]] [-U user[:group]] [-b argv0] [-e dir] [-/ root] [-n nice] [-l|-L lock] [-m n] [-d n] [-o n] [-p n] [-f n] [-c n] prog"
+#define USAGE_MAIN " [-vP012] [-u user[:group]] [-U user[:group]] [-b argv0] [-e dir] [-/ root] [-C pwd] [-n nice] [-l|-L lock] [-m n] [-d n] [-o n] [-p n] [-f n] [-c n] prog"
#define FATAL "chpst: fatal: "
#define WARNING "chpst: warning: "

@@ -60,6 +60,7 @@ long limitt =-2;
long nicelvl =0;
const char *lock =0;
const char *root =0;
+const char *pwd =0;
unsigned int lockdelay;

void suidgid(char *user, unsigned int ext) {
@@ -286,7 +287,7 @@ int main(int argc, const char **argv) {
if (str_equal(progname, "setlock")) setlock(argc, argv);
if (str_equal(progname, "softlimit")) softlimit(argc, argv);

- while ((opt =getopt(argc, argv, "u:U:b:e:m:d:o:p:f:c:r:t:/:n:l:L:vP012V"))
+ while ((opt =getopt(argc, argv, "u:U:b:e:m:d:o:p:f:c:r:t:/:C:n:l:L:vP012V"))
!= opteof)
switch(opt) {
case 'u': set_user =(char*)optarg; break;
@@ -305,6 +306,7 @@ int main(int argc, const char **argv) {
case 'r': if (optarg[scan_ulong(optarg, &ul)]) usage(); limitr =ul; break;
case 't': if (optarg[scan_ulong(optarg, &ul)]) usage(); limitt =ul; break;
case '/': root =optarg; break;
+ case 'C': pwd =optarg; break;
case 'n':
switch (*optarg) {
case '-':
@@ -337,6 +339,9 @@ int main(int argc, const char **argv) {
if (chdir(root) == -1) fatal2("unable to change directory", root);
if (chroot(".") == -1) fatal("unable to change root directory");
}
+ if (pwd) {
+ if (chdir(pwd) == -1) fatal2("unable to change directory", pwd);
+ }
if (nicelvl) {
errno =0;
if (nice(nicelvl) == -1) if (errno) fatal("unable to set nice level");
4 changes: 3 additions & 1 deletion srcpkgs/runit/template
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Template file for 'runit'
pkgname=runit
version=2.1.2
revision=14
revision=15
build_wrksrc="${pkgname}-${version}/src"
build_style="gnu-makefile"
short_desc="UNIX init scheme with service supervision"
Expand All @@ -11,6 +11,8 @@ homepage="http://smarden.org/runit/"
distfiles="http://smarden.org/runit/runit-$version.tar.gz"
checksum=6fd0160cb0cf1207de4e66754b6d39750cff14bb0aa66ab49490992c0c47ba18
patch_args=-Np0
# FIXME: this is caused by some bonk tests that should be fixed in void-linux/runit at some point
make_check=no

build_options="static"

Expand Down