1995-02-18 09:27:10 +08:00
|
|
|
/* Extended tar format from POSIX.1.
|
2024-01-02 02:12:26 +08:00
|
|
|
Copyright (C) 1992-2024 Free Software Foundation, Inc.
|
1996-11-15 12:08:00 +08:00
|
|
|
This file is part of the GNU C Library.
|
1995-02-18 09:27:10 +08:00
|
|
|
|
1996-11-15 12:08:00 +08:00
|
|
|
The GNU C Library is free software; you can redistribute it and/or
|
2001-07-06 12:58:11 +08:00
|
|
|
modify it under the terms of the GNU Lesser General Public
|
|
|
|
License as published by the Free Software Foundation; either
|
|
|
|
version 2.1 of the License, or (at your option) any later version.
|
1995-02-18 09:27:10 +08:00
|
|
|
|
1996-11-15 12:08:00 +08:00
|
|
|
The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
2001-07-06 12:58:11 +08:00
|
|
|
Lesser General Public License for more details.
|
1995-02-18 09:27:10 +08:00
|
|
|
|
2001-07-06 12:58:11 +08:00
|
|
|
You should have received a copy of the GNU Lesser General Public
|
2012-02-10 07:18:22 +08:00
|
|
|
License along with the GNU C Library; if not, see
|
Prefer https to http for gnu.org and fsf.org URLs
Also, change sources.redhat.com to sourceware.org.
This patch was automatically generated by running the following shell
script, which uses GNU sed, and which avoids modifying files imported
from upstream:
sed -ri '
s,(http|ftp)(://(.*\.)?(gnu|fsf|sourceware)\.org($|[^.]|\.[^a-z])),https\2,g
s,(http|ftp)(://(.*\.)?)sources\.redhat\.com($|[^.]|\.[^a-z]),https\2sourceware.org\4,g
' \
$(find $(git ls-files) -prune -type f \
! -name '*.po' \
! -name 'ChangeLog*' \
! -path COPYING ! -path COPYING.LIB \
! -path manual/fdl-1.3.texi ! -path manual/lgpl-2.1.texi \
! -path manual/texinfo.tex ! -path scripts/config.guess \
! -path scripts/config.sub ! -path scripts/install-sh \
! -path scripts/mkinstalldirs ! -path scripts/move-if-change \
! -path INSTALL ! -path locale/programs/charmap-kw.h \
! -path po/libc.pot ! -path sysdeps/gnu/errlist.c \
! '(' -name configure \
-execdir test -f configure.ac -o -f configure.in ';' ')' \
! '(' -name preconfigure \
-execdir test -f preconfigure.ac ';' ')' \
-print)
and then by running 'make dist-prepare' to regenerate files built
from the altered files, and then executing the following to cleanup:
chmod a+x sysdeps/unix/sysv/linux/riscv/configure
# Omit irrelevant whitespace and comment-only changes,
# perhaps from a slightly-different Autoconf version.
git checkout -f \
sysdeps/csky/configure \
sysdeps/hppa/configure \
sysdeps/riscv/configure \
sysdeps/unix/sysv/linux/csky/configure
# Omit changes that caused a pre-commit check to fail like this:
# remote: *** error: sysdeps/powerpc/powerpc64/ppc-mcount.S: trailing lines
git checkout -f \
sysdeps/powerpc/powerpc64/ppc-mcount.S \
sysdeps/unix/sysv/linux/s390/s390-64/syscall.S
# Omit change that caused a pre-commit check to fail like this:
# remote: *** error: sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S: last line does not end in newline
git checkout -f sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S
2019-09-07 13:40:42 +08:00
|
|
|
<https://www.gnu.org/licenses/>. */
|
1995-02-18 09:27:10 +08:00
|
|
|
|
|
|
|
#ifndef _TAR_H
|
|
|
|
#define _TAR_H 1
|
|
|
|
|
2012-02-26 12:18:39 +08:00
|
|
|
#include <features.h>
|
|
|
|
|
|
|
|
|
1995-02-18 09:27:10 +08:00
|
|
|
/* A tar archive consists of 512-byte blocks.
|
|
|
|
Each file in the archive has a header block followed by 0+ data blocks.
|
|
|
|
Two blocks of NUL bytes indicate the end of the archive. */
|
|
|
|
|
|
|
|
/* The fields of header blocks:
|
|
|
|
All strings are stored as ISO 646 (approximately ASCII) strings.
|
|
|
|
|
|
|
|
Fields are numeric unless otherwise noted below; numbers are ISO 646
|
|
|
|
representations of octal numbers, with leading zeros as needed.
|
|
|
|
|
|
|
|
linkname is only valid when typeflag==LNKTYPE. It doesn't use prefix;
|
|
|
|
files that are links to pathnames >100 chars long can not be stored
|
|
|
|
in a tar archive.
|
|
|
|
|
|
|
|
If typeflag=={LNKTYPE,SYMTYPE,DIRTYPE} then size must be 0.
|
|
|
|
|
|
|
|
devmajor and devminor are only valid for typeflag=={BLKTYPE,CHRTYPE}.
|
|
|
|
|
|
|
|
chksum contains the sum of all 512 bytes in the header block,
|
|
|
|
treating each byte as an 8-bit unsigned value and treating the
|
|
|
|
8 bytes of chksum as blank characters.
|
|
|
|
|
|
|
|
uname and gname are used in preference to uid and gid, if those
|
|
|
|
names exist locally.
|
|
|
|
|
|
|
|
Field Name Byte Offset Length in Bytes Field Type
|
|
|
|
name 0 100 NUL-terminated if NUL fits
|
|
|
|
mode 100 8
|
|
|
|
uid 108 8
|
|
|
|
gid 116 8
|
|
|
|
size 124 12
|
|
|
|
mtime 136 12
|
|
|
|
chksum 148 8
|
|
|
|
typeflag 156 1 see below
|
|
|
|
linkname 157 100 NUL-terminated if NUL fits
|
|
|
|
magic 257 6 must be TMAGIC (NUL term.)
|
|
|
|
version 263 2 must be TVERSION
|
|
|
|
uname 265 32 NUL-terminated
|
|
|
|
gname 297 32 NUL-terminated
|
|
|
|
devmajor 329 8
|
|
|
|
devminor 337 8
|
|
|
|
prefix 345 155 NUL-terminated if NUL fits
|
|
|
|
|
|
|
|
If the first character of prefix is '\0', the file name is name;
|
|
|
|
otherwise, it is prefix/name. Files whose pathnames don't fit in that
|
|
|
|
length can not be stored in a tar archive. */
|
|
|
|
|
|
|
|
/* The bits in mode: */
|
|
|
|
#define TSUID 04000
|
|
|
|
#define TSGID 02000
|
2014-05-24 04:37:40 +08:00
|
|
|
#if defined __USE_XOPEN || !defined __USE_XOPEN2K
|
2012-02-26 12:18:39 +08:00
|
|
|
# define TSVTX 01000
|
|
|
|
#endif
|
1995-02-18 09:27:10 +08:00
|
|
|
#define TUREAD 00400
|
|
|
|
#define TUWRITE 00200
|
|
|
|
#define TUEXEC 00100
|
|
|
|
#define TGREAD 00040
|
|
|
|
#define TGWRITE 00020
|
|
|
|
#define TGEXEC 00010
|
|
|
|
#define TOREAD 00004
|
|
|
|
#define TOWRITE 00002
|
|
|
|
#define TOEXEC 00001
|
|
|
|
|
|
|
|
/* The values for typeflag:
|
|
|
|
Values 'A'-'Z' are reserved for custom implementations.
|
|
|
|
All other values are reserved for future POSIX.1 revisions. */
|
|
|
|
|
|
|
|
#define REGTYPE '0' /* Regular file (preferred code). */
|
|
|
|
#define AREGTYPE '\0' /* Regular file (alternate code). */
|
|
|
|
#define LNKTYPE '1' /* Hard link. */
|
|
|
|
#define SYMTYPE '2' /* Symbolic link (hard if not supported). */
|
|
|
|
#define CHRTYPE '3' /* Character special. */
|
|
|
|
#define BLKTYPE '4' /* Block special. */
|
|
|
|
#define DIRTYPE '5' /* Directory. */
|
|
|
|
#define FIFOTYPE '6' /* Named pipe. */
|
|
|
|
#define CONTTYPE '7' /* Contiguous file */
|
|
|
|
/* (regular file if not supported). */
|
|
|
|
|
|
|
|
/* Contents of magic field and its length. */
|
|
|
|
#define TMAGIC "ustar"
|
|
|
|
#define TMAGLEN 6
|
|
|
|
|
|
|
|
/* Contents of the version field and its length. */
|
|
|
|
#define TVERSION "00"
|
|
|
|
#define TVERSLEN 2
|
|
|
|
|
|
|
|
#endif /* tar.h */
|