X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fresource.c;h=3164b94313f5cf82b31ec023a15c6283252c3e89;hb=4a57cc3582af744bc919ac4fb8f9f6c17250c16a;hp=1e8d9458a0709a6d1bdc7199186c4d276d93cf17;hpb=addb7340dd5418d09ec7d144f7bb508fee29bdb9;p=libsigrok.git diff --git a/src/resource.c b/src/resource.c index 1e8d9458..3164b943 100644 --- a/src/resource.c +++ b/src/resource.c @@ -55,10 +55,21 @@ SR_API GSList *sr_resourcepaths_get(int res_type) subdir = "sigrok-firmware"; env = g_getenv("SIGROK_FIRMWARE_DIR"); - if (!env) - sr_dbg("SIGROK_FIRMWARE_DIR environment variable not set, ignoring."); - else + if (env) l = g_slist_append(l, g_strdup(env)); + + env = g_getenv("SIGROK_FIRMWARE_PATH"); + if (env) { + char **dir_list, **dir_iter, *dir_item; + dir_list = g_strsplit(env, G_SEARCHPATH_SEPARATOR_S, 0); + for (dir_iter = dir_list; *dir_iter; dir_iter++) { + dir_item = *dir_iter; + if (!dir_item || !*dir_item) + continue; + l = g_slist_append(l, g_strdup(dir_item)); + } + g_strfreev(dir_list); + } } l = g_slist_append(l, g_build_filename(g_get_user_data_dir(), subdir, NULL)); @@ -128,7 +139,11 @@ static FILE *try_open_file(const char *datadir, const char *subdir, char *filename; FILE *file; - filename = g_build_filename(datadir, subdir, name, NULL); + if (subdir) + filename = g_build_filename(datadir, subdir, name, NULL); + else + filename = g_build_filename(datadir, name, NULL); + file = g_fopen(filename, "rb"); if (file) @@ -408,5 +423,3 @@ SR_PRIV void *sr_resource_load(struct sr_context *ctx, *size = res_size; return buf; } - -/** @} */