/* GNU tar Archive Format description.
Copyright (C) 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
- 2000, 2001, 2003, 2004, 2005 Free Software Foundation, Inc.
+ 2000, 2001, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
/* Solaris extended header */
#define SOLARIS_XHDTYPE 'X'
-\f
-/* Jörg Schilling star header */
+/* J@"org Schilling star header */
struct star_header
{ /* byte offset */
#define SPARSES_IN_STAR_HEADER 4
#define SPARSES_IN_STAR_EXT_HEADER 21
-struct star_in_header {
+struct star_in_header
+{
char fill[345]; /* 0 Everything that is before t_prefix */
char prefix[1]; /* 345 t_name prefix */
char fill2; /* 346 */
char xmagic[4]; /* 508 "tar" */
};
-struct star_ext_header {
+struct star_ext_header
+{
struct sparse sp[SPARSES_IN_STAR_EXT_HEADER];
char isextended;
};
+/* END */
\f
/* tar Header Block, overall structure. */
/* Information about a sparse file. */
struct sp_array
- {
- off_t offset;
- size_t numbytes;
- };
+{
+ off_t offset;
+ size_t numbytes;
+};
struct tar_stat_info
{
char *gname; /* group name of owner */
struct stat stat; /* regular filesystem stat */
+ /* STAT doesn't always have access, data modification, and status
+ change times in a convenient form, so store them separately. */
+ struct timespec atime;
+ struct timespec mtime;
+ struct timespec ctime;
+
off_t archive_file_size; /* Size of file as stored in the archive.
Equals stat.st_size for non-sparse files */
bool is_sparse; /* Is the file sparse */
+ /* For sparse files: */
+ unsigned sparse_major;
+ unsigned sparse_minor;
size_t sparse_map_avail; /* Index to the first unused element in
sparse_map array. Zero if the file is
not sparse */
size_t sparse_map_size; /* Size of the sparse map */
struct sp_array *sparse_map;
+
+ /* For dumpdirs */
+ bool is_dumpdir; /* Is the member a dumpdir? */
+ bool skipped; /* The member contents is already read
+ (for GNUTYPE_DUMPDIR) */
+ char *dumpdir; /* Contents of the dump directory */
};
union block
struct star_in_header star_in_header;
struct star_ext_header star_ext_header;
};
-
-/* End of Format description. */