Start 1.33.0 development cycle
[oweals/busybox.git] / archival / libarchive / header_verbose_list.c
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
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
13 #if ENABLE_FEATURE_TAR_UNAME_GNAME
14         char uid[sizeof(int)*3 + 2];
15         /*char gid[sizeof(int)*3 + 2];*/
16         char *user;
17         char *group;
18
19         localtime_r(&file_header->mtime, ptm);
20
21         user = file_header->tar__uname;
22         if (user == NULL) {
23                 sprintf(uid, "%u", (unsigned)file_header->uid);
24                 user = uid;
25         }
26         group = file_header->tar__gname;
27         if (group == NULL) {
28                 /*sprintf(gid, "%u", (unsigned)file_header->gid);*/
29                 group = utoa(file_header->gid);
30         }
31         printf("%s %s/%s %9"OFF_FMT"u %4u-%02u-%02u %02u:%02u:%02u %s",
32                 bb_mode_string(file_header->mode),
33                 user,
34                 group,
35                 file_header->size,
36                 1900 + ptm->tm_year,
37                 1 + ptm->tm_mon,
38                 ptm->tm_mday,
39                 ptm->tm_hour,
40                 ptm->tm_min,
41                 ptm->tm_sec,
42                 file_header->name);
43
44 #else /* !FEATURE_TAR_UNAME_GNAME */
45
46         localtime_r(&file_header->mtime, ptm);
47
48         printf("%s %u/%u %9"OFF_FMT"u %4u-%02u-%02u %02u:%02u:%02u %s",
49                 bb_mode_string(file_header->mode),
50                 (unsigned)file_header->uid,
51                 (unsigned)file_header->gid,
52                 file_header->size,
53                 1900 + ptm->tm_year,
54                 1 + ptm->tm_mon,
55                 ptm->tm_mday,
56                 ptm->tm_hour,
57                 ptm->tm_min,
58                 ptm->tm_sec,
59                 file_header->name);
60
61 #endif /* FEATURE_TAR_UNAME_GNAME */
62
63         /* NB: GNU tar shows "->" for symlinks and "link to" for hardlinks */
64         if (file_header->link_target) {
65                 printf(" -> %s", file_header->link_target);
66         }
67         bb_putchar('\n');
68 }