commit - b90bacec60916b907fad50d1b0c92c11d5d56c83
commit + 510f0dbf6b829ebf119288dbdcef92d874bbf651
blob - 2b283aec4e562cf3679b142192862eb657c763e8
blob + 30241e2ffb39fdf6a371896fd16df1253a03b301
--- src/cmd/tar.C
+++ src/cmd/tar.C
#define issymlink(lf) ((lf) == LF_SYMLINK1 || (lf) == LF_SYMLINK2)
typedef union {
- uchar data[Tblock];
- struct {
- 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 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];
- /* rest are defined by POSIX's ustar format; see p1003.2b */
- char magic[6]; /* "ustar" */
- char version[2];
- char uname[32];
- char gname[32];
- char devmajor[8];
- char devminor[8];
- char prefix[Maxpfx]; /* if non-null, path= prefix "/" name */
- };
+ /* rest are defined by POSIX's ustar format; see p1003.2b */
+ char magic[6]; /* "ustar" */
+ char version[2];
+ char uname[32];
+ char gname[32];
+ char devmajor[8];
+ char devminor[8];
+ char prefix[Maxpfx]; /* if non-null, path= prefix "/" name */
} Hdr;
int debug;
Hdr *hp = getblke(ar);
if (hp != nil)
- memset(hp->data, 0, Tblock);
+ memset(hp, 0, Tblock);
return hp;
}
{
int n = Tblock;
long i = 0;
- uchar *cp = hp->data;
+ uchar *cp = (uchar*)hp;
memset(hp->chksum, ' ', sizeof hp->chksum);
while (n-- > 0)
hbp = getblke(ar);
blksread = gothowmany(blksleft);
bytes = blksread * Tblock;
- n = read(fd, hbp->data, bytes);
+ n = read(fd, hbp, bytes);
if (n < 0)
sysfatal("error reading %s: %r", file);
/*
* compression and emergency recovery of data.
*/
if (n < Tblock)
- memset(hbp->data + n, 0, bytes - n);
+ memset((char*)hbp + n, 0, bytes - n);
putblkmany(ar, blksread);
}
close(fd);
fname);
blksread = gothowmany(blksleft);
wrbytes = (bytes >= Tblock*blksread? Tblock*blksread: bytes);
- if (fd >= 0 && write(fd, hbp->data, wrbytes) != wrbytes)
+ if (fd >= 0 && write(fd, (char*)hbp, wrbytes) != wrbytes)
sysfatal("write error on %s: %r", fname);
putreadblks(ar, blksread);
bytes -= wrbytes;