Lines Matching full:arch
1 /* $NetBSD: arch.c,v 1.221 2024/07/07 07:50:57 rillig Exp $ */
149 /* "@(#)arch.c 8.2 (Berkeley) 1/2/94" */
150 MAKE_RCSID("$NetBSD: arch.c,v 1.221 2024/07/07 07:50:57 rillig Exp $");
157 typedef struct Arch {
163 } Arch;
169 static int ArchSVR4Entry(Arch *, char *, size_t, FILE *);
193 # define ARMAG "!<arch>\n"
202 ArchFree(Arch *a)
420 FILE *arch;
424 Arch *ar;
432 const Arch *a = ln->datum;
465 arch = ArchFindMember(archive, member, &sarh, "r");
466 if (arch == NULL)
469 fclose(arch);
473 arch = fopen(archive, "r");
474 if (arch == NULL)
477 if (fread(magic, SARMAG, 1, arch) != 1 ||
479 (void)fclose(arch);
490 while (fread(&arh, sizeof arh, 1, arch) == 1) {
512 switch (ArchSVR4Entry(ar, memName, size, arch)) {
539 if (fread(memName, elen, 1, arch) != 1)
542 if (fseek(arch, -(long)elen, SEEK_CUR) != 0)
544 if (DEBUG(ARCH) || DEBUG(MAKE))
560 if (fseek(arch, ((long)size + 1) & ~1, SEEK_CUR) != 0)
564 fclose(arch);
571 fclose(arch);
593 ArchSVR4Entry(Arch *ar, char *inout_name, size_t size, FILE *arch)
604 DEBUG0(ARCH,
616 if (fread(ar->fnametab, size, 1, arch) != 1) {
617 DEBUG0(ARCH, "Reading an SVR4 name table failed\n");
626 DEBUG1(ARCH,
637 DEBUG1(ARCH, "Could not parse SVR4 name %s\n", inout_name);
641 DEBUG2(ARCH, "SVR4 entry offset %s is greater than %lu\n",
646 DEBUG2(ARCH, "Replaced %s with %s\n", inout_name, &ar->fnametab[entry]);
695 FILE *arch;
700 arch = fopen(archive, mode);
701 if (arch == NULL)
704 if (fread(magic, SARMAG, 1, arch) != 1 ||
706 fclose(arch);
714 while (fread(out_arh, sizeof *out_arh, 1, arch) == 1) {
718 fclose(arch);
722 DEBUG5(ARCH, "Reading archive %s member %.*s mtime %.*s\n",
728 if (fseek(arch, -(long)sizeof *out_arh, SEEK_CUR) !=
730 fclose(arch);
733 return arch;
749 fclose(arch);
752 if (fread(ename, elen, 1, arch) != 1) {
753 fclose(arch);
757 if (DEBUG(ARCH) || DEBUG(MAKE))
764 if (fseek(arch,
767 fclose(arch);
770 return arch;
772 if (fseek(arch, -(long)elen, SEEK_CUR) != 0) {
773 fclose(arch);
783 if (fseek(arch, (size + 1) & ~1L, SEEK_CUR) != 0) {
784 fclose(arch);
789 fclose(arch);
932 if (DEBUG(ARCH) || DEBUG(MAKE))
939 if (DEBUG(ARCH) || DEBUG(MAKE))
1023 && memcmp(buf, "!<arch>\n", sizeof buf) == 0;