- /* TODO: Error handling. */
- path1 = g_build_filename(search_path, entry, NULL);
-
- /* Check that it is a directory (and exists). */
- if (!g_file_test(path1, G_FILE_TEST_IS_DIR)) {
- srd_dbg("decoder: %s: '%s' not a directory or doesn't exist",
- __func__, entry);
- return SRD_ERR;
- }
-
- if (!(dir = g_dir_open(path1, 0, &error))) { /* TODO: flags? */
- srd_dbg("decoder: %s: '%s' failed to open directory",
- __func__, entry);
- return SRD_ERR;
- }
-
- /* Check the contents of the directory. */
- while ((file = g_dir_read_name(dir)) != NULL) {
- /* TODO: Error handling. */
- path2 = g_build_filename(path1, file, NULL);
-
- /* Ignore non-files. */
- if (!g_file_test(path2, G_FILE_TEST_IS_REGULAR)) {
- srd_spew("decoder: %s: '%s' not a file, ignoring",
- __func__, file);
- continue;
- }
-
- /* Count number of .py files. */
- if (g_str_has_suffix(path2, ".py")) {
- srd_spew("decoder: %s: found .py file: '%s'",
- __func__, file);
- py_files++;
- }
-
- /* Check if it's an __init__.py file. */
- if (g_str_has_suffix(path2, "__init__.py")) {
- srd_spew("decoder: %s: found __init__.py file: '%s'",
- __func__, path2);
- has_init_py = 1;
- }
- }
- g_dir_close(dir);
-
- /* Check if the directory contains >= 2 *.py files. */
- if (py_files < 2) {
- srd_dbg("decoder: %s: '%s' is not a valid PD dir, it doesn't "
- "contain >= 2 .py files", __func__, entry);
- return SRD_ERR;
- }
-
- /* Check if the directory contains an __init__.py file. */
- if (!has_init_py) {
- srd_dbg("decoder: %s: '%s' is not a valid PD dir, it doesn't "
- "contain an __init__.py file", __func__, entry);
- return SRD_ERR;
- }
-
- /* TODO: Check if it's a PD, not a random other Python module. */
-
- return SRD_OK;
-}
-
-int srd_load_all_decoders(void)
-{
- GDir *dir;
- gchar *direntry;
- int ret;
- char *decodername;
- struct srd_decoder *dec;
- GError *error;
-
- if (!(dir = g_dir_open(DECODERS_DIR, 0, &error))) { /* TODO: flags? */
- Py_Finalize(); /* Returns void. */