diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/dlg-new.c | 13 | ||||
| -rw-r--r-- | src/fr-archive.c | 2 | ||||
| -rw-r--r-- | src/fr-command-7z.c | 33 | ||||
| -rw-r--r-- | src/fr-command-tar.c | 3 | ||||
| -rw-r--r-- | src/glib-utils.c | 2 | 
5 files changed, 35 insertions, 18 deletions
| diff --git a/src/dlg-new.c b/src/dlg-new.c index 0f0e36e..9a5c79f 100644 --- a/src/dlg-new.c +++ b/src/dlg-new.c @@ -269,7 +269,6 @@ dlg_new_archive (FrWindow  *window,  {  	DlgNewData    *data;  	GtkWidget     *n_new_button; -	GtkFileFilter *filter;          GSettings *settings;  	/*char          *default_ext;*/  	int            i; @@ -309,18 +308,6 @@ dlg_new_archive (FrWindow  *window,  	if (default_name != NULL)  		gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (data->dialog), default_name); -	filter = gtk_file_filter_new (); -	gtk_file_filter_set_name (filter, _("All archives")); -	for (i = 0; data->supported_types[i] != -1; i++) -		gtk_file_filter_add_mime_type (filter, mime_type_desc[data->supported_types[i]].mime_type); -	gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (data->dialog), filter); -	gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (data->dialog), filter); - -	filter = gtk_file_filter_new (); -	gtk_file_filter_set_name (filter, _("All files")); -	gtk_file_filter_add_pattern (filter, "*"); -	gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (data->dialog), filter); -  	/**/  	gtk_button_set_use_stock (GTK_BUTTON (n_new_button), TRUE); diff --git a/src/fr-archive.c b/src/fr-archive.c index 56a9918..fcb4c82 100644 --- a/src/fr-archive.c +++ b/src/fr-archive.c @@ -2911,7 +2911,7 @@ compute_base_path (const char *base_dir,  		return new_path;  	} -	if (path_len <= base_dir_len) +	if (path_len < base_dir_len)  		return NULL;  	base_path = path + base_dir_len; diff --git a/src/fr-command-7z.c b/src/fr-command-7z.c index 316df11..20cfa2c 100644 --- a/src/fr-command-7z.c +++ b/src/fr-command-7z.c @@ -371,11 +371,20 @@ fr_command_7z_add (FrCommand     *comm,  	if (from_file != NULL)  		fr_process_add_arg_concat (comm->process, "-i@", from_file, NULL); +	if (from_file == NULL) +		for (scan = file_list; scan; scan = scan->next) +			/* Files prefixed with '@' need to be handled specially */ +			if (g_str_has_prefix (scan->data, "@")) +				fr_process_add_arg_concat (comm->process, "-i!", scan->data, NULL); +  	fr_process_add_arg (comm->process, "--");  	fr_process_add_arg (comm->process, comm->filename); +  	if (from_file == NULL)  		for (scan = file_list; scan; scan = scan->next) -			fr_process_add_arg (comm->process, scan->data); +			/* Skip files prefixed with '@', already added */ +			if (!g_str_has_prefix (scan->data, "@")) +				fr_process_add_arg (comm->process, scan->data);  	fr_process_end_command (comm->process);  } @@ -399,11 +408,20 @@ fr_command_7z_delete (FrCommand  *comm,  	if (from_file != NULL)  		fr_process_add_arg_concat (comm->process, "-i@", from_file, NULL); +	if (from_file == NULL) +		for (scan = file_list; scan; scan = scan->next) +			/* Files prefixed with '@' need to be handled specially */ +			if (g_str_has_prefix (scan->data, "@")) +				fr_process_add_arg_concat (comm->process, "-i!", scan->data, NULL); +  	fr_process_add_arg (comm->process, "--");  	fr_process_add_arg (comm->process, comm->filename); +  	if (from_file == NULL)  		for (scan = file_list; scan; scan = scan->next) -			fr_process_add_arg (comm->process, scan->data); +			/* Skip files prefixed with '@', already added */ +			if (!g_str_has_prefix (scan->data, "@")) +				fr_process_add_arg (comm->process, scan->data);  	fr_process_end_command (comm->process);  } @@ -453,11 +471,20 @@ fr_command_7z_extract (FrCommand  *comm,  	if (from_file != NULL)  		fr_process_add_arg_concat (comm->process, "-i@", from_file, NULL); +	if (from_file == NULL) +		for (scan = file_list; scan; scan = scan->next) +			/* Files prefixed with '@' need to be handled specially */ +			if (g_str_has_prefix (scan->data, "@")) +				fr_process_add_arg_concat (comm->process, "-i!", scan->data, NULL); +  	fr_process_add_arg (comm->process, "--");  	fr_process_add_arg (comm->process, comm->filename); +  	if (from_file == NULL)  		for (scan = file_list; scan; scan = scan->next) -			fr_process_add_arg (comm->process, scan->data); +			/* Skip files prefixed with '@', already added */ +			if (!g_str_has_prefix (scan->data, "@")) +				fr_process_add_arg (comm->process, scan->data);  	fr_process_end_command (comm->process);  } diff --git a/src/fr-command-tar.c b/src/fr-command-tar.c index b870ec5..d52964c 100644 --- a/src/fr-command-tar.c +++ b/src/fr-command-tar.c @@ -331,6 +331,7 @@ fr_command_tar_add (FrCommand     *comm,  	if (! recursive)  		fr_process_add_arg (comm->process, "--no-recursion");  	fr_process_add_arg (comm->process, "--no-wildcards"); +	fr_process_add_arg (comm->process, "--no-unquote");  	fr_process_add_arg (comm->process, "-v");  	fr_process_add_arg (comm->process, "-p"); @@ -401,6 +402,7 @@ fr_command_tar_delete (FrCommand  *comm,  	fr_process_set_begin_func (comm->process, begin_func__delete, comm);  	fr_process_add_arg (comm->process, "--force-local");  	fr_process_add_arg (comm->process, "--no-wildcards"); +	fr_process_add_arg (comm->process, "--no-unquote");  	fr_process_add_arg (comm->process, "-v");  	fr_process_add_arg (comm->process, "--delete");  	fr_process_add_arg (comm->process, "-f"); @@ -448,6 +450,7 @@ fr_command_tar_extract (FrCommand  *comm,  	begin_tar_command (comm);  	fr_process_add_arg (comm->process, "--force-local");  	fr_process_add_arg (comm->process, "--no-wildcards"); +	fr_process_add_arg (comm->process, "--no-unquote");  	fr_process_add_arg (comm->process, "-v");  	fr_process_add_arg (comm->process, "-p"); diff --git a/src/glib-utils.c b/src/glib-utils.c index 9761091..27d4548 100644 --- a/src/glib-utils.c +++ b/src/glib-utils.c @@ -751,7 +751,7 @@ _g_path_get_base_name (const char *path,  		return _g_path_get_file_name (path);  	base_dir_len = strlen (base_dir); -	if (strlen (path) <= base_dir_len) +	if (strlen (path) < base_dir_len)  		return NULL;  	base_path = path + base_dir_len; | 
