*** fr-command-zip.c.2.24.2.orig	2008-12-20 22:06:56.000000000 +0100
--- fr-command-zip.c	2008-12-20 22:09:18.000000000 +0100
***************
*** 34,39 ****
--- 34,40 ----
  #include "fr-command-zip.h"
  
  #define EMPTY_ARCHIVE_WARNING        "Empty zipfile."
+ #define ZIP_SPECIAL_CHARACTERS       "[]*?!^-\\"
  
  static void fr_command_zip_class_init  (FrCommandZipClass *class);
  static void fr_command_zip_init        (FrCommand         *afile);
*************** fr_command_zip_delete (FrCommand  *comm,
*** 275,281 ****
  
  	fr_process_add_arg (comm->process, comm->filename);
  	for (scan = file_list; scan; scan = scan->next)
! 		fr_process_add_arg (comm->process, scan->data);
  
  	fr_process_end_command (comm->process);
  }
--- 276,288 ----
  
  	fr_process_add_arg (comm->process, comm->filename);
  	for (scan = file_list; scan; scan = scan->next)
! 	{
! 		char *escaped_scan_data = NULL;
! 		escaped_scan_data = escape_str( scan->data,
! 		                                ZIP_SPECIAL_CHARACTERS );
! 		fr_process_add_arg (comm->process, escaped_scan_data);
! 		g_free (escaped_scan_data);
! 	}
  
  	fr_process_end_command (comm->process);
  }
*************** fr_command_zip_extract (FrCommand  *comm
*** 314,320 ****
  
  	fr_process_add_arg (comm->process, comm->filename);
  	for (scan = file_list; scan; scan = scan->next)
! 		fr_process_add_arg (comm->process, scan->data);
  
  	fr_process_end_command (comm->process);
  }
--- 321,333 ----
  
  	fr_process_add_arg (comm->process, comm->filename);
  	for (scan = file_list; scan; scan = scan->next)
! 	{
! 		char *escaped_scan_data = NULL;
! 		escaped_scan_data = escape_str( scan->data,
! 		                                ZIP_SPECIAL_CHARACTERS );
! 		fr_process_add_arg (comm->process, escaped_scan_data);
! 		g_free (escaped_scan_data);
! 	}
  
  	fr_process_end_command (comm->process);
  }
