[vlc-devel] [PATCH 3/3] input: item: ignore directories if --recursive=none
Filip Roséen
filip at atch.se
Fri Jul 20 10:15:44 CEST 2018
fixes: #20865
---
include/vlc_input_item.h | 1 +
src/input/item.c | 12 ++++++++++--
2 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/include/vlc_input_item.h b/include/vlc_input_item.h
index 4bd07c1733..a78ae13c89 100644
--- a/include/vlc_input_item.h
+++ b/include/vlc_input_item.h
@@ -440,6 +440,7 @@ struct vlc_readdir_helper
bool b_show_hiddenfiles;
bool b_flatten;
char *psz_ignored_exts;
+ bool b_show_directories;
};
/**
diff --git a/src/input/item.c b/src/input/item.c
index f288d23c7d..8cc65722b8 100644
--- a/src/input/item.c
+++ b/src/input/item.c
@@ -1406,11 +1406,12 @@ static bool rdh_file_has_ext(const char *psz_filename,
}
static bool rdh_file_is_ignored(struct vlc_readdir_helper *p_rdh,
- const char *psz_filename)
+ const char *psz_filename, int i_type)
{
return (psz_filename[0] == '\0'
|| strcmp(psz_filename, ".") == 0
|| strcmp(psz_filename, "..") == 0
+ || (!p_rdh->b_show_directories && i_type == ITEM_TYPE_DIRECTORY)
|| (!p_rdh->b_show_hiddenfiles && psz_filename[0] == '.')
|| rdh_file_has_ext(psz_filename, p_rdh->psz_ignored_exts));
}
@@ -1706,7 +1707,14 @@ void vlc_readdir_helper_init(struct vlc_readdir_helper *p_rdh,
p_obj = p_var_obj;
}
+ char* psz_recursive = var_InheritString(p_obj, "recursive");
+ bool b_show_directories = true;
+ if (psz_recursive && !strcmp( psz_recursive, "none"))
+ b_show_directories = false;
+ free(psz_recursive);
+
p_rdh->p_node = p_node;
+ p_rdh->b_show_directories = b_show_directories;
p_rdh->b_show_hiddenfiles = var_InheritBool(p_obj, "show-hiddenfiles");
p_rdh->psz_ignored_exts = var_InheritString(p_obj, "ignore-filetypes");
bool b_autodetect = var_InheritBool(p_obj, "sub-autodetect-file");
@@ -1794,7 +1802,7 @@ int vlc_readdir_helper_additem(struct vlc_readdir_helper *p_rdh,
TAB_APPEND(p_rdh->i_slaves, p_rdh->pp_slaves, p_rdh_slave);
}
- if (rdh_file_is_ignored(p_rdh, psz_filename))
+ if (rdh_file_is_ignored(p_rdh, psz_filename, i_type))
return VLC_SUCCESS;
input_item_node_t *p_node = p_rdh->p_node;
--
2.18.0
More information about the vlc-devel
mailing list