57 lines
1.5 KiB
C
57 lines
1.5 KiB
C
/*
|
|
* Header file for public domain tar (tape archive) program.
|
|
*
|
|
* @(#)tar.h 1.20 86/10/29 Public Domain.
|
|
*
|
|
* Created 25 August 1985 by John Gilmore, ihnp4!hoptoad!gnu.
|
|
*
|
|
* $Id: is_tar.h,v 1.2 2007/02/11 00:41:13 tkojm Exp $ # checkin only
|
|
*/
|
|
|
|
/*
|
|
* Header block on tape.
|
|
*
|
|
* I'm going to use traditional DP naming conventions here.
|
|
* A "block" is a big chunk of stuff that we do I/O on.
|
|
* A "record" is a piece of info that we care about.
|
|
* Typically many "record"s fit into a "block".
|
|
*/
|
|
#define RECORDSIZE 512
|
|
#define NAMSIZ 100
|
|
#define TUNMLEN 32
|
|
#define TGNMLEN 32
|
|
|
|
union record {
|
|
char charptr[RECORDSIZE];
|
|
struct header {
|
|
char name[NAMSIZ];
|
|
char mode[8];
|
|
char uid[8];
|
|
char gid[8];
|
|
char size[12];
|
|
char mtime[12];
|
|
char chksum[8];
|
|
char linkflag;
|
|
char linkname[NAMSIZ];
|
|
char magic[8];
|
|
char uname[TUNMLEN];
|
|
char gname[TGNMLEN];
|
|
char devmajor[8];
|
|
char devminor[8];
|
|
} header;
|
|
};
|
|
|
|
/* The magic field is filled with this if uname and gname are valid. */
|
|
#define TMAGIC "ustar " /* 7 chars and a null */
|
|
|
|
/**
|
|
* @brief Figure out whether a given buffer is a tar archive.
|
|
*
|
|
* @param buf Pointer to the buffer
|
|
* @param nbytes Size of the buffer
|
|
* @return int 0 if the checksum is bad (i.e., probably not a tar archive),
|
|
* 1 for old UNIX tar file,
|
|
* 2 for Unix Std (POSIX) tar file.
|
|
*/
|
|
int is_tar(const unsigned char *buf, unsigned int nbytes);
|