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 <torvalds@linux-foundation.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Linus Torvalds committed
Jan 21, 2010 at 15:25 UTC
a5031214c4fe5f5d3fcf649d10769744cbc66fed
4 files changed
+69
-67
Makefile
+1
@@ -559,6 +559,7 @@ LIB_OBJS += graph.o
559
LIB_OBJS += grep.o
560
LIB_OBJS += hash.o
561
LIB_OBJS += help.o
562
+LIB_OBJS += hex.o
563
LIB_OBJS += ident.o
564
LIB_OBJS += levenshtein.o
565
LIB_OBJS += list-objects.o
hex.c
new
+67
@@ -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
-66
@@ -35,54 +35,6 @@ static size_t sz_fmt(size_t s) { return s; }
35
36
const unsigned char null_sha1[20];
37
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
-
38
static inline int offset_1st_component(const char *path)
39
{
40
if (has_dos_drive_prefix(path))
@@ -133,24 +85,6 @@ int safe_create_leading_directories_const(const char *path)
85
return result;
86
}
87
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
-
88
static void fill_sha1_path(char *pathbuf, const unsigned char *sha1)
89
{
90
int i;
show-index.c
+1
-1
@@ -48,7 +48,7 @@ int main(int argc, char **argv)
48
unsigned char sha1[20];
49
uint32_t crc;
50
uint32_t off;
51
- } *entries = xmalloc(nr * sizeof(entries[0]));
51
+ } *entries = malloc(nr * sizeof(entries[0]));
52
for (i = 0; i < nr; i++)
53
if (fread(entries[i].sha1, 20, 1, stdin) != 1)
54
die("unable to read sha1 %u/%u", i, nr);