Merge branch 'js/maint-cover-letter-non-ascii' into maint
authorJunio C Hamano <gitster@pobox.com>
Wed, 26 Aug 2009 19:05:57 +0000 (12:05 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 26 Aug 2009 19:05:57 +0000 (12:05 -0700)
* js/maint-cover-letter-non-ascii:
Correctly mark cover letters' encodings if they are not pure ASCII
Expose the has_non_ascii() function

builtin-log.c
commit.h
log-tree.c
pretty.c
index 30358166e64c5745e979e6231a5de5e0e5111119..5f3133079d868922d37d95143d3ecac808084bcf 100644 (file)
@@ -664,6 +664,10 @@ static void make_cover_letter(struct rev_info *rev, int use_stdout,
        log_write_email_headers(rev, head, &subject_start, &extra_headers,
                                &need_8bit_cte);
 
+       for (i = 0; !need_8bit_cte && i < nr; i++)
+               if (has_non_ascii(list[i]->buffer))
+                       need_8bit_cte = 1;
+
        msg = body;
        pp_user_info(NULL, CMIT_FMT_EMAIL, &sb, committer, DATE_RFC2822,
                     encoding);
index ba9f63813eba004ae409eba8741266a074161239..4886544b631bd6b79ad8410fa369e41975c0ff23 100644 (file)
--- a/commit.h
+++ b/commit.h
@@ -64,6 +64,7 @@ enum cmit_fmt {
 };
 
 extern int non_ascii(int);
+extern int has_non_ascii(const char *text);
 struct rev_info; /* in revision.h, it circularly uses enum cmit_fmt */
 extern char *reencode_commit_message(const struct commit *commit,
                                     const char **encoding_p);
index 6f73c17d74bee326a40505b29bba762bade2451e..a3b4c0692c6a46a0642cf1cb42e60eee59110d60 100644 (file)
@@ -168,18 +168,6 @@ static unsigned int digits_in_number(unsigned int number)
        return result;
 }
 
-static int has_non_ascii(const char *s)
-{
-       int ch;
-       if (!s)
-               return 0;
-       while ((ch = *s++) != '\0') {
-               if (non_ascii(ch))
-                       return 1;
-       }
-       return 0;
-}
-
 void get_patch_filename(struct commit *commit, int nr, const char *suffix,
                        struct strbuf *buf)
 {
index e5328dab5b2978d90d20f47ed799782e7b2fb63b..3b2ecdd20e6f5bdca61ee5e605deac7b8239c70d 100644 (file)
--- a/pretty.c
+++ b/pretty.c
@@ -86,6 +86,18 @@ int non_ascii(int ch)
        return !isascii(ch) || ch == '\033';
 }
 
+int has_non_ascii(const char *s)
+{
+       int ch;
+       if (!s)
+               return 0;
+       while ((ch = *s++) != '\0') {
+               if (non_ascii(ch))
+                       return 1;
+       }
+       return 0;
+}
+
 static int is_rfc2047_special(char ch)
 {
        return (non_ascii(ch) || (ch == '=') || (ch == '?') || (ch == '_'));