plugin-registry.c File Reference

#include <glib.h>
#include <limits.h>
#include <stdio.h>
#include <string.h>
#include <libaudcore/audstrings.h>
#include "debug.h"
#include "interface.h"
#include "misc.h"
#include "plugin.h"
#include "plugins.h"
#include "util.h"

Go to the source code of this file.

Classes

struct  ModuleData
struct  TransportPluginData
struct  PlaylistPluginData
struct  InputPluginData
struct  PluginHandle
struct  PluginWatch
struct  PluginLookupState
struct  PluginForEnabledState
struct  TransportPluginForSchemeState
struct  PlaylistPluginForExtState
struct  InputPluginForKeyState

Defines

#define FILENAME   "plugin-registry"
#define FORMAT   5

Functions

static ModuleDatamodule_new (gchar *path, gboolean confirmed, gint timestamp, gboolean loaded)
static PluginHandleplugin_new (ModuleData *module, gint type, gint number, gboolean confirmed, const void *header)
static void plugin_free (PluginHandle *plugin, ModuleData *module)
static void module_free (ModuleData *module)
static FILE * open_registry_file (const gchar *mode)
static void transport_plugin_save (PluginHandle *plugin, FILE *handle)
static void playlist_plugin_save (PluginHandle *plugin, FILE *handle)
static void input_plugin_save (PluginHandle *plugin, FILE *handle)
static void plugin_save (PluginHandle *plugin, FILE *handle)
static gint plugin_not_handled_cb (PluginHandle *plugin)
static void module_save (ModuleData *module, FILE *handle)
void plugin_registry_save (void)
static void parse_next (FILE *handle)
static gboolean parse_integer (const gchar *key, gint *value)
static gchar * parse_string (const gchar *key)
static void transport_plugin_parse (PluginHandle *plugin, FILE *handle)
static void playlist_plugin_parse (PluginHandle *plugin, FILE *handle)
static void input_plugin_parse (PluginHandle *plugin, FILE *handle)
static gboolean plugin_parse (ModuleData *module, FILE *handle)
static gboolean module_parse (FILE *handle)
void plugin_registry_load (void)
static void plugin_prune (PluginHandle *plugin, ModuleData *module)
static void module_prune (ModuleData *module)
gint plugin_compare (PluginHandle *a, PluginHandle *b)
void plugin_registry_prune (void)
static gint module_lookup_cb (ModuleData *module, const gchar *path)
static ModuleDatamodule_lookup (const gchar *path)
void module_register (const gchar *path)
static gint plugin_lookup_cb (PluginHandle *plugin, PluginLookupState *state)
static PluginHandleplugin_lookup_real (ModuleData *module, gint type, gint number)
void plugin_register (gint type, const gchar *path, gint number, const void *header)
gint plugin_get_type (PluginHandle *plugin)
const gchar * plugin_get_filename (PluginHandle *plugin)
gint plugin_get_number (PluginHandle *plugin)
PluginHandleplugin_lookup (gint type, const gchar *path, gint number)
const void * plugin_get_header (PluginHandle *plugin)
static gint plugin_by_header_cb (PluginHandle *plugin, const void *header)
PluginHandleplugin_by_header (const void *header)
void plugin_for_each (gint type, PluginForEachFunc func, void *data)
const gchar * plugin_get_name (PluginHandle *plugin)
gboolean plugin_has_about (PluginHandle *plugin)
gboolean plugin_has_configure (PluginHandle *plugin)
gboolean plugin_get_enabled (PluginHandle *plugin)
static void plugin_call_watches (PluginHandle *plugin)
void plugin_set_enabled (PluginHandle *plugin, gboolean enabled)
static gboolean plugin_for_enabled_cb (PluginHandle *plugin, PluginForEnabledState *state)
void plugin_for_enabled (gint type, PluginForEachFunc func, void *data)
void plugin_add_watch (PluginHandle *plugin, PluginForEachFunc func, void *data)
void plugin_remove_watch (PluginHandle *plugin, PluginForEachFunc func, void *data)
static gboolean transport_plugin_for_scheme_cb (PluginHandle *plugin, TransportPluginForSchemeState *state)
PluginHandletransport_plugin_for_scheme (const gchar *scheme)
static gboolean playlist_plugin_for_ext_cb (PluginHandle *plugin, PlaylistPluginForExtState *state)
PluginHandleplaylist_plugin_for_extension (const gchar *extension)
static gboolean input_plugin_for_key_cb (PluginHandle *plugin, InputPluginForKeyState *state)
void input_plugin_for_key (gint key, const gchar *value, PluginForEachFunc func, void *data)
static void input_plugin_add_key (InputPlugin *header, gint key, const gchar *value)
void uri_set_plugin (const gchar *scheme, InputPlugin *header)
void mime_set_plugin (const gchar *mime, InputPlugin *header)
gboolean input_plugin_has_images (PluginHandle *plugin)
gboolean input_plugin_has_subtunes (PluginHandle *plugin)
gboolean input_plugin_can_write_tuple (PluginHandle *plugin)
gboolean input_plugin_has_infowin (PluginHandle *plugin)

