X-Git-Url: https://sigrok.org/gitweb/?p=libsigrokdecode.git;a=blobdiff_plain;f=srd.c;h=e8fd7513e7b14a3679d4541279d2087045c3c93c;hp=7b18c9a4dfa2a6ded230005f452a611f0094c4bb;hb=cdb49509e85443129f2d60180eb818813030901e;hpb=40c6ac1d3fbded276dcbff23e8bc099896ab2fb5 diff --git a/srd.c b/srd.c index 7b18c9a..e8fd751 100644 --- a/srd.c +++ b/srd.c @@ -112,6 +112,38 @@ static int searchpath_add_xdg_dir(const char *datadir) return ret; } +static void print_versions(void) +{ + GString *s; + GSList *l, *l_orig, *m; + char *str; + const char *lib, *version; + + srd_dbg("libsigrokdecode %s/%s (rt: %s/%s).", + SRD_PACKAGE_VERSION_STRING, SRD_LIB_VERSION_STRING, + srd_package_version_string_get(), srd_lib_version_string_get()); + + s = g_string_sized_new(200); + g_string_append(s, "Libs: "); + l_orig = srd_buildinfo_libs_get(); + for (l = l_orig; l; l = l->next) { + m = l->data; + lib = m->data; + version = m->next->data; + g_string_append_printf(s, "%s %s, ", lib, version); + g_slist_free_full(m, g_free); + } + g_slist_free(l_orig); + s->str[s->len - 2] = '.'; + s->str[s->len - 1] = '\0'; + srd_dbg("%s", s->str); + g_string_free(s, TRUE); + + str = srd_buildinfo_host_get(); + srd_dbg("Host: %s.", str); + g_free(str); +} + /** * Initialize libsigrokdecode. * @@ -151,13 +183,15 @@ SRD_API int srd_init(const char *path) return SRD_ERR; } + print_versions(); + srd_dbg("Initializing libsigrokdecode."); /* Add our own module to the list of built-in modules. */ PyImport_AppendInittab("sigrokdecode", PyInit_sigrokdecode); /* Initialize the Python interpreter. */ - Py_Initialize(); + Py_InitializeEx(0); /* Locations relative to the XDG system data directories. */ sys_datadirs = g_get_system_data_dirs(); @@ -219,12 +253,9 @@ SRD_API int srd_init(const char *path) */ SRD_API int srd_exit(void) { - GSList *l; - srd_dbg("Exiting libsigrokdecode."); - for (l = sessions; l; l = l->next) - srd_session_destroy((struct srd_session *)l->data); + g_slist_foreach(sessions, (GFunc)srd_session_destroy, NULL); srd_decoder_unload_all(); g_slist_free_full(searchpaths, g_free);