- if(readRawArHeader(srcFd, newEntry)==FALSE)
- return(FALSE);
-
- nameLength = strcspn(newEntry->name, "/");
+ initialOffset = lseek(srcFd, 0, SEEK_CUR);
+ if (full_read(srcFd, (char *) &rawArHeader, 60) != 60) {
+ lseek(srcFd, initialOffset, SEEK_SET);
+ return(FALSE);
+ }
+ if ((rawArHeader.fmag[0]!='`') || (rawArHeader.fmag[1]!='\n')) {
+ lseek(srcFd, initialOffset, SEEK_SET);
+ return(FALSE);
+ }
+
+ strncpy(entry->name, rawArHeader.name, 16);
+ nameLength=strcspn(entry->name, " \\");
+ entry->name[nameLength]='\0';
+ parse_mode(rawArHeader.mode, &entry->mode);
+ entry->mtime = atoi(rawArHeader.date);
+ entry->uid = atoi(rawArHeader.uid);
+ entry->gid = atoi(rawArHeader.gid);
+ entry->size = (size_t) atoi(rawArHeader.size);
+ entry->offset = initialOffset + (off_t) 60;
+
+ nameLength = strcspn(entry->name, "/");