From 2e6251963489ff3e91b9ebfade625fd63eb0f509 Mon Sep 17 00:00:00 2001 From: classabbyamp Date: Thu, 13 Apr 2023 01:32:12 -0400 Subject: [PATCH] runit: add chpst -C patch --- srcpkgs/runit/patches/chpst-pwd.patch | 77 +++++++++++++++++++++++++++ srcpkgs/runit/template | 2 +- 2 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 srcpkgs/runit/patches/chpst-pwd.patch diff --git a/srcpkgs/runit/patches/chpst-pwd.patch b/srcpkgs/runit/patches/chpst-pwd.patch new file mode 100644 index 000000000000..c8ee7ed893ca --- /dev/null +++ b/srcpkgs/runit/patches/chpst-pwd.patch @@ -0,0 +1,77 @@ +From 2b8000f1ebd07fd68ee0e3c32737d97bcd1687fb Mon Sep 17 00:00:00 2001 +From: "Andrew J. Hesford" +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"); diff --git a/srcpkgs/runit/template b/srcpkgs/runit/template index 97c61ccbbaa6..fa0ee3cea552 100644 --- a/srcpkgs/runit/template +++ b/srcpkgs/runit/template @@ -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"