[PATCH v2] gpg-interface: add function for converting trust level to string
- From
Jaydeep Das via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Jul 8, 2022, 11:24 UTC
- Message-ID
- <pull.1281.v2.git.1657279447515.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.1281.git.1657202265048.gitgitgadget@gmail.com>
From: Jaydeep Das <jaydeepjd.8914@gmail.com>
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>
---
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.
Changes since v1:
* gpg_trust_level_to_str() now returns the string in lowercase
Mentored-by: Christian Couder chriscool@tuxfamily.org Mentored-by:
Hariom Verma hariom18599@gmail.com Signed-off-by: Jaydeep Das
jaydeepjd.8914@gmail.comPublished-As: https://github.com/gitgitgadget/git/releases/tag/pr-1281%2FJDeepD%2Fgpg-wrap-v2 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1281/JDeepD/gpg-wrap-v2 Pull-Request: https://github.com/gitgitgadget/git/pull/1281
Range-diff vs v1:
1: fbbad9cc26a ! 1: 640decc2afe gpg-interface: add function for converting trust level to string
@@
## Metadata ##
-Author: Jaydeep P Das <jaydeepjd.8914@gmail.com>
+Author: Jaydeep Das <jaydeepjd.8914@gmail.com>
## Commit message ##
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. For example, `TRUST_ULTIMATE`
- will yield the string "ULTIMATE".
+ 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.
@@ gpg-interface.c: const char *get_signing_key(void)
return git_committer_info(IDENT_STRICT | IDENT_NO_DATE);
}
-+const char *gpg_trust_level_to_str(enum signature_trust_level level){
++char *gpg_trust_level_to_str(enum signature_trust_level level){
+ if (level < TRUST_UNDEFINED || level > TRUST_ULTIMATE)
+ return NULL;
-+ return sigcheck_gpg_trust_level[level].key;
++ return xstrdup_tolower(sigcheck_gpg_trust_level[level].key);
+}
+
int sign_buffer(struct strbuf *buffer, struct strbuf *signature, const char *signing_key)
@@ gpg-interface.h: size_t parse_signed_buffer(const char *buf, size_t size);
+
+/*
-+ * Returns corresponding string for a given member of
++ * Returns corresponding string in lowercase for a given member of
+ * enum signature_trust_level. For example, `TRUST_ULTIMATE` will
-+ * return "ULTIMATE".
++ * return "ultimate".
+ */
-+const char *gpg_trust_level_to_str(enum signature_trust_level level);
++char *gpg_trust_level_to_str(enum signature_trust_level level);
+
int git_gpg_config(const char *, const char *, void *);
void set_signing_key(const char *);
@@ gpg-interface.h: size_t parse_signed_buffer(const char *buf, size_t size);
## pretty.c ##
@@ pretty.c: static size_t format_commit_one(struct strbuf *sb, /* in UTF-8 */
- const struct commit *commit = c->commit;
const char *msg = c->message;
struct commit_list *p;
-- const char *arg, *eol;
-+ const char *arg, *eol, *sig_str;
+ const char *arg, *eol;
++ char *sig_str;
size_t res;
char **slot;
@@ pretty.c: static size_t format_commit_one(struct strbuf *sb, /* in UTF-8 */
- case TRUST_ULTIMATE:
- strbuf_addstr(sb, "ultimate");
- break;
+- }
+ sig_str = gpg_trust_level_to_str(c->signature_check.trust_level);
-+ if (sig_str){
-+ const char *sig_str_lower = xstrdup_tolower(sig_str);
-+ strbuf_addstr(sb, sig_str_lower);
-+ free((char *)sig_str_lower);
- }
++ if (sig_str)
++ strbuf_addstr(sb, sig_str);
++ free(sig_str);
break;
default:
+ return 0;gpg-interface.c | 7 +++++++ gpg-interface.h | 8 ++++++++ pretty.c | 22 +++++----------------- 3 files changed, 20 insertions(+), 17 deletions(-)
diff --git a/gpg-interface.c b/gpg-interface.c index 947b58ad4da..4ef660a09fc 100644 --- a/gpg-interface.c +++ b/gpg-interface.c @@ -165,6 +165,7 @@ static struct { { 0, "TRUST_", GPG_STATUS_TRUST_LEVEL }, }; +/* Keep the order same as enum signature_trust_level */ static struct { const char *key; enum signature_trust_level value; @@ -905,6 +906,12 @@ const char *get_signing_key(void) return git_committer_info(IDENT_STRICT | IDENT_NO_DATE); } +char *gpg_trust_level_to_str(enum signature_trust_level level){ + if (level < TRUST_UNDEFINED || level > TRUST_ULTIMATE) + return NULL; + return xstrdup_tolower(sigcheck_gpg_trust_level[level].key); +} + int sign_buffer(struct strbuf *buffer, struct strbuf *signature, const char *signing_key) { return use_format->sign_buffer(buffer, signature, signing_key); diff --git a/gpg-interface.h b/gpg-interface.h index b30cbdcd3da..ce2db6f3780 100644 --- a/gpg-interface.h +++ b/gpg-interface.h @@ -71,6 +71,14 @@ size_t parse_signed_buffer(const char *buf, size_t size); int sign_buffer(struct strbuf *buffer, struct strbuf *signature, const char *signing_key); + +/* + * Returns corresponding string in lowercase for a given member of + * enum signature_trust_level. For example, `TRUST_ULTIMATE` will + * return "ultimate". + */ +char *gpg_trust_level_to_str(enum signature_trust_level level); + int git_gpg_config(const char *, const char *, void *); void set_signing_key(const char *); const char *get_signing_key(void); diff --git a/pretty.c b/pretty.c index ee6114e3f0a..5ee03d6fe09 100644 --- a/pretty.c +++ b/pretty.c @@ -1348,6 +1348,7 @@ static size_t format_commit_one(struct strbuf *sb, /* in UTF-8 */ const char *msg = c->message; struct commit_list *p; const char *arg, *eol; + char *sig_str; size_t res; char **slot; @@ -1575,23 +1576,10 @@ static size_t format_commit_one(struct strbuf *sb, /* in UTF-8 */ strbuf_addstr(sb, c->signature_check.primary_key_fingerprint); break; case 'T': - switch (c->signature_check.trust_level) { - case TRUST_UNDEFINED: - strbuf_addstr(sb, "undefined"); - break; - case TRUST_NEVER: - strbuf_addstr(sb, "never"); - break; - case TRUST_MARGINAL: - strbuf_addstr(sb, "marginal"); - break; - case TRUST_FULLY: - strbuf_addstr(sb, "fully"); - break; - case TRUST_ULTIMATE: - strbuf_addstr(sb, "ultimate"); - break; - } + sig_str = gpg_trust_level_to_str(c->signature_check.trust_level); + if (sig_str) + strbuf_addstr(sb, sig_str); + free(sig_str); break; default: return 0; base-commit: 30cc8d0f147546d4dd77bf497f4dec51e7265bd8
-- gitgitgadget