- case LF_SPARSE:
- (void)sprintf(size, "%ld",
- from_oct(1+12, head->header.realsize));
- break;
- default:
- (void)sprintf(size, "%ld", (long)hstat.st_size);
- }
-
- /* Figure out padding and print the whole line. */
- pad = strlen(user) + strlen(group) + strlen(size) + 1;
- if (pad > ugswidth) ugswidth = pad;
-
- name = quote_copy_string(head->header.name);
- if(!name)
- name=head->header.name;
- fprintf(msg_file, "%s %s/%s %*s%s %s %s %.*s",
- modes,
- user,
- group,
- ugswidth - pad,
- "",
- size,
- timestamp+4, timestamp+20,
- sizeof(head->header.name),
- name);
-
- if(name!=head->header.name)
- free(name);
- switch (head->header.linkflag) {
- case LF_SYMLINK:
- name=quote_copy_string(head->header.linkname);
- if(!name)
- name=head->header.linkname;
- fprintf(msg_file, " -> %s\n", name);
- if(name!=head->header.linkname)
- free(name);
- break;
-
- case LF_LINK:
- name=quote_copy_string(head->header.linkname);
- if(!name)
- name=head->header.linkname;
- fprintf(msg_file, " link to %s\n", head->header.linkname);
- if(name!=head->header.linkname)
- free(name);
- break;
-
- default:
- fprintf(msg_file, " unknown file type '%c'\n",
- head->header.linkflag);
- break;
-
- case LF_OLDNORMAL:
- case LF_NORMAL:
- case LF_SPARSE:
- case LF_CHR:
- case LF_BLK:
- case LF_DIR:
- case LF_FIFO:
- case LF_CONTIG:
- case LF_DUMPDIR:
- putc('\n', msg_file);
- break;
-
- case LF_VOLHDR:
- fprintf(msg_file, "--Volume Header--\n");
- break;
-
- case LF_MULTIVOL:
- fprintf(msg_file, "--Continued at byte %ld--\n",from_oct(1+12,head->header.offset));
- break;
-
- case LF_NAMES:
- fprintf(msg_file,"--Mangled file names--\n");
- break;
- }