aboutsummaryrefslogtreecommitdiff
path: root/sbin/hastd
diff options
context:
space:
mode:
authorPawel Jakub Dawidek <pjd@FreeBSD.org>2011-10-17 09:54:07 +0000
committerPawel Jakub Dawidek <pjd@FreeBSD.org>2011-10-17 09:54:07 +0000
commit6fea20e2972e8858a7bd246905bbe23708023be7 (patch)
tree81b6ea2bc25d4b90df63aa01e9f128eec7eb8688 /sbin/hastd
parent715a43edd0689807cc8ced7890c96522e2d24d7b (diff)
downloadsrc-6fea20e2972e8858a7bd246905bbe23708023be7.tar.gz
src-6fea20e2972e8858a7bd246905bbe23708023be7.zip
When path to the configuration file is relative, obtain full path,
so we can always find the file, even after daemonizing and changing working directory to /. MFC after: 1 week
Notes
Notes: svn path=/head/; revision=226461
Diffstat (limited to 'sbin/hastd')
-rw-r--r--sbin/hastd/hastd.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/sbin/hastd/hastd.c b/sbin/hastd/hastd.c
index d21f7f69f3fe..e4cd52022ec1 100644
--- a/sbin/hastd/hastd.c
+++ b/sbin/hastd/hastd.c
@@ -1168,6 +1168,22 @@ main(int argc, char *argv[])
pjdlog_errno(LOG_WARNING, "Unable to open or create pidfile");
}
+ /*
+ * When path to the configuration file is relative, obtain full path,
+ * so we can always find the file, even after daemonizing and changing
+ * working directory to /.
+ */
+ if (cfgpath[0] != '/') {
+ const char *newcfgpath;
+
+ newcfgpath = realpath(cfgpath, NULL);
+ if (newcfgpath == NULL) {
+ pjdlog_exit(EX_CONFIG,
+ "Unable to obtain full path of %s", cfgpath);
+ }
+ cfgpath = newcfgpath;
+ }
+
cfg = yy_config_parse(cfgpath, true);
PJDLOG_ASSERT(cfg != NULL);