int glite_jpps_fplug_load(glite_jp_context_t ctx,int argc,char **argv);
int glite_jpps_fplug_lookup(glite_jp_context_t ctx,const char *uri, glite_jpps_fplug_data_t ***plugin_data);
-int glite_jpps_fplug_lookup_byclass(glite_jp_context_t, const char *class,glite_jpps_fplug_data_t ***plugin_data,char **uri);
+int glite_jpps_fplug_lookup_byclass(glite_jp_context_t, const char *class,glite_jpps_fplug_data_t ***plugin_data);
#endif
fprintf(stderr,"%s: %s %s %s\n",__FUNCTION__,job,class,name);
+ if (!f) return 0;
- switch (glite_jpps_fplug_lookup(ctx,class,&pd)) {
+ switch (glite_jpps_fplug_lookup_byclass(ctx,class,&pd)) {
case ENOENT: return 0; /* XXX: shall we complain? */
case 0: break;
default: return -1;
}
+
for (;f;f=f->next) {
attr_union(attrs,f->attrs,&attrs2);
free(attrs);
for (pi=0; pd[pi]; pi++) {
int ci;
- for (ci=0; pd[pi]->uris[ci]; ci++) if (!strcmp(pd[pi]->uris[ci],class)) {
+ for (ci=0; pd[pi]->uris[ci]; ci++) if (!strcmp(pd[pi]->classes[ci],class)) {
void *ph;
if (!bh && (ret = glite_jppsbe_open_file(ctx,job,pd[pi]->classes[ci],name,O_RDONLY,&bh))) {
return 0;
}
-int glite_jpps_fplug_lookup(glite_jp_context_t ctx,const char *uri, glite_jpps_fplug_data_t ***plugin_data)
+static int lookup_common(glite_jp_context_t ctx,const char *uri,const char *class, glite_jpps_fplug_data_t ***plugin_data)
{
int i;
memset(&err,0,sizeof err);
err.source = __FUNCTION__;
err.code = ENOENT;
- err.desc = (char *) uri; /* XXX: we don't modify it, believe me, gcc! */
+ err.desc = (char *) (uri ? uri : class); /* XXX: we don't modify it, believe me, gcc! */
glite_jp_clear_error(ctx);
if (!ctx->plugins) {
glite_jpps_fplug_data_t *p = ctx->plugins[i];
for (j=0; p->uris && p->uris[j]; j++)
- if (!strcmp(p->uris[j],uri)) {
+ if ((uri && !strcmp(p->uris[j],uri)) || (class && !strcmp(p->classes[j],class))) {
out = realloc(out, (matches+2) * sizeof *out);
out[matches++] = p;
out[matches] = NULL;
else return glite_jp_stack_error(ctx,&err);
}
+int glite_jpps_fplug_lookup(glite_jp_context_t ctx,const char *uri, glite_jpps_fplug_data_t ***plugin_data)
+{
+ return lookup_common(ctx,uri,NULL,plugin_data);
+}
+
+int glite_jpps_fplug_lookup_byclass(glite_jp_context_t ctx, const char *class,glite_jpps_fplug_data_t ***plugin_data)
+{
+ return lookup_common(ctx,NULL,class,plugin_data);
+}
+