Changeset 5592:da9a9bb6ece0 in roaraudio for roard/plugins.c


Ignore:
Timestamp:
07/22/12 15:24:36 (12 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

addded --list-plugins

File:
1 edited

Legend:

Unmodified
Added
Removed
  • roard/plugins.c

    r5586 r5592  
    4949 int i; 
    5050 
     51 ROAR_DBG("_find_free(void) = ?"); 
     52 
    5153 for (i = 0; i < MAX_PLUGINS; i++) { 
    5254  if ( g_plugins[i].lhandle == NULL ) { 
    5355   memset(&(g_plugins[i]), 0, sizeof(struct _roard_plugin)); 
     56   ROAR_DBG("_find_free(void) = %p // i=%i", &(g_plugins[i]), i); 
    5457   return &(g_plugins[i]); 
    5558  } 
    5659 } 
    5760 
     61 ROAR_DBG("_find_free(void) = NULL"); 
    5862 return NULL; 
    5963} 
    6064 
    6165int plugins_preinit  (void) { 
     66 ROAR_DBG("plugins_preinit(void) = ?"); 
     67 
    6268 memset(g_plugins, 0, sizeof(g_plugins)); 
    6369 
     70#ifdef DEBUG 
     71 print_pluginlist(FORMAT_NATIVE); 
     72#endif 
     73 
     74 ROAR_DBG("plugins_preinit(void) = 0"); 
    6475 return 0; 
    6576} 
     
    6778static inline void plugins_delete(struct _roard_plugin * plugin) { 
    6879 int i; 
     80 
     81 ROAR_DBG("plugins_delete(plugin=%p) = ?", plugin); 
    6982 
    7083 if ( plugin->sched != NULL ) { 
     
    93106  return -1; 
    94107 
     108 ROAR_DBG("plugins_init_one(plugin=%p) = ?", plugin); 
     109 
    95110 _pp = plugin; 
    96111 _pp->sched = NULL; 
     
    120135 size_t i; 
    121136 
     137 ROAR_DBG("plugins_init(void) = ?"); 
     138 
     139#ifdef DEBUG 
     140 print_pluginlist(FORMAT_NATIVE); 
     141#endif 
     142 
    122143 if ( _plugins_inited ) { 
     144  ROAR_DBG("plugins_init(void) = -1 // error=BUSY"); 
    123145  roar_err_set(ROAR_ERROR_BUSY); 
    124146  return -1; 
     
    135157 _plugins_inited = 1; 
    136158 
     159#ifdef DEBUG 
     160 print_pluginlist(FORMAT_NATIVE); 
     161#endif 
     162 
     163 ROAR_DBG("plugins_init(void) = 0"); 
    137164 return 0; 
    138165} 
     
    140167int plugins_free  (void) { 
    141168 int i; 
     169 
     170 ROAR_DBG("plugins_free(void) = ?"); 
    142171 
    143172 for (i = 0; i < MAX_PLUGINS; i++) { 
     
    178207 int i; 
    179208 
     209 ROAR_DBG("plugins_load(filename=\"%s\", args=\"%s\") = ?", filename, args); 
     210 
    180211 if ( next == NULL ) 
    181212  return -1; 
    182213 
    183  for (i = 0; i < MAX_PROTOS; i++) 
     214 for (i = 0; i < MAX_PLUGINS; i++) 
    184215  next->protocols[i] = -1; 
    185216 
     
    201232 
    202233 return 0; 
     234} 
     235 
     236void print_pluginlist(enum output_format format) { 
     237 const struct roar_dl_libraryname * libname; 
     238 struct _roard_plugin * p; 
     239 size_t i; 
     240 
     241 switch (format) { 
     242  case FORMAT_NATIVE: 
     243    printf("  Name\n"); 
     244    printf("   Attributes\n"); 
     245    printf("-----------------------------------------------------\n"); 
     246   break; 
     247  case FORMAT_WIKI: 
     248  case FORMAT_CSV: 
     249  default: 
     250    roar_err_set(ROAR_ERROR_NOTSUP); 
     251    return; 
     252 } 
     253 
     254 for (i = 0; i < MAX_PLUGINS; i++) { 
     255  p = &(g_plugins[i]); 
     256  if ( p->lhandle == NULL ) 
     257   continue; 
     258 
     259  libname = roar_dl_getlibname(p->lhandle); 
     260  if ( libname == NULL ) { 
     261  } else { 
     262   printf("  %s\n", libname->libname); 
     263   printf("   Flags:       %s\n", p->sched != NULL ? "roardsched" : ""); 
     264   if ( libname->description != NULL ) 
     265    printf("   Description: %s\n", libname->description); 
     266   if ( libname->contact != NULL ) 
     267    printf("   Contact:     %s\n", libname->contact); 
     268  } 
     269 } 
    203270} 
    204271 
Note: See TracChangeset for help on using the changeset viewer.