struct commit_message {
char *parent_label;
- const char *label;
- const char *subject;
+ char *label;
+ char *subject;
const char *message;
};
static int get_message(struct commit *commit, struct commit_message *out)
{
const char *abbrev, *subject;
- int abbrev_len, subject_len;
- char *q;
-
- if (!git_commit_encoding)
- git_commit_encoding = "UTF-8";
+ int subject_len;
- out->message = logmsg_reencode(commit, NULL, git_commit_encoding);
+ out->message = logmsg_reencode(commit, NULL, get_commit_output_encoding());
abbrev = find_unique_abbrev(commit->object.oid.hash, DEFAULT_ABBREV);
- abbrev_len = strlen(abbrev);
subject_len = find_commit_subject(out->message, &subject);
- out->parent_label = xmalloc(strlen("parent of ") + abbrev_len +
- strlen("... ") + subject_len + 1);
- q = out->parent_label;
- q = mempcpy(q, "parent of ", strlen("parent of "));
- out->label = q;
- q = mempcpy(q, abbrev, abbrev_len);
- q = mempcpy(q, "... ", strlen("... "));
- out->subject = q;
- q = mempcpy(q, subject, subject_len);
- *q = '\0';
+ out->subject = xmemdupz(subject, subject_len);
+ out->label = xstrfmt("%s... %s", abbrev, out->subject);
+ out->parent_label = xstrfmt("parent of %s", out->label);
+
return 0;
}
static void free_message(struct commit *commit, struct commit_message *msg)
{
free(msg->parent_label);
+ free(msg->label);
+ free(msg->subject);
unuse_commit_buffer(commit, msg->message);
}
if (!f)
return error(_("cannot open %s: %s"), git_path_head_file(),
strerror(errno));
- if (strbuf_getline(&buf, f, '\n')) {
+ if (strbuf_getline_lf(&buf, f)) {
error(_("cannot read %s: %s"), git_path_head_file(),
ferror(f) ? strerror(errno) : _("unexpected end of file"));
fclose(f);
const char *opts_file = git_path_opts_file();
if (opts->no_commit)
- git_config_set_in_file_or_die(opts_file, "options.no-commit", "true");
+ git_config_set_in_file(opts_file, "options.no-commit", "true");
if (opts->edit)
- git_config_set_in_file_or_die(opts_file, "options.edit", "true");
+ git_config_set_in_file(opts_file, "options.edit", "true");
if (opts->signoff)
- git_config_set_in_file_or_die(opts_file, "options.signoff", "true");
+ git_config_set_in_file(opts_file, "options.signoff", "true");
if (opts->record_origin)
- git_config_set_in_file_or_die(opts_file, "options.record-origin", "true");
+ git_config_set_in_file(opts_file, "options.record-origin", "true");
if (opts->allow_ff)
- git_config_set_in_file_or_die(opts_file, "options.allow-ff", "true");
+ git_config_set_in_file(opts_file, "options.allow-ff", "true");
if (opts->mainline) {
struct strbuf buf = STRBUF_INIT;
strbuf_addf(&buf, "%d", opts->mainline);
- git_config_set_in_file_or_die(opts_file, "options.mainline", buf.buf);
+ git_config_set_in_file(opts_file, "options.mainline", buf.buf);
strbuf_release(&buf);
}
if (opts->strategy)
- git_config_set_in_file_or_die(opts_file, "options.strategy", opts->strategy);
+ git_config_set_in_file(opts_file, "options.strategy", opts->strategy);
if (opts->gpg_sign)
- git_config_set_in_file_or_die(opts_file, "options.gpg-sign", opts->gpg_sign);
+ git_config_set_in_file(opts_file, "options.gpg-sign", opts->gpg_sign);
if (opts->xopts) {
int i;
for (i = 0; i < opts->xopts_nr; i++)
- git_config_set_multivar_in_file_or_die(opts_file,
- "options.strategy-option",
- opts->xopts[i], "^$", 0);
+ git_config_set_multivar_in_file(opts_file,
+ "options.strategy-option",
+ opts->xopts[i], "^$", 0);
}
}