Lines Matching refs:arp
158 static Boolean open_archive(char *filename, register Ar *arp);
159 static void close_archive(register Ar *arp);
160 static Boolean read_archive_dir(register Ar *arp, Name library, char **long_names_table);
161 static void translate_entry(register Ar *arp, Name target, register Property member, char **long_n…
180 int process_long_names_member (register Ar *arp, char **long_names_table, char *filename);
270 open_archive(char *filename, register Ar *arp) in open_archive() argument
277 arp->fd = NULL; in open_archive()
279 if ((fd < 0) || ((arp->fd = fdopen(fd, "r")) == NULL)) { in open_archive()
282 (void) fcntl(fileno(arp->fd), F_SETFD, 1); in open_archive()
284 if (fread(mag_port, AR_PORT_MAGIC_LENGTH, 1, arp->fd) != 1) { in open_archive()
288 arp->type = AR_PORT; in open_archive()
294 int ret = read_member_header(&arp->ar_port, arp->fd, filename); in open_archive()
299 arp->sym_size = arp->num_symbols = arp->sym_begin = 0L; in open_archive()
300 arp->first_ar_mem = ftell(arp->fd); in open_archive()
307 arp->sym_size = arp->num_symbols = arp->sym_begin = 0L; in open_archive()
308 arp->first_ar_mem = ftell(arp->fd) - (long) sizeof (Ar_port); in open_archive()
319 if (IS_EQUALN(arp->ar_port.ar_name, in open_archive()
322 if (sscanf(arp->ar_port.ar_size, in open_archive()
324 &arp->sym_size) != 1) { in open_archive()
327 arp->sym_size += (arp->sym_size & 1); /* round up */ in open_archive()
328 if (fread(buffer, sizeof buffer, 1, arp->fd) != 1) { in open_archive()
331 arp->num_symbols = sgetl(buffer); in open_archive()
332 arp->sym_begin = ftell(arp->fd); in open_archive()
333 arp->first_ar_mem = arp->sym_begin + in open_archive()
334 arp->sym_size - sizeof buffer; in open_archive()
353 close_archive(register Ar *arp) in close_archive() argument
355 if (arp->fd != NULL) { in close_archive()
356 (void) fclose(arp->fd); in close_archive()
377 read_archive_dir(register Ar *arp, Name library, char **long_names_table) in read_archive_dir() argument
395 if (process_long_names_member(arp, long_names_table, library->string_mb) == failed) { in read_archive_dir()
404 if (fseek(arp->fd, arp->first_ar_mem, 0) != 0) { in read_archive_dir()
408 switch (arp->type) { in read_archive_dir()
411 if (fread((char *) &arp->arf_5, sizeof arp->arf_5, 1, arp->fd) in read_archive_dir()
413 if (feof(arp->fd)) { in read_archive_dir()
418 len = sizeof arp->arf_5.arf_name; in read_archive_dir()
419 for (p = member_string, q = arp->arf_5.arf_name; in read_archive_dir()
437 name->stat.time.tv_sec = sgetl(arp->arf_5.arf_date); in read_archive_dir()
448 ptr = sgetl(arp->arf_5.arf_size); in read_archive_dir()
450 if (fseek(arp->fd, ptr, 1) != 0) { in read_archive_dir()
457 if ((fread((char *) &arp->ar_port, in read_archive_dir()
458 sizeof arp->ar_port, in read_archive_dir()
460 arp->fd) != 1) || in read_archive_dir()
461 !IS_EQUALN(arp->ar_port.ar_fmag, in read_archive_dir()
463 sizeof arp->ar_port.ar_fmag)) { in read_archive_dir()
464 if (feof(arp->fd)) { in read_archive_dir()
470 ftell(arp->fd) in read_archive_dir()
474 if (arp->ar_port.ar_name[0] == '/') { in read_archive_dir()
483 sscanf(arp->ar_port.ar_name + 1, in read_archive_dir()
488 q = arp->ar_port.ar_name; in read_archive_dir()
489 len = sizeof arp->ar_port.ar_name; in read_archive_dir()
513 if (sscanf(arp->ar_port.ar_date, "%ld", &date) != 1) { in read_archive_dir()
526 if (sscanf(arp->ar_port.ar_size, "%ld", &ptr) != 1) { in read_archive_dir()
533 if (fseek(arp->fd, ptr, 1) != 0) { in read_archive_dir()
565 process_long_names_member(register Ar *arp, char **long_names_table, char *filename) in process_long_names_member() argument
570 if (fseek(arp->fd, arp->first_ar_mem, 0) != 0) { in process_long_names_member()
578 int ret = read_member_header(ar_member_header, arp->fd, filename); in process_long_names_member()
596 if (fread(*long_names_table, table_size, 1, arp->fd) != 1) { in process_long_names_member()
599 arp->first_ar_mem = ftell(arp->fd); in process_long_names_member()
617 translate_entry(register Ar *arp, Name target, register Property member, char **long_names_table) in translate_entry() argument
634 if (arp->sym_begin == 0L || arp->num_symbols == 0L) { in translate_entry()
640 if (fseek(arp->fd, arp->sym_begin, 0) != 0) { in translate_entry()
645 switch (arp->type) { in translate_entry()
650 for (i = 0; i < arp->num_symbols; i++) { in translate_entry()
651 if (fread((char *) &arp->ars_5, in translate_entry()
652 sizeof arp->ars_5, in translate_entry()
654 arp->fd) != 1) { in translate_entry()
657 if (IS_EQUALN(arp->ars_5.sym_name, in translate_entry()
660 if ((fseek(arp->fd, in translate_entry()
661 sgetl(arp->ars_5.sym_ptr), in translate_entry()
663 (fread((char *) &arp->arf_5, in translate_entry()
664 sizeof arp->arf_5, in translate_entry()
666 arp->fd) != 1)) { in translate_entry()
669 MBSTOWCS(wcs_buffer, arp->arf_5.arf_name); in translate_entry()
673 member_string[sizeof(arp->arf_5.arf_name)] = in translate_entry()
677 target->stat.time.tv_sec = sgetl(arp->arf_5.arf_date); in translate_entry()
684 offs = (ar_port_word *) alloca((int) (arp->num_symbols * AR_PORT_WORD)); in translate_entry()
687 (int) arp->num_symbols, in translate_entry()
688 arp->fd) != arp->num_symbols) { in translate_entry()
692 for(i=0;i<arp->num_symbols;i++) { in translate_entry()
697 strtablen=arp->sym_size-4-(int) (arp->num_symbols * AR_PORT_WORD); in translate_entry()
702 arp->fd) != strtablen) { in translate_entry()
705 offend = &offs[arp->num_symbols]; in translate_entry()
713 if (fseek(arp->fd, in translate_entry()
718 if ((fread((char *) &arp->ar_port, in translate_entry()
719 sizeof arp->ar_port, in translate_entry()
721 arp->fd) != 1) || in translate_entry()
722 !IS_EQUALN(arp->ar_port.ar_fmag, in translate_entry()
724 sizeof arp->ar_port.ar_fmag)) { in translate_entry()
727 if (sscanf(arp->ar_port.ar_date, in translate_entry()
731 arp->ar_port.ar_name, in translate_entry()
735 if (arp->ar_port.ar_name[0] == '/') { in translate_entry()
736 sscanf(arp->ar_port.ar_name + 1, in translate_entry()
742 len = sizeof arp->ar_port.ar_name; in translate_entry()
743 hp = arp->ar_port.ar_name; in translate_entry()
771 if (ferror(arp->fd)) { in translate_entry()