static
globus_result_t
gfs_l_dynclient_master_options(
    int                                 argc,
    char **                             argv)
{
    globus_options_handle_t             opt_h;
    globus_result_t                     result;

    globus_options_init(
        &opt_h, gfs_l_dynclient_master_opts_unknown, NULL);
    globus_options_add_table(opt_h, gfork_l_opts_table, NULL);
    result = globus_options_command_line_process(opt_h, argc, argv);
    if(result != GLOBUS_SUCCESS)
    {
        goto error;
    }
    return GLOBUS_SUCCESS;
error:
    return result;
}
int
main(int argc, char ** argv)
{
    char *                              lib_name;
    char *                              symbol_name;
    int                                 rc;
    globus_state_extension_handle_t *   ext_data;
    globus_result_t                     result;
    globus_state_handle_t               handle;
    lt_dlhandle                         dlo_h;
    void *                              sym_handle;
    globus_options_handle_t             opt_h;

    globus_options_init(
        &opt_h, redia_l_opts_unknown, NULL);

    globus_options_add_table(opt_h, redia_l_opts_table, NULL);
    result = globus_options_command_line_process(opt_h, argc, argv);
    if(result != GLOBUS_SUCCESS)
    {
        exit(1);
    }

    lib_name = argv[argc-2];
    symbol_name = argv[argc-1];

    rc = globus_module_activate(GLOBUS_COMMON_MODULE);
    if(rc != 0)
    {
        fprintf(stderr, "Failed to activate common\n");
        exit(1);
    }

    dlo_h = lt_dlopenext(lib_name);
    if(dlo_h == NULL)
    {
        fprintf(stderr, "Failed to dlopen %s\n%s\n", lib_name, lt_dlerror());
        exit(1);
    }

    sym_handle = lt_dlsym(dlo_h, symbol_name);
    if(sym_handle == NULL)
    {
        fprintf(stderr, "Failed to dlsym %s\n%s\n", symbol_name, lt_dlerror());
        exit(1);
    }

    ext_data = (globus_state_extension_handle_t *) sym_handle;

    fprintf(stderr, "Found %s, name %s\n", symbol_name, ext_data->name);

    fprintf(stderr, "writing to file %s\n", g_outfile);

    result = globus_states_init(&handle, ext_data->init_handler);
    if(result != GLOBUS_SUCCESS)
    {
        fprintf(stderr, "Init handler returned with an error\n");
        exit(1);
    }

    /* call print function */ 
    rc = globus_state_make_graph(
        handle, g_outfile, g_txt_file, g_flag, g_edge_label); 
    if(rc != 0)
    {
        fprintf(stderr, "Failed to make graph in file %s\n", g_outfile);
        exit(1);
    }
    return 0;
}