[Xfce4-commits] r22603 - xarchiver/trunk/src

Giuseppe Torelli colossus at xfce.org
Tue Aug 1 10:41:48 UTC 2006


Author: colossus
Date: 2006-08-01 10:41:45 +0000 (Tue, 01 Aug 2006)
New Revision: 22603

Modified:
   xarchiver/trunk/src/callbacks.c
   xarchiver/trunk/src/callbacks.h
   xarchiver/trunk/src/extract_dialog.c
   xarchiver/trunk/src/main.c
Log:
Fixed bug when opening archive whose filename contains with [ or ] introduced with the previous revision. Thanks to the official 
Xarchiver bug-hunter: baze.


Modified: xarchiver/trunk/src/callbacks.c
===================================================================
--- xarchiver/trunk/src/callbacks.c	2006-08-01 10:22:30 UTC (rev 22602)
+++ xarchiver/trunk/src/callbacks.c	2006-08-01 10:41:45 UTC (rev 22603)
@@ -242,7 +242,7 @@
 	xa_set_button_state (1,1,1,0,0 );
 	archive->path = g_strdup (path);
 	g_free (path);
-    archive->escaped_path = EscapeBadChars (archive->path);
+    archive->escaped_path = EscapeBadChars (archive->path , 0);
     EmptyTextBuffer();
     archive->has_passwd = FALSE;
     gtk_widget_set_sensitive ( iso_info , FALSE );
@@ -300,7 +300,7 @@
 	archive = xa_init_archive_structure(archive);
 	archive->path = g_strdup (path);
 	g_free (path);
-	archive->escaped_path = EscapeBadChars ( archive->path );
+	archive->escaped_path = EscapeBadChars ( archive->path , 0 );
     
 	OffDeleteandViewButtons();
     gtk_widget_set_sensitive ( iso_info , FALSE );
@@ -1165,7 +1165,7 @@
 	else
 	{
 		gtk_tree_model_get (model, &iter, 0, &dummy_name, -1);
-		dir = EscapeBadChars ( dummy_name );
+		dir = EscapeBadChars ( dummy_name , 1 );
 		names = g_string_new (" ");
 		g_string_append ( names , dir );
 
@@ -1443,7 +1443,7 @@
     }
 }
 
-gchar *EscapeBadChars ( gchar *string )
+gchar *EscapeBadChars ( gchar *string , gboolean doublesquare)
 {
 	char *q;
 	char *escaped;
@@ -1452,13 +1452,13 @@
 
 	while (*p != '\000')
 	{
-        	if (is_escaped_char(*p))
-			{
+        if (is_escaped_char(*p))
+		{
+			escapechars++;
+			if ( doublesquare && (*p == '[' || *p == ']') )
 				escapechars++;
-				if (*p == '[' || *p == ']')
-					escapechars++;
-			}
-	        p++;
+		}
+		p++;
     }
 
 	if (!escapechars)
@@ -1472,7 +1472,7 @@
 	{
         if (is_escaped_char(*p))
 		{
-			if (*p == '[' || *p == ']')
+			if ( doublesquare && (*p == '[' || *p == ']') )
 				*q++ = '\\';
 			*q++ = '\\';
 		}
@@ -1514,7 +1514,7 @@
 
 void ConcatenateFileNames2 (gchar *filename , GString *data)
 {
-	gchar *esc_filename = EscapeBadChars ( filename );
+	gchar *esc_filename = EscapeBadChars ( filename , 1 );
 	g_string_prepend (data, esc_filename);
 	g_string_prepend_c (data, ' ');
 	g_free (esc_filename);
@@ -1696,7 +1696,7 @@
     local_path = (gchar *) g_malloc ( x + 1);
     strncpy ( local_path, path, x );
     local_path [x] = '\000';
-    local_escaped_path = EscapeBadChars ( local_path );
+    local_escaped_path = EscapeBadChars ( local_path , 1);
     g_free (local_path);
     return local_escaped_path;
 }

Modified: xarchiver/trunk/src/callbacks.h
===================================================================
--- xarchiver/trunk/src/callbacks.h	2006-08-01 10:22:30 UTC (rev 22602)
+++ xarchiver/trunk/src/callbacks.h	2006-08-01 10:41:45 UTC (rev 22603)
@@ -120,7 +120,7 @@
 void OffTooltipPadlock();
 void Update_StatusBar (gchar *msg);
 void xa_watch_child ( GPid pid, gint status, gpointer data);
-gchar *EscapeBadChars ( gchar *path );
+gchar *EscapeBadChars ( gchar *string , gboolean doublesquare);
 gchar *StripPathFromFilename ( gchar *name, gchar *pattern );
 gchar *JoinPathArchiveName ( const gchar * , gchar * );
 char *Show_File_Dialog (int dummy , gpointer title);

Modified: xarchiver/trunk/src/extract_dialog.c
===================================================================
--- xarchiver/trunk/src/extract_dialog.c	2006-08-01 10:22:30 UTC (rev 22602)
+++ xarchiver/trunk/src/extract_dialog.c	2006-08-01 10:41:45 UTC (rev 22603)
@@ -325,7 +325,7 @@
 
 			case GTK_RESPONSE_OK:
 			destination_path = g_strdup (gtk_entry_get_text ( GTK_ENTRY (dialog_data->destination_path_entry) ));
-			extract_path = EscapeBadChars ( destination_path );
+			extract_path = EscapeBadChars ( destination_path , 1 );
 
 			if ( strlen ( extract_path ) == 0 )
 			{

Modified: xarchiver/trunk/src/main.c
===================================================================
--- xarchiver/trunk/src/main.c	2006-08-01 10:22:30 UTC (rev 22602)
+++ xarchiver/trunk/src/main.c	2006-08-01 10:41:45 UTC (rev 22603)
@@ -102,7 +102,7 @@
 						GString *string = g_string_new ( "" );
 						archive->full_path = 1;
 						archive->overwrite = 1;
-						gchar *escaped_path = EscapeBadChars (extract_path);
+						gchar *escaped_path = EscapeBadChars (extract_path , 1);
 						cli_command = xa_extract_single_files ( archive , string, escaped_path );
 						g_free (escaped_path);
 						if ( cli_command != NULL )
@@ -384,7 +384,7 @@
 {
 	archive = xa_init_archive_structure (archive);
 	archive->path = g_strdup (filename);
-	archive->escaped_path = EscapeBadChars(filename);
+	archive->escaped_path = EscapeBadChars(filename , 0);
 	archive->type = DetectArchiveType ( archive->path );
 	if (archive->type == -2)
 		return NULL;



More information about the Xfce4-commits mailing list