Skip to content

Commit a503121

Browse files
torvaldsgitster
authored andcommitted
slim down "git show-index"
As the documentation says, this is primarily for debugging, and in the longer term we should rename it to test-show-index or something. In the meantime, just avoid xmalloc (which slurps in the rest of git), and separating out the trivial hex functions into "hex.o". This results in [torvalds@nehalem git]$ size git-show-index text data bss dec hex filename 222818 2276 112688 337782 52776 git-show-index (before) 5696 624 1264 7584 1da0 git-show-index (after) which is a whole lot better. Signed-off-by: Linus Torvalds <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent fb7d3f3 commit a503121

File tree

4 files changed

+69
-67
lines changed

4 files changed

+69
-67
lines changed

Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -559,6 +559,7 @@ LIB_OBJS += graph.o
559559
LIB_OBJS += grep.o
560560
LIB_OBJS += hash.o
561561
LIB_OBJS += help.o
562+
LIB_OBJS += hex.o
562563
LIB_OBJS += ident.o
563564
LIB_OBJS += levenshtein.o
564565
LIB_OBJS += list-objects.o

hex.c

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
#include "cache.h"
2+
3+
const signed char hexval_table[256] = {
4+
-1, -1, -1, -1, -1, -1, -1, -1, /* 00-07 */
5+
-1, -1, -1, -1, -1, -1, -1, -1, /* 08-0f */
6+
-1, -1, -1, -1, -1, -1, -1, -1, /* 10-17 */
7+
-1, -1, -1, -1, -1, -1, -1, -1, /* 18-1f */
8+
-1, -1, -1, -1, -1, -1, -1, -1, /* 20-27 */
9+
-1, -1, -1, -1, -1, -1, -1, -1, /* 28-2f */
10+
0, 1, 2, 3, 4, 5, 6, 7, /* 30-37 */
11+
8, 9, -1, -1, -1, -1, -1, -1, /* 38-3f */
12+
-1, 10, 11, 12, 13, 14, 15, -1, /* 40-47 */
13+
-1, -1, -1, -1, -1, -1, -1, -1, /* 48-4f */
14+
-1, -1, -1, -1, -1, -1, -1, -1, /* 50-57 */
15+
-1, -1, -1, -1, -1, -1, -1, -1, /* 58-5f */
16+
-1, 10, 11, 12, 13, 14, 15, -1, /* 60-67 */
17+
-1, -1, -1, -1, -1, -1, -1, -1, /* 68-67 */
18+
-1, -1, -1, -1, -1, -1, -1, -1, /* 70-77 */
19+
-1, -1, -1, -1, -1, -1, -1, -1, /* 78-7f */
20+
-1, -1, -1, -1, -1, -1, -1, -1, /* 80-87 */
21+
-1, -1, -1, -1, -1, -1, -1, -1, /* 88-8f */
22+
-1, -1, -1, -1, -1, -1, -1, -1, /* 90-97 */
23+
-1, -1, -1, -1, -1, -1, -1, -1, /* 98-9f */
24+
-1, -1, -1, -1, -1, -1, -1, -1, /* a0-a7 */
25+
-1, -1, -1, -1, -1, -1, -1, -1, /* a8-af */
26+
-1, -1, -1, -1, -1, -1, -1, -1, /* b0-b7 */
27+
-1, -1, -1, -1, -1, -1, -1, -1, /* b8-bf */
28+
-1, -1, -1, -1, -1, -1, -1, -1, /* c0-c7 */
29+
-1, -1, -1, -1, -1, -1, -1, -1, /* c8-cf */
30+
-1, -1, -1, -1, -1, -1, -1, -1, /* d0-d7 */
31+
-1, -1, -1, -1, -1, -1, -1, -1, /* d8-df */
32+
-1, -1, -1, -1, -1, -1, -1, -1, /* e0-e7 */
33+
-1, -1, -1, -1, -1, -1, -1, -1, /* e8-ef */
34+
-1, -1, -1, -1, -1, -1, -1, -1, /* f0-f7 */
35+
-1, -1, -1, -1, -1, -1, -1, -1, /* f8-ff */
36+
};
37+
38+
int get_sha1_hex(const char *hex, unsigned char *sha1)
39+
{
40+
int i;
41+
for (i = 0; i < 20; i++) {
42+
unsigned int val = (hexval(hex[0]) << 4) | hexval(hex[1]);
43+
if (val & ~0xff)
44+
return -1;
45+
*sha1++ = val;
46+
hex += 2;
47+
}
48+
return 0;
49+
}
50+
51+
char *sha1_to_hex(const unsigned char *sha1)
52+
{
53+
static int bufno;
54+
static char hexbuffer[4][50];
55+
static const char hex[] = "0123456789abcdef";
56+
char *buffer = hexbuffer[3 & ++bufno], *buf = buffer;
57+
int i;
58+
59+
for (i = 0; i < 20; i++) {
60+
unsigned int val = *sha1++;
61+
*buf++ = hex[val >> 4];
62+
*buf++ = hex[val & 0xf];
63+
}
64+
*buf = '\0';
65+
66+
return buffer;
67+
}

