mirror of
				https://git.proxmox.com/git/libgit2
				synced 2025-11-04 04:38:58 +00:00 
			
		
		
		
	Add auxiliary method git__hexdump
New function in util.c to do a dump of a buffer's contents in hexadecimal to stdout. Signed-off-by: Vicent Marti <tanoku@gmail.com>
This commit is contained in:
		
							parent
							
								
									003c269094
								
							
						
					
					
						commit
						0e465f979b
					
				
							
								
								
									
										44
									
								
								src/util.c
									
									
									
									
									
								
							
							
						
						
									
										44
									
								
								src/util.c
									
									
									
									
									
								
							@ -121,3 +121,47 @@ int git__basename(char *base, size_t n, char *path)
 | 
			
		||||
	return len;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void git__hexdump(const char *buffer, size_t len)
 | 
			
		||||
{
 | 
			
		||||
	static const size_t LINE_WIDTH = 16;
 | 
			
		||||
 | 
			
		||||
	size_t line_count, last_line, i, j;
 | 
			
		||||
	const char *line;
 | 
			
		||||
 | 
			
		||||
	line_count = (len / LINE_WIDTH);
 | 
			
		||||
	last_line = (len % LINE_WIDTH);
 | 
			
		||||
 | 
			
		||||
	for (i = 0; i < line_count; ++i) {
 | 
			
		||||
		line = buffer + (i * LINE_WIDTH);
 | 
			
		||||
		for (j = 0; j < LINE_WIDTH; ++j, ++line)
 | 
			
		||||
			printf("%02X ", (unsigned char)*line & 0xFF);
 | 
			
		||||
 | 
			
		||||
		printf("| ");
 | 
			
		||||
 | 
			
		||||
		line = buffer + (i * LINE_WIDTH);
 | 
			
		||||
		for (j = 0; j < LINE_WIDTH; ++j, ++line)
 | 
			
		||||
			printf("%c", (*line >= 32 && *line <= 126) ? *line : '.');
 | 
			
		||||
 | 
			
		||||
		printf("\n");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (last_line > 0) {
 | 
			
		||||
 | 
			
		||||
		line = buffer + (line_count * LINE_WIDTH);
 | 
			
		||||
		for (j = 0; j < last_line; ++j, ++line)
 | 
			
		||||
			printf("%02X ", (unsigned char)*line & 0xFF);
 | 
			
		||||
 | 
			
		||||
		for (j = 0; j < (LINE_WIDTH - last_line); ++j)
 | 
			
		||||
			printf("   ");
 | 
			
		||||
 | 
			
		||||
		printf("| ");
 | 
			
		||||
 | 
			
		||||
		line = buffer + (line_count * LINE_WIDTH);
 | 
			
		||||
		for (j = 0; j < last_line; ++j, ++line)
 | 
			
		||||
			printf("%c", (*line >= 32 && *line <= 126) ? *line : '.');
 | 
			
		||||
 | 
			
		||||
		printf("\n");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	printf("\n");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -34,6 +34,8 @@ extern int git__suffixcmp(const char *str, const char *suffix);
 | 
			
		||||
extern int git__dirname(char *dir, size_t n, char *path);
 | 
			
		||||
extern int git__basename(char *base, size_t n, char *path);
 | 
			
		||||
 | 
			
		||||
extern void git__hexdump(const char *buffer, size_t n);
 | 
			
		||||
 | 
			
		||||
/** @return true if p fits into the range of a size_t */
 | 
			
		||||
GIT_INLINE(int) git__is_sizet(off_t p)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user