This patch lets gsch2pcb open up ~/.pcb/preferences and read the library-newlib = paths and add them to the list of places to get footprints. The patch is directly for gsch2pcb.c
--- gsch2pcb.c 2008-12-31 18:15:59.000000000 -0500 +++ gsch2pcbnew.c 2009-03-10 20:41:59.000000000 -0400 @@ -1468,6 +1468,42 @@ element_directory_list = g_list_append(element_directory_list, "packages"); + /* load library paths from pcb preferences ~/.pcb/preferences */ + printf("going into new code\n"); + path = g_build_filename((gchar *) g_get_home_dir(), ".pcb/preferences", NULL); + if (g_file_test(path, G_FILE_TEST_IS_REGULAR)) + { + char buf[1024]; + gchar *pref_paths, *pref_path, *tmp; + FILE *fp; + fp=fopen(path, "r"); + while(fgets(buf, sizeof(buf), fp)) + { + if (g_str_has_prefix(buf, "library-newlib = ")) + { + pref_paths = buf+17; + printf("found- %s\n", pref_paths); + tmp = pref_paths; + while(*tmp != 0) + { + while(*++tmp != ':' && *tmp != 0); //push np up to next : or end of string + pref_path = g_strndup(pref_paths, tmp-pref_paths); + if (*pref_path == '~') + { + pref_path = g_build_filename((gchar *) g_get_home_dir(), pref_path+1, NULL); + } + if (g_file_test(pref_path, G_FILE_TEST_IS_DIR)) + element_directory_list = g_list_append(element_directory_list, pref_path); + printf("next- %s\n", pref_path); + pref_paths = tmp+1; + } + } + } + fclose(fp); + g_free(pref_path); + } + printf("coming out of new code\n"); + #define PCB_PATH_DELIMETER ":" if (verbose) printf ("Processing PCBLIBPATH=\"%s\"\n", PCBLIBPATH);
_______________________________________________ geda-user mailing list geda-user@moria.seul.org http://www.seul.org/cgi-bin/mailman/listinfo/geda-user