mirror of
https://github.com/git/git.git
synced 2026-08-08 17:11:48 +00:00
hex: make hex_to_bytes accept kind of hex to use
Similarly to the previous commit, introduce an option for hex_to_bytes to allow us to specify the kind of hex to use: lowercase only or not. For now, everything remains the same as before, but we will change things in a future commit. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
f661df1054
commit
8a790e4e88
@@ -1866,7 +1866,7 @@ static void repack_local_links(void)
|
||||
while (strbuf_getline_lf(&line, out) != EOF) {
|
||||
unsigned char binary[GIT_MAX_RAWSZ];
|
||||
if (line.len != the_hash_algo->hexsz ||
|
||||
!hex_to_bytes(binary, line.buf, line.len))
|
||||
!hex_to_bytes(binary, line.buf, line.len, HEX_KIND_MIXED))
|
||||
die(_("index-pack: Expecting full hex object ID lines only from pack-objects."));
|
||||
|
||||
/*
|
||||
|
||||
@@ -112,7 +112,7 @@ static void loose_objs_stats(struct strbuf *buf, const char *path)
|
||||
while ((e = readdir_skip_dot_and_dotdot(dir)) != NULL)
|
||||
if (get_dtype(e, &count_path, 0) == DT_DIR &&
|
||||
strlen(e->d_name) == 2 &&
|
||||
!hex_to_bytes(&c, e->d_name, 1)) {
|
||||
!hex_to_bytes(&c, e->d_name, 1, HEX_KIND_MIXED)) {
|
||||
strbuf_setlen(&count_path, base_path_len);
|
||||
strbuf_addf(&count_path, "%s/", e->d_name);
|
||||
total += (count = count_files(&count_path));
|
||||
|
||||
4
hex-ll.c
4
hex-ll.c
@@ -71,10 +71,10 @@ const signed char hexval_lc_table[256] = {
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, /* f8-ff */
|
||||
};
|
||||
|
||||
int hex_to_bytes(unsigned char *binary, const char *hex, size_t len)
|
||||
int hex_to_bytes(unsigned char *binary, const char *hex, size_t len, enum hexkind kind)
|
||||
{
|
||||
for (; len; len--, hex += 2) {
|
||||
unsigned int val = (hexval(hex[0], HEX_KIND_MIXED) << 4) | hexval(hex[1], HEX_KIND_MIXED);
|
||||
unsigned int val = (hexval(hex[0], kind) << 4) | hexval(hex[1], kind);
|
||||
|
||||
if (val & ~0xff)
|
||||
return -1;
|
||||
|
||||
2
hex-ll.h
2
hex-ll.h
@@ -28,6 +28,6 @@ static inline int hex2chr(const char *s, enum hexkind kind)
|
||||
* values to `binary` as `len` bytes. Return 0 on success, or -1 if
|
||||
* the input does not consist of hex digits).
|
||||
*/
|
||||
int hex_to_bytes(unsigned char *binary, const char *hex, size_t len);
|
||||
int hex_to_bytes(unsigned char *binary, const char *hex, size_t len, enum hexkind kind);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1030,12 +1030,13 @@ static int get_oid_hex_from_objpath(const char *path, struct object_id *oid)
|
||||
if (strlen(path) != the_hash_algo->hexsz + 1)
|
||||
return -1;
|
||||
|
||||
if (hex_to_bytes(oid->hash, path, 1))
|
||||
if (hex_to_bytes(oid->hash, path, 1, HEX_KIND_MIXED))
|
||||
return -1;
|
||||
path += 2;
|
||||
path++; /* skip '/' */
|
||||
|
||||
return hex_to_bytes(oid->hash + 1, path, the_hash_algo->rawsz - 1);
|
||||
return hex_to_bytes(oid->hash + 1, path, the_hash_algo->rawsz - 1,
|
||||
HEX_KIND_MIXED);
|
||||
}
|
||||
|
||||
static void process_ls_object(struct remote_ls_ctx *ls)
|
||||
|
||||
5
notes.c
5
notes.c
@@ -428,7 +428,7 @@ static void load_subtree(struct notes_tree *t, struct leaf_node *subtree,
|
||||
goto handle_non_note;
|
||||
|
||||
if (hex_to_bytes(object_oid.hash + prefix_len, entry.path,
|
||||
hashsz - prefix_len))
|
||||
hashsz - prefix_len, HEX_KIND_MIXED))
|
||||
goto handle_non_note; /* entry.path is not a SHA1 */
|
||||
|
||||
memset(object_oid.hash + hashsz, 0, GIT_MAX_RAWSZ - hashsz);
|
||||
@@ -442,7 +442,8 @@ static void load_subtree(struct notes_tree *t, struct leaf_node *subtree,
|
||||
/* internal nodes must be trees */
|
||||
goto handle_non_note;
|
||||
|
||||
if (hex_to_bytes(object_oid.hash + len++, entry.path, 1))
|
||||
if (hex_to_bytes(object_oid.hash + len++, entry.path, 1,
|
||||
HEX_KIND_MIXED))
|
||||
goto handle_non_note; /* entry.path is not a SHA1 */
|
||||
|
||||
/*
|
||||
|
||||
@@ -1073,7 +1073,7 @@ int for_each_file_in_obj_subdir(unsigned int subdir_nr,
|
||||
strbuf_add(path, de->d_name, namelen);
|
||||
if (namelen == algop->hexsz - 2 &&
|
||||
!hex_to_bytes(oid.hash + 1, de->d_name,
|
||||
algop->rawsz - 1)) {
|
||||
algop->rawsz - 1, HEX_KIND_MIXED)) {
|
||||
oid_set_algo(&oid, algop);
|
||||
memset(oid.hash + algop->rawsz, 0,
|
||||
GIT_MAX_RAWSZ - algop->rawsz);
|
||||
|
||||
Reference in New Issue
Block a user