I'm working on bigger simplifications for less's string formatting, but
this is a good start. We've removed the off_t aliases for linenums and
positions, so we now have two identical sets of off_t formatting and
appending functions. The below diff unifies them.

As you can see, there is more cleanup to be done.

Thoughts?


Index: less.h
===================================================================
RCS file: /cvs/src/usr.bin/less/less.h,v
retrieving revision 1.21
diff -u -p -r1.21 less.h
--- less.h      12 Jan 2016 17:48:04 -0000      1.21
+++ less.h      13 Jan 2016 04:43:15 -0000
@@ -205,6 +205,5 @@ struct textlist {
 #include "funcs.h"
 
 /* Functions not included in funcs.h */
-void postoa(off_t, char *, size_t);
-void linenumtoa(off_t, char *, size_t);
+void offttoa(off_t, char *, size_t);
 void inttoa(int, char *, size_t);
Index: line.c
===================================================================
RCS file: /cvs/src/usr.bin/less/line.c,v
retrieving revision 1.16
diff -u -p -r1.16 line.c
--- line.c      12 Jan 2016 17:48:04 -0000      1.16
+++ line.c      13 Jan 2016 04:43:15 -0000
@@ -178,7 +178,7 @@ plinenum(off_t pos)
                char buf[INT_STRLEN_BOUND(pos) + 2];
                int n;
 
-               linenumtoa(linenum, buf, sizeof (buf));
+               offttoa(linenum, buf, sizeof(buf));
                n = strlen(buf);
                if (n < MIN_LINENUM_WIDTH)
                        n = MIN_LINENUM_WIDTH;
Index: output.c
===================================================================
RCS file: /cvs/src/usr.bin/less/output.c,v
retrieving revision 1.14
diff -u -p -r1.14 output.c
--- output.c    12 Jan 2016 17:48:04 -0000      1.14
+++ output.c    13 Jan 2016 04:43:15 -0000
@@ -148,8 +148,7 @@ funcname(type num, char *buf, size_t len
        (void) strlcpy(buf, s, len);            \
 }
 
-TYPE_TO_A_FUNC(postoa, off_t)
-TYPE_TO_A_FUNC(linenumtoa, off_t)
+TYPE_TO_A_FUNC(offttoa, off_t)
 TYPE_TO_A_FUNC(inttoa, int)
 
 /*
@@ -173,7 +172,7 @@ iprint_linenum(off_t num)
 {
        char buf[INT_STRLEN_BOUND(num)];
 
-       linenumtoa(num, buf, sizeof (buf));
+       offttoa(num, buf, sizeof(buf));
        putstr(buf);
        return (strlen(buf));
 }
Index: prompt.c
===================================================================
RCS file: /cvs/src/usr.bin/less/prompt.c,v
retrieving revision 1.19
diff -u -p -r1.19 prompt.c
--- prompt.c    12 Jan 2016 23:01:23 -0000      1.19
+++ prompt.c    13 Jan 2016 04:43:15 -0000
@@ -116,23 +116,11 @@ ap_char(char c)
  * Append a off_t (as a decimal integer) to the end of the message.
  */
 static void
-ap_pos(off_t pos)
+ap_off_t(off_t pos)
 {
        char buf[INT_STRLEN_BOUND(pos) + 2];
 
-       postoa(pos, buf, sizeof buf);
-       ap_str(buf);
-}
-
-/*
- * Append a line number to the end of the message.
- */
-static void
-ap_linenum(off_t linenum)
-{
-       char buf[INT_STRLEN_BOUND(linenum) + 2];
-
-       linenumtoa(linenum, buf, sizeof buf);
+       offttoa(pos, buf, sizeof(buf));
        ap_str(buf);
 }
 
@@ -245,7 +233,7 @@ protochar(int c, int where)
        case 'b':       /* Current byte offset */
                pos = curr_byte(where);
                if (pos != -1)
-                       ap_pos(pos);
+                       ap_off_t(pos);
                else
                        ap_quest();
                break;
@@ -255,7 +243,7 @@ protochar(int c, int where)
        case 'd':       /* Current page number */
                linenum = currline(where);
                if (linenum > 0 && sc_height > 1)
-                       ap_linenum(PAGE_NUM(linenum));
+                       ap_off_t(PAGE_NUM(linenum));
                else
                        ap_quest();
                break;
@@ -266,13 +254,13 @@ protochar(int c, int where)
                        ap_quest();
                } else if (len == 0) {
                        /* An empty file has no pages. */
-                       ap_linenum(0);
+                       ap_off_t(0);
                } else {
                        linenum = find_linenum(len - 1);
                        if (linenum <= 0)
                                ap_quest();
                        else
-                               ap_linenum(PAGE_NUM(linenum));
+                               ap_off_t(PAGE_NUM(linenum));
                }
                break;
        case 'E':       /* Editor name */
@@ -293,7 +281,7 @@ protochar(int c, int where)
        case 'l':       /* Current line number */
                linenum = currline(where);
                if (linenum != 0)
-                       ap_linenum(linenum);
+                       ap_off_t(linenum);
                else
                        ap_quest();
                break;
@@ -303,7 +291,7 @@ protochar(int c, int where)
                    (linenum = find_linenum(len)) <= 0)
                        ap_quest();
                else
-                       ap_linenum(linenum-1);
+                       ap_off_t(linenum-1);
                break;
        case 'm':       /* Number of files */
                n = ntags();
@@ -333,7 +321,7 @@ protochar(int c, int where)
        case 'B':
                len = ch_length();
                if (len != -1)
-                       ap_pos(len);
+                       ap_off_t(len);
                else
                        ap_quest();
                break;

Reply via email to