ref: eeb1d7e7d71dfce49835ee329a7cd4edd25c3587
parent: 92c8eb1f95fae1164758fa93d8b79f4bf436138b
author: cinap_lenrek <cinap_lenrek@gmx.de>
date: Thu Jan 10 22:16:30 EST 2013
mk: fix ar padding problems on 64bit (from eriks amd64mkar patch)
--- a/sys/src/cmd/mk/archive.c
+++ b/sys/src/cmd/mk/archive.c
@@ -60,12 +60,12 @@
if(symlook(name, S_TIME, 0)){/* hoon off and change it in situ */
LSEEK(fd, SARMAG, 0);
- while(read(fd, (char *)&h, sizeof(h)) == sizeof(h)){+ while(read(fd, &h, SAR_HDR) == SAR_HDR){for(i = SARNAME-1; i > 0 && h.name[i] == ' '; i--)
- ;
+ ;
h.name[i+1]=0;
if(strcmp(member, h.name) == 0){- t = SARNAME-sizeof(h); /* ughgghh */
+ t = SARNAME-SAR_HDR; /* ughgghh */
LSEEK(fd, t, 1);
fprint(fd, "%-12ld", time(0));
break;
@@ -101,7 +101,7 @@
}
at = d->mtime;
free(d);
- while(read(fd, (char *)&h, sizeof(h)) == sizeof(h)){+ while(read(fd, &h, SAR_HDR) == SAR_HDR){t = atol(h.date);
if(t >= at) /* new things in old archives confuses mk */
t = at-1;
--
⑨