From dc698bb038756a926aaa529bda1b939eab2c1676 Mon Sep 17 00:00:00 2001
From: Denys Vlasenko <vda.linux@googlemail.com>
Date: Sat, 9 Jan 2010 19:10:49 +0100
Subject: *: make it easier to distinquish "struct tm", pointer to one, etc

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
---
 archival/libunarchive/header_verbose_list.c | 34 ++++++++++++++++++-----------
 archival/rpm.c                              |  6 ++---
 2 files changed, 24 insertions(+), 16 deletions(-)

(limited to 'archival')

diff --git a/archival/libunarchive/header_verbose_list.c b/archival/libunarchive/header_verbose_list.c
index da21a15af..f6f04cfd5 100644
--- a/archival/libunarchive/header_verbose_list.c
+++ b/archival/libunarchive/header_verbose_list.c
@@ -8,7 +8,8 @@
 
 void FAST_FUNC header_verbose_list(const file_header_t *file_header)
 {
-	struct tm *mtime = localtime(&(file_header->mtime));
+	struct tm tm_time;
+	struct tm *ptm = &tm_time; //localtime(&file_header->mtime);
 
 #if ENABLE_FEATURE_TAR_UNAME_GNAME
 	char uid[sizeof(int)*3 + 2];
@@ -16,6 +17,8 @@ void FAST_FUNC header_verbose_list(const file_header_t *file_header)
 	char *user;
 	char *group;
 
+	localtime_r(&file_header->mtime, ptm);
+
 	user = file_header->tar__uname;
 	if (user == NULL) {
 		sprintf(uid, "%u", (unsigned)file_header->uid);
@@ -31,26 +34,31 @@ void FAST_FUNC header_verbose_list(const file_header_t *file_header)
 		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,
+		1900 + ptm->tm_year,
+		1 + ptm->tm_mon,
+		ptm->tm_mday,
+		ptm->tm_hour,
+		ptm->tm_min,
+		ptm->tm_sec,
 		file_header->name);
+
 #else /* !FEATURE_TAR_UNAME_GNAME */
+
+	localtime_r(&file_header->mtime, ptm);
+
 	printf("%s %u/%u %9"OFF_FMT"u %4u-%02u-%02u %02u:%02u:%02u %s",
 		bb_mode_string(file_header->mode),
 		(unsigned)file_header->uid,
 		(unsigned)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,
+		1900 + ptm->tm_year,
+		1 + ptm->tm_mon,
+		ptm->tm_mday,
+		ptm->tm_hour,
+		ptm->tm_min,
+		ptm->tm_sec,
 		file_header->name);
+
 #endif /* FEATURE_TAR_UNAME_GNAME */
 
 	if (file_header->link_target) {
diff --git a/archival/rpm.c b/archival/rpm.c
index cdaf50fa9..6c1e341cd 100644
--- a/archival/rpm.c
+++ b/archival/rpm.c
@@ -145,13 +145,13 @@ int rpm_main(int argc, char **argv)
 			if (func & rpm_query_info) {
 				/* Do the nice printout */
 				time_t bdate_time;
-				struct tm *bdate;
+				struct tm *bdate_ptm;
 				char bdatestring[50];
 				printf("Name        : %-29sRelocations: %s\n", rpm_getstr(TAG_NAME, 0), rpm_getstr(TAG_PREFIXS, 0) ? rpm_getstr(TAG_PREFIXS, 0) : "(not relocateable)");
 				printf("Version     : %-34sVendor: %s\n", rpm_getstr(TAG_VERSION, 0), rpm_getstr(TAG_VENDOR, 0) ? rpm_getstr(TAG_VENDOR, 0) : "(none)");
 				bdate_time = rpm_getint(TAG_BUILDTIME, 0);
-				bdate = localtime((time_t *) &bdate_time);
-				strftime(bdatestring, 50, "%a %d %b %Y %T %Z", bdate);
+				bdate_ptm = localtime(&bdate_time);
+				strftime(bdatestring, 50, "%a %d %b %Y %T %Z", bdate_ptm);
 				printf("Release     : %-30sBuild Date: %s\n", rpm_getstr(TAG_RELEASE, 0), bdatestring);
 				printf("Install date: %-30sBuild Host: %s\n", "(not installed)", rpm_getstr(TAG_BUILDHOST, 0));
 				printf("Group       : %-30sSource RPM: %s\n", rpm_getstr(TAG_GROUP, 0), rpm_getstr(TAG_SOURCERPM, 0));
-- 
cgit v1.2.3