|
|
1.1 root 1: #define MAXLINE 256
2: #define MAXNAME 20
3:
4: struct tarbuf {
5: char name[100]; /* strncpy format */
6: char mode[8]; /* octal NUL-terminated */
7: char uid[8]; /* octal */
8: char gid[8]; /* octal */
9: char size[12]; /* octal */
10: char mtime[12]; /* octal */
11: char chksum[8]; /* octal sum of header bytes; set to
12: blanks while computing chksum */
13: char typeflag[1]; /* see below */
14: char linkname[100]; /* strncpy */
15: char magic[6]; /* see below */
16: char version[2]; /* see below */
17: char uname[32]; /* strcpy format */
18: char gname[32]; /* strcpy */
19: char devmajor[8]; /* octal */
20: char devminor[8]; /* octal */
21: char prefix[155]; /* strncpy */
22: char zeropad[12];
23: };
24:
25: #define TSIZE (sizeof (struct tarbuf))
26:
27: #define TMAGIC "ustar" /* ustar\0 */
28: #define TMAGLEN 6
29: #define TVERSION "00" /* strncpy, n == 2 */
30: #define TVERSLEN 2
31:
32: /* typeflag values */
33: #define AREGTYPE '\0' /* historical regular file */
34: #define REGTYPE '0' /* regular file */
35: #define LNKTYPE '1' /* hard link */
36: #define SYMTYPE '2' /* reserved (symbolic link) */
37: #define CHRTYPE '3' /* character special */
38: #define BLKTYPE '4' /* block special */
39: #define DIRTYPE '5' /* directory */
40: #define FIFOTYPE '6' /* fifo special */
41: #define CONTTYPE '7' /* reserved (socket?) */
42:
43: /* mode bits */
44: #define TSUID 04000 /* set user id on execution */
45: #define TSGID 02000 /* set group id on execution */
46: #define TSVTX 01000 /* reserved */
47: #define TUREAD 00400 /* read by owner */
48: #define TUWRITE 00200 /* write by owner */
49: #define TUEXEC 00100 /* exec/search by owner */
50: #define TGREAD 00040 /* read by group */
51: #define TGWRITE 00020 /* write by group */
52: #define TGEXEC 00010 /* exec/search by group */
53: #define TOREAD 00004 /* read by other */
54: #define TOWRITE 00002 /* write by other */
55: #define TOEXEC 00001 /* exec/search by other */
56: #define TMASK 07777 /* mask of all bits (not in POSIX) */
57:
58: #define TNAMEMAX 256
59: #define TLINKMAX 100
60: #define TUGNAMEMAX 31
61:
62: /* incore equivalent of a tar buffer */
63: struct tarhdr {
64: char name[TNAMEMAX + 1];
65: int mode;
66: int uid;
67: int gid;
68: long size;
69: time_t mtime;
70: char typeflag;
71: char linkname[TLINKMAX + 1];
72: char uname[TUGNAMEMAX + 1];
73: char gname[TUGNAMEMAX + 1];
74: int devmajor;
75: int devminor;
76: };
77:
78: /* system dependent */
79: extern void canonsys(char *sys, char cansys[]);
80: extern int lcreat(char *name, int mode);
81:
82: /* chat.c */
83: extern int getline(char line[]);
84: extern long fdcopy(int dfd, int sfd, long size, unsigned long *crc);
85: extern int recvfile(int fd);
86: extern int sendfile(int fd);
87:
88: /* chkperm.c */
89: extern int chkperm(int fd);
90:
91: /* crc.c */
92: extern void crcinit(int *aux);
93: extern unsigned long crcincr(unsigned char *, size_t, unsigned long, int *);
94:
95: /* id.c */
96: extern int gidnum(char *);
97: extern char *gidstr(int);
98: extern int uidnum(char *);
99: extern char *uidstr(int);
100:
101: /* print.c */
102: extern char *prog;
103: extern void openlog(char *logfile);
104: extern void eprintf(char *fmt, ...);
105: extern void lprintf(char *fmt, ...);
106:
107: /* quote.c */
108: void quote(char *qs, char *us);
109: void unquote(char *us, char *qs);
110:
111: /* scanq.c */
112: extern void scanq(char *remsys, void (*func)(char *, int, char *));
113:
114: /* sub.c */
115: struct sub {
116: char *ostr;
117: char *nstr;
118: struct sub *next;
119: };
120:
121: extern void addsub(struct sub **, char *, char *);
122: extern int sub(struct sub **, int, char [], int);
123:
124: /* tarhdr.c */
125: extern int thdrget(struct tarhdr *hdr, struct tarbuf *buf);
126: extern int thdrput(struct tarbuf *buf, struct tarhdr *hdr);
127:
128: /* tryperm.c */
129: extern int tryperm(int fd);
130:
131: /* util.c */
132: extern void *xmalloc(size_t);
133: extern void *xrealloc(void *, size_t);
134: extern char *xstrdup(char *);
135: extern long fpcopy(FILE *, FILE *, long);
136: extern void discard(FILE *, long);
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.