From 8c449c503f4c37f72089a0dc50e00631a22ed12a Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Sat, 29 Jun 2019 02:26:11 +0200 Subject: Add support for reading old style GNU sparse tar file format Signed-off-by: David Oberhollenzer --- include/tar.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'include/tar.h') diff --git a/include/tar.h b/include/tar.h index 4da04f5..6fdb22d 100644 --- a/include/tar.h +++ b/include/tar.h @@ -52,10 +52,26 @@ typedef struct { } tail; } tar_header_t; +typedef struct { + struct { + char offset[12]; + char numbytes[12]; + } sparse[21]; + char isextended; + char padding[7]; +} gnu_sparse_t; + +typedef struct tar_sparse_data_t { + struct tar_sparse_data_t *next; + uint64_t offset; + uint64_t count; +} tar_sparse_data_t; + typedef struct { struct stat sb; char *name; char *link_target; + tar_sparse_data_t *sparse; bool unknown_record; } tar_header_decoded_t; @@ -69,6 +85,7 @@ typedef struct { #define TAR_TYPE_GNU_SLINK 'K' #define TAR_TYPE_GNU_PATH 'L' +#define TAR_TYPE_GNU_SPARSE 'S' #define TAR_TYPE_PAX 'x' -- cgit v1.2.3