-/**
- * Check if the directory in the specified search path is a valid PD dir.
- *
- * A valid sigrok protocol decoder consists of a directory, which contains
- * at least two .py files (the special __init__.py and at least one additional
- * .py file which contains the actual PD code).
- *
- * TODO: We should also check that this is not a random other Python module,
- * but really a sigrok PD module by some means.
- *
- * @param search_path A string containing the (absolute) path to the directory
- * where 'entry' resides in.
- * @param entry A string containing the (relative) directory name of the
- * sigrok PD module. E.g. "i2c" for the I2C protocol decoder.
- * @return SRD_OK, if the directory is a valid sigrok PD, a negative error
- * code, such as SRD_ERR, otherwise.
- */
-int srd_is_valid_pd_dir(const gchar *search_path, const gchar *entry)
-{
- GDir *dir;
- int py_files = 0, has_init_py = 0;
- gchar *path1, *path2, *file;
- GError *error;
-
- /* 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;
-}
-