Variables

static const gchar * plugin_type_names []
static const gchar * input_key_names []
static GList * module_list = NULL
static GList * plugin_list = NULL
static gboolean registry_locked = TRUE
static gchar parse_key [512]
static gchar * parse_value

Define Documentation

#define FILENAME   "plugin-registry"

Definition at line 36 of file plugin-registry.c.

Referenced by open_registry_file().

#define FORMAT   5

Definition at line 37 of file plugin-registry.c.

Referenced by plugin_registry_load(), and plugin_registry_save().


Function Documentation

static void input_plugin_add_key ( InputPlugin *  header,
gint  key,
const gchar *  value 
) [static]

Definition at line 871 of file plugin-registry.c.

Referenced by mime_set_plugin(), and uri_set_plugin().

gboolean input_plugin_can_write_tuple ( PluginHandle plugin  ) 

Definition at line 902 of file plugin-registry.c.

Referenced by file_can_write_tuple().

void input_plugin_for_key ( gint  key,
const gchar *  value,
PluginForEachFunc  func,
void *  data 
)

Definition at line 863 of file plugin-registry.c.

Referenced by probe_by_extension(), probe_by_mime(), and probe_by_scheme().

static gboolean input_plugin_for_key_cb ( PluginHandle plugin,
InputPluginForKeyState state 
) [static]

Definition at line 853 of file plugin-registry.c.

Referenced by input_plugin_for_key().

gboolean input_plugin_has_images ( PluginHandle plugin  ) 

Definition at line 890 of file plugin-registry.c.

Referenced by file_read_image().

gboolean input_plugin_has_infowin ( PluginHandle plugin  ) 

Definition at line 908 of file plugin-registry.c.

Referenced by custom_infowin().

gboolean input_plugin_has_subtunes ( PluginHandle plugin  ) 

Definition at line 896 of file plugin-registry.c.

Referenced by make_entries().

static void input_plugin_parse ( PluginHandle plugin,
FILE *  handle 
) [static]

Definition at line 341 of file plugin-registry.c.

Referenced by plugin_parse().

static void input_plugin_save ( PluginHandle plugin,
FILE *  handle 
) [static]

Definition at line 219 of file plugin-registry.c.

Referenced by plugin_save().

void mime_set_plugin ( const gchar *  mime,
InputPlugin *  header 
)

Definition at line 885 of file plugin-registry.c.

static void module_free ( ModuleData module  )  [static]

Definition at line 190 of file plugin-registry.c.

Referenced by module_prune(), and plugin_registry_save().

static ModuleData* module_lookup ( const gchar *  path  )  [static]

Definition at line 508 of file plugin-registry.c.

Referenced by module_register(), plugin_lookup(), and plugin_register().

static gint module_lookup_cb ( ModuleData module,
const gchar *  path 
) [static]

Definition at line 503 of file plugin-registry.c.

Referenced by module_lookup().

static ModuleData* module_new ( gchar *  path,
gboolean  confirmed,
gint  timestamp,
gboolean  loaded 
) [static]

Definition at line 100 of file plugin-registry.c.

Referenced by module_parse(), and module_register().

static gboolean module_parse ( FILE *  handle  )  [static]

Definition at line 401 of file plugin-registry.c.

Referenced by plugin_registry_load().

static void module_prune ( ModuleData module  )  [static]

Definition at line 458 of file plugin-registry.c.

Referenced by plugin_registry_prune().

void module_register ( const gchar *  path  ) 

Definition at line 515 of file plugin-registry.c.

Referenced by scan_plugin_func().

static void module_save ( ModuleData module,
FILE *  handle 
) [static]

