get_header_tar: support GNU tar's "base256" encoding function old new delta get_header_tar 1536 1600 +64 header_verbose_list 242 257 +15
		
			
				
	
	
		
			59 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* vi: set sw=4 ts=4: */
 | 
						|
/*
 | 
						|
 * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
 | 
						|
 */
 | 
						|
 | 
						|
#include "libbb.h"
 | 
						|
#include "unarchive.h"
 | 
						|
 | 
						|
void FAST_FUNC header_verbose_list(const file_header_t *file_header)
 | 
						|
{
 | 
						|
	struct tm *mtime = localtime(&(file_header->mtime));
 | 
						|
 | 
						|
#if ENABLE_FEATURE_TAR_UNAME_GNAME
 | 
						|
	char uid[8];
 | 
						|
	char gid[8];
 | 
						|
	char *user = file_header->uname;
 | 
						|
	char *group = file_header->gname;
 | 
						|
 | 
						|
	if (user == NULL) {
 | 
						|
		snprintf(uid, sizeof(uid), "%u", (unsigned)file_header->uid);
 | 
						|
		user = uid;
 | 
						|
	}
 | 
						|
	if (group == NULL) {
 | 
						|
		snprintf(gid, sizeof(gid), "%u", (unsigned)file_header->gid);
 | 
						|
		group = gid;
 | 
						|
	}
 | 
						|
	printf("%s %s/%s %9"OFF_FMT"u %4u-%02u-%02u %02u:%02u:%02u %s",
 | 
						|
		bb_mode_string(file_header->mode),
 | 
						|
		user,
 | 
						|
		group,
 | 
						|
		file_header->size,
 | 
						|
		1900 + mtime->tm_year,
 | 
						|
		1 + mtime->tm_mon,
 | 
						|
		mtime->tm_mday,
 | 
						|
		mtime->tm_hour,
 | 
						|
		mtime->tm_min,
 | 
						|
		mtime->tm_sec,
 | 
						|
		file_header->name);
 | 
						|
#else /* !FEATURE_TAR_UNAME_GNAME */
 | 
						|
	printf("%s %d/%d %9"OFF_FMT"u %4u-%02u-%02u %02u:%02u:%02u %s",
 | 
						|
		bb_mode_string(file_header->mode),
 | 
						|
		file_header->uid,
 | 
						|
		file_header->gid,
 | 
						|
		file_header->size,
 | 
						|
		1900 + mtime->tm_year,
 | 
						|
		1 + mtime->tm_mon,
 | 
						|
		mtime->tm_mday,
 | 
						|
		mtime->tm_hour,
 | 
						|
		mtime->tm_min,
 | 
						|
		mtime->tm_sec,
 | 
						|
		file_header->name);
 | 
						|
#endif /* FEATURE_TAR_UNAME_GNAME */
 | 
						|
 | 
						|
	if (file_header->link_target) {
 | 
						|
		printf(" -> %s", file_header->link_target);
 | 
						|
	}
 | 
						|
	bb_putchar('\n');
 | 
						|
}
 |