Index: trunk/src/plug_footprint.h =================================================================== --- trunk/src/plug_footprint.h (revision 30802) +++ trunk/src/plug_footprint.h (revision 30803) @@ -46,6 +46,7 @@ struct pcb_plug_fp_map_s { pcb_fptype_t type; + pcb_fplibrary_type_t libtype; /* normally LIB_FOOTPRINT */ vts0_t tags; char *name; /* strdup'd */ pcb_plug_fp_map_t *next; Index: trunk/src/plug_io.c =================================================================== --- trunk/src/plug_io.c (revision 30802) +++ trunk/src/plug_io.c (revision 30803) @@ -1019,6 +1019,7 @@ rewind(f); head->type = PCB_FP_INVALID; + head->libtype = LIB_FOOTPRINT; res = plug->map_footprint(NULL, f, fn, head, need_tags); if (res == NULL) continue; if (res->type != PCB_FP_INVALID) Index: trunk/src_plugins/fp_fs/fp_fs.c =================================================================== --- trunk/src_plugins/fp_fs/fp_fs.c (revision 30802) +++ trunk/src_plugins/fp_fs/fp_fs.c (revision 30803) @@ -186,7 +186,7 @@ pcb_plug_fp_map_t head = {0}, *res; res = pcb_io_map_footprint_file(&PCB->hidlib, subdirentry->d_name, &head, need_tags); - if ((res->type == PCB_FP_FILE) || (res->type == PCB_FP_PARAMETRIC)) { + if ((res->libtype == LIB_FOOTPRINT) && ((res->type == PCB_FP_FILE) || (res->type == PCB_FP_PARAMETRIC))) { n_footprints++; if (cb(cookie, new_subdir, subdirentry->d_name, res->type, (void **)res->tags.array)) break;