summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerhard Sittig <gerhard.sittig@gmx.net>2022-08-21 13:54:58 +0200
committerGerhard Sittig <gerhard.sittig@gmx.net>2022-08-21 13:54:58 +0200
commit1105c425345961fa527a7994845bc487b1c7bdf5 (patch)
tree9b5dea3f685900630a16b45e71bedee352cebfba
parentec5fc441e38e59a57cd508abf420e30fc3c28e0d (diff)
downloadlibsigrokdecode-1105c425345961fa527a7994845bc487b1c7bdf5.tar.gz
libsigrokdecode-1105c425345961fa527a7994845bc487b1c7bdf5.zip
srd: add support for SIGROKDECODE_PATH environment variable
The optional SIGROKDECODE_DIR environment variable accepts a single directory specification. The SIGROKDECODE_PATH variable accepts a list of directories to search protocol decoders. The list separator is platform dependent (colon or semicolon). Empty items are explicitly ignored. Both variables get evaluated. Behaviour remains backwards compatible, just gets extended for improved usability.
-rw-r--r--srd.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/srd.c b/srd.c
index 6bff918..35ec5f2 100644
--- a/srd.c
+++ b/srd.c
@@ -285,6 +285,22 @@ SRD_API int srd_init(const char *path)
return ret;
}
}
+ env_path = g_getenv("SIGROKDECODE_PATH");
+ if (env_path) {
+ char **dir_list, **dir_iter, *dir_item;
+ dir_list = g_strsplit(env_path, G_SEARCHPATH_SEPARATOR_S, 0);
+ for (dir_iter = dir_list; *dir_iter; dir_iter++) {
+ dir_item = *dir_iter;
+ if (!dir_item || !*dir_item)
+ continue;
+ ret = srd_decoder_searchpath_add(dir_item);
+ if (ret != SRD_OK) {
+ Py_Finalize();
+ return ret;
+ }
+ }
+ g_strfreev(dir_list);
+ }
/* Initialize the Python GIL (this also happens to acquire it). */
PyEval_InitThreads();