gpg-interface: add function for converting trust level to string
Add new helper function `gpg_trust_level_to_str()` which will convert a given member of `enum signature_trust_level` to its corresponding string (in lowercase). For example, `TRUST_ULTIMATE` will yield the string "ultimate". This will abstract out some code in `pretty.c` relating to gpg signature trust levels. Mentored-by: Christian Couder <chriscool@tuxfamily.org> Mentored-by: Hariom Verma <hariom18599@gmail.com> Signed-off-by: Jaydeep Das <jaydeepjd.8914@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jaydeep Das committed
Jul 11, 2022 at 05:00 UTC
803978da494bf88ee60fb9598c94e25d601c5c32
3 files changed
+31
-23
gpg-interface.c
+22
-6
@@ -165,15 +165,17 @@ static struct {
165
{ 0, "TRUST_", GPG_STATUS_TRUST_LEVEL },
166
};
167
168
-static struct {
168
+/* Keep the order same as enum signature_trust_level */
169
+static struct sigcheck_gpg_trust_level {
170
const char *key;
171
+ const char *display_key;
172
enum signature_trust_level value;
173
} sigcheck_gpg_trust_level[] = {
172
- { "UNDEFINED", TRUST_UNDEFINED },
173
- { "NEVER", TRUST_NEVER },
174
- { "MARGINAL", TRUST_MARGINAL },
175
- { "FULLY", TRUST_FULLY },
176
- { "ULTIMATE", TRUST_ULTIMATE },
174
+ { "UNDEFINED", "undefined", TRUST_UNDEFINED },
175
+ { "NEVER", "never", TRUST_NEVER },
176
+ { "MARGINAL", "marginal", TRUST_MARGINAL },
177
+ { "FULLY", "fully", TRUST_FULLY },
178
+ { "ULTIMATE", "ultimate", TRUST_ULTIMATE },
179
};
180
181
static void replace_cstring(char **field, const char *line, const char *next)
@@ -905,6 +907,20 @@ const char *get_signing_key(void)
907
return git_committer_info(IDENT_STRICT | IDENT_NO_DATE);
908
}
909
910
+const char *gpg_trust_level_to_str(enum signature_trust_level level)
911
+{
912
+ struct sigcheck_gpg_trust_level *trust;
913
+
914
+ if (level < 0 || level >= ARRAY_SIZE(sigcheck_gpg_trust_level))
915
+ BUG("invalid trust level requested %d", level);
916
+
917
+ trust = &sigcheck_gpg_trust_level[level];
918
+ if (trust->value != level)
919
+ BUG("sigcheck_gpg_trust_level[] unsorted");
920
+
921
+ return sigcheck_gpg_trust_level[level].display_key;
922
+}
923
+
924
int sign_buffer(struct strbuf *buffer, struct strbuf *signature, const char *signing_key)
925
{
926
return use_format->sign_buffer(buffer, signature, signing_key);
gpg-interface.h
+8
@@ -71,6 +71,14 @@ size_t parse_signed_buffer(const char *buf, size_t size);
71
int sign_buffer(struct strbuf *buffer, struct strbuf *signature,
72
const char *signing_key);
73
74
+
75
+/*
76
+ * Returns corresponding string in lowercase for a given member of
77
+ * enum signature_trust_level. For example, `TRUST_ULTIMATE` will
78
+ * return "ultimate".
79
+ */
80
+const char *gpg_trust_level_to_str(enum signature_trust_level level);
81
+
82
int git_gpg_config(const char *, const char *, void *);
83
void set_signing_key(const char *);
84
const char *get_signing_key(void);
pretty.c
+1
-17
@@ -1575,23 +1575,7 @@ static size_t format_commit_one(struct strbuf *sb, /* in UTF-8 */
1575
strbuf_addstr(sb, c->signature_check.primary_key_fingerprint);
1576
break;
1577
case 'T':
1578
- switch (c->signature_check.trust_level) {
1579
- case TRUST_UNDEFINED:
1580
- strbuf_addstr(sb, "undefined");
1581
- break;
1582
- case TRUST_NEVER:
1583
- strbuf_addstr(sb, "never");
1584
- break;
1585
- case TRUST_MARGINAL:
1586
- strbuf_addstr(sb, "marginal");
1587
- break;
1588
- case TRUST_FULLY:
1589
- strbuf_addstr(sb, "fully");
1590
- break;
1591
- case TRUST_ULTIMATE:
1592
- strbuf_addstr(sb, "ultimate");
1593
- break;
1594
- }
1578
+ strbuf_addstr(sb, gpg_trust_level_to_str(c->signature_check.trust_level));
1579
break;
1580
default:
1581
return 0;