Hans Jerry Illikainen <hji@xxxxxxxxxxxx> writes: > Most consumers of the GPG interface use print_signature_buffer() to show > This patch moves the one-line summary from verify_merge_signature() to > print_signature_buffer(). It also introduces a GPG_VERIFY_SHORT flag > that determines whether the summary should be printed. I think the motivation makes sense. > -void print_signature_buffer(const struct signature_check *sigc, unsigned flags) > +void print_signature_buffer(const struct object_id *oid, > + const struct signature_check *sigc, int status, > + unsigned flags) > { > const char *output = flags & GPG_VERIFY_RAW ? > sigc->gpg_status : sigc->gpg_output; > + char hex[GIT_MAX_HEXSZ + 1]; > + char *type; > > if (flags & GPG_VERIFY_VERBOSE && sigc->payload) > fputs(sigc->payload, stdout); > > if (flags & GPG_VERIFY_FULL && output) > fputs(output, stderr); > + > + if (flags & GPG_VERIFY_SHORT && oid) { I am not sure about the wisdom of "&& oid" here. Wouldn't it be a bug for a caller who asks for _SHORT format to feed a NULL oid to us? I would understand if (flags & GPG_VERIFY_SHORT) { if (!oid) BUG("Caller asking for SHORT without oid???"); much better, but if there is a caller that has a legitimate need tobe able to pass NULL and still request SHORT, let's see it and discuss if it is a good idea. For that matter, the two print routines we have immediately above share the same issue. > + type = xstrdup_or_null( > + type_name(oid_object_info(the_repository, oid, NULL))); > + if (!type) > + type = xstrdup("object"); This is minor, but I wonder if this is easier to follow. type = type_name(oid_object_info(the_repository, oid, NULL)); if (!type) type = "object"; type = xstrdup(type); > + *type = toupper(*type); This is not helpful at all for i18n/l10n, I am afraid. > + find_unique_abbrev_r(hex, oid, DEFAULT_ABBREV); > + > + switch (sigc->result) { > + case 'G': > + if (status) > + error(_("%s %s has an untrusted GPG signature, " > + "allegedly by %s."), > + type, hex, sigc->signer); The original was of course die(_("Commit %s has an untrusted GPG signature, " "allegedly by %s."), hex, signature_check.signer); so the message can properly localized including the typename. That is no longer true with this conversion. You probably would need to prepare a 3-element array (one element for each of <object, commit, tag>), each element of the array being a 3-element array that holds the message for these three cases (i.e. G, N and default) instead.