#define SET_TRACEEVT 'E'
#define SET_EXEC 'e'
#define DISPLAY_HELP 'h'
-#if defined(WITH_MONITORING_OTPION)
+#if defined(WITH_MONITORING_OPTION)
#define SET_MONITORING 'M'
#endif
+#define SET_NAME 'n'
#define SET_TCP_PORT 'p'
#define SET_QUIET 'q'
#define SET_RNDTOKEN 'r'
#define SET_WORK_DIR 'w'
const char shortopts[] =
- "c:D:E:ehp:qrT:t:u:Vvw:"
-#if defined(WITH_MONITORING_OTPION)
+ "c:D:E:ehn:p:qrT:t:u:Vvw:"
+#if defined(WITH_MONITORING_OPTION)
"M"
#endif
;
{SET_FORGROUND, 0, "foreground", "Get all in foreground mode"},
{SET_BACKGROUND, 0, "daemon", "Get all in background mode"},
+ {SET_NAME, 1, "name", "Set the visible name"},
+
{SET_TCP_PORT, 1, "port", "HTTP listening TCP port [default 1234]"},
{SET_ROOT_HTTP, 1, "roothttp", "HTTP Root Directory [default no root http (files not served but apis still available)]"},
{SET_ROOT_BASE, 1, "rootbase", "Angular Base Root URL [default /opa]"},
{SET_NO_HTTPD, 0, "no-httpd", "Forbids HTTP service"},
{SET_EXEC, 0, "exec", "Execute the remaining arguments"},
-#if defined(WITH_MONITORING_OTPION)
+#if defined(WITH_MONITORING_OPTION)
{SET_MONITORING, 0, "monitoring", "enable HTTP monitoring at <ROOT>/monitoring/"},
#endif
{0, 0, NULL, NULL}
}
}
+static char **make_exec(char **argv)
+{
+ char **result, *iter;
+ size_t length;
+ int i;
+
+ length = 0;
+ for (i = 0 ; argv[i] ; i++)
+ length += strlen(argv[i]) + 1;
+
+ result = malloc(length + ((unsigned)(i + 1)) * sizeof *result);
+ if (result == NULL) {
+ ERROR("can't alloc memory");
+ exit(1);
+ }
+
+ iter = (char*)&result[i+1];
+ for (i = 0 ; argv[i] ; i++) {
+ result[i] = iter;
+ iter = stpcpy(iter, argv[i]) + 1;
+ }
+ result[i] = NULL;
+ return result;
+}
+
/*---------------------------------------------------------
| Parse option and launch action
+--------------------------------------------------------- */
case SET_SESSION_DIR:
/* config->sessiondir = argvalstr(optc); */
- WARNING("Obsolete otpion %s ignored", name_of_option(optc));
+ WARNING("Obsolete option %s ignored", name_of_option(optc));
break;
case SET_UPLOAD_DIR:
config->background = 1;
break;
+ case SET_NAME:
+ config->name = argvalstr(optc);
+ break;
+
case SET_MODE:
config->mode = argvalenum(optc, mode_desc);
break;
break;
case SET_EXEC:
- config->exec = &argv[optind];
- optind = argc;
+ config->exec = make_exec(&argv[optind]);
+ optind = argc; /* stop option scanning */
break;
case SET_RNDTOKEN:
config->random_token = 1;
break;
-#if defined(WITH_MONITORING_OTPION)
+#if defined(WITH_MONITORING_OPTION)
case SET_MONITORING:
config->monitoring = 1;
break;
if (config->ldpaths == NULL && config->weak_ldpaths == NULL && !config->no_ldpaths)
list_add(&config->ldpaths, BINDING_INSTALL_DIR);
-#if defined(WITH_MONITORING_OTPION)
+#if defined(WITH_MONITORING_OPTION)
if (config->monitoring)
list_add(&config->aliases, strdup("/monitoring:"BINDING_INSTALL_DIR"/monitoring"));
#endif
S(workdir)
S(uploaddir)
S(token)
+ S(name)
L(aliases)
L(dbus_clients)
L(ws_servers)
L(so_bindings)
L(ldpaths)
+ L(weak_ldpaths)
L(calls)
V(exec)
D(httpdPort)
- B(background)
D(cacheTimeout)
D(apiTimeout)
D(cntxTimeout)
D(nbSessionMax)
+
E(mode,mode_desc)
E(tracereq,tracereq_desc)
E(traceditf,traceditf_desc)
+ E(tracesvc,tracesvc_desc)
+ E(traceevt,traceevt_desc)
+
+ B(no_ldpaths)
B(noHttpd)
+ B(background)
+ B(monitoring)
+ B(random_token)
P("---END-OF-CONFIG---\n");
#undef V