Changeset 5592:da9a9bb6ece0 in roaraudio


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

addded --list-plugins

Files:
4 edited

Legend:

Unmodified
Added
Removed
  • doc/man1/roard.1

    r5399 r5592  
    159159Arguments for the plugin. 
    160160(must be given before the \-\-plugin-load). 
     161 
     162.TP 
     163\fB--list-plugins\fR 
     164List loaded plugins. 
    161165 
    162166.SH "SECURITY" 
  • roard/include/plugins.h

    r5447 r5592  
    4545int plugins_load     (const char * filename, const char * args); 
    4646 
     47void print_pluginlist(enum output_format format); 
     48 
    4749int plugins_reg_sched(struct roard_plugins_sched * sched); 
    4850int plugins_reg_proto(struct roard_proto         * proto); 
  • 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 
  • roard/roard.c

    r5586 r5592  
    4343enum metaaction { 
    4444 MA_ACTION, 
    45  MA_LIST_PROTO 
     45 MA_LIST_PROTO, 
     46 MA_LIST_PLUGIN 
    4647}; 
    4748 
     
    272273        " --plugin-args ARGS    - Arguments for the plugin\n" 
    273274        "                         (must be given before the --plugin-load)\n" 
     275        " --list-plugins        - List loaded plugins\n" 
    274276       ); 
    275277 
     
    17661768   _CKHAVEARGS(1); 
    17671769   plugin_args = argv[++i]; 
     1770  } else if ( strcmp(k, "--list-plugins") == 0 ) { 
     1771   metaaction = MA_LIST_PLUGIN; 
    17681772 
    17691773  } else if ( strcmp(k, "--guest-acclev") == 0 ) { 
     
    24672471    return 0; 
    24682472   break; 
     2473  case MA_LIST_PLUGIN: 
     2474    print_pluginlist(print_format); 
     2475    return 0; 
     2476   break; 
    24692477 } 
    24702478#endif 
Note: See TracChangeset for help on using the changeset viewer.