srd: add support for SIGROKDECODE_PATH environment variable master
authorGerhard Sittig <gerhard.sittig@gmx.net>
Sun, 21 Aug 2022 11:54:58 +0000 (13:54 +0200)
committerGerhard Sittig <gerhard.sittig@gmx.net>
Sun, 21 Aug 2022 11:54:58 +0000 (13:54 +0200)
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.

srd.c

diff --git a/srd.c b/srd.c
index 6bff9188aea68a4466340297d20122fd0973e4fe..35ec5f2e9b7761f8847d957affd0935b2ed39677 100644 (file)
--- 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();