rd_arhdr now returns 1 if it succeeds, and 0 at end-of-file.
This commit is contained in:
parent
ecf93dbf4f
commit
4219306f55
1 changed files with 15 additions and 3 deletions
|
@ -1,6 +1,7 @@
|
||||||
#include <arch.h>
|
#include <arch.h>
|
||||||
#include "object.h"
|
#include "object.h"
|
||||||
|
|
||||||
|
int
|
||||||
rd_arhdr(fd, arhdr)
|
rd_arhdr(fd, arhdr)
|
||||||
register struct ar_hdr *arhdr;
|
register struct ar_hdr *arhdr;
|
||||||
{
|
{
|
||||||
|
@ -11,9 +12,14 @@ rd_arhdr(fd, arhdr)
|
||||||
char buf[AR_TOTAL];
|
char buf[AR_TOTAL];
|
||||||
register char *c = buf;
|
register char *c = buf;
|
||||||
register char *p = arhdr->ar_name;
|
register char *p = arhdr->ar_name;
|
||||||
register int i = 14;
|
register int i;
|
||||||
|
|
||||||
rd_bytes(fd, c, (long) AR_TOTAL);
|
i = read(fd, c, AR_TOTAL);
|
||||||
|
if (i == 0) return 0;
|
||||||
|
if (i < 0 || i != AR_TOTAL) {
|
||||||
|
rd_fatal();
|
||||||
|
}
|
||||||
|
i = 14;
|
||||||
while (i--) {
|
while (i--) {
|
||||||
*p++ = *c++;
|
*p++ = *c++;
|
||||||
}
|
}
|
||||||
|
@ -24,6 +30,12 @@ rd_arhdr(fd, arhdr)
|
||||||
arhdr->ar_size = get4(c);
|
arhdr->ar_size = get4(c);
|
||||||
}
|
}
|
||||||
#if ! (BYTES_REVERSED || WORDS_REVERSED)
|
#if ! (BYTES_REVERSED || WORDS_REVERSED)
|
||||||
else rd_bytes(fd, (char *) arhdr, (long) AR_TOTAL);
|
else {
|
||||||
|
register int i;
|
||||||
|
i = read(fd, (char *) arhdr, AR_TOTAL);
|
||||||
|
if (i == 0) return 0;
|
||||||
|
if (i < 0 || i != AR_TOTAL) rd_fatal();
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue