int main(int argc, char *argv[])
{
+ unsigned libs_loaded_cnt = 0;
forb_orb orb;
bool opt_daemon = false;
char *opt_pidfile = NULL;
};
int opt;
- while ((opt = getopt_long(argc, argv, "d::hil:p:", &long_opts[0], NULL)) != EOF) {
+ while ((opt = getopt_long(argc, argv, "d::hil:p:x", &long_opts[0], NULL)) != EOF) {
switch (opt) {
#if 0
case 'l':
orb = forb_init(&argc, &argv, &attr);
if (!orb) error(1, errno, "FORB initialization failed");
+
#if CONFIG_FCB_INET && !CONFIG_FORB_PROTO_INET_DEFAULT
ret = register_inet_port(orb);
if (ret) error(0, errno, "INET port registration failed");
error(1, errno, "Cannot find forb_main() in %s", data.filename);
data.orb = orb;
- data.argc = 0; /* TODO argc and argv after "--" */
- data.argv = NULL; /* TODO argc and argv after "--" */
+
+ // parse forb parameters
+ data.argc = 1;
+ data.argv = &argv[i];
+ while (i+1 < argc) {
+ i++;
+ if (!strcmp(argv[i], "--"))
+ break;
+ else
+ data.argc++;
+ }
fosa_thread_create(&tid, NULL, forb_main_thread, &data);
+ libs_loaded_cnt++;
forb_wait_for_server_ready(orb);
}
/* Allow other threads to continue execution, but exit
* ourselves (without exit()ing the whole process. */
- pthread_exit(NULL);
+ if (libs_loaded_cnt > 0)
+ pthread_exit(NULL);
return 0;
}