file-roller r2251 - in trunk: . src



Author: paobac
Date: Wed Apr 16 18:02:00 2008
New Revision: 2251
URL: http://svn.gnome.org/viewvc/file-roller?rev=2251&view=rev

Log:
2008-04-16  Paolo Bacchilega  <paobac svn gnome org>

	* src/utf8-fnmatch.c:
	* src/utf8-fnmatch.h: removed files.

	* src/Makefile.am: 
	* src/glib-utils.h: 
	* src/glib-utils.c: 
	* src/gio-utils.c: 
	* src/fr-window.c: 
	* src/fr-archive.c: 
	* src/dlg-extract.c: 
	
	Use GRegex instead of the utf8_fnmatch function.


Removed:
   trunk/src/utf8-fnmatch.c
   trunk/src/utf8-fnmatch.h
Modified:
   trunk/ChangeLog
   trunk/src/Makefile.am
   trunk/src/dlg-extract.c
   trunk/src/fr-archive.c
   trunk/src/fr-window.c
   trunk/src/gio-utils.c
   trunk/src/glib-utils.c
   trunk/src/glib-utils.h

Modified: trunk/src/Makefile.am
==============================================================================
--- trunk/src/Makefile.am	(original)
+++ trunk/src/Makefile.am	Wed Apr 16 18:02:00 2008
@@ -129,8 +129,6 @@
 	sexy-icon-entry.h		\
 	typedefs.h			\
 	ui.h				\
-	utf8-fnmatch.c			\
-	utf8-fnmatch.h			\
 	$(MKDTEMP_FILES)		\
 	$(BUILT_SOURCES)
 

Modified: trunk/src/dlg-extract.c
==============================================================================
--- trunk/src/dlg-extract.c	(original)
+++ trunk/src/dlg-extract.c	Wed Apr 16 18:02:00 2008
@@ -198,7 +198,7 @@
 	fr_window_set_extract_default_dir (window, extract_to_dir, TRUE);
 
 	overwrite = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data->e_overwrite_checkbutton));
-	skip_newer = !gtk_toggle_button_get_inconsistent (GTK_TOGGLE_BUTTON (data->e_not_newer_checkbutton)) && gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data->e_not_newer_checkbutton));
+	skip_newer = ! gtk_toggle_button_get_inconsistent (GTK_TOGGLE_BUTTON (data->e_not_newer_checkbutton)) && gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data->e_not_newer_checkbutton));
 	junk_paths = ! gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data->e_recreate_dir_checkbutton));
 
 	eel_gconf_set_boolean (PREF_EXTRACT_OVERWRITE, overwrite);
@@ -225,7 +225,7 @@
 
 	file_list = NULL;
 
