Bug#151802: dpkg: start-stop-daemon lacks a chdir option to change the initial directory
Package: dpkg
Version: 1.10
Severity: wishlist
File: /sbin/start-stop-daemon
Tags: patch
Well everything is in the subject, a chdir option can be useful for
certain program which are not every user friendly and must be launch in
the right directory. Here is a patch to do this.
--
Loïc
"heaven is not a place, it's a feeling"
-- System Information
Debian Release: 3.0
Architecture: i386
Kernel: Linux alibaba 2.4.18 #1 Thu May 23 16:58:14 CEST 2002 i686
Locale: LANG=fr_FR@euro, LC_CTYPE=fr_FR@euro
Versions of packages dpkg depends on:
ii dselect 1.10 a user tool to manage Debian packa
ii libc6 2.2.5-7 GNU C Library: Shared libraries an
-- no debconf information
diff -ru dpkg-1.10.orig/utils/start-stop-daemon.8 dpkg-1.10/utils/start-stop-daemon.8
--- dpkg-1.10.orig/utils/start-stop-daemon.8 Sun May 26 05:53:43 2002
+++ dpkg-1.10/utils/start-stop-daemon.8 Wed Jul 3 15:47:03 2002
@@ -181,6 +181,12 @@
before starting the process. Please note that the pidfile is also written
after the chroot.
.TP
+\fB-d\fP|\fB--chdir\fP \fIpath\fP
+Chdir to
+.I path
+before starting the process. This is done after the chroot if the
+\fB-r\fP|\fB--chroot\fP option is set.
+.TP
.BR -b | --background
Typically used with programs that don't detach on their own. This option
will force
diff -ru dpkg-1.10.orig/utils/start-stop-daemon.c dpkg-1.10/utils/start-stop-daemon.c
--- dpkg-1.10.orig/utils/start-stop-daemon.c Sun May 19 09:35:12 2002
+++ dpkg-1.10/utils/start-stop-daemon.c Wed Jul 3 15:50:25 2002
@@ -107,6 +107,7 @@
static char *changeuser = NULL;
static const char *changegroup = NULL;
static char *changeroot = NULL;
+static char *changedir = NULL;
static const char *cmdname = NULL;
static char *execname = NULL;
static char *startas = NULL;
@@ -271,6 +272,8 @@
" -p|--pidfile <pid-file> pid file to check\n"
" -c|--chuid <name|uid[:group|gid]>\n"
" change to this user/group before starting process\n"
+" -d|--chdir <path>\n"
+" change the current directory to path before starting process\n"
" -u|--user <username>|<uid> stop processes owned by this user\n"
" -n|--name <process-name> stop processes with this name\n"
" -s|--signal <signal> signal to send (default TERM)\n"
@@ -462,12 +465,13 @@
{ "background", 0, NULL, 'b'},
{ "make-pidfile", 0, NULL, 'm'},
{ "retry", 1, NULL, 'R'},
+ { "chdir", 1, NULL, 'd'},
{ NULL, 0, NULL, 0}
};
int c;
for (;;) {
- c = getopt_long(argc, argv, "HKSVa:n:op:qr:s:tu:vx:c:N:bmR:",
+ c = getopt_long(argc, argv, "HKSVa:n:op:qr:s:tu:vx:c:N:bmR:d:",
longopts, (int *) 0);
if (c == -1)
break;
@@ -536,6 +540,9 @@
case 'R': /* --retry <schedule>|<timeout> */
schedule_str = optarg;
break;
+ case 'd': /* --chdir /new/dir */
+ changedir = optarg;
+ break;
default:
badusage(NULL); /* message printed by getopt */
}
@@ -1188,6 +1195,10 @@
fatal("Unable to chdir() to %s", changeroot);
if (chroot(changeroot) < 0)
fatal("Unable to chroot() to %s", changeroot);
+ }
+ if (changedir != NULL) {
+ if (chdir(changedir) < 0)
+ fatal("Unable to chdir() to %s", changedir);
}
if (changeuser != NULL) {
if (setgid(runas_gid))
--
To UNSUBSCRIBE, email to debian-dpkg-request@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Reply to: