use glite_jpps_fplug_lookup_byclass()
authorAleš Křenek <ljocha@ics.muni.cz>
Tue, 14 Feb 2006 18:57:42 +0000 (18:57 +0000)
committerAleš Křenek <ljocha@ics.muni.cz>
Tue, 14 Feb 2006 18:57:42 +0000 (18:57 +0000)
org.glite.jp.primary/interface/file_plugin.h
org.glite.jp.primary/src/feed.c
org.glite.jp.primary/src/file_plugin.c

index eae219d..6bf22d2 100644 (file)
@@ -68,6 +68,6 @@ typedef int (*glite_jpps_fplug_init_t)(
 
 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
index 7220d4b..ab6df64 100644 (file)
@@ -273,13 +273,15 @@ int glite_jpps_match_file(
 
        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);
@@ -288,7 +290,7 @@ int glite_jpps_match_file(
 
        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))) {
index 144a231..2c27f93 100644 (file)
@@ -76,7 +76,7 @@ int glite_jpps_fplug_load(glite_jp_context_t ctx,int argc,char **argv)
        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;
 
@@ -87,7 +87,7 @@ int glite_jpps_fplug_lookup(glite_jp_context_t ctx,const char *uri, glite_jpps_f
        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) {
@@ -99,7 +99,7 @@ int glite_jpps_fplug_lookup(glite_jp_context_t ctx,const char *uri, glite_jpps_f
                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;
@@ -113,3 +113,13 @@ int glite_jpps_fplug_lookup(glite_jp_context_t ctx,const char *uri, glite_jpps_f
        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);
+}
+