diff --git a/archival/gunzip.c b/archival/gunzip.c
index 0af6adb..93f7c35 100644
--- a/archival/gunzip.c
+++ b/archival/gunzip.c
@@ -125,14 +125,13 @@
 //static int error_number = 0;
 /* ========================================================================
  * Signal and error handler.
+ */
  
 static void abort_gzip()
 {
 	error_msg("gzip aborted\n");
-//	exit(ERROR);
-	return;
+	exit(ERROR);
 }
-*/
 
 static void make_crc_table()
 {
@@ -918,7 +917,7 @@
 	in_file = l_in_file;
 	out_file = l_out_file;
 
-/*	if (signal(SIGINT, SIG_IGN) != SIG_IGN) {
+	if (signal(SIGINT, SIG_IGN) != SIG_IGN) {
 		(void) signal(SIGINT, (sig_type) abort_gzip);
 	}
 #ifdef SIGTERM
@@ -931,7 +930,7 @@
 		(void) signal(SIGHUP, (sig_type) abort_gzip);
 	}
 #endif
-*/
+
 	/* Allocate all global buffers (for DYN_ALLOC option) */
 	window = xmalloc((size_t)(((2L*WSIZE)+1L)*sizeof(unsigned char)));
 	outcnt = 0;
@@ -1022,7 +1021,6 @@
 {
 	int unzip_pipe[2];
 
-//	signal(SIGCHLD, abort_gzip);
 	if (pipe(unzip_pipe)!=0) {
 		error_msg("pipe error");
 		return(EXIT_FAILURE);
diff --git a/archival/tar.c b/archival/tar.c
index 9be63ce..fb8d844 100644
--- a/archival/tar.c
+++ b/archival/tar.c
@@ -292,12 +292,13 @@
 		status = readTarFile(tarFd, extractFlag, listFlag, tostdoutFlag,
 					verboseFlag, extractList, excludeList);
 		close(tarFd);
-	}
-
 #ifdef BB_FEATURE_TAR_GZIP	
-	gz_close(pid);
-	fclose(comp_file);
+		if (unzipFlag == TRUE) {
+			gz_close(pid);
+			fclose(comp_file);
+		}
 #endif			
+	}
 
 	if (status == TRUE)
 		return EXIT_SUCCESS;
diff --git a/gunzip.c b/gunzip.c
index 0af6adb..93f7c35 100644
--- a/gunzip.c
+++ b/gunzip.c
@@ -125,14 +125,13 @@
 //static int error_number = 0;
 /* ========================================================================
  * Signal and error handler.
+ */
  
 static void abort_gzip()
 {
 	error_msg("gzip aborted\n");
-//	exit(ERROR);
-	return;
+	exit(ERROR);
 }
-*/
 
 static void make_crc_table()
 {
@@ -918,7 +917,7 @@
 	in_file = l_in_file;
 	out_file = l_out_file;
 
-/*	if (signal(SIGINT, SIG_IGN) != SIG_IGN) {
+	if (signal(SIGINT, SIG_IGN) != SIG_IGN) {
 		(void) signal(SIGINT, (sig_type) abort_gzip);
 	}
 #ifdef SIGTERM
@@ -931,7 +930,7 @@
 		(void) signal(SIGHUP, (sig_type) abort_gzip);
 	}
 #endif
-*/
+
 	/* Allocate all global buffers (for DYN_ALLOC option) */
 	window = xmalloc((size_t)(((2L*WSIZE)+1L)*sizeof(unsigned char)));
 	outcnt = 0;
@@ -1022,7 +1021,6 @@
 {
 	int unzip_pipe[2];
 
-//	signal(SIGCHLD, abort_gzip);
 	if (pipe(unzip_pipe)!=0) {
 		error_msg("pipe error");
 		return(EXIT_FAILURE);
diff --git a/tar.c b/tar.c
index 9be63ce..fb8d844 100644
--- a/tar.c
+++ b/tar.c
@@ -292,12 +292,13 @@
 		status = readTarFile(tarFd, extractFlag, listFlag, tostdoutFlag,
 					verboseFlag, extractList, excludeList);
 		close(tarFd);
-	}
-
 #ifdef BB_FEATURE_TAR_GZIP	
-	gz_close(pid);
-	fclose(comp_file);
+		if (unzipFlag == TRUE) {
+			gz_close(pid);
+			fclose(comp_file);
+		}
 #endif			
+	}
 
 	if (status == TRUE)
 		return EXIT_SUCCESS;
