[git commit master 1/1] more: fix tabs handling

Denys Vlasenko vda.linux at googlemail.com
Mon Mar 7 01:01:52 UTC 2011


commit: http://git.busybox.net/busybox/commit/?id=82e785cf8cc6e78dd84adc1aee298dfa827a019c
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

function                                             old     new   delta
more_main                                            837     829      -8

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 util-linux/more.c |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/util-linux/more.c b/util-linux/more.c
index c424a0e..7160b8b 100644
--- a/util-linux/more.c
+++ b/util-linux/more.c
@@ -113,9 +113,12 @@ int more_main(int argc UNUSED_PARAM, char **argv)
  loop_top:
 			if (input != 'r' && please_display_more_prompt) {
 				len = printf("--More-- ");
-				if (st.st_size > 0) {
+				if (st.st_size != 0) {
+					uoff_t d = (uoff_t)st.st_size / 100;
+					if (d == 0)
+						d = 1;
 					len += printf("(%u%% of %"OFF_FMT"u bytes)",
-						(int) (ftello(file)*100 / st.st_size),
+						(int) ((uoff_t)ftello(file) / d),
 						st.st_size);
 				}
 				fflush_all();
@@ -159,7 +162,7 @@ int more_main(int argc UNUSED_PARAM, char **argv)
 			/* Crudely convert tabs into spaces, which are
 			 * a bajillion times easier to deal with. */
 			if (c == '\t') {
-				spaces = CONVERTED_TAB_SIZE - 1;
+				spaces = ((unsigned)~len) % CONVERTED_TAB_SIZE;
 				c = ' ';
 			}
 
-- 
1.7.3.4



More information about the busybox-cvs mailing list