diff options
| -rw-r--r-- | src/fr-command-7z.c | 10 | 
1 files changed, 8 insertions, 2 deletions
| diff --git a/src/fr-command-7z.c b/src/fr-command-7z.c index a7d032e..f2d6020 100644 --- a/src/fr-command-7z.c +++ b/src/fr-command-7z.c @@ -39,7 +39,8 @@  static void fr_command_7z_class_init  (FrCommand7zClass *class);  static void fr_command_7z_init        (FrCommand        *afile);  static void fr_command_7z_finalize    (GObject          *object); -static gboolean spd_support; +static gboolean spd_support = FALSE; +static gboolean unexpected_end_of_archive = FALSE;  /* Parent Class */ @@ -125,6 +126,9 @@ list__process_line (char     *line,  			comm->multi_volume = (strcmp (fields[1], "+") == 0);  			g_strfreev (fields);  		} +		else if (strncmp (line, "Unexpected end of archive", 25) == 0)  {  +			unexpected_end_of_archive = TRUE; +		}  		return;  	} @@ -486,6 +490,8 @@ fr_command_7z_extract (FrCommand  *comm,  			if (!g_str_has_prefix (scan->data, "@"))  				fr_process_add_arg (comm->process, scan->data); +	if (unexpected_end_of_archive) fr_process_set_ignore_error (comm->process, TRUE); +  	fr_process_end_command (comm->process);  } @@ -534,7 +540,7 @@ fr_command_7z_handle_error (FrCommand   *comm,  		return;  	} -	if (error->status <= 1) { +	if ((error->status <= 1) || (unexpected_end_of_archive)) {  		error->type = FR_PROC_ERROR_NONE;  	}  	else { | 
