- for (all = !*argv; get_header(afd);) {
- if (all || files(argv)) {
- if (options & AR_V) {
- (void)strmode(chdr.mode, buf);
- (void)printf("%s %6d/%-6d %8ld ",
- buf + 1, chdr.uid, chdr.gid, chdr.size);
- tp = localtime(&chdr.date);
- (void)strftime(buf, sizeof(buf),
- "%b %e %H:%M %Y", tp);
- (void)printf("%s %s\n", buf, chdr.name);
- } else
- (void)printf("%s\n", chdr.name);
- if (!all && !*argv)
- break;
- }
- SKIP(afd, chdr.size, archive);
+ for (all = !*argv; get_arobj(afd);) {
+ if (all)
+ file = chdr.name;
+ else if (!(file = files(argv)))
+ goto next;
+ if (options & AR_V) {
+ (void)strmode(chdr.mode, buf);
+ (void)printf("%s %6d/%-6d %8qd ",
+ buf + 1, chdr.uid, chdr.gid, chdr.size);
+ tp = localtime(&chdr.date);
+ (void)strftime(buf, sizeof(buf), "%b %e %H:%M %Y", tp);
+ (void)printf("%s %s\n", buf, file);
+ } else
+ (void)printf("%s\n", file);
+ if (!all && !*argv)
+ break;
+next: skip_arobj(afd);