Definition at line 257 of file plugin-registry.c.

Referenced by plugin_registry_save().

static FILE* open_registry_file ( const gchar *  mode  )  [static]

Definition at line 200 of file plugin-registry.c.

Referenced by plugin_registry_load(), and plugin_registry_save().

static gboolean parse_integer ( const gchar *  key,
gint value 
) [static]
static void parse_next ( FILE *  handle  )  [static]
static gchar* parse_string ( const gchar *  key  )  [static]
static gboolean playlist_plugin_for_ext_cb ( PluginHandle plugin,
PlaylistPluginForExtState state 
) [static]

Definition at line 827 of file plugin-registry.c.

Referenced by playlist_plugin_for_extension().

PluginHandle* playlist_plugin_for_extension ( const gchar *  extension  ) 

Definition at line 838 of file plugin-registry.c.

Referenced by filename_is_playlist(), and get_plugin().

static void playlist_plugin_parse ( PluginHandle plugin,
FILE *  handle 
) [static]

Definition at line 331 of file plugin-registry.c.

Referenced by plugin_parse().

static void playlist_plugin_save ( PluginHandle plugin,
FILE *  handle 
) [static]

Definition at line 213 of file plugin-registry.c.

Referenced by plugin_save().

void plugin_add_watch ( PluginHandle plugin,
PluginForEachFunc  func,
void *  data 
)

Definition at line 770 of file plugin-registry.c.

PluginHandle* plugin_by_header ( const void *  header  ) 

Definition at line 690 of file plugin-registry.c.

Referenced by input_plugin_add_key(), and output_plugin_get_current().

static gint plugin_by_header_cb ( PluginHandle plugin,
const void *  header 
) [static]

Definition at line 685 of file plugin-registry.c.

Referenced by plugin_by_header().

static void plugin_call_watches ( PluginHandle plugin  )  [static]

Definition at line 728 of file plugin-registry.c.

Referenced by plugin_set_enabled().

gint plugin_compare ( PluginHandle a,
PluginHandle b 
)

Definition at line 471 of file plugin-registry.c.

Referenced by effect_compare(), and plugin_registry_prune().

void plugin_for_each ( gint  type,
PluginForEachFunc  func,
void *  data 
)

Definition at line 697 of file plugin-registry.c.

void plugin_for_enabled ( gint  type,
PluginForEachFunc  func,
void *  data 
)
static gboolean plugin_for_enabled_cb ( PluginHandle plugin,
PluginForEnabledState state 
) [static]

Definition at line 756 of file plugin-registry.c.

Referenced by plugin_for_enabled().

static void plugin_free ( PluginHandle plugin,
ModuleData module 
) [static]

Definition at line 159 of file plugin-registry.c.

Referenced by module_free(), and plugin_prune().

gboolean plugin_get_enabled ( PluginHandle plugin  ) 
const gchar* plugin_get_filename ( PluginHandle plugin  ) 

Definition at line 655 of file plugin-registry.c.

Referenced by fill_cb().

const void* plugin_get_header ( PluginHandle plugin  ) 
const gchar* plugin_get_name ( PluginHandle plugin  ) 
gint plugin_get_number ( PluginHandle plugin  ) 

Definition at line 660 of file plugin-registry.c.

gint plugin_get_type ( PluginHandle plugin  ) 

Definition at line 650 of file plugin-registry.c.

Referenced by plugin_enable().

gboolean plugin_has_about ( PluginHandle plugin  ) 

Definition at line 713 of file plugin-registry.c.

Referenced by about_watcher(), and output_combo_update().

gboolean plugin_has_configure ( PluginHandle plugin  ) 

Definition at line 718 of file plugin-registry.c.

Referenced by config_watcher(), and output_combo_update().

PluginHandle* plugin_lookup ( gint  type,
const gchar *  path,
gint  number 
)

Definition at line 665 of file plugin-registry.c.

static gint plugin_lookup_cb ( PluginHandle plugin,
PluginLookupState state 
) [static]

Definition at line 546 of file plugin-registry.c.

Referenced by plugin_lookup_real().

static PluginHandle* plugin_lookup_real ( ModuleData module,
gint  type,
gint  number 
) [static]

Definition at line 552 of file plugin-registry.c.

Referenced by plugin_lookup(), and plugin_register().

static PluginHandle* plugin_new ( ModuleData module,
gint  type,
gint  number,
gboolean  confirmed,
const void *  header 
) [static]

