From: "brian m. carlson" <sandals@crustytoothpaste.net>
To: git@vger.kernel.org
Cc: "Michael Haggerty" <mhagger@alum.mit.edu>,
"Stefan Beller" <sbeller@google.com>, "Jeff King" <peff@peff.net>,
"Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
Subject: [PATCH v2 04/53] builtin/name-rev: convert to struct object_id
Date: Mon, 1 May 2017 02:28:57 +0000 [thread overview]
Message-ID: <20170501022946.258735-5-sandals@crustytoothpaste.net> (raw)
In-Reply-To: <20170501022946.258735-1-sandals@crustytoothpaste.net>
Convert all the uses of unsigned char [20] to struct object_id. Also,
convert some hard-coded integers into constants.
name_rev_line accepts a wide variety of free-form input and only
interprets 40-character hex values, passing through everything else.
Consequently, it is not a good candidate for parse_oid_hex, which is
much stricter.
This change is a prerequisite for converting parse_object.
Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
---
builtin/name-rev.c | 28 ++++++++++++++--------------
1 file changed, 14 insertions(+), 14 deletions(-)
diff --git a/builtin/name-rev.c b/builtin/name-rev.c
index 92a5d8a5d..00760ecc6 100644
--- a/builtin/name-rev.c
+++ b/builtin/name-rev.c
@@ -114,7 +114,7 @@ struct name_ref_data {
static struct tip_table {
struct tip_table_entry {
- unsigned char sha1[20];
+ struct object_id oid;
const char *refname;
} *table;
int nr;
@@ -122,13 +122,13 @@ static struct tip_table {
int sorted;
} tip_table;
-static void add_to_tip_table(const unsigned char *sha1, const char *refname,
+static void add_to_tip_table(const struct object_id *oid, const char *refname,
int shorten_unambiguous)
{
refname = name_ref_abbrev(refname, shorten_unambiguous);
ALLOC_GROW(tip_table.table, tip_table.nr + 1, tip_table.alloc);
- hashcpy(tip_table.table[tip_table.nr].sha1, sha1);
+ oidcpy(&tip_table.table[tip_table.nr].oid, oid);
tip_table.table[tip_table.nr].refname = xstrdup(refname);
tip_table.nr++;
tip_table.sorted = 0;
@@ -137,7 +137,7 @@ static void add_to_tip_table(const unsigned char *sha1, const char *refname,
static int tipcmp(const void *a_, const void *b_)
{
const struct tip_table_entry *a = a_, *b = b_;
- return hashcmp(a->sha1, b->sha1);
+ return oidcmp(&a->oid, &b->oid);
}
static int name_ref(const char *path, const struct object_id *oid, int flags, void *cb_data)
@@ -194,7 +194,7 @@ static int name_ref(const char *path, const struct object_id *oid, int flags, vo
return 0;
}
- add_to_tip_table(oid->hash, path, can_abbreviate_output);
+ add_to_tip_table(oid, path, can_abbreviate_output);
while (o && o->type == OBJ_TAG) {
struct tag *t = (struct tag *) o;
@@ -216,7 +216,7 @@ static int name_ref(const char *path, const struct object_id *oid, int flags, vo
static const unsigned char *nth_tip_table_ent(size_t ix, void *table_)
{
struct tip_table_entry *table = table_;
- return table[ix].sha1;
+ return table[ix].oid.hash;
}
static const char *get_exact_ref_match(const struct object *o)
@@ -301,9 +301,9 @@ static void name_rev_line(char *p, struct name_ref_data *data)
#define ishex(x) (isdigit((x)) || ((x) >= 'a' && (x) <= 'f'))
if (!ishex(*p))
forty = 0;
- else if (++forty == 40 &&
+ else if (++forty == GIT_SHA1_HEXSZ &&
!ishex(*(p+1))) {
- unsigned char sha1[40];
+ struct object_id oid;
const char *name = NULL;
char c = *(p+1);
int p_len = p - p_start + 1;
@@ -311,9 +311,9 @@ static void name_rev_line(char *p, struct name_ref_data *data)
forty = 0;
*(p+1) = 0;
- if (!get_sha1(p - 39, sha1)) {
+ if (!get_oid(p - (GIT_SHA1_HEXSZ - 1), &oid)) {
struct object *o =
- lookup_object(sha1);
+ lookup_object(oid.hash);
if (o)
name = get_rev_name(o, &buf);
}
@@ -323,7 +323,7 @@ static void name_rev_line(char *p, struct name_ref_data *data)
continue;
if (data->name_only)
- printf("%.*s%s", p_len - 40, p_start, name);
+ printf("%.*s%s", p_len - GIT_SHA1_HEXSZ, p_start, name);
else
printf("%.*s (%s)", p_len, p_start, name);
p_start = p + 1;
@@ -374,18 +374,18 @@ int cmd_name_rev(int argc, const char **argv, const char *prefix)
cutoff = 0;
for (; argc; argc--, argv++) {
- unsigned char sha1[20];
+ struct object_id oid;
struct object *object;
struct commit *commit;
- if (get_sha1(*argv, sha1)) {
+ if (get_oid(*argv, &oid)) {
fprintf(stderr, "Could not get sha1 for %s. Skipping.\n",
*argv);
continue;
}
commit = NULL;
- object = parse_object(sha1);
+ object = parse_object(oid.hash);
if (object) {
struct object *peeled = deref_tag(object, *argv, 0);
if (peeled && peeled->type == OBJ_COMMIT)
next prev parent reply other threads:[~2017-05-01 2:30 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-01 2:28 [PATCH v2 00/53] object_id part 8 brian m. carlson
2017-05-01 2:28 ` [PATCH v2 01/53] fetch-pack: convert to struct object_id brian m. carlson
2017-05-01 2:28 ` [PATCH v2 02/53] Clean up outstanding object_id transforms brian m. carlson
2017-05-02 18:05 ` Brandon Williams
2017-05-03 23:41 ` brian m. carlson
2017-05-01 2:28 ` [PATCH v2 03/53] Convert struct cache_tree to use struct object_id brian m. carlson
2017-05-02 18:13 ` Brandon Williams
2017-05-03 23:36 ` brian m. carlson
2017-05-01 2:28 ` brian m. carlson [this message]
2017-05-01 2:28 ` [PATCH v2 05/53] builtin/prune: convert to " brian m. carlson
2017-05-01 2:28 ` [PATCH v2 06/53] bundle: " brian m. carlson
2017-05-01 2:29 ` [PATCH v2 07/53] branch: " brian m. carlson
2017-05-01 2:29 ` [PATCH v2 08/53] builtin/blame: convert static function " brian m. carlson
2017-05-01 2:29 ` [PATCH v2 09/53] builtin/rev-parse: convert " brian m. carlson
2017-05-01 21:54 ` Jonathan Tan
2017-05-01 2:29 ` [PATCH v2 10/53] fast-import: convert internal structs " brian m. carlson
2017-05-01 2:29 ` [PATCH v2 11/53] fast-import: convert " brian m. carlson
2017-05-01 22:07 ` Jonathan Tan
2017-05-01 22:27 ` Jeff King
2017-05-01 22:36 ` Jonathan Tan
2017-05-03 23:34 ` brian m. carlson
2017-05-01 2:29 ` [PATCH v2 12/53] submodule: convert merge_submodule to use " brian m. carlson
2017-05-01 2:29 ` [PATCH v2 13/53] notes-cache: convert to " brian m. carlson
2017-05-01 2:29 ` [PATCH v2 14/53] parse-options-cb: " brian m. carlson
2017-05-01 2:29 ` [PATCH v2 15/53] reflog_expire: " brian m. carlson
2017-05-01 2:29 ` [PATCH v2 16/53] builtin/verify-commit: " brian m. carlson
2017-05-01 2:29 ` [PATCH v2 17/53] tag: convert parse_tag_buffer " brian m. carlson
2017-05-01 2:29 ` [PATCH v2 18/53] http-push: convert some static functions " brian m. carlson
2017-05-01 2:29 ` [PATCH v2 19/53] notes-utils: convert internals " brian m. carlson
2017-05-01 2:29 ` [PATCH v2 20/53] revision: convert prepare_show_merge " brian m. carlson
2017-05-01 2:29 ` [PATCH v2 21/53] shallow: convert shallow registration functions to object_id brian m. carlson
2017-05-01 2:29 ` [PATCH v2 22/53] sequencer: convert some functions to struct object_id brian m. carlson
2017-05-01 2:29 ` [PATCH v2 23/53] builtin/tag: convert " brian m. carlson
2017-05-01 2:29 ` [PATCH v2 24/53] Convert remaining callers of lookup_commit_reference* to object_id brian m. carlson
2017-05-01 2:29 ` [PATCH v2 25/53] Convert lookup_commit* to struct object_id brian m. carlson
2017-05-01 2:29 ` [PATCH v2 26/53] pack: convert struct pack_idx_entry " brian m. carlson
2017-05-01 2:29 ` [PATCH v2 27/53] builtin/unpack-objects: convert " brian m. carlson
2017-05-01 2:29 ` [PATCH v2 28/53] Convert remaining callers of lookup_blob to object_id brian m. carlson
2017-05-01 2:29 ` [PATCH v2 29/53] Convert lookup_blob to struct object_id brian m. carlson
2017-05-01 2:29 ` [PATCH v2 30/53] tree: convert read_tree_1 to use struct object_id internally brian m. carlson
2017-05-01 2:29 ` [PATCH v2 31/53] builtin/reflog: convert tree_is_complete to take struct object_id brian m. carlson
2017-05-01 2:29 ` [PATCH v2 32/53] Convert lookup_tree to " brian m. carlson
2017-05-01 2:29 ` [PATCH v2 33/53] log-tree: convert " brian m. carlson
2017-05-01 2:29 ` [PATCH v2 34/53] Convert lookup_tag " brian m. carlson
2017-05-01 2:29 ` [PATCH v2 35/53] Convert the verify_pack callback " brian m. carlson
2017-05-01 2:29 ` [PATCH v2 36/53] Convert struct ref_array_item " brian m. carlson
2017-05-01 2:29 ` [PATCH v2 37/53] ref-filter: convert some static functions " brian m. carlson
2017-05-01 2:29 ` [PATCH v2 38/53] refs: convert struct ref_update to use " brian m. carlson
2017-05-01 2:29 ` [PATCH v2 39/53] refs/files-backend: convert many internals to " brian m. carlson
2017-05-01 23:24 ` Jonathan Tan
2017-05-03 23:30 ` brian m. carlson
2017-05-01 2:29 ` [PATCH v2 40/53] http-push: convert process_ls_object and descendants to object_id brian m. carlson
2017-05-01 2:29 ` [PATCH v2 41/53] revision: rename add_pending_sha1 to add_pending_oid brian m. carlson
2017-05-01 2:29 ` [PATCH v2 42/53] revision: convert remaining parse_object callers to object_id brian m. carlson
2017-05-01 2:29 ` [PATCH v2 43/53] upload-pack: " brian m. carlson
2017-05-01 2:29 ` [PATCH v2 44/53] sha1_name: convert internals of peel_onion " brian m. carlson
2017-05-01 2:29 ` [PATCH v2 45/53] builtin/read-tree: convert to struct object_id brian m. carlson
2017-05-01 2:29 ` [PATCH v2 46/53] builtin/ls-files: convert overlay_tree_on_cache to object_id brian m. carlson
2017-05-01 2:29 ` [PATCH v2 47/53] sequencer: convert fast_forward_to to struct object_id brian m. carlson
2017-05-01 2:29 ` [PATCH v2 48/53] merge: convert checkout_fast_forward " brian m. carlson
2017-05-01 2:29 ` [PATCH v2 49/53] builtin/ls-tree: convert " brian m. carlson
2017-05-01 2:29 ` [PATCH v2 50/53] diff-lib: convert do_diff_cache " brian m. carlson
2017-05-01 2:29 ` [PATCH v2 51/53] sequencer: convert do_recursive_merge " brian m. carlson
2017-05-01 2:29 ` [PATCH v2 52/53] tree: convert parse_tree_indirect " brian m. carlson
2017-05-01 2:29 ` [PATCH v2 53/53] object: convert parse_object* to take " brian m. carlson
2017-05-01 23:44 ` Jonathan Tan
2017-05-01 21:10 ` [PATCH v2 00/53] object_id part 8 Stefan Beller
2017-05-02 19:09 ` Brandon Williams
2017-05-04 0:50 ` 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=20170501022946.258735-5-sandals@crustytoothpaste.net \
--to=sandals@crustytoothpaste.net \
--cc=git@vger.kernel.org \
--cc=mhagger@alum.mit.edu \
--cc=pclouds@gmail.com \
--cc=peff@peff.net \
--cc=sbeller@google.com \
/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).