22 #include "libsigrokdecode-internal.h"
98 static int searchpath_add_xdg_dir(
const char *datadir)
103 decdir = g_build_filename(datadir, PACKAGE_TARNAME,
"decoders", NULL);
105 if (g_file_test(decdir, G_FILE_TEST_IS_DIR))
106 ret = srd_decoder_searchpath_add(decdir);
144 const char *
const *sys_datadirs;
145 const char *env_path;
149 if (max_session_id != -1) {
150 srd_err(
"libsigrokdecode is already initialized.");
154 srd_dbg(
"Initializing libsigrokdecode.");
157 PyImport_AppendInittab(
"sigrokdecode", PyInit_sigrokdecode);
163 sys_datadirs = g_get_system_data_dirs();
164 for (i = g_strv_length((
char **)sys_datadirs); i > 0; i--) {
165 ret = searchpath_add_xdg_dir(sys_datadirs[i-1]);
173 if ((ret = srd_decoder_searchpath_add(DECODERS_DIR)) !=
SRD_OK) {
179 ret = searchpath_add_xdg_dir(g_get_user_data_dir());
187 if ((ret = srd_decoder_searchpath_add(path)) !=
SRD_OK) {
194 if ((env_path = g_getenv(
"SIGROKDECODE_DIR"))) {
195 if ((ret = srd_decoder_searchpath_add(env_path)) !=
SRD_OK) {
224 srd_dbg(
"Exiting libsigrokdecode.");
226 for (l = sessions; l; l = l->next)
230 g_slist_free_full(searchpaths, g_free);
260 SRD_PRIV int srd_decoder_searchpath_add(
const char *path)
262 PyObject *py_cur_path, *py_item;
264 srd_dbg(
"Adding '%s' to module path.", path);
266 py_cur_path = PySys_GetObject(
"path");
270 py_item = PyUnicode_FromString(path);
272 srd_exception_catch(
"Failed to create Unicode object");
275 if (PyList_Insert(py_cur_path, 0, py_item) < 0) {
276 srd_exception_catch(
"Failed to insert path element");
282 searchpaths = g_slist_prepend(searchpaths, g_strdup(path));
int srd_session_destroy(struct srd_session *sess)
Destroy a decoding session.
The public libsigrokdecode header file to be used by frontends.
int srd_decoder_unload_all(void)
Unload all loaded protocol decoders.
int srd_exit(void)
Shutdown libsigrokdecode.
int srd_init(const char *path)
Initialize libsigrokdecode.
Generic/unspecified error.