[geany/geany-plugins] 6154d6: workbench: use commonlib.
LarsDW223
git-noreply at xxxxx
Sun Oct 15 10:02:54 UTC 2017
Branch: refs/heads/master
Author: LarsDW223 <lars_paulsen at web.de>
Committer: LarsDW223 <lars_paulsen at web.de>
Date: Sun, 15 Oct 2017 10:02:54 UTC
Commit: 6154d68b078d629122b15c4d36a63ff57c09ada4
https://github.com/geany/geany-plugins/commit/6154d68b078d629122b15c4d36a63ff57c09ada4
Log Message:
-----------
workbench: use commonlib.
This replaces the call to 'wb_project_dir_get_file_list' with a call to 'filelist_scan_directory' from the common utils lib.
Therefore the functions 'wb_project_dir_get_file_list', 'get_precompiled_patterns' and 'patterns_match' could be deleted.
Modified Paths:
--------------
workbench/src/Makefile.am
workbench/src/utils.c
workbench/src/wb_project.c
Modified: workbench/src/Makefile.am
7 lines changed, 4 insertions(+), 3 deletions(-)
===================================================================
@@ -24,8 +24,9 @@ workbench_la_SOURCES = \
workbench_la_CPPFLAGS = $(AM_CPPFLAGS) \
-DG_LOG_DOMAIN=\"Workbench\"
-workbench_la_CFLAGS = $(AM_CFLAGS)
-workbench_la_LIBADD = $(COMMONLIBS)
-
+workbench_la_CFLAGS = $(AM_CFLAGS) \
+ -I$(top_srcdir)/utils/src
+workbench_la_LIBADD = $(COMMONLIBS) \
+ $(top_builddir)/utils/src/libgeanypluginutils.la
include $(top_srcdir)/build/cppcheck.mk
Modified: workbench/src/utils.c
48 lines changed, 0 insertions(+), 48 deletions(-)
===================================================================
@@ -61,54 +61,6 @@ gchar *get_relative_path(const gchar *utf8_parent, const gchar *utf8_descendant)
}
-/** Check if a string matches a pattern.
- *
- * The function checks if @a str matches pattern @a patterns.
- *
- * @param patterns Pattern list.
- * @param str String to check
- * @return TRUE if str matches the pattern, FALSE otherwise
- *
- **/
-gboolean patterns_match(GSList *patterns, const gchar *str)
-{
- GSList *elem = NULL;
- foreach_slist (elem, patterns)
- {
- GPatternSpec *pattern = elem->data;
- if (g_pattern_match_string(pattern, str))
- return TRUE;
- }
- return FALSE;
-}
-
-
-/** Get precompiled patterns.
- *
- * The function builds the precompiled patterns for @a patterns and returns them
- * as a list.
- *
- * @param patterns NULL terminated string array of patterns.
- * @return Pointer to GSList of patterns or NULL if patterns == NULL
- *
- **/
-GSList *get_precompiled_patterns(gchar **patterns)
-{
- guint i;
- GSList *pattern_list = NULL;
-
- if (!patterns)
- return NULL;
-
- for (i = 0; patterns[i] != NULL; i++)
- {
- GPatternSpec *pattern_spec = g_pattern_spec_new(patterns[i]);
- pattern_list = g_slist_prepend(pattern_list, pattern_spec);
- }
- return pattern_list;
-}
-
-
/** Combine an absolute and a relative path.
*
* The function combines the absolute path @a base with the relative path
Modified: workbench/src/wb_project.c
105 lines changed, 6 insertions(+), 99 deletions(-)
===================================================================
@@ -26,6 +26,7 @@
#endif
#include <geanyplugin.h>
+#include <../../utils/src/filelist.h>
#include "wb_globals.h"
#include "wb_project.h"
#include "utils.h"
@@ -222,78 +223,6 @@ static void wb_project_clear_idle_queue(GSList **queue)
}
-/* Get the list of files for root */
-static GSList *wb_project_dir_get_file_list(WB_PROJECT_DIR *root, const gchar *utf8_path, GSList *patterns,
- GSList *ignored_dirs_patterns, GSList *ignored_file_patterns, GHashTable *visited_paths)
-{
- GSList *list = NULL;
- GDir *dir;
- gchar *locale_path = utils_get_locale_from_utf8(utf8_path);
- gchar *real_path = utils_get_real_path(locale_path);
-
- dir = g_dir_open(locale_path, 0, NULL);
- if (!dir || !real_path || g_hash_table_lookup(visited_paths, real_path))
- {
- if (dir != NULL)
- {
- g_dir_close(dir);
- }
- g_free(locale_path);
- g_free(real_path);
- return NULL;
- }
-
- g_hash_table_insert(visited_paths, real_path, GINT_TO_POINTER(1));
-
- while (TRUE)
- {
- const gchar *locale_name;
- gchar *locale_filename, *utf8_filename, *utf8_name;
-
- locale_name = g_dir_read_name(dir);
- if (!locale_name)
- break;
-
- utf8_name = utils_get_utf8_from_locale(locale_name);
- locale_filename = g_build_filename(locale_path, locale_name, NULL);
- utf8_filename = utils_get_utf8_from_locale(locale_filename);
-
- if (g_file_test(locale_filename, G_FILE_TEST_IS_DIR))
- {
- GSList *lst;
-
- if (!patterns_match(ignored_dirs_patterns, utf8_name))
- {
- lst = wb_project_dir_get_file_list(root, utf8_filename, patterns, ignored_dirs_patterns,
- ignored_file_patterns, visited_paths);
- if (lst)
- {
- root->folder_count++;
- list = g_slist_concat(list, lst);
- }
- }
- }
- else if (g_file_test(locale_filename, G_FILE_TEST_IS_REGULAR))
- {
- if (patterns_match(patterns, utf8_name) && !patterns_match(ignored_file_patterns, utf8_name))
- {
- root->file_count++;
- list = g_slist_prepend(list, g_strdup(utf8_filename));
- }
- }
-
- g_free(utf8_filename);
- g_free(locale_filename);
- g_free(utf8_name);
- }
-
- g_dir_close(dir);
- g_free(locale_path);
-
- return list;
-}
-
-
/* Create a new project dir with base path "utf8_base_dir" */
static WB_PROJECT_DIR *wb_project_dir_new(const gchar *utf8_base_dir)
{
@@ -548,38 +477,25 @@ static guint wb_project_get_file_count(WB_PROJECT *prj)
/* Rescan/update the file list of a project dir. */
static guint wb_project_dir_rescan_int(WB_PROJECT *prj, WB_PROJECT_DIR *root)
{
- GSList *pattern_list = NULL;
- GSList *ignored_dirs_list = NULL;
- GSList *ignored_file_list = NULL;
- GHashTable *visited_paths;
GSList *lst;
GSList *elem = NULL;
guint filenum = 0;
gchar *searchdir;
+ gchar **file_patterns = NULL;
wb_project_dir_remove_from_tm_workspace(root);
g_hash_table_remove_all(root->file_table);
- if (!root->file_patterns || !root->file_patterns[0])
- {
- const gchar *all_pattern[] = { "*", NULL };
- pattern_list = get_precompiled_patterns((gchar **)all_pattern);
- }
- else
+ if (root->file_patterns && root->file_patterns[0])
{
- pattern_list = get_precompiled_patterns(root->file_patterns);
+ file_patterns = root->file_patterns;
}
- ignored_dirs_list = get_precompiled_patterns(root->ignored_dirs_patterns);
- ignored_file_list = get_precompiled_patterns(root->ignored_file_patterns);
-
- visited_paths = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
searchdir = get_combined_path(prj->filename, root->base_dir);
root->file_count = 0;
root->folder_count = 0;
- lst = wb_project_dir_get_file_list
- (root, searchdir, pattern_list, ignored_dirs_list, ignored_file_list, visited_paths);
- g_hash_table_destroy(visited_paths);
+ lst = filelist_scan_directory(&(root->file_count), &(root->folder_count),
+ searchdir, file_patterns, root->ignored_dirs_patterns, root->ignored_file_patterns);
g_free(searchdir);
foreach_slist(elem, lst)
@@ -596,15 +512,6 @@ static guint wb_project_dir_rescan_int(WB_PROJECT *prj, WB_PROJECT_DIR *root)
g_slist_foreach(lst, (GFunc) g_free, NULL);
g_slist_free(lst);
- g_slist_foreach(pattern_list, (GFunc) g_pattern_spec_free, NULL);
- g_slist_free(pattern_list);
-
- g_slist_foreach(ignored_dirs_list, (GFunc) g_pattern_spec_free, NULL);
- g_slist_free(ignored_dirs_list);
-
- g_slist_foreach(ignored_file_list, (GFunc) g_pattern_spec_free, NULL);
- g_slist_free(ignored_file_list);
-
return filenum;
}
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).
More information about the Plugins-Commits
mailing list