1/* vi: set sw=4 ts=4: */
2/*
3 * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
4 */
5
6#include "libbb.h"
7#include "unarchive.h"
8
9void FAST_FUNC header_verbose_list(const file_header_t *file_header)
10{
11	struct tm tm_time;
12	struct tm *ptm = &tm_time; //localtime(&file_header->mtime);
13
14#if ENABLE_FEATURE_TAR_UNAME_GNAME
15	char uid[sizeof(int)*3 + 2];
16	/*char gid[sizeof(int)*3 + 2];*/
17	char *user;
18	char *group;
19
20	localtime_r(&file_header->mtime, ptm);
21
22	user = file_header->tar__uname;
23	if (user == NULL) {
24		sprintf(uid, "%u", (unsigned)file_header->uid);
25		user = uid;
26	}
27	group = file_header->tar__gname;
28	if (group == NULL) {
29		/*sprintf(gid, "%u", (unsigned)file_header->gid);*/
30		group = utoa(file_header->gid);
31	}
32	printf("%s %s/%s %9"OFF_FMT"u %4u-%02u-%02u %02u:%02u:%02u %s",
33		bb_mode_string(file_header->mode),
34		user,
35		group,
36		file_header->size,
37		1900 + ptm->tm_year,
38		1 + ptm->tm_mon,
39		ptm->tm_mday,
40		ptm->tm_hour,
41		ptm->tm_min,
42		ptm->tm_sec,
43		file_header->name);
44
45#else /* !FEATURE_TAR_UNAME_GNAME */
46
47	localtime_r(&file_header->mtime, ptm);
48
49	printf("%s %u/%u %9"OFF_FMT"u %4u-%02u-%02u %02u:%02u:%02u %s",
50		bb_mode_string(file_header->mode),
51		(unsigned)file_header->uid,
52		(unsigned)file_header->gid,
53		file_header->size,
54		1900 + ptm->tm_year,
55		1 + ptm->tm_mon,
56		ptm->tm_mday,
57		ptm->tm_hour,
58		ptm->tm_min,
59		ptm->tm_sec,
60		file_header->name);
61
62#endif /* FEATURE_TAR_UNAME_GNAME */
63
64	/* NB: GNU tar shows "->" for symlinks and "link to" for hardlinks */
65	if (file_header->link_target) {
66		printf(" -> %s", file_header->link_target);
67	}
68	bb_putchar('\n');
69}
70