/* GNU tar Archive Format description.
Copyright (C) 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
- 2000, 2001, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+ 2000, 2001, 2003, 2004, 2005, 2006, 2007 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
- Free Software Foundation; either version 2, or (at your option) any later
+ Free Software Foundation; either version 3, or (at your option) any later
version.
This program is distributed in the hope that it will be useful, but
struct sp_array
{
off_t offset;
- size_t numbytes;
+ off_t numbytes;
+};
+
+struct xheader
+{
+ struct obstack *stk;
+ size_t size;
+ char *buffer;
+ uintmax_t string_length;
};
struct tar_stat_info
size_t sparse_map_size; /* Size of the sparse map */
struct sp_array *sparse_map;
+ /* Extended headers */
+ struct xheader xhdr;
+
/* 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 */
+
+ /* Parent directory, if creating an archive. This is null if the
+ file is at the top level. */
+ struct tar_stat_info *parent;
+
+ /* File descriptor, if creating an archive, and if a directory or a
+ regular file or a contiguous file. This is AT_FDCWD if it is the
+ working directory, which is possible only for a dummy parent node
+ just above the top level. It may be -1 if the file could not be
+ opened. Zero represents an otherwise-uninitialized value;
+ standard input is never used here. */
+ int fd;
};
union block