|
|
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.