format-patch: introduce helper function last_line_length()
authorJan H. Schönherr <schnhrr@cs.tu-berlin.de>
Thu, 18 Oct 2012 14:43:31 +0000 (16:43 +0200)
committerJunio C Hamano <gitster@pobox.com>
Thu, 18 Oct 2012 21:23:29 +0000 (14:23 -0700)
Currently, an open-coded loop to calculate the length of the last
line of a string buffer is used in multiple places.

Move that code into a function of its own.

Signed-off-by: Jan H. Schönherr <schnhrr@cs.tu-berlin.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
pretty.c

index da758799993b8b4869d01be6375186c1378d7df5..482402d2838ce3a8f8700dea47afc1cdc37f38e3 100644 (file)
--- a/pretty.c
+++ b/pretty.c
@@ -240,6 +240,17 @@ static int has_rfc822_specials(const char *s, int len)
        return 0;
 }
 
+static int last_line_length(struct strbuf *sb)
+{
+       int i;
+
+       /* How many bytes are already used on the last line? */
+       for (i = sb->len - 1; i >= 0; i--)
+               if (sb->buf[i] == '\n')
+                       break;
+       return sb->len - (i + 1);
+}
+
 static void add_rfc822_quoted(struct strbuf *out, const char *s, int len)
 {
        int i;
@@ -275,13 +286,7 @@ static void add_rfc2047(struct strbuf *sb, const char *line, int len,
        static const int max_length = 78; /* per rfc2822 */
        static const int max_encoded_length = 76; /* per rfc2047 */
        int i;
-       int line_len;
-
-       /* How many bytes are already used on the current line? */
-       for (i = sb->len - 1; i >= 0; i--)
-               if (sb->buf[i] == '\n')
-                       break;
-       line_len = sb->len - (i+1);
+       int line_len = last_line_length(sb);
 
        for (i = 0; i < len; i++) {
                int ch = line[i];
@@ -346,7 +351,6 @@ void pp_user_info(const struct pretty_print_context *pp,
        if (pp->fmt == CMIT_FMT_EMAIL) {
                char *name_tail = strchr(line, '<');
                int display_name_length;
-               int final_line;
                if (!name_tail)
                        return;
                while (line < name_tail && isspace(name_tail[-1]))
@@ -361,10 +365,7 @@ void pp_user_info(const struct pretty_print_context *pp,
                        add_rfc2047(sb, quoted.buf, quoted.len, encoding);
                        strbuf_release(&quoted);
                }
-               for (final_line = 0; final_line < sb->len; final_line++)
-                       if (sb->buf[sb->len - final_line - 1] == '\n')
-                               break;
-               if (namelen - display_name_length + final_line > 78) {
+               if (namelen - display_name_length + last_line_length(sb) > 78) {
                        strbuf_addch(sb, '\n');
                        if (!isspace(name_tail[0]))
                                strbuf_addch(sb, ' ');