From: "brian m. carlson" <sandals@crustytoothpaste.net>
To: git@vger.kernel.org
Cc: Jeff King <peff@peff.net>, Michael Haggerty <mhagger@alum.mit.edu>
Subject: [PATCH v2 14/19] hex: introduce parse_oid_hex
Date: Tue, 14 Feb 2017 02:31:36 +0000 [thread overview]
Message-ID: <20170214023141.842922-15-sandals@crustytoothpaste.net> (raw)
In-Reply-To: <20170214023141.842922-1-sandals@crustytoothpaste.net>
Introduce a function, parse_oid_hex, which parses a hexadecimal object
ID and if successful, sets a pointer to just beyond the last character.
This allows for simpler, more robust parsing without needing to
hard-code integer values throughout the codebase.
Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
---
cache.h | 8 ++++++++
hex.c | 8 ++++++++
2 files changed, 16 insertions(+)
diff --git a/cache.h b/cache.h
index 61fc86e6d7..5dc89a058c 100644
--- a/cache.h
+++ b/cache.h
@@ -1319,6 +1319,14 @@ extern char *oid_to_hex_r(char *out, const struct object_id *oid);
extern char *sha1_to_hex(const unsigned char *sha1); /* static buffer result! */
extern char *oid_to_hex(const struct object_id *oid); /* same static buffer as sha1_to_hex */
+/*
+ * Parse a hexadecimal object ID starting from hex, updating the pointer
+ * specified by p when parsing stops. The resulting object ID is stored in oid.
+ * Returns 0 on success. Parsing will stop on the first NUL or other invalid
+ * character.
+ */
+extern int parse_oid_hex(const char *hex, struct object_id *oid, const char **p);
+
extern int interpret_branch_name(const char *str, int len, struct strbuf *);
extern int get_oid_mb(const char *str, struct object_id *oid);
diff --git a/hex.c b/hex.c
index 845b01a874..54252b1445 100644
--- a/hex.c
+++ b/hex.c
@@ -53,6 +53,14 @@ int get_oid_hex(const char *hex, struct object_id *oid)
return get_sha1_hex(hex, oid->hash);
}
+int parse_oid_hex(const char *hex, struct object_id *oid, const char **p)
+{
+ int ret = get_oid_hex(hex, oid);
+ if (!ret)
+ *p = hex + GIT_SHA1_HEXSZ;
+ return ret;
+}
+
char *sha1_to_hex_r(char *buffer, const unsigned char *sha1)
{
static const char hex[] = "0123456789abcdef";
--
2.11.0
next prev parent reply other threads:[~2017-02-14 2:32 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-14 2:31 [PATCH v2 00/19] object_id part 6 brian m. carlson
2017-02-14 2:31 ` [PATCH v2 01/19] builtin/commit: convert to struct object_id brian m. carlson
2017-02-14 2:31 ` [PATCH v2 02/19] builtin/diff-tree: " brian m. carlson
2017-02-14 2:31 ` [PATCH v2 03/19] builtin/describe: " brian m. carlson
2017-02-14 2:31 ` [PATCH v2 04/19] builtin/fast-export: " brian m. carlson
2017-02-14 2:31 ` [PATCH v2 05/19] builtin/fmt-merge-message: " brian m. carlson
2017-02-14 2:31 ` [PATCH v2 06/19] builtin/grep: " brian m. carlson
2017-02-14 2:31 ` [PATCH v2 07/19] builtin/branch: " brian m. carlson
2017-02-14 2:31 ` [PATCH v2 08/19] builtin/clone: " brian m. carlson
2017-02-14 2:31 ` [PATCH v2 09/19] builtin/merge: " brian m. carlson
2017-02-14 2:31 ` [PATCH v2 10/19] Convert remaining callers of resolve_refdup to object_id brian m. carlson
2017-02-14 2:31 ` [PATCH v2 11/19] builtin/replace: convert to struct object_id brian m. carlson
2017-02-17 8:44 ` Michael Haggerty
2017-02-14 2:31 ` [PATCH v2 12/19] reflog-walk: convert struct reflog_info " brian m. carlson
2017-02-14 2:31 ` [PATCH v2 13/19] refs: convert each_reflog_ent_fn " brian m. carlson
2017-02-14 2:31 ` brian m. carlson [this message]
2017-02-17 9:26 ` [PATCH v2 14/19] hex: introduce parse_oid_hex Michael Haggerty
2017-02-14 2:31 ` [PATCH v2 15/19] refs: simplify parsing of reflog entries brian m. carlson
2017-02-17 9:41 ` Michael Haggerty
2017-02-14 2:31 ` [PATCH v2 16/19] sha1_file: introduce an nth_packed_object_oid function brian m. carlson
2017-02-14 2:31 ` [PATCH v2 17/19] Convert object iteration callbacks to struct object_id brian m. carlson
2017-02-14 2:31 ` [PATCH v2 18/19] builtin/merge-base: convert " brian m. carlson
2017-02-14 2:31 ` [PATCH v2 19/19] wt-status: " brian m. carlson
2017-02-14 22:02 ` [PATCH v2 00/19] object_id part 6 Junio C Hamano
2017-02-17 9:55 ` Michael Haggerty
2017-02-17 21:45 ` brian m. carlson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170214023141.842922-15-sandals@crustytoothpaste.net \
--to=sandals@crustytoothpaste.net \
--cc=git@vger.kernel.org \
--cc=mhagger@alum.mit.edu \
--cc=peff@peff.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).