From 2155eee0022f1e7a0bff561318d66d006dbb65e8 Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Tue, 18 Nov 2008 14:26:32 +0100 Subject: [PATCH] Implemented facility to change current working directory (-w). --- NEWS | 2 ++ doc/metaproxy.xml | 8 ++++++++ src/metaproxy_prog.cpp | 13 ++++++++++++- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index b349deb..395a520 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,5 @@ +Implemented facility to change current working directory (-w). + --- 1.0.15 2008/11/18 Fixed reference counting bug in Z39.50 client module (could cause SEGV). diff --git a/doc/metaproxy.xml b/doc/metaproxy.xml index 0249788..2d871bd 100644 --- a/doc/metaproxy.xml +++ b/doc/metaproxy.xml @@ -25,6 +25,7 @@ + @@ -90,6 +91,13 @@ + -w dir + + Changes working directory to dir. + + + + -X Makes Metaproxy operate in debug mode. diff --git a/src/metaproxy_prog.cpp b/src/metaproxy_prog.cpp index b8739b8..5538532 100644 --- a/src/metaproxy_prog.cpp +++ b/src/metaproxy_prog.cpp @@ -31,6 +31,10 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include "router_flexml.hpp" #include "factory_static.hpp" +#if HAVE_UNISTD_H +#include +#endif + namespace mp = metaproxy_1; static void handler(void *data) @@ -52,7 +56,7 @@ int main(int argc, char **argv) const char *pidfile = 0; const char *uid = 0; - while ((ret = options("c{config}:Dh{help}l:p:u:V{version}X", + while ((ret = options("c{config}:Dh{help}l:p:u:V{version}w:X", argv, argc, &arg)) != -2) { switch (ret) @@ -72,6 +76,7 @@ int main(int argc, char **argv) " -l f log file f\n" " -p f pid file f\n" " -u id change uid to id\n" + " -w dir changes working directory to dir\n" " -X debug mode (no fork/daemon mode)\n" << std::endl; break; @@ -88,6 +93,12 @@ int main(int argc, char **argv) std::cout << VERSION "\n"; std::exit(0); break; + case 'w': + if (chdir(arg)) + { + std::cerr << "chdir " << arg << " failed" << std::endl; + std::exit(1); + } case 'X': mode = YAZ_DAEMON_DEBUG; break; -- 1.7.10.4