svn commit: trunk/busybox: archival archival/libunarchive coreutils etc...

vda at busybox.net vda at busybox.net
Fri Nov 24 14:53:19 UTC 2006


Author: vda
Date: 2006-11-24 06:53:18 -0800 (Fri, 24 Nov 2006)
New Revision: 16651

Log:
header_verbose_list: stop truncating file size in listing


Modified:
   trunk/busybox/archival/libunarchive/get_header_tar.c
   trunk/busybox/archival/libunarchive/header_verbose_list.c
   trunk/busybox/archival/tar.c
   trunk/busybox/coreutils/dd.c
   trunk/busybox/coreutils/ls.c
   trunk/busybox/include/libbb.h
   trunk/busybox/networking/ftpgetput.c
   trunk/busybox/networking/httpd.c
   trunk/busybox/networking/wget.c
   trunk/busybox/util-linux/fdisk.c


Changeset:
Modified: trunk/busybox/archival/libunarchive/get_header_tar.c
===================================================================
--- trunk/busybox/archival/libunarchive/get_header_tar.c	2006-11-24 14:51:01 UTC (rev 16650)
+++ trunk/busybox/archival/libunarchive/get_header_tar.c	2006-11-24 14:53:18 UTC (rev 16651)
@@ -111,25 +111,6 @@
 		bb_error_msg_and_die("invalid tar header checksum");
 	}
 
-#ifdef CONFIG_FEATURE_TAR_GNU_EXTENSIONS
-	if (longname) {
-		file_header->name = longname;
-		longname = NULL;
-	}
-	else if (linkname) {
-		file_header->name = linkname;
-		linkname = NULL;
-	} else
-#endif
-	{
-		file_header->name = xstrndup(tar.name, sizeof(tar.name));
-		if (tar.prefix[0]) {
-			char *temp = file_header->name;
-			file_header->name = concat_path_file(tar.prefix, temp);
-			free(temp);
-		}
-	}
-
 	/* getOctal trashes subsequent field, therefore we call it
 	 * on fields in reverse order */
 #define GET_OCTAL(a) getOctal((a), sizeof(a))
@@ -148,6 +129,24 @@
 	file_header->mode = 07777 & GET_OCTAL(tar.mode);
 #undef GET_OCTAL
 