sha1_file.c

Lines changed: 0 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -35,54 +35,6 @@ static size_t sz_fmt(size_t s) { return s; }
3535

3636
const unsigned char null_sha1[20];
3737

38-
const signed char hexval_table[256] = {
39-
-1, -1, -1, -1, -1, -1, -1, -1, /* 00-07 */
40-
-1, -1, -1, -1, -1, -1, -1, -1, /* 08-0f */
41-
-1, -1, -1, -1, -1, -1, -1, -1, /* 10-17 */
42-
-1, -1, -1, -1, -1, -1, -1, -1, /* 18-1f */
43-
-1, -1, -1, -1, -1, -1, -1, -1, /* 20-27 */
44-
-1, -1, -1, -1, -1, -1, -1, -1, /* 28-2f */
45-
0, 1, 2, 3, 4, 5, 6, 7, /* 30-37 */
46-
8, 9, -1, -1, -1, -1, -1, -1, /* 38-3f */
47-
-1, 10, 11, 12, 13, 14, 15, -1, /* 40-47 */
48-
-1, -1, -1, -1, -1, -1, -1, -1, /* 48-4f */
49-
-1, -1, -1, -1, -1, -1, -1, -1, /* 50-57 */
50-
-1, -1, -1, -1, -1, -1, -1, -1, /* 58-5f */
51-
-1, 10, 11, 12, 13, 14, 15, -1, /* 60-67 */
52-
-1, -1, -1, -1, -1, -1, -1, -1, /* 68-67 */
53-
-1, -1, -1, -1, -1, -1, -1, -1, /* 70-77 */
54-
-1, -1, -1, -1, -1, -1, -1, -1, /* 78-7f */
55-
-1, -1, -1, -1, -1, -1, -1, -1, /* 80-87 */
56-
-1, -1, -1, -1, -1, -1, -1, -1, /* 88-8f */
57-
-1, -1, -1, -1, -1, -1, -1, -1, /* 90-97 */
58-
-1, -1, -1, -1, -1, -1, -1, -1, /* 98-9f */
59-
-1, -1, -1, -1, -1, -1, -1, -1, /* a0-a7 */
60-
-1, -1, -1, -1, -1, -1, -1, -1, /* a8-af */
61-
-1, -1, -1, -1, -1, -1, -1, -1, /* b0-b7 */
62-
-1, -1, -1, -1, -1, -1, -1, -1, /* b8-bf */
63-
-1, -1, -1, -1, -1, -1, -1, -1, /* c0-c7 */
64-
-1, -1, -1, -1, -1, -1, -1, -1, /* c8-cf */
65-
-1, -1, -1, -1, -1, -1, -1, -1, /* d0-d7 */
66-
-1, -1, -1, -1, -1, -1, -1, -1, /* d8-df */
67-
-1, -1, -1, -1, -1, -1, -1, -1, /* e0-e7 */
68-
-1, -1, -1, -1, -1, -1, -1, -1, /* e8-ef */
69-
-1, -1, -1, -1, -1, -1, -1, -1, /* f0-f7 */
70-
-1, -1, -1, -1, -1, -1, -1, -1, /* f8-ff */
71-
};
72-
73-
int get_sha1_hex(const char *hex, unsigned char *sha1)
74-
{
75-
int i;
76-
for (i = 0; i < 20; i++) {
77-
unsigned int val = (hexval(hex[0]) << 4) | hexval(hex[1]);
78-
if (val & ~0xff)
79-
return -1;
80-
*sha1++ = val;
81-
hex += 2;
82-
}
83-
return 0;
84-
}
85-
8638
static inline int offset_1st_component(const char *path)
8739
{
8840
if (has_dos_drive_prefix(path))
@@ -133,24 +85,6 @@ int safe_create_leading_directories_const(const char *path)
13385
return result;
13486
}
13587

136-
char *sha1_to_hex(const unsigned char *sha1)
137-
{
138-
static int bufno;
139-
static char hexbuffer[4][50];
140-
static const char hex[] = "0123456789abcdef";
141-
char *buffer = hexbuffer[3 & ++bufno], *buf = buffer;
142-
int i;
143-
144-
for (i = 0; i < 20; i++) {
145-
unsigned int val = *sha1++;
146-
*buf++ = hex[val >> 4];
147-
*buf++ = hex[val & 0xf];
148-
}
149-
*buf = '\0';
150-
151-
return buffer;
152-
}
153-
15488
static void fill_sha1_path(char *pathbuf, const unsigned char *sha1)
15589
{
15690
int i;

show-index.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ int main(int argc, char **argv)
4848
unsigned char sha1[20];
4949
uint32_t crc;
5050
uint32_t off;
51-
} *entries = xmalloc(nr * sizeof(entries[0]));
51+
} *entries = malloc(nr * sizeof(entries[0]));
5252
for (i = 0; i < nr; i++)
5353
if (fread(entries[i].sha1, 20, 1, stdin) != 1)
5454
die("unable to read sha1 %u/%u", i, nr);

0 commit comments

Comments
 (0)