Definition at line 116 of file plugin-registry.c.

Referenced by plugin_parse(), and plugin_register().

static gint plugin_not_handled_cb ( PluginHandle plugin  )  [static]

Definition at line 252 of file plugin-registry.c.

Referenced by module_save().

static gboolean plugin_parse ( ModuleData module,
FILE *  handle 
) [static]

Definition at line 364 of file plugin-registry.c.

Referenced by module_parse().

static void plugin_prune ( PluginHandle plugin,
ModuleData module 
) [static]

Definition at line 448 of file plugin-registry.c.

Referenced by module_prune().

void plugin_register ( gint  type,
const gchar *  path,
gint  number,
const void *  header 
)

Definition at line 561 of file plugin-registry.c.

Referenced by plugin2_process().

void plugin_registry_load ( void   ) 

Definition at line 425 of file plugin-registry.c.

Referenced by plugin_system_init().

void plugin_registry_prune ( void   ) 

Definition at line 496 of file plugin-registry.c.

Referenced by plugin_system_init().

void plugin_registry_save ( void   ) 

Definition at line 273 of file plugin-registry.c.

Referenced by plugin_system_cleanup().

void plugin_remove_watch ( PluginHandle plugin,
PluginForEachFunc  func,
void *  data 
)

Definition at line 779 of file plugin-registry.c.

Referenced by button_destroy(), button_update(), and list_destroy().

static void plugin_save ( PluginHandle plugin,
FILE *  handle 
) [static]

Definition at line 235 of file plugin-registry.c.

Referenced by module_save().

void plugin_set_enabled ( PluginHandle plugin,
gboolean  enabled 
)

Definition at line 745 of file plugin-registry.c.

Referenced by enable_multi(), enable_single(), start_multi_cb(), and start_single().

PluginHandle* transport_plugin_for_scheme ( const gchar *  scheme  ) 

Definition at line 814 of file plugin-registry.c.

Referenced by lookup_transport().

static gboolean transport_plugin_for_scheme_cb ( PluginHandle plugin,
TransportPluginForSchemeState state 
) [static]

Definition at line 803 of file plugin-registry.c.

Referenced by transport_plugin_for_scheme().

static void transport_plugin_parse ( PluginHandle plugin,
FILE *  handle 
) [static]

Definition at line 321 of file plugin-registry.c.

Referenced by plugin_parse().

static void transport_plugin_save ( PluginHandle plugin,
FILE *  handle 
) [static]

Definition at line 207 of file plugin-registry.c.

Referenced by plugin_save().

void uri_set_plugin ( const gchar *  scheme,
InputPlugin *  header 
)

Definition at line 880 of file plugin-registry.c.


Variable Documentation

const gchar* input_key_names[] [static]
Initial value:
 {
 [INPUT_KEY_SCHEME] = "scheme",
 [INPUT_KEY_EXTENSION] = "ext",
 [INPUT_KEY_MIME] = "mime"}

Definition at line 92 of file plugin-registry.c.

Referenced by input_plugin_parse(), and input_plugin_save().

GList* module_list = NULL [static]
gchar parse_key[512] [static]

Definition at line 287 of file plugin-registry.c.

Referenced by parse_integer(), parse_next(), and parse_string().

gchar* parse_value [static]

Definition at line 288 of file plugin-registry.c.

Referenced by parse_integer(), parse_next(), and parse_string().

GList* plugin_list = NULL [static]
const gchar* plugin_type_names[] [static]
Initial value:
 {
 [PLUGIN_TYPE_LOWLEVEL] = NULL,
 [PLUGIN_TYPE_TRANSPORT] = "transport",
 [PLUGIN_TYPE_PLAYLIST] = "playlist",
 [PLUGIN_TYPE_INPUT] = "input",
 [PLUGIN_TYPE_EFFECT] = "effect",
 [PLUGIN_TYPE_OUTPUT] = "output",
 [PLUGIN_TYPE_VIS] = "vis",
 [PLUGIN_TYPE_GENERAL] = "general",
 [PLUGIN_TYPE_IFACE] = "iface"}

Definition at line 82 of file plugin-registry.c.

Referenced by plugin_not_handled_cb(), plugin_parse(), and plugin_save().

gboolean registry_locked = TRUE [static]

Generated on 27 Aug 2011 for Audacious by  doxygen 1.6.1