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>
			
			
				maint
			
			
		
							parent
							
								
									fb7d3f32b2
								
							
						
					
					
						commit
						a5031214c4
					
				
							
								
								
									
										1
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										1
									
								
								Makefile
								
								
								
								
							|  | @ -559,6 +559,7 @@ LIB_OBJS += graph.o | |||
| LIB_OBJS += grep.o | ||||
| LIB_OBJS += hash.o | ||||
| LIB_OBJS += help.o | ||||
| LIB_OBJS += hex.o | ||||
| LIB_OBJS += ident.o | ||||
| LIB_OBJS += levenshtein.o | ||||
| LIB_OBJS += list-objects.o | ||||
|  |  | |||
|  | @ -0,0 +1,67 @@ | |||
| #include "cache.h" | ||||
|  | ||||
| const signed char hexval_table[256] = { | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* 00-07 */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* 08-0f */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* 10-17 */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* 18-1f */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* 20-27 */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* 28-2f */ | ||||
| 	  0,  1,  2,  3,  4,  5,  6,  7,		/* 30-37 */ | ||||
| 	  8,  9, -1, -1, -1, -1, -1, -1,		/* 38-3f */ | ||||
| 	 -1, 10, 11, 12, 13, 14, 15, -1,		/* 40-47 */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* 48-4f */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* 50-57 */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* 58-5f */ | ||||
| 	 -1, 10, 11, 12, 13, 14, 15, -1,		/* 60-67 */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* 68-67 */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* 70-77 */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* 78-7f */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* 80-87 */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* 88-8f */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* 90-97 */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* 98-9f */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* a0-a7 */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* a8-af */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* b0-b7 */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* b8-bf */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* c0-c7 */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* c8-cf */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* d0-d7 */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* d8-df */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* e0-e7 */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* e8-ef */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* f0-f7 */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* f8-ff */ | ||||
| }; | ||||
|  | ||||
| int get_sha1_hex(const char *hex, unsigned char *sha1) | ||||
| { | ||||
| 	int i; | ||||
| 	for (i = 0; i < 20; i++) { | ||||
| 		unsigned int val = (hexval(hex[0]) << 4) | hexval(hex[1]); | ||||
| 		if (val & ~0xff) | ||||
| 			return -1; | ||||
| 		*sha1++ = val; | ||||
| 		hex += 2; | ||||
| 	} | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| char *sha1_to_hex(const unsigned char *sha1) | ||||
| { | ||||
| 	static int bufno; | ||||
| 	static char hexbuffer[4][50]; | ||||
| 	static const char hex[] = "0123456789abcdef"; | ||||
| 	char *buffer = hexbuffer[3 & ++bufno], *buf = buffer; | ||||
| 	int i; | ||||
|  | ||||
| 	for (i = 0; i < 20; i++) { | ||||
| 		unsigned int val = *sha1++; | ||||
| 		*buf++ = hex[val >> 4]; | ||||
| 		*buf++ = hex[val & 0xf]; | ||||
| 	} | ||||
| 	*buf = '\0'; | ||||
|  | ||||
| 	return buffer; | ||||
| } | ||||
							
								
								
									
										66
									
								
								sha1_file.c
								
								
								
								
							
							
						
						
									
										66
									
								
								sha1_file.c
								
								
								
								
							|  | @ -35,54 +35,6 @@ static size_t sz_fmt(size_t s) { return s; } | |||
|  | ||||
| const unsigned char null_sha1[20]; | ||||
|  | ||||
| const signed char hexval_table[256] = { | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* 00-07 */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* 08-0f */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* 10-17 */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* 18-1f */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* 20-27 */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* 28-2f */ | ||||
| 	  0,  1,  2,  3,  4,  5,  6,  7,		/* 30-37 */ | ||||
| 	  8,  9, -1, -1, -1, -1, -1, -1,		/* 38-3f */ | ||||
| 	 -1, 10, 11, 12, 13, 14, 15, -1,		/* 40-47 */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* 48-4f */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* 50-57 */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* 58-5f */ | ||||
| 	 -1, 10, 11, 12, 13, 14, 15, -1,		/* 60-67 */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* 68-67 */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* 70-77 */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* 78-7f */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* 80-87 */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* 88-8f */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* 90-97 */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* 98-9f */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* a0-a7 */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* a8-af */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* b0-b7 */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* b8-bf */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* c0-c7 */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* c8-cf */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* d0-d7 */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* d8-df */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* e0-e7 */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* e8-ef */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* f0-f7 */ | ||||
| 	 -1, -1, -1, -1, -1, -1, -1, -1,		/* f8-ff */ | ||||
| }; | ||||
|  | ||||
| int get_sha1_hex(const char *hex, unsigned char *sha1) | ||||
| { | ||||
| 	int i; | ||||
| 	for (i = 0; i < 20; i++) { | ||||
| 		unsigned int val = (hexval(hex[0]) << 4) | hexval(hex[1]); | ||||
| 		if (val & ~0xff) | ||||
| 			return -1; | ||||
| 		*sha1++ = val; | ||||
| 		hex += 2; | ||||
| 	} | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| static inline int offset_1st_component(const char *path) | ||||
| { | ||||
| 	if (has_dos_drive_prefix(path)) | ||||
|  | @ -133,24 +85,6 @@ int safe_create_leading_directories_const(const char *path) | |||
| 	return result; | ||||
| } | ||||
|  | ||||
| char *sha1_to_hex(const unsigned char *sha1) | ||||
| { | ||||
| 	static int bufno; | ||||
| 	static char hexbuffer[4][50]; | ||||
| 	static const char hex[] = "0123456789abcdef"; | ||||
| 	char *buffer = hexbuffer[3 & ++bufno], *buf = buffer; | ||||
| 	int i; | ||||
|  | ||||
| 	for (i = 0; i < 20; i++) { | ||||
| 		unsigned int val = *sha1++; | ||||
| 		*buf++ = hex[val >> 4]; | ||||
| 		*buf++ = hex[val & 0xf]; | ||||
| 	} | ||||
| 	*buf = '\0'; | ||||
|  | ||||
| 	return buffer; | ||||
| } | ||||
|  | ||||
| static void fill_sha1_path(char *pathbuf, const unsigned char *sha1) | ||||
| { | ||||
| 	int i; | ||||
|  |  | |||
|  | @ -48,7 +48,7 @@ int main(int argc, char **argv) | |||
| 			unsigned char sha1[20]; | ||||
| 			uint32_t crc; | ||||
| 			uint32_t off; | ||||
| 		} *entries = xmalloc(nr * sizeof(entries[0])); | ||||
| 		} *entries = malloc(nr * sizeof(entries[0])); | ||||
| 		for (i = 0; i < nr; i++) | ||||
| 			if (fread(entries[i].sha1, 20, 1, stdin) != 1) | ||||
| 				die("unable to read sha1 %u/%u", i, nr); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Linus Torvalds
						Linus Torvalds