summaryrefslogtreecommitdiffstats
path: root/decode.cc
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--decode.cc11
1 files changed, 4 insertions, 7 deletions
diff --git a/decode.cc b/decode.cc
index bc1794d..6c7d0ff 100644
--- a/decode.cc
+++ b/decode.cc
@@ -20,14 +20,9 @@
#include <algorithm>
#include <cctype>
#include <cerrno>
-#include <climits>
#include <cstdio>
#include <cstdlib>
-#include <cstring>
-#include <string>
-#include <vector>
-#include <pthread.h> // for tarlz.h
-#include <stdint.h>
+#include <stdint.h> // for lzlib.h
#include <unistd.h>
#include <utime.h>
#include <sys/stat.h>
@@ -37,8 +32,8 @@
#endif
#include <lzlib.h>
-#include "arg_parser.h"
#include "tarlz.h"
+#include "arg_parser.h"
#include "lzip_index.h"
#include "archive_reader.h"
@@ -454,10 +449,12 @@ int decode( const Cl_options & cl_opts )
extended.fill_from_ustar( header ); // copy metadata from header
+ // members without name are skipped except when listing
if( check_skip_filename( cl_opts, name_pending, extended.path().c_str() ) )
retval = skip_member( ar, extended );
else if( cl_opts.program_mode == m_list )
retval = list_member( ar, extended, header );
+ else if( extended.path().empty() ) retval = skip_member( ar, extended );
else if( cl_opts.program_mode == m_diff )
retval = compare_member( cl_opts, ar, extended, header );
else retval = extract_member( cl_opts, ar, extended, header );