-	if (selected_files){
+	if (selected_files) {
 		file_list = data->selected_files;
 		data->selected_files = NULL;       /* do not the list when destroying the dialog. */
 	} 

Modified: trunk/src/fr-archive.c
==============================================================================
--- trunk/src/fr-archive.c	(original)
+++ trunk/src/fr-archive.c	Wed Apr 16 18:02:00 2008
@@ -54,7 +54,6 @@
 #include "fr-error.h"
 #include "fr-marshal.h"
 #include "fr-process.h"
-#include "utf8-fnmatch.h"
 
 #ifndef NCARGS
 #define NCARGS _POSIX_ARG_MAX

Modified: trunk/src/fr-window.c
==============================================================================
--- trunk/src/fr-window.c	(original)
+++ trunk/src/fr-window.c	Wed Apr 16 18:02:00 2008
@@ -53,7 +53,6 @@
 #include "sexy-icon-entry.h"
 #include "typedefs.h"
 #include "ui.h"
-#include "utf8-fnmatch.h"
 
 
 #define LAST_OUTPUT_DIALOG_NAME "last_output"
@@ -6341,13 +6340,13 @@
 fr_window_get_file_list_pattern (FrWindow    *window,
 				 const char  *pattern)
 {
-	char  **patterns;
-	GList  *list;
-	int     i;
+	GRegex **regexps;
+	GList   *list;
+	int      i;
 
 	g_return_val_if_fail (window != NULL, NULL);
 
-	patterns = search_util_get_patterns (pattern);
+	regexps = search_util_get_regexps (pattern, G_REGEX_CASELESS);
 	list = NULL;
 	for (i = 0; i < window->archive->command->files->len; i++) {
 		FileData *fd = g_ptr_array_index (window->archive->command->files, i);
@@ -6359,12 +6358,11 @@
 			continue;
 
 		utf8_name = g_filename_to_utf8 (fd->name, -1, NULL, NULL, NULL);
-		if (match_patterns (patterns, utf8_name, 0))
+		if (match_regexps (regexps, utf8_name, 0))
 			list = g_list_prepend (list, g_strdup (fd->original_path));
 		g_free (utf8_name);
 	}
-	if (patterns != NULL)
-		g_strfreev (patterns);
+	free_regexps (regexps);
 
 	return g_list_reverse (list);
 }

Modified: trunk/src/gio-utils.c
==============================================================================
--- trunk/src/gio-utils.c	(original)
+++ trunk/src/gio-utils.c	Wed Apr 16 18:02:00 2008
@@ -44,7 +44,6 @@
 
 typedef struct {
 	char           *pattern;
-	char          **patterns;
 	FilterOptions   options;
 	GRegex        **regexps;
 } Filter;
@@ -56,30 +55,18 @@
 {
 	Filter             *filter;
 	GRegexCompileFlags  flags;
-	int                 i;
 	
 	filter = g_new0 (Filter, 1);
 
-	if ((pattern != NULL) && (strcmp (pattern, "*") != 0)) {
+	if ((pattern != NULL) && (strcmp (pattern, "*") != 0)) 
 		filter->pattern = g_strdup (pattern);
-		filter->patterns = search_util_get_patterns (pattern);
-	}
 
 	filter->options = options;
 	if (filter->options & FILTER_IGNORECASE)
 		flags = G_REGEX_CASELESS;
 	else
-		flags = 0;
-	
-	if (filter->pattern != NULL) {
-		filter->regexps = g_new0 (GRegex*, n_fields (filter->patterns) + 1);
-		for (i = 0; filter->patterns[i] != NULL; i++) 
-			filter->regexps[i] = g_regex_new (filter->patterns[i],
-						          flags,
-						          G_REGEX_MATCH_NOTEMPTY,
-						          NULL);
-		filter->regexps[i] = NULL;
-	}
+		flags = 0;	
+	filter->regexps = search_util_get_regexps (pattern, flags);
 	
 	return filter;
 }
@@ -91,43 +78,13 @@
 	g_return_if_fail (filter != NULL);
 
 	g_free (filter->pattern);
-	if (filter->patterns != NULL)
-		g_strfreev (filter->patterns);
-	if (filter->regexps != NULL) {
-		int i;
-		for (i = 0; filter->regexps[i] != NULL; i++)
-			 g_regex_unref (filter->regexps[i]);
-		g_free (filter->regexps);
-	}
+	if (filter->regexps != NULL) 
+		free_regexps (filter->regexps);
 	g_free (filter);
 }
 
 
 static gboolean
