Index: trunk/src/plug_footprint.c =================================================================== --- trunk/src/plug_footprint.c (revision 7932) +++ trunk/src/plug_footprint.c (revision 7933) @@ -352,7 +352,7 @@ /* Next read in any footprints in the top level dir */ res = -1; - PCB_HOOK_CALL(pcb_plug_fp_t, pcb_plug_fp_chain, load_dir, res, >= 0, (self, toppath)); + PCB_HOOK_CALL(pcb_plug_fp_t, pcb_plug_fp_chain, load_dir, res, >= 0, (self, toppath, 0)); if (res >= 0) n_footprints += res; else Index: trunk/src/plug_footprint.h =================================================================== --- trunk/src/plug_footprint.h (revision 7932) +++ trunk/src/plug_footprint.h (revision 7933) @@ -42,8 +42,9 @@ void *plugin_data; /* returns the number of footprints loaded into the library or -1 on - error; next in chain is run only on error. */ - int (*load_dir)(pcb_plug_fp_t *ctx, const char *path); + error; next in chain is run only on error. If force is 1, force doing the + expensive part of the load (e.g. wget) */ + int (*load_dir)(pcb_plug_fp_t *ctx, const char *path, int force); /* Open a footprint for reading; if the footprint is parametric, it's run prefixed with libshell (or executed directly, if libshell is NULL). Index: trunk/src_plugins/fp_fs/fp_fs.c =================================================================== --- trunk/src_plugins/fp_fs/fp_fs.c (revision 7932) +++ trunk/src_plugins/fp_fs/fp_fs.c (revision 7933) @@ -258,7 +258,7 @@ } -static int fp_fs_load_dir(pcb_plug_fp_t *ctx, const char *path) +static int fp_fs_load_dir(pcb_plug_fp_t *ctx, const char *path, int force) { return fp_fs_load_dir_(&pcb_library, ".", path, 1); } Index: trunk/src_plugins/fp_wget/gedasymbols.c =================================================================== --- trunk/src_plugins/fp_wget/gedasymbols.c (revision 7932) +++ trunk/src_plugins/fp_wget/gedasymbols.c (revision 7933) @@ -68,7 +68,7 @@ return changed; } -int fp_gedasymbols_load_dir(pcb_plug_fp_t *ctx, const char *path) +int fp_gedasymbols_load_dir(pcb_plug_fp_t *ctx, const char *path, int force) { FILE *f; int fctx; @@ -82,7 +82,7 @@ if (strncmp(path, REQUIRE_PATH_PREFIX, strlen(REQUIRE_PATH_PREFIX)) != 0) return -1; - if (conf_fp_wget.plugins.fp_wget.auto_update_gedasymbols) + if (force || (conf_fp_wget.plugins.fp_wget.auto_update_gedasymbols)) wmode &= ~FP_WGET_OFFLINE; if (fp_wget_open(url_idx_md5, gedasym_cache, &f, &fctx, wmode) != 0) Index: trunk/src_plugins/fp_wget/gedasymbols.h =================================================================== --- trunk/src_plugins/fp_wget/gedasymbols.h (revision 7932) +++ trunk/src_plugins/fp_wget/gedasymbols.h (revision 7933) @@ -1,6 +1,6 @@ #include "plug_footprint.h" #include "fp_wget_conf.h" -int fp_gedasymbols_load_dir(pcb_plug_fp_t *ctx, const char *path); +int fp_gedasymbols_load_dir(pcb_plug_fp_t *ctx, const char *path, int force); FILE *fp_gedasymbols_fopen(pcb_plug_fp_t *ctx, const char *path, const char *name, pcb_fp_fopen_ctx_t *fctx); void fp_gedasymbols_fclose(pcb_plug_fp_t *ctx, FILE * f, pcb_fp_fopen_ctx_t *fctx); void fp_gedasymbols_init(void); Index: trunk/src_plugins/fp_wget/tester.c =================================================================== --- trunk/src_plugins/fp_wget/tester.c (revision 7932) +++ trunk/src_plugins/fp_wget/tester.c (revision 7933) @@ -27,7 +27,7 @@ FILE *f; char line[1024]; -/* fp_gedasymbols_load_dir(NULL, "gedasymbols://"); */ +/* fp_gedasymbols_load_dir(NULL, "gedasymbols://", 1); */ f = fp_gedasymbols_fopen(NULL, NULL, "wget@gedasymbols/user/sean_depagnier/footprints/HDMI_CONN.fp", &fctx); while(fgets(line, sizeof(line), f) != NULL)