1 /* vi: set sw=4 ts=4: */
2 /*
3  * Licensed under GPLv2 or later, see file LICENSE in this source tree.
4  */
5 #include "libbb.h"
6 #include "bb_archive.h"
7 
header_verbose_list(const file_header_t * file_header)8 void FAST_FUNC header_verbose_list(const file_header_t *file_header)
9 {
10 	struct tm tm_time;
11 	struct tm *ptm = &tm_time; //localtime(&file_header->mtime);
12 	char modestr[12];
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(modestr, 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(modestr, 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