+#ifdef CONFIG_FEATURE_TAR_GNU_EXTENSIONS
+	if (longname) {
+		file_header->name = longname;
+		longname = NULL;
+	}
+	else if (linkname) {
+		file_header->name = linkname;
+		linkname = NULL;
+	} else
+#endif
+	{	/* we trash mode[0] here, it's ok */
+		tar.name[sizeof(tar.name)] = '\0';
+		if (tar.prefix[0])
+			file_header->name = concat_path_file(tar.prefix, tar.name);
+		else
+			file_header->name = xstrdup(tar.name);
+	}
+
 	/* Set bits 12-15 of the files mode */
 	switch (tar.typeflag) {
 	/* busybox identifies hard links as being regular files with 0 size and a link name */
@@ -209,10 +208,12 @@
 	/* Strip trailing '/' in directories */
 	/* Must be done after mode is set as '/' is used to check if its a directory */
 	cp = last_char_is(file_header->name, '/');
-	if (cp) *cp = '\0';
 
 	if (archive_handle->filter(archive_handle) == EXIT_SUCCESS) {
 		archive_handle->action_header(archive_handle->file_header);
+		/* Note that we kill the '/' only after action_header() */
+		/* (like GNU tar 1.15.1: verbose mode outputs "dir/dir/") */
+		if (cp) *cp = '\0';
 		archive_handle->flags |= ARCHIVE_EXTRACT_QUIET;
 		archive_handle->action_data(archive_handle);
 		llist_add_to(&(archive_handle->passed), file_header->name);

Modified: trunk/busybox/archival/libunarchive/header_verbose_list.c
===================================================================
--- trunk/busybox/archival/libunarchive/header_verbose_list.c	2006-11-24 14:51:01 UTC (rev 16650)
+++ trunk/busybox/archival/libunarchive/header_verbose_list.c	2006-11-24 14:53:18 UTC (rev 16651)
@@ -3,9 +3,6 @@
  * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
  */
 
-#include <stdio.h>
-#include <string.h>
-#include <time.h>
 #include "libbb.h"
 #include "unarchive.h"
 
@@ -13,11 +10,11 @@
 {
 	struct tm *mtime = localtime(&(file_header->mtime));
 
-	printf("%s %d/%d%10u %4u-%02u-%02u %02u:%02u:%02u %s",
+	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,
-		(unsigned int) file_header->size,
+		file_header->size,
 		1900 + mtime->tm_year,
 		1 + mtime->tm_mon,
 		mtime->tm_mday,

Modified: trunk/busybox/archival/tar.c
===================================================================
--- trunk/busybox/archival/tar.c	2006-11-24 14:51:01 UTC (rev 16650)
+++ trunk/busybox/archival/tar.c	2006-11-24 14:53:18 UTC (rev 16651)
@@ -563,9 +563,9 @@
 	archive_handle->seek = seek_by_read;
 
 	/* do the decompression, and cleanup */
-	if (xread_char(archive_handle->src_fd) != 0x1f ||
-		xread_char(archive_handle->src_fd) != 0x9d)
-	{
+	if (xread_char(archive_handle->src_fd) != 0x1f
+	 || xread_char(archive_handle->src_fd) != 0x9d
+	) {
 		bb_error_msg_and_die("invalid magic");
 	}
 

Modified: trunk/busybox/coreutils/dd.c
===================================================================
--- trunk/busybox/coreutils/dd.c	2006-11-24 14:51:01 UTC (rev 16650)
+++ trunk/busybox/coreutils/dd.c	2006-11-24 14:53:18 UTC (rev 16651)
@@ -29,8 +29,8 @@
 
 static void dd_output_status(int ATTRIBUTE_UNUSED cur_signal)
 {
-	fprintf(stderr, "%"OFF_FMT"+%"OFF_FMT" records in\n"
-			"%"OFF_FMT"+%"OFF_FMT" records out\n",
+	fprintf(stderr, "%"OFF_FMT"d+%"OFF_FMT"d records in\n"
+			"%"OFF_FMT"d+%"OFF_FMT"d records out\n",
 			in_full, in_part,
 			out_full, out_part);
 }

Modified: trunk/busybox/coreutils/ls.c
===================================================================
--- trunk/busybox/coreutils/ls.c	2006-11-24 14:51:01 UTC (rev 16650)
+++ trunk/busybox/coreutils/ls.c	2006-11-24 14:53:18 UTC (rev 16651)
@@ -574,7 +574,7 @@
 			column += printf("%7ld ", (long) dn->dstat.st_ino);
 			break;
 		case LIST_BLOCKS:
-			column += printf("%4"OFF_FMT" ", (off_t) dn->dstat.st_blocks >> 1);
+			column += printf("%4"OFF_FMT"d ", (off_t) dn->dstat.st_blocks >> 1);
 			break;
 		case LIST_MODEBITS:
 			column += printf("%-10s ", (char *) bb_mode_string(dn->dstat.st_mode));
@@ -604,7 +604,7 @@
 					column += printf("%9s ",
 						make_human_readable_str(dn->dstat.st_size, 1, 0));
 				} else {
-					column += printf("%9"OFF_FMT" ", (off_t) dn->dstat.st_size);
+					column += printf("%9"OFF_FMT"d ", (off_t) dn->dstat.st_size);
 				}
 			}
 			break;

Modified: trunk/busybox/include/libbb.h
===================================================================
--- trunk/busybox/include/libbb.h	2006-11-24 14:51:01 UTC (rev 16650)
+++ trunk/busybox/include/libbb.h	2006-11-24 14:53:18 UTC (rev 16651)
@@ -88,13 +88,14 @@
 #  define STRTOOFF strtol
 #  define SAFE_STRTOOFF safe_strtol
 #  define XSTRTOUOFF xstrtoul
-#  define OFF_FMT "ld"
+/* usage: printf("size: %"OFF_FMT"d (%"OFF_FMT"x)\n", sz, sz); */
+#  define OFF_FMT "l"
 # else
 /* "long" is too short, need "long long" */
 #  define STRTOOFF strtoll
 #  define SAFE_STRTOOFF safe_strtoll
 #  define XSTRTOUOFF xstrtoull
-#  define OFF_FMT "lld"
+#  define OFF_FMT "ll"
 # endif
 #else
 # if 0 /* #if UINT_MAX == 0xffffffff */
@@ -103,12 +104,12 @@
 #  define STRTOOFF strtol
 #  define SAFE_STRTOOFF safe_strtoi
 #  define XSTRTOUOFF xstrtou
-#  define OFF_FMT "d"
+#  define OFF_FMT ""
 # else
 #  define STRTOOFF strtol
 #  define SAFE_STRTOOFF safe_strtol
 #  define XSTRTOUOFF xstrtoul
-#  define OFF_FMT "ld"
+#  define OFF_FMT "l"
 # endif
 #endif
 /* scary. better ideas? (but do *test* them first!) */
@@ -703,7 +704,7 @@
 #define RB_POWER_OFF   0x4321fedc
 #endif
 
-// Make sure we call functions instead of macros.
+/* Make sure we call functions instead of macros.  */
 #undef isalnum
 #undef isalpha
 #undef isascii

Modified: trunk/busybox/networking/ftpgetput.c
===================================================================
--- trunk/busybox/networking/ftpgetput.c	2006-11-24 14:51:01 UTC (rev 16650)
+++ trunk/busybox/networking/ftpgetput.c	2006-11-24 14:53:18 UTC (rev 16651)
@@ -149,7 +149,7 @@
 	}
 
 	if (do_continue) {
-		sprintf(buf, "REST %"OFF_FMT, beg_range);
+		sprintf(buf, "REST %"OFF_FMT"d", beg_range);
 		if (ftpcmd(buf, NULL, control_stream, buf) != 350) {
 			do_continue = 0;
 		} else {

Modified: trunk/busybox/networking/httpd.c
===================================================================
--- trunk/busybox/networking/httpd.c	2006-11-24 14:51:01 UTC (rev 16650)
+++ trunk/busybox/networking/httpd.c	2006-11-24 14:53:18 UTC (rev 16651)
@@ -889,8 +889,8 @@
 
 	if (config->ContentLength != -1) {    /* file */
 		strftime(timeStr, sizeof(timeStr), RFC1123FMT, gmtime(&config->last_mod));
-		len += sprintf(buf+len, "Last-Modified: %s\r\n%s %"OFF_FMT"\r\n",
-				timeStr, "Content-length:", (off_t) config->ContentLength);
+		len += sprintf(buf+len, "Last-Modified: %s\r\n%s %"OFF_FMT"d\r\n",
+			timeStr, "Content-length:", config->ContentLength);
 	}
 	strcat(buf, "\r\n");
 	len += 2;

Modified: trunk/busybox/networking/wget.c
===================================================================
--- trunk/busybox/networking/wget.c	2006-11-24 14:51:01 UTC (rev 16650)
+++ trunk/busybox/networking/wget.c	2006-11-24 14:53:18 UTC (rev 16651)
@@ -287,7 +287,7 @@
 #endif
 
 			if (beg_range)
-				fprintf(sfp, "Range: bytes=%"OFF_FMT"-\r\n", beg_range);
+				fprintf(sfp, "Range: bytes=%"OFF_FMT"d-\r\n", beg_range);
 #if ENABLE_FEATURE_WGET_LONG_OPTIONS
 			if (extra_headers)
 				fputs(extra_headers, sfp);
@@ -431,7 +431,7 @@
 		dfp = open_socket(&s_in);
 
 		if (beg_range) {
-			sprintf(buf, "REST %"OFF_FMT, beg_range);
+			sprintf(buf, "REST %"OFF_FMT"d", beg_range);
 			if (ftpcmd(buf, NULL, sfp, buf) == 350)
 				content_len -= beg_range;
 		}

Modified: trunk/busybox/util-linux/fdisk.c
===================================================================
--- trunk/busybox/util-linux/fdisk.c	2006-11-24 14:51:01 UTC (rev 16650)
+++ trunk/busybox/util-linux/fdisk.c	2006-11-24 14:53:18 UTC (rev 16651)
@@ -2277,7 +2277,7 @@
 		if (start > limit)
 			break;
 		if (start >= temp+units_per_sector && num_read) {
-			printf(_("Sector %"OFF_FMT" is already allocated\n"), temp);
+			printf(_("Sector %"OFF_FMT"d is already allocated\n"), temp);
 			temp = start;
 			num_read = 0;
 		}




More information about the busybox-cvs mailing list