static int ctl_open(int using_stdin, int using_stdout) { ControlMode *(* inferface_loader)(void); char *path; char buff[256]; int id; if(dynamic_control_mode.opened) return 0; dynamic_control_mode.opened = 1; id = dynamic_control_mode.id_character; path = dynamic_interface_module(id); if(path == NULL) { fprintf(stderr, "FATAL ERROR: dynamic_c.c: ctl_open()\n"); exit(1); } if((libhandle = dl_load_file(path)) == NULL) return -1; sprintf(buff, "interface_%c_loader", id); if((inferface_loader = (ControlMode *(*)(void)) dl_find_symbol(libhandle, buff)) == NULL) return -1; ctl = inferface_loader(); ctl->verbosity = dynamic_control_mode.verbosity; ctl->trace_playing = dynamic_control_mode.trace_playing; ctl->flags = dynamic_control_mode.flags; ctl_close_hook = ctl->close; ctl->close = dynamic_control_mode.close; /* ctl_close() */ return ctl->open(using_stdin, using_stdout); }
static void _load_symbols() { _globus_restart_markers = dl_find_symbol("globus_gridftp_server_update_range_recvd"); _globus_perf_markers = dl_find_symbol("globus_gridftp_server_update_bytes_recvd"); }