<arg choice="opt"><option>-D</option></arg>
<arg choice="opt"><option>-l <replaceable>logfile</replaceable></option></arg>
<arg choice="opt"><option>-p <replaceable>pidfile</replaceable></option></arg>
+ <arg choice="opt"><option>-t</option></arg>
<arg choice="opt"><option>-u <replaceable>ID</replaceable></option></arg>
<arg choice="opt"><option>-w <replaceable>dir</replaceable></option></arg>
<arg choice="opt"><option>-X</option></arg>
</varlistentry>
<varlistentry>
+ <term>-t</term>
+ <listitem><para>
+ Tests configuration. Returns exit code 0 on success; non-zero on failure.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry>
<term>-u <replaceable>ID</replaceable></term>
<listitem><para>
Makes Metaproxy changes its identity to ID after startup.
yaz_sc_t s,
int argc, char **argv)
{
+ bool test_config = false;
const char *fname = 0;
int ret;
char *arg;
const char *pidfile = 0;
const char *uid = 0;
- while ((ret = options("c{config}:Dh{help}l:p:u:V{version}w:X",
+ while ((ret = options("c{config}:Dh{help}l:p:tu:V{version}w:X",
argv, argc, &arg)) != -2)
{
switch (ret)
" -D daemon and keepalive operation\n"
" -l f log file f\n"
" -p f pid file f\n"
+ " -t test configuration\n"
" -u id change uid to id\n"
" -w dir changes working directory to dir\n"
" -X debug mode (no fork/daemon mode)\n"
case 'p':
pidfile = arg;
break;
+ case 't':
+ test_config = true;
+ break;
case 'u':
uid = arg;
break;
try {
mp::FactoryStatic factory;
mp::RouterFleXML *router =
- new mp::RouterFleXML(doc, factory, false, wrbuf_cstr(base_path));
- wrbuf_destroy(base_path);
-
- yaz_sc_running(s);
-
- yaz_daemon("metaproxy", mode, mode == YAZ_DAEMON_DEBUG ?
- handler_debug : handler_normal, router, pidfile, uid);
+ new mp::RouterFleXML(doc, factory, test_config, wrbuf_cstr(base_path));
+ if (!test_config)
+ {
+
+ yaz_sc_running(s);
+
+ yaz_daemon("metaproxy", mode, mode == YAZ_DAEMON_DEBUG ?
+ handler_debug : handler_normal, router, pidfile, uid);
+ }
}
catch (std::logic_error &e) {
yaz_log (YLOG_FATAL,"std::logic error: %s" , e.what() );