Merge branch 'js/maint-cover-letter-non-ascii'
authorJunio C Hamano <gitster@pobox.com>
Sun, 16 Aug 2009 11:13:18 +0000 (04:13 -0700)
committerJunio C Hamano <gitster@pobox.com>
Sun, 16 Aug 2009 11:13:18 +0000 (04:13 -0700)
* js/maint-cover-letter-non-ascii:
Correctly mark cover letters' encodings if they are not pure ASCII
Expose the has_non_ascii() function

1  2 
builtin-log.c
diff --combined builtin-log.c
index 3817bf11864dbe5bff2c1004abec2b97210a0c36,1929e0a16c2a8fb458132017823990474b0db4d6..82236c531bb3c70875285467cbd775fec27c939e
@@@ -27,10 -27,6 +27,10 @@@ static int default_show_root = 1
  static const char *fmt_patch_subject_prefix = "PATCH";
  static const char *fmt_pretty;
  
 +static const char * const builtin_log_usage =
 +      "git log [<options>] [<since>..<until>] [[--] <path>...]\n"
 +      "   or: git show [options] <object>...";
 +
  static void cmd_log_init(int argc, const char **argv, const char *prefix,
                      struct rev_info *rev)
  {
@@@ -65,8 -61,6 +65,8 @@@
                        rev->show_decorations = 1;
                } else if (!strcmp(arg, "--source")) {
                        rev->show_source = 1;
 +              } else if (!strcmp(arg, "-h")) {
 +                      usage(builtin_log_usage);
                } else
                        die("unrecognized argument: %s", arg);
        }
@@@ -263,7 -257,7 +263,7 @@@ static void show_tagger(char *buf, int 
        pp_user_info("Tagger", rev->commit_format, &out, buf, rev->date_mode,
                git_log_output_encoding ?
                git_log_output_encoding: git_commit_encoding);
 -      printf("%s\n", out.buf);
 +      printf("%s", out.buf);
        strbuf_release(&out);
  }
  
@@@ -335,14 -329,11 +335,14 @@@ int cmd_show(int argc, const char **arg
                case OBJ_TAG: {
                        struct tag *t = (struct tag *)o;
  
 +                      if (rev.shown_one)
 +                              putchar('\n');
                        printf("%stag %s%s\n",
                                        diff_get_color_opt(&rev.diffopt, DIFF_COMMIT),
                                        t->tag,
                                        diff_get_color_opt(&rev.diffopt, DIFF_RESET));
                        ret = show_object(o->sha1, 1, &rev);
 +                      rev.shown_one = 1;
                        if (ret)
                                break;
                        o = parse_object(t->tagged->sha1);
                        break;
                }
                case OBJ_TREE:
 +                      if (rev.shown_one)
 +                              putchar('\n');
                        printf("%stree %s%s\n\n",
                                        diff_get_color_opt(&rev.diffopt, DIFF_COMMIT),
                                        name,
                                        diff_get_color_opt(&rev.diffopt, DIFF_RESET));
                        read_tree_recursive((struct tree *)o, "", 0, 0, NULL,
                                        show_tree_object, NULL);
 +                      rev.shown_one = 1;
                        break;
                case OBJ_COMMIT:
                        rev.pending.nr = rev.pending.alloc = 0;
@@@ -670,6 -658,10 +670,10 @@@ static void make_cover_letter(struct re
        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);