From 46156cc8cdfcdcc676d5d5d0a1a753978e412018 Mon Sep 17 00:00:00 2001
From: Roy Marples <roy@marples.name>
Date: Wed, 4 Jul 2007 14:56:59 +0000
Subject: We need the full path to the service before chdir /

---
 src/runscript.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

(limited to 'src')

diff --git a/src/runscript.c b/src/runscript.c
index cbdc98a9..ad2d69a8 100644
--- a/src/runscript.c
+++ b/src/runscript.c
@@ -293,6 +293,7 @@ static void cleanup (void)
 	free (exclusive);
 	free (applet);
 	free (prefix);
+	free (service);
 }
 
 static int write_prefix (int fd, const char *buffer, size_t bytes, bool *prefixed) {
@@ -992,7 +993,16 @@ int main (int argc, char **argv)
 	int retval;
 	int opt;
 
-	service = argv[1];
+	/* We need the full path to the service */
+	if (*argv[1] == '/')
+		service = rc_xstrdup (argv[1]);
+	else {
+		char pwd[PATH_MAX];
+		if (! getcwd (pwd, PATH_MAX))
+			eerrorx ("getcwd: %s", strerror (errno));
+		service = rc_strcatpaths (pwd, argv[1], (char *) NULL);
+	}
+
 	applet = rc_xstrdup (basename (service));
 	atexit (cleanup);
 
-- 
cgit v1.2.3