Exemple #1
0
static int
dt_imageio_load_modules_format(dt_imageio_t *iio)
{
  iio->plugins_format = NULL;
  GList *res = NULL;
  dt_imageio_module_format_t *module;
  char plugindir[1024], plugin_name[256];
  const gchar *d_name;
  dt_loc_get_plugindir(plugindir, sizeof(plugindir));
  g_strlcat(plugindir, "/plugins/imageio/format", sizeof(plugindir));
  GDir *dir = g_dir_open(plugindir, 0, NULL);
  if(!dir) return 1;
  const int name_offset = strlen(SHARED_MODULE_PREFIX),
            name_end    = strlen(SHARED_MODULE_PREFIX) + strlen(SHARED_MODULE_SUFFIX);
  while((d_name = g_dir_read_name(dir)))
  {
    // get lib*.so
    if(!g_str_has_prefix(d_name, SHARED_MODULE_PREFIX)) continue;
    if(!g_str_has_suffix(d_name, SHARED_MODULE_SUFFIX)) continue;
    strncpy(plugin_name, d_name+name_offset, strlen(d_name)-name_end);
    plugin_name[strlen(d_name)-name_end] = '\0';
    module = (dt_imageio_module_format_t *)malloc(sizeof(dt_imageio_module_format_t));
    gchar *libname = g_module_build_path(plugindir, (const gchar *)plugin_name);
    if(dt_imageio_load_module_format(module, libname, plugin_name))
    {
      free(module);
      continue;
    }
    module->gui_data = NULL;
    module->gui_init(module);
    if(module->widget) g_object_ref(module->widget);
    g_free(libname);
    res = g_list_insert_sorted(res, module, dt_imageio_sort_modules_format);
  }
  g_dir_close(dir);
  iio->plugins_format = res;
  return 0;
}
Exemple #2
0
static int
dt_imageio_load_modules_format(dt_imageio_t *iio)
{
    iio->plugins_format = NULL;
    GList *res = NULL;
    dt_imageio_module_format_t *module;
    char plugindir[1024], plugin_name[256];
    const gchar *d_name;
    dt_loc_get_plugindir(plugindir, 1024);
    g_strlcat(plugindir, "/plugins/imageio/format", 1024);
    GDir *dir = g_dir_open(plugindir, 0, NULL);
    if(!dir) return 1;
    while((d_name = g_dir_read_name(dir)))
    {
        // get lib*.so
        if(strncmp(d_name, "lib", 3)) continue;
        if(strncmp(d_name + strlen(d_name) - 3, ".so", 3)) continue;
        strncpy(plugin_name, d_name+3, strlen(d_name)-6);
        plugin_name[strlen(d_name)-6] = '\0';
        module = (dt_imageio_module_format_t *)malloc(sizeof(dt_imageio_module_format_t));
        gchar *libname = g_module_build_path(plugindir, (const gchar *)plugin_name);
        if(dt_imageio_load_module_format(module, libname, plugin_name))
        {
            free(module);
            continue;
        }
        module->gui_data = NULL;
        module->gui_init(module);
        if(module->widget) gtk_widget_ref(module->widget);
        g_free(libname);
        res = g_list_insert_sorted(res, module, dt_imageio_sort_modules_format);
    }
    g_dir_close(dir);
    iio->plugins_format = res;
    return 0;
}