no anon union

This commit is contained in:
rsc 2005-02-11 21:16:01 +00:00
parent b90bacec60
commit 510f0dbf6b

View file

@ -67,8 +67,6 @@ enum {
#define issymlink(lf) ((lf) == LF_SYMLINK1 || (lf) == LF_SYMLINK2) #define issymlink(lf) ((lf) == LF_SYMLINK1 || (lf) == LF_SYMLINK2)
typedef union { typedef union {
uchar data[Tblock];
struct {
char name[Namsiz]; char name[Namsiz];
char mode[8]; char mode[8];
char uid[8]; char uid[8];
@ -87,7 +85,6 @@ typedef union {
char devmajor[8]; char devmajor[8];
char devminor[8]; char devminor[8];
char prefix[Maxpfx]; /* if non-null, path= prefix "/" name */ char prefix[Maxpfx]; /* if non-null, path= prefix "/" name */
};
} Hdr; } Hdr;
int debug; int debug;
@ -200,7 +197,7 @@ getblkz(int ar)
Hdr *hp = getblke(ar); Hdr *hp = getblke(ar);
if (hp != nil) if (hp != nil)
memset(hp->data, 0, Tblock); memset(hp, 0, Tblock);
return hp; return hp;
} }
@ -270,7 +267,7 @@ chksum(Hdr *hp)
{ {
int n = Tblock; int n = Tblock;
long i = 0; long i = 0;
uchar *cp = hp->data; uchar *cp = (uchar*)hp;
memset(hp->chksum, ' ', sizeof hp->chksum); memset(hp->chksum, ' ', sizeof hp->chksum);
while (n-- > 0) while (n-- > 0)
@ -522,7 +519,7 @@ addtoar(int ar, char *file, char *shortf)
hbp = getblke(ar); hbp = getblke(ar);
blksread = gothowmany(blksleft); blksread = gothowmany(blksleft);
bytes = blksread * Tblock; bytes = blksread * Tblock;
n = read(fd, hbp->data, bytes); n = read(fd, hbp, bytes);
if (n < 0) if (n < 0)
sysfatal("error reading %s: %r", file); sysfatal("error reading %s: %r", file);
/* /*
@ -530,7 +527,7 @@ addtoar(int ar, char *file, char *shortf)
* compression and emergency recovery of data. * compression and emergency recovery of data.
*/ */
if (n < Tblock) if (n < Tblock)
memset(hbp->data + n, 0, bytes - n); memset((char*)hbp + n, 0, bytes - n);
putblkmany(ar, blksread); putblkmany(ar, blksread);
} }
close(fd); close(fd);
@ -716,7 +713,7 @@ extract1(int ar, Hdr *hp, char *fname)
fname); fname);
blksread = gothowmany(blksleft); blksread = gothowmany(blksleft);
wrbytes = (bytes >= Tblock*blksread? Tblock*blksread: bytes); 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); sysfatal("write error on %s: %r", fname);
putreadblks(ar, blksread); putreadblks(ar, blksread);
bytes -= wrbytes; bytes -= wrbytes;