--- /n/sources/sys/src/cmd/ar.c 2010-01-21 16:16:47.000000000 -0800 +++ ar.c 2011-05-05 03:15:19.000000000 -0700 @@ -827,8 +827,6 @@ Bseek(&b,seek(fd,0,1), 0); len = symdefsize; - if(len&01) - len++; sprint(a.date, "%-12ld", time(0)); sprint(a.uid, "%-6d", 0); sprint(a.gid, "%-6d", 0); @@ -842,6 +840,8 @@ if(HEADER_IO(Bwrite, &b, a)) wrerr(); + if(len&01) + len++; len += Boffset(&b); if (astart) { wrsym(&b, len, astart->sym); @@ -855,7 +855,7 @@ wrsym(&b, len, aend->sym); if(symdefsize&0x01) - Bputc(&b, 0); + Bputc(&b, '\n'); Bterm(&b); } @@ -1121,10 +1121,12 @@ if(HEADER_IO(write, fd, bp->hdr)) return 0; len = bp->size; - if (len & 01) - len++; if (write(fd, bp->member, len) != len) return 0; + if (len & 01) { + if(write(fd, "\n", 1) != 1) + return 0; + } return 1; }