Пример #1
0
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");
}