mirror of
				https://git.proxmox.com/git/libgit2
				synced 2025-11-01 10:26:58 +00:00 
			
		
		
		
	config: also allow escaping outside of a quoted string
This limitation was a misparsing of the documentation.
This commit is contained in:
		
							parent
							
								
									f9f2344bd4
								
							
						
					
					
						commit
						a7d19b975a
					
				| @ -1157,12 +1157,6 @@ static char *fixup_line(const char *ptr, int quote_count) | ||||
| 				*out++ = '\\'; | ||||
| 				goto out; | ||||
| 			} | ||||
| 			/* otherwise, the backslash must be inside quotes */ | ||||
| 			if ((quote_count % 2) == 0) { | ||||
| 				git__free(str); | ||||
| 				giterr_set(GITERR_CONFIG, "Invalid escape at %s", ptr); | ||||
| 				return NULL; | ||||
| 			} | ||||
| 			if ((esc = strchr(escapes, *ptr)) != NULL) { | ||||
| 				*out++ = escaped[esc - escapes]; | ||||
| 			} else { | ||||
|  | ||||
| @ -179,6 +179,18 @@ void test_config_read__prefixes(void) | ||||
| 	git_config_free(cfg); | ||||
| } | ||||
| 
 | ||||
| void test_config_read__escaping_quotes(void) | ||||
| { | ||||
| 	git_config *cfg; | ||||
| 	const char *str; | ||||
| 
 | ||||
| 	cl_git_pass(git_config_open_ondisk(&cfg, cl_fixture("config/config13"))); | ||||
| 	cl_git_pass(git_config_get_string(cfg, "core.editor", &str)); | ||||
| 	cl_assert(strcmp(str, "\"C:/Program Files/Nonsense/bah.exe\" \"--some option\"") == 0); | ||||
| 
 | ||||
| 	git_config_free(cfg); | ||||
| } | ||||
| 
 | ||||
| #if 0 | ||||
| 
 | ||||
| BEGIN_TEST(config10, "a repo's config overrides the global config") | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Carlos Martín Nieto
						Carlos Martín Nieto