-match_regexps (GRegex     **regexps,
-	       const char  *string)
-{
-	gboolean matched;
-	int      i;
-	
-	if ((regexps == NULL) || (regexps[0] == NULL))
-		return TRUE;
-
-	if (string == NULL)
-		return FALSE;
-	
-	matched = FALSE;
-	for (i = 0; regexps[i] != NULL; i++)
-		if (g_regex_match (regexps[i], string, 0, NULL)) {
-			matched = TRUE;
-			break;
-		}
-		
-	return matched;
-}
-
-
-static gboolean
 filter_matches (Filter     *filter,
 	        const char *name)
 {
@@ -151,7 +108,7 @@
 		return TRUE;
 	
 	utf8_name = g_filename_to_utf8 (file_name, -1, NULL, NULL, NULL);
-	matched = match_regexps (filter->regexps, utf8_name);
+	matched = match_regexps (filter->regexps, utf8_name, 0);
 	g_free (utf8_name);
 
 	return matched;

Modified: trunk/src/glib-utils.c
==============================================================================
--- trunk/src/glib-utils.c	(original)
+++ trunk/src/glib-utils.c	Wed Apr 16 18:02:00 2008
@@ -26,7 +26,6 @@
 #include <glib/gi18n.h>
 #include <glib/gprintf.h>
 #include "glib-utils.h"
-#include "utf8-fnmatch.h"
 
 
 #define MAX_PATTERNS 128
@@ -321,27 +320,41 @@
 
 
 gboolean
-match_patterns (char       **patterns,
-		const char  *string,
-		int          flags)
+match_regexps (GRegex           **regexps,
+	       const char        *string,
+	       GRegexMatchFlags   match_options)
 {
-	int i;
-	int result;
-
-	if (patterns[0] == NULL)
+	gboolean matched;
+	int      i;
+	
+	if ((regexps == NULL) || (regexps[0] == NULL))
 		return TRUE;
 
 	if (string == NULL)
 		return FALSE;
+	
+	matched = FALSE;
+	for (i = 0; regexps[i] != NULL; i++)
+		if (g_regex_match (regexps[i], string, match_options, NULL)) {
+			matched = TRUE;
+			break;
+		}
+		
+	return matched;
+}
 
-	result = FNM_NOMATCH;
-	i = 0;
-	while ((result != 0) && (patterns[i] != NULL)) {
-		result = g_utf8_fnmatch (patterns[i], string, flags);
-		i++;
-	}
 
-	return (result == 0);
+void
+free_regexps (GRegex **regexps)
+{
+	int i;
+	
+	if (regexps == NULL) 
+		return;
+		
+	for (i = 0; regexps[i] != NULL; i++)
+		g_regex_unref (regexps[i]);
+	g_free (regexps);
 }
 
 
@@ -351,6 +364,9 @@
 	char **patterns;
 	int    i;
 
+	if (pattern_string == NULL)
+		return NULL;
+
 	patterns = g_utf8_strsplit (pattern_string, ";", MAX_PATTERNS);
 	for (i = 0; patterns[i] != NULL; i++) {
 		char *p1, *p2;
@@ -367,6 +383,30 @@
 }
 
 
+GRegex **
+search_util_get_regexps (const char         *pattern_string,
+			 GRegexCompileFlags  compile_options)
+{
+	char   **patterns;
+	GRegex **regexps;
+	int      i;
+		
+	patterns = search_util_get_patterns (pattern_string);
+	if (patterns == NULL)
+		return NULL;
+		
+	regexps = g_new0 (GRegex*, n_fields (patterns) + 1);
+	for (i = 0; patterns[i] != NULL; i++) 
+		regexps[i] = g_regex_new (patterns[i], 
+					  G_REGEX_OPTIMIZE | compile_options, 
+					  G_REGEX_MATCH_NOTEMPTY, 
+					  NULL);
+	g_strfreev (patterns);
+	
+	return regexps;
+}
+
+
 char *
 _g_strdup_with_max_size (const char *s,
 			 int         max_size)

Modified: trunk/src/glib-utils.h
==============================================================================
--- trunk/src/glib-utils.h	(original)
+++ trunk/src/glib-utils.h	Wed Apr 16 18:02:00 2008
@@ -43,10 +43,13 @@
 						  const char  *meta_chars);
 char*               unescape_str                 (const char  *str);
 gchar *             shell_escape                 (const gchar *filename);
-gboolean            match_patterns               (char       **patterns,
+gboolean            match_regexps                (GRegex     **regexps,
 						  const char  *string,
-						  int          flags);
+						  GRegexMatchFlags match_options);
 char **             search_util_get_patterns     (const char  *pattern_string);
+GRegex **           search_util_get_regexps      (const char  *pattern_string,
+			                          GRegexCompileFlags  compile_options);
+void                free_regexps                 (GRegex     **regexps);
 char *              _g_strdup_with_max_size      (const char  *s,
 						  int          max_size);
 const char *        eat_spaces                   (const char  *line);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]