busybox/archival/libarchive/header_verbose_list.c
<<
>>
Prefs
   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
   8void